spring - 好奇docker-compose和dockerfile的使用
问题描述
我正在研究码头工人。
docker-compose 被称为一个角色,可以方便地将多个容器作为一个脚本运行。
首先,既然 Dockerfile 只处理一个容器,那么认为 Docker Compose 向后兼容 Dockerfile 是否正确?
我以为 docker compose 可以涵盖所有内容,但我看到 docker compose 和 docker files 一起使用。
我们以spring boot为例。
我可以只使用一个 docker-compose 来运行应用程序所需的 db 容器、构建应用程序、检查正在使用的端口并运行 jar 文件吗?
还是我必须将 dockerfils 和角色分开并使用两者?
解决方案
我建议您更深入地了解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
推荐阅读
- jquery - 折叠时的引导子菜单
- java - 如何在 MANIFEST.MF 文件中包含 org.json.jar 和 org.json.* 导入
- python - pyqt中一串连续的复选框
- css - 为什么子元素角带有边框半径:继承;与父母的不一致
- elasticsearch - Elasticsearch 查询显示的数据多于它的数据
- linux - 向 Yocto 生成的自定义 Linux 映像添加新内核参数
- javascript - 如何使用 javascript 中的选择选项值计算票价?
- angularjs - 将 AnimeJS 与 FabricJS 的对象一起使用
- ios - 将数据从一个视图控制器直接传递到第三个
- c++ - 在函数之外保持 boost.process 活着被调用