从多个dockerfile生成多个映像
有没有办法通过管理两个不同的DockerFile来构建多个映像? 在我的例子中,我想在构建上下文中保留两个dockerfile假设dockerfile_app1 dockerfile_app2从多个dockerfile生成多个映像,docker,docker-compose,Docker,Docker Compose,有没有办法通过管理两个不同的DockerFile来构建多个映像? 在我的例子中,我想在构建上下文中保留两个dockerfile假设dockerfile_app1 dockerfile_app2 docker build -t <image_name> . 这也不适用于我的案例,因为它希望文件名为Dockerfile. 我也尝试过由docker编写构建。但是它不起作用 app1: build: Dockerfile_app1 ports: - "80:80" app2:
docker build -t <image_name> .
这也不适用于我的案例,因为它希望文件名为Dockerfile.
我也尝试过由docker编写构建。但是它不起作用
app1:
build: Dockerfile_app1
ports:
- "80:80"
app2:
build: Dockerfile_app2
ports:
- "80:80"
只需将
-f
参数用于docker build
即可指定要使用的Dockerfile的名称:
$ docker build -t <image_name> -f Dockerfile_app1 .
...
请注意,
build
键用于生成上下文,而不是Dockerfile的名称(因此在您的示例中,它查找名为Dockerfile\u app1
的目录)。docker compose.yml中的build
指令需要一个目录,而不是文件名。docker build
命令允许您指定除Dockerfile
以外的名称;检查手册页或帮助输出(并确保您正在运行最新的Docker版本)。谢谢Adrian,如果我使用Docker build-t-f Dockerfile_app1选项,它会正常工作。但是,如果我试图使用docker compose build构建app2服务,我会收到“不支持的配置选项:'dockerfile'”消息。我做错什么了吗?你用的是什么版本的Compose?您可能只需要升级dockerfile
应该是正确的:我的1.2.0不工作,在更新到1.3.1之后,它对我来说工作得很好,谢谢:)dockerfile
应该是args
和context
中的一个属性,请参阅。您能更新答案中的缩进吗?@peetasan取决于您使用的是新的还是旧的撰写语法:(
$ docker build -t <image_name> -f Dockerfile_app1 .
...
app1:
build: .
dockerfile: Dockerfile_app1
ports:
- "80:80"
app2:
build: .
dockerfile: Dockerfile_app2
ports:
- "80:80"