- 安装Git
***CentOS系统上*** sudo yum
sudo apt-get update && sudo apt-get install -y git
- 克隆Vue项目代码
git clone https://github.com/yourusername/your-vue-project.git your-app
cd your-app
- 创建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
- 创建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
- 构建Docker镜像
docker build -t your-app .
- 运行Docker容器
docker run -d --name your-app -p 80:80 your-app
或
docker run -d -p 81:80 your-app
- 后续更新部署脚本(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