首页 > 解决方案 > 好奇docker-compose和dockerfile的使用

问题描述

我正在研究码头工人。

docker-compose 被称为一个角色,可以方便地将多个容器作为一个脚本运行。

首先,既然 Dockerfile 只处理一个容器,那么认为 Docker Compose 向后兼容 Dockerfile 是否正确?

我以为 docker compose 可以涵盖所有内容,但我看到 docker compose 和 docker files 一起使用。

我们以spring boot为例。

我可以只使用一个 docker-compose 来运行应用程序所需的 db 容器、构建应用程序、检查正在使用的端口并运行 jar 文件吗?

还是我必须将 dockerfils 和角色分开并使用两者?

标签: springspring-bootdockerdocker-composedockerfile

解决方案


我建议您更深入地了解docker compose在 Docker Compose Vs Dockerfile 之间的差异中阅读的内容。

我报告了上述文章中解释的部分内容:

Dockerfile 是一个简单的文本文件,其中包含用户可以调用来组装图像的命令,而 Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。

Docker Compose 在 docker-compose.yml 中定义构成应用程序的服务,以便它们可以在隔离环境中一起运行。它只需运行 docker-compose up 即可在一个命令中运行应用程序。如果将构建命令添加到项目的 docker-compose.yml 中,Docker compose 将使用 Dockerfile。您的 Docker 工作流程应该是为您希望创建的每个图像构建一个合适的 Dockerfile,然后使用 compose 使用 build 命令组装图像。

关于您的问题,我回答您说 docker compose 非常灵活,您可以将您的组合逻辑分段到多个yaml文件中,并根据需要通过 docker compose 命令行进行组合。

这里有一个例子:


# Build the docker infrastructure

docker-compose \
  -f network.yaml \
  -f database.yaml \
  -f application.yaml
  build

# Run the application

docker-compose \
  -f application.yaml
  up


推荐阅读