多个Docker容器的Dockerfile

时间:2016-02-29 21:18:39

标签: docker docker-compose

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

  1. Tomcat的
  2. 的PostgreSQL
  3. MongoDB的
  4. 要安装第2项和第3项,请执行以下操作:

    我可以为PostgreSQL运行命令,如:

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

    对于Mongodb我跑:

    docker run --name some-mongo -d mongo
    

    对于Tomcat,我有一个带有Tomcat的Dockerfile并将我的war复制到apps文件夹。我使用Docker构建映像并运行它。

    我的问题是,是否有更好的方法通过单独的脚本逐步协调这一点? Docker是否构成了解决方案?

    感谢

2 个答案:

答案 0 :(得分:8)

Dockerfile是用于构建映像的配方,它是用于启动容器的模板。要使用标准化图像描述由多个容器组成的系统,您将使用docker-compose,而不是新的Dockerfile。您可以使用Dockerfile来自定义预先存在的docker镜像,例如mysql或node或ubuntu,以用于特定用途。

docker-compose允许您将多个docker命令表示为特定格式的.yml文件。

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

您的示例的docker-compose .yml file 可能会开始看起来像这样

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

some-mongo:
    image: mongo

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

答案 1 :(得分:2)

基本上,docker-compose只是docker run的yaml文件实现。 由于docker run传递了参数,所以这些完全相同的参数在docker compose中以yaml格式而不是在命令行中规定。 Docker compose也支持多个容器。

Docker compose还有一些其他不错的功能,例如docker-compose logs,这个命令给出了由compose启动的所有容器的日志。