FROM python:3.7-alpine
WORKDIR /opt/
ADD supervisor.tar.gz /root/
ADD requirements.txt /root/
ADD xxx-master.tar /root/
ADD path.pth /usr/local/lib/python3.7/site-packages/
RUN apk add --no-cache vim supervisor postgresql-dev musl-dev gcc tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata \
&& cd /root && pip3 install -r requirements.txt \
&& echo "${TIME_ZONE}" > /etc/timezone \
&& ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime \
&& mkdir -p /var/log/supervisor \
&& mkdir -p /opt/acd/ \
&& ls /root/ \
&& mv /root/xxx-master/ /root/xxx/ \
&& mv /root/xxx/ /opt/acd/ \
&& mkdir -p /opt/xxx/log/ \
&& mkdir /etc/supervisor.d/ \
&& cp -r /root/supervisor.d/* /etc/supervisor.d/
CMD ["supervisord","-n"]
FROM 基于哪个底包构建,也是拉取这个镜像
WORKDIR 设置工作路径
ADD 添加文件到镜像内(注意这里ADD强大的一点就是如果你ADD的是压缩包格式,它会自动解压,将解压后的内容添加到镜像内)
RUN 可以理解为linux shell的具体操作,注意看我这里用的&&连接符,也就是说整个RUN是一条命令,也可以说这样实现的只有一个RUN
CMD 设置此docker运行时守护的进程,会替换掉python:3.7-alpine的启动命令
注意alpine的安装依赖的命令是:apk add --no-cache(这个是不保留安装包) vim …
这个实现方式因具体实施情况而异
总的思想是以python:3.7-alpine为底包,默认主进程为python3.7,后续将自己的代码打入镜像,重新构建镜像,用supervisor守护你的每一个py进程