docker - 从多个 dockerfile 构建多个图像

标签 docker docker-compose

有没有办法通过管理两个不同的 dockerfile 来构建多个图像? 在我的情况下,我想在构建上下文中保留两个 dockerfile 假设 Dockerfile_app1 Dockerfile_app2。

docker build -t <image_name> .

上面将选择名为 Dockerfile

的 dockerfile
docker build -t <image_name> Dockerfile_app1

这也不适用于我的情况,因为它期望文件名为 Dockerfile.

我也尝试过 docker-compose build。但是它不起作用。

app1:
  build: Dockerfile_app1
  ports:
   - "80:80"
app2:
  build: Dockerfile_app2
  ports:
   - "80:80"

最佳答案

只需使用 docker build-f 参数来指定要使用的 Dockerfile 的名称:

$ docker build -t <image_name> -f Dockerfile_app1 .
...

或者在 Compose 中,您可以从 1.3 版开始使用 dockerfile 键:

app1:
  build: .
  dockerfile: Dockerfile_app1
  ports:
   - "80:80"
app2:
  build: .
  dockerfile: Dockerfile_app2
  ports:
   - "80:80"

请注意,build 键用于构建上下文,而不是 Dockerfile 的名称(因此在您的情况下,它会查找名为 Dockerfile_app1 的目录)。

关于docker - 从多个 dockerfile 构建多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31292560/

相关文章:

mysql - Docker-Compose 无法连接到 MySQL

docker swarm - 如何平衡集群中已经运行的容器?

docker - 本地 Laradock Nginx 项目上的 SSL 证书

Docker 恢复已删除容器的卷?

java - DOCKER 错误 : Pull access denied for coffeeteareadb, 存储库不存在或可能需要 'docker login'

docker - 如何使用 docker-compose 将 docker 容器目录映射到主机?

python - 如何使用docker和OpenCV打开摄像头并处理图像?

docker - 1#1 : pread() "/etc/nginx/conf.d/default.conf" failed (38: Function not implemented)

docker - 如何通过docker文件更新java堆大小

docker - 服务笔记本没有指定镜像或构建上下文。必须至少提供一个