docker部署vue前端项目

152 阅读2分钟
  1. 安装Git
***CentOS系统上*** sudo yum
sudo apt-get update && sudo apt-get install -y git
  1. 克隆Vue项目代码
git clone https://github.com/yourusername/your-vue-project.git your-app
cd your-app
  1. 创建Nginx配置文件--可以复制或者在git里面提前准备
mkdir -p nginx
cat > default.conf <<EOF
server {
    listen 80;
    server_name localhost;
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        try_files \$uri \$uri/ /index.html;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}
EOF
  1. 创建Dockerfile--可以复制或者在git里面提前准备
cat > Dockerfile <<EOF
FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
COPY default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
EOF
  1. 构建Docker镜像
docker build -t your-app .
  1. 运行Docker容器
docker run -d --name your-app -p 80:80 your-app
或
docker run -d -p 81:80 your-app
  1. 后续更新部署脚本(deploy.sh)
#!/bin/bash
cd /path/to/vue-app
git pull origin master
docker build -t vue-app .
docker stop vue-container || true
docker rm vue-container || true
docker run -d --name vue-container -p 80:80 vue-app

如果需要启动多个可以使用 docker-compose.yml

//docker-compose.yml
# version: "3.8"
#################################################

#################################################
services:
#################################################
  web1:
    image: web1:latest
    container_name: web1
    restart: always
#################################################
  web2:
    image: web2:latest
    container_name: web2
    restart: always
#################################################
//deploy.sh
#!/bin/bash
cd /path/to/vue-app
git pull origin master
docker build -t vue-app .
cd ..
docker-compose down web1
docker-compose up -d web1
docker-compose ps

赋予脚本执行权限:

chmod +x deploy.sh

首次部署:依次执行步骤,完成代码克隆、配置、镜像构建和容器启动。 更新部署:运行./deploy.sh脚本自动拉取最新代码并重新部署。 docker命令

//更新docker 源 文件路径 etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.mybacc.com",
    "https://dytt.online",
    "https://lispy.org",
    "https://docker.xiaogenban1993.com",
    "https://docker.yomansunter.com",
    "https://aicarbon.xyz",
    "https://666860.xyz",
    "https://docker.zhai.cm",
    "https://a.ussh.net",
    "https://hub.littlediary.cn",
    "https://hub.rat.dev",
    "https://docker.m.daocloud.io",
    "https://ghcr.nju.edu.cn",
    "https://dockerproxy.com",
    "https://docker.gs"
  ]
}
//加载文件
sudo systemctl daemon-reload
//重启
sudo systemctl restart docker
//列出镜像
docker images
// 运行容器80端口映射为81
docker run -d -p 81:80 cesium-base-web
// 正在运行的docker
docker ps
//进入正在运行的容器
docker exec -it 16ed05dc2ceb sh

查询所有容器 包括未运行的
`docker ps -a`
确认容器状态为 `Up`(正在运行),而不是 `Exited`。如果容器未运行
docker start 5573214dd069
验证端口映射
docker port 5573214dd069
删除容器 CONTAINER ID
docker rm 5573214dd069
删除镜像 IMAGE
docker rmi 9c7a54a9a43c