【docker】不带编译的前端项目部署dockerfile

397 阅读1分钟

背景

不是啥干货,就是一个日常笔记

编译在本地,然后打包后文件作为一个镜像上传,服务端直接部署这个镜像。

需求很简单,我觉得也是常规的吧,阉割版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,也可以分两步做。