1. 打包开发环境中的后端项目镜像
后端Django的Dockefile:
FROM python:3.7
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get -y install vim \
&& mkdir -p /home/backend \
&& cd /home/backend \
&& mkdir static \
&& mkdir media \
&& mkdir logs \
&& rm -r /var/lib/apt/lists/*
ENV PYTHONUNBUFFERED 1
ENV ConfigPath "production"
WORKDIR /home/backend
COPY ./requirements.txt /home/backend
RUN pip install -r /home/backend/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple \
&& rm -rf ~/.cache/pip \
&& rm -rf /tmp
COPY ./ /home/backend
CMD ["/usr/local/bin/daphne", "-b", "0.0.0.0", "-p", "8000", "--proxy-headers", "config.asgi:application"]
用python:3.7这种指定版本的镜像作为基础镜像,使用ubuntu系统,优点是环境全面、相对保险。但缺点是最终镜像的体积较大,后期可以改进为alpine版本;
更新镜像内的软件,新建backend目录用于存放django项目代码,并新建static、media、logs路径用于存放服务运行中产生的相应文件;
设置两个环境变量,一个用于python的缓存,一个用于指示当前运行环境;
将Dockerfile中之后的命令执行目录改为新建的项目目录;
先将项目依赖环境复制到项目目录中;
安装项目依赖环境,这一步占市较久,所以在复制项目代码前单独执行;
复制项目代码到镜像中;
使用daphne作为服务器启动服务。
构建镜像:
docker build -t backend:p0.0.1 .
2. 打包开发环境中的前端项目镜像
前端主要是静态文件和脚本,镜像相对简单。
在制作镜像前,需要向配置生产环境中的nginx,主要是docker-compose服务间的通信:
nginx.conf:
upstream apollo_spa {
server project_django_web_1