背景
不是啥干货,就是一个日常笔记
编译在本地,然后打包后文件作为一个镜像上传,服务端直接部署这个镜像。
需求很简单,我觉得也是常规的吧,阉割版ci
dockerfile
Dockerfile 手生了,查了会文档才写,主要是几个目录关系。
FROM nginx:latest
WORKDIR /
COPY default.conf /etc/nginx/conf.d/
COPY deploy.sh /home/ws/
COPY vts-web/ /home/ws/vts-web/
RUN chmod 777 /home/ws/deploy.sh
从nginx镜像拉取,更新nginx配置文件,coopy打包后文件和部署脚本就可以了。
nginx配置:
server {
listen 5000;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Credentials: true;
location /vts-web {
root /home/ws;
}
location /static {
root /home/ws/vts-web;
}
location / {
proxy_pass http://www.baidu.com;
}
}
deploy部署脚本:
就是启动一下nginx
#!/bin/bash
/usr/sbin/nginx -g "daemon off;"
docker build
docker build,根据dockerfile打成一个镜像, docker tag rename docker push,推送。
cd /home/ws
docker build -t vts-web-test:v7 .
docker tag vts-web-test:v7 10.11.16.70/vts/vts-web-test:v7
docker push 10.11.16.70/vts/vts-web-test:v7
验证
在打包机本地就可以验证。
docker run -tid -p 8888:5000 vts-web-test:v7 sh /home/ws/deploy.sh
docker exec -ti containId /bin/bash // 查看文件
ip+port,访问页面
其他
完整ci部分配合jeknins。 dockerfile中的操作是,先拉取最新代码,然后npm run build,带参数。dockerfile也需要接收参数。 后面的过程想通。那基础镜像应该是一个node+nginx,也可以分两步做。