安装docker
yum install docker -y
docker -v
自动部署时需要的Dockerfile
- 编写Dockerfile时文件名就为Dockerfile,不需要要任何后缀,编写完后放到项目根目录下
- 版本1
FROM docker.dm-ai.cn/public/node:10-frontend-0.01
WORKDIR /app
ADD . .
RUN npm config set registry https://npm.dm-ai.cn/repository/npm && npm i && npm run build
FROM docker.dm-ai.cn/public/nginx:1.17
ENV TZ=Asia/Shanghai
WORKDIR /www
COPY –from=0 /app/dist /www
COPY –from=0 /app/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
- 版本2(嘉熙版本)
FROM docker.dm-ai.cn/public/node:14
WORKDIR /app
COPY . .
RUN npm config set registry https://npm.dm-ai.cn/repository/npm/ \
&& npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/ \
&& npm i && npm run build
FROM docker.dm-ai.cn/public/nginx:1.17
ENV TZ=Asia/Shanghai
COPY --from=0 /app/dist /usr/share/nginx/html
COPY --from=0 /app/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD nginx -g "daemon off;"
- npm config set registry https://xxx —> 设置镜像源地址
- COPY –from=0 <源路径> <目标路径> —> 从指定目录复制文件到指定路径
- EXPOSE —> 声明端口
- 使用nginx -g “daemon off;”启动nginx容器的原因
- 背景:Docker 容器启动时,默认会把容器内部第一个进程,也就是pid=1的程序,作为docker容器是否正在运行的依据,如果 docker 容器pid=1的进程挂了,那么docker容器便会直接退出。
- 原因:nginx默认是以后台模式启动的,Docker未执行自定义的CMD之前,nginx的pid是1,执行到CMD之后,nginx就在后台运行,bash或sh脚本的pid变成了1。所以一旦执行完自定义CMD,nginx容器也就退出了。为了保持nginx的容器不退出,应该关闭nginx后台运行