首页 > 解决方案 > docker-compose 相同的配置用于开发和生产,但仅在开发中启用主机和容器之间的代码共享

问题描述

由于使用 docker 最重要的好处是保持 dev 和 prod env 相同,所以让我们排除使用两个不同的选项docker-compose.yml

假设我们有一个 Django 应用程序,我们gunicorn用于生产环境,我们有一个专用的 apache2 作为反向代理(这个 apache2 在设计上不属于 docker)。所以这个应用程序(docker-compose)只有两个部分,web(Django)和db(mysql)。db 部分没有任何问题。

对于 Django 部分,没有 docker 的开发例程将使用 venvpython3 manage.py runserver或 IDE 提供的任何快捷方式。我们可以愉快地更改我们的代码,开发服务器很聪明,可以立即进行更改和反映。

当 docker 出现时事情变得很棘手,因为所有源代码都应该打包到镜像中,这给我们的开发人员带来了一次又一次重新创建镜像和容器的巨大开销。可能有以下解决方案(我发现它不优雅):

TLDR;如何设置我的环境,以便

非常感谢!

标签: djangopython-3.xdockerdocker-composegunicorn

解决方案


我也喜欢将尽可能多的功能塞进一个 docker-compose.yml 文件中。我会考虑的一些策略:

  1. 为 prod 和 dev 定义不同的服务。所以你会跑docker-compose up devor docker-compose up prodor docker-compose run dev。这里有一些复制,但通常不会很多。

  2. 使用多个 docker-compose.yml 文件并将它们合并。例如:docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d。更多详细信息:https ://docs.docker.com/compose/extends/

我通常只是注释掉我的卷部分,但这可能不是最好的解决方案。


推荐阅读