【问题标题】:Docker compose in production?Docker 在生产中编写?
【发布时间】:2015-11-15 19:58:03
【问题描述】:

我打算使用 docker 来构建我的开发和生产环境。我构建了基于 Django 的应用程序。

在开发中,我使用docker-compose 来管理所有本地容器。这是一个不错且方便的解决方案。我运行 Django、3 个 celery 队列、rabbitmq、2 个 postgresql 数据库。

但我的生产环境完全不同。我需要运行 gunicorn 和 nginx。此外,数据库将使用 AWS RDS 运行。当然 Django 应用需要更多的东西,比如不同的设置文件或更多的环境变量。

我正在徘徊如何划分它。我也应该在那里docker-compose吗?这将需要用于 dev 和 prod 的单独文件,将来可能需要更多用于暂存等...如果是,如何部署它?使用Jenkins,拉取,重启全部使用compose?

或者我应该使用 ansible 直接运行docker 命令?但是我不相信我的开发与现场相同,并且更难预测其行为。

我喜欢在所有环境中运行 compose 文件的想法,但我不确定为不同环境维护多个文件是否是个好主意。开发需要更少的环境变量和更少的配置。我可以使用 env 文件将它们全部设置为生产环境。但是我应该将我的实时设置保留在 se repo 中吗?以前我在配置时设置所有环境变量,这是一个单独的过程。现在看起来配置和部署是一样的?也许这就是 Docker 的方式?

【问题讨论】:

  • 理想情况下,Dev 和 Prod 之间的唯一区别应该是规模和对数据的访问。 Docker swarm 可以在 EC2 上运行,这使您能够在生产中拥有相同的工作流程。如果您使用的是 RDS,则可以使用环境变量将 DB URL 和凭据注入到容器中。这可以使用在 Docker 容器中独立运行的数据库在 Dev 中进行模拟。
  • 在连续第三个项目中,我为每个环境使用单独的文件。

标签: docker ansible provisioning docker-compose


【解决方案1】:

使用http://docs.docker.com/compose/extends/#multiple-compose-files,您可以将所有常见的东西保存在docker-compose.yml 中,并使用docker-compose.prod.yml 添加额外的服务、更改链接、环境和端口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2019-12-07
    • 2023-03-15
    • 2021-04-19
    相关资源
    最近更新 更多