docker-compose 部署 vue 项目

编写Dockerfie文件

vi Dockerfile

文件内容如下:

# ======================== 上:npm打包  下:nginx运行 ========================
# nginx镜像
FROM nginx
# 维护者信息
MAINTAINER gaoyt "1619149796@qq.com"

# 移除nginx容器的default.conf文件、nginx配置文件
# RUN rm /etc/nginx/conf.d/default.conf
# RUN rm /etc/nginx/nginx.conf

# ENV PROXY_HOST ${PROXY_HOST}
# ENV PROXY_IP ${PROXY_IP}

# 把主机的nginx.conf文件复制到nginx容器的/etc/nginx文件夹下
COPY ./nginx.conf /etc/nginx/
# 拷贝前端vue项目打包后生成的文件到nginx下运行
COPY ./dist /usr/share/nginx/html

# 暴露9527端口
EXPOSE 9527

# 注:CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令。
#    RUN指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时指定--no-cache参数,如:docker build --no-cache

# 使用daemon off的方式将nginx运行在前台保证镜像不至于退出
CMD ["nginx", "-g", "daemon off;"]

编写nginx.conf配置文件

vi nginx.conf

文件内容如下:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    keepalive_timeout  65;

    # include /etc/nginx/conf.d/*.conf;

  	server {
        listen       9527;
        charset utf-8;
        server_name  120.77.154.230;# 服务器地址或绑定域名

    	# start ---------------------------------------------------------------------------------------------

        location / {
           root   /usr/share/nginx/html;
           try_files $uri $uri/ /index.html;
        }
		location /api/{
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://120.77.154.230:7779/;
        }

        # end ---------------------------------------------------------------------------------------------

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
   }
}

其中,
服务器地址 server_name和 代理地址 proxy_pass 根据实际情况变更

vue项目打包

npm run build

编写docker-compose.yml文件

vi docker-compose.yml

文件内容如下:

version: '3'
services:
	vue-program:
	    image: imageName
	    container_name: cbb-ui
	    build:
	      context: ./xxx
	      dockerfile: ./dockerfile 
	      args:
	        proxy_host_value: 7779
	    environment:
	      TZ: Asia/Shanghai
	    # 依赖于api容器,被依赖容器启动后此web容器才可启动
	    depends_on:                          
	      - webimage
	    extra_hosts:
	      - "120.77.154.230:120.77.154.230"
	    ports:
	       - "9527:9527"

其中,
xxx是dockerfile文件目录

运行

docker-compose up -d --build
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 准备工作 在服务器上安装dockerdocker-compose,具体安装方法可以参考官方文档。 2. 创建项目文件夹 在服务器上创建一个用于存放vue项目的文件夹,例如:`/home/vue-project/`。 3. 编写docker-compose文件 在项目文件夹中创建一个名为`docker-compose.yml`的文件,并编写以下内容: ``` version: '3' services: web: image: node:latest ports: - "8080:8080" volumes: - ./app:/app working_dir: /app command: "npm run dev" ``` 这个docker-compose文件定义了一个名为`web`的服务,使用最新版本的Node.js镜像,将本地的`./app`目录挂载到容器的`/app`目录,将容器的8080端口映射到主机的8080端口,最后在容器中执行`npm run dev`命令。 4. 编写Dockerfile文件 在项目文件夹中创建一个名为`Dockerfile`的文件,并编写以下内容: ``` FROM node:latest RUN mkdir /app WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD [ "npm", "run", "dev" ] ``` 这个Dockerfile定义了一个基于Node.js镜像的Docker镜像,将容器的工作目录设置为`/app`,将本地的`package*.json`文件复制到容器中并执行`npm install`命令安装依赖,将本地的所有文件复制到容器中,将容器的8080端口暴露出来,最后在容器中执行`npm run dev`命令。 5. 构建镜像 在项目文件夹中运行以下命令构建镜像: ``` docker build -t vue-project . ``` 6. 启动容器 在项目文件夹中运行以下命令启动容器: ``` docker-compose up -d ``` 7. 访问应用 在浏览器中访问服务器的IP地址和端口号,例如:`http://<server_ip>:8080`,即可访问应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值