我开始将我的应用程序迁移到 Docker 容器:我使用 Ngnix、supervisord、gunicorn、python flask、celery、flower、lighttpd、RabbitMQ 和 Postgresql。在我原来的虚拟机中,我将所有配置保存在 /usr/local/src/application/conf/ 下。在 settings.py 中,我定义了:
SQLALCHEMY_DATABASE_URI
在 celeryconfig.py 中我定义:
BROKER_URL
我将创建 5 个容器:
- Ngnix 负载均衡器
- Flask 接口
- 芹菜
- RabbitMQ
- Lighttpd
我正在使用 docker-compose 和卷。由于现在我的所有 IP 地址都是 localhost (127.0.0.1)
对于我每个容器访问通用配置有什么建议?卷?
我如何知道每个容器分配了哪个 IP 地址,以便我可以定义我的设置?例如,当 RabbitMQ 启动时,我应该在 BROKER_URL 中配置哪个 IP?
由于我的 Docker 应用程序仍将指向我的 git repo,我可以将其指向我的主机文件夹吗,我应该在这里使用卷吗?
答案1
- 关于您的配置,您可以直接使用 env_file 为文件或环境传递组合环境变量:https://docs.docker.com/compose/compose-file/#env-file
- 对于 IP,当您在 Compose 中链接容器时,您在 yml 中设置的容器名称将是此容器的主机名。您不需要 IP,只需要用户名。您可以通过在 Compose 容器中执行 exec bash 并尝试使用其名称 ping 另一个容器来尝试此操作。
- 你说的“指向你的主机文件夹”是什么意思?尝试将尽可能多的内容直接放入容器中,但如果你真的需要将一些数据提取到你的主机 FS,那么是的,你将需要卷。