Docker 部署 vue 项目

432 阅读2分钟

Xshell 6 连接 Linux 服务器

没有nginx 镜像的先获取

docker pull nginx

本地项目创建文件(项目根目录同级)

1、创建 nginx config 配置文件

* 创建 nginx 文件夹,该文件夹下新建文件 default.conf

* 这里路由模式是 history,需要进行配置

server {
  #端口
  listen xxx; 
  server_name localhost;
    
  #charset koi8-r;
  access_log /var/log/nginx/host.access.log main;
  error_log /var/log/nginx/error.log error;
  
  #配置 vue 路由 history模式
  location / {
    root /usr/share/nginx/html;
    try_files $uri $uri/ /index.html;
  }
    
  #error_page 404 /404.html;
  # redirect server error pages to the static page /50x.html
  #
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root /usr/share/nginx/html;
  }
}

2、创建 Dockerfile 文件

FROM nginx
COPY dist/ /usr/share/nginx/html/
COPY nginx/default.conf /etc/nginx/conf.d/default.conf

部署

*脚本部署

1、项目根目录同级创建 dockerrun.sh 文件

#!/usr/bin/env bash

# 定义应用组名
group_name='xxx'
# 定义应用名称
app_name='xxx'
# 定义应用版本
app_version='1.0'
# 端口号(和default.conf中的一致)
app_port="xxx"

echo '----停止容器----'
docker stop ${app_name}

echo '----移除容器----'
docker rm ${app_name}

echo '----删除镜像----'
docker rmi ${group_name}/${app_name}:${app_version}

echo '----构建镜像----'
docker build -t ${group_name}/${app_name}:${app_version} .

echo '----启动镜像----'
docker run -p ${app_port}:${app_port} --name ${app_name} --restart=always \
  -e TZ="Asia/Shanghai" \
  -v /etc/localtime:/etc/localtime \
  -d ${group_name}/${app_name}:${app_version}

echo '----启动状态----'
docker ps -a --filter name=${app_name}

2、 打包的dist ; nginx ; Dockerfile ; dockerrun.sh 上传到服务器

3、在目录下运行 dockerrun.sh 完成自动化部署

./dockerrun.sh

*手动命令部署

1、打包的dist ; nginx ; Dockerfile 上传到服务器

2. 基于该Dockerfile构建vue应用镜像

在目录运行命令(注意不要少了最后的 “.” ) 

docker build -t 镜像名称 .  

3. 查看本地镜像,运行命令

docker images

到此时我们的 vue 应用镜像 vuenginxcontainer 已经成功创建。接下来,我们基于该镜像启动一个docker容器。

4. 启动容器,基于 vuenginxcontainer 镜像启动容器,运行命令:

docker run -p 端口:端口 -d --name 容器名称 镜像名称

其他命令

查看所有容器

docker ps -a

启动一个已停止的容器:

docker start  CONTAINER ID 

停止一个容器

docker stop CONTAINER ID 

删除一个容器

docker rm CONTAINER ID
docker rm -f CONTAINER ID // 强制

删除镜像

 docker rmi IMAGE ID

Docker 教程

本文转载:www.cnblogs.com/tentacion/p…

如需配置https证书/域名

在服务器的nginx下新增配置文件,代理到docker的web项目端口

nginx代理:证书Https、代理解决跨域问题