多个Docker容器的Dockerfile

7

我正在使用Docker,并且有一个需要以下内容的Web应用程序:

  1. Tomcat
  2. PostgreSQL
  3. MongoDB

为了安装第2和第3项,我可以执行以下操作:

我可以像下面这样运行一个针对PostgreSQL的命令:

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

对于MongoDB,我运行以下命令:

docker run --name some-mongo -d mongo

对于Tomcat,我有一个Dockerfile,其中包含Tomcat和将我的war文件复制到应用程序文件夹中。我使用Docker构建镜像并运行它。
我的问题是是否有更好的方法通过单独的脚本逐步协调这一步骤? Docker compose是解决方案吗?
谢谢

2
docker-compose 正是为这种情况而设计的,您应该尝试一下并查看它是否符合您的需求。 - larsks
2个回答

13

docker-compose允许您将多个docker命令以特定格式的.yml文件表达出来。

然后,您可以使用docker-compose up来启动一组容器。

您的示例docker-compose .yml 文件可能开始看起来像这样:

some-postgres:
    environment:
        POSTGRES_PASSWORD:mysecretpassword
    image: postgres
some-mongo: image: mongo

您可以使用links:行在容器之间添加链接。这些和其他细节都在文档中。


4
基本上,docker-compose只是docker run的yaml文件实现。由于docker run使用参数传递,因此这些完全相同的参数在docker-compose中以yaml格式指定,而不是在命令行中指定。Docker compose还支持多个容器。
Docker compose还有一些其他不错的功能,例如docker-compose日志,该命令会提供compose启动的所有容器的日志。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接