我喜欢将应用程序模块化到容器中的想法(db,fronted,backing ...)但是,根据Docker文档 “Compose非常适合开发,测试和登台环境” 即可。 这句话对生产环境一无所知。因此,我在这里感到困惑。
使用Dockerfile
从头开始构建生产映像并在那里安装所有LAMP堆栈(等)是否更好?
或者用docker-compose.yml
构建生产环境会更好吗?是否有任何理由(开销,链接等)Docker没有明确说出Compose对于生产来说很棒?
答案 0 :(得分:14)
你真的需要在你的情况下定义“生产” Compose只需使用一个命令即可启动和停止多个容器。它不会为常规docker命令无法添加任何内容。
如果“production”是一个docker主机,并且定义了所有实例和关系,那么compose可以做到这一点 但是,如果你需要多个主机并在整个集群中进行动态扩展,那么你真的在关注swarm或其他选项。
答案 1 :(得分:5)
为了扩展@ChrisSainty已经提到的内容,compose只是一个编排工具,您可以使用自己的Dockerfiles构建的图像和单个主机中的组合设置。但请注意,compose against a swarm cluster可以显示与单个Docker主机相同的API。
在我看来,使用容器实现microservice架构是一种简单的方法,可以高效地定制服务。除此之外,我建议查看此官方documentation关于在生产环境中使用撰写的良好实践。
答案 2 :(得分:1)
如果您在单台机器上工作或不需要在多台互连的机器上分发容器,则使用 docker-compose 很好。如果您可以单独使用 Docker,那么您也可以使用 docker-compose。这是一个很酷的工具,可以更轻松地处理容器配置或多个互连的容器。
“不要在生产中使用 docker-compose”声明的动机是隐藏的假设,这些假设不一定对每个人都有效,并通过不明确的沟通传播。毕竟,生产对不同的人来说意味着不同的东西。
无论您是否选择使用 docker-compose - 确保您谨慎使用 Docker、您的镜像构建良好、您遵循最佳实践并且您正在照顾您的服务器。
>如果您希望将容器化部署分布在多台机器上,您可能希望超越 docker-compose。 Docker Swarm 和 Kubernetes 都是编排解决方案,您也可以考虑 AWS ECS 是否适合您。如果你只想在单台机器上管理容器(即使有多台机器),docker-compose 是一个很好的工具。