多个Docker容器的Dockerfile

Son*_*nam 4 docker docker-compose

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

  1. Tomcat的
  2. PostgreSQL的
  3. MongoDB的

要安装第2项和第3项,请执行以下操作:

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

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
Run Code Online (Sandbox Code Playgroud)

对于Mongodb,我运行:

docker run --name some-mongo -d mongo
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Pau*_*aul 8

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

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

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

泊坞窗,撰写.yml文件为您的例子可能有点开始这样看

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

some-mongo:
    image: mongo

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


dan*_*y74 4

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

Docker compose 还有一些其他不错的功能,例如 docker-compose log ,该命令提供由 compose 启动的所有容器的日志。