Docker多个 Docker 容器的文件

Dockerfile for multiple Docker containers

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

  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,我有一个包含 Tomcat 的 Docker 文件并将我的 war 复制到应用程序文件夹。我使用 Docker 和 运行 构建图像。

我的问题是是否有更好的方法通过单独的脚本来逐步协调这个过程? Docker 是否为此编写了解决方案?

谢谢

Dockerfile是构建镜像的配方,是启动容器的模板。要描述由使用标准化图像的多个容器组成的系统,您可以使用 docker-compose,而不是新的 Dockerfile。您可以使用 Dockerfile 自定义预先存在的 docker 图像,例如 mysql 或节点或 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: 行在容器之间添加链接。这些和其他详细信息都在文档中。

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

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