各位 docker 大佬,我最近使用 docker 有一个问题想不明白,就是开发环境和生产环境的问题。
我先将自己对 docker 的认识描述一下,以 python web 开发为例:
一、docker 最主要的使用场景是生产环境应用部署,在这个使用场景中,步骤如下:
- 通过类似的工程下的一个 Dockerfile 打包成镜像。
- 将镜像上传到 docker hub。
- 在服务器上
docker pull下来之后运行。
这里的 dockerfile 里面,将工程目录 copy 进入 docker 镜像里,如下:
FROM kennethreitz/pipenv
LABEL maintainer="[email protected]"
COPY . /app
WORKDIR /app
ENV FLASK_APP=run.py
ENV FLASK_DEBUG=1
ENTRYPOINT [ "./boot.sh" ]
二、docker 也可以作为开发环境的一个工具使用,类似于 vagrant。(这一点其实是我疑惑的,大家用 docker 作为开发环境的多吗?) 在这个使用产经中,我使用 docker 的 volume 将本地工程目录,映射到 docker 容器内部,然后运行 docker 容器,映射端口供主机使用。
现在我的问题是:
- 我描述的生产环境使用流程正确吗?
- 我描述的开发环境使用流程正确吗?不正确的还请指正
- 如何做到 docker 既用来开发环境,也用于部署,形成一套流畅的工作流呢?
先谢过大家了!
