很高兴为你介绍使用 Docker 配合 Python 开发环境的实例攻略.这里将会包含两个示例说明.
进入项目的根目录,在该目录下创建 Dockerfile 文件,编写 Docker 镜像的配置信息.以下是一个简单的 Dockerfile 文件配置示例:
FROM python:③7
MAINTAINER yourname
ENV PYTHONBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
在 Docker 镜像构建前,需要将项目路径下的 requirements.txt 文件中的 Python 依赖库添加到 Docker 镜像中,以及将当前项目代码复制到 Docker 镜像中.可执行以下命令构建 Docker 镜像:
$ docker build -t your_image_name .
使用以下命令创建并运行 Docker 容器:
$ docker run -d -p 8000:8000 --name your_container_name your_image_name
其中:
-d 表示在后台运行容器
-p 表示映射宿主机和容器的端口
--name 表示容器的名称
your_image_name 表示刚才构建的 Docker 镜像名称
假设有个使用 Flask 作为后端框架的 web 项目,其中有一个需要编译的前端文件,需要使用 node.js 进行编译工作.
在此我们将使用 Docker 的多阶段构建来完成这段工作.以下是多阶段构建的 Dockerfile 文件:
FROM python:③7 as backend
MAINTAINER yourname
ENV PYTHONBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
FROM node:⑧9 as frontend
RUN mkdir -p /app
WORKDIR /app
COPY . /app
RUN npm install npm run build
FROM python:③7
ENV PYTHONBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY --from=frontend /app/dist /code/dist
COPY --from=backend /code /code
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
上面的 Dockerfile 中,我们使用了两个 FROM 指令,在第一个阶段中我们使用 Python 镜像来构建项目的后端部分,在第二个阶段使用 Node.js 官方镜像来处理前端编译工作,最后再将前、后端部分整合到 Python 镜像中.
完成以上操作后,构建一个新的 Docker 镜像:
$ docker build -t your_image_name .
执行如下命令启动容器:
$ docker run --rm -it -p 8000:8000 your_image_name