[在Intellij中,我简单地将Docker文件的名称更改为* .Dockerfile,并将文件类型* .Dockerfile与docker语法相关联。
当您有一个用于数据库的Dockerfile,一个用于应用程序服务器的Dockerfile等时,如何组织属于项目的Dockerfile?您是否在源代码中创建了某种层次结构?一个大型企业项目不能仅包含一个Dockerfile?
此答案已过时。无花果不再存在,并已由Docker compose取代。
我只是为每个组件创建一个包含Dockerfile的目录。示例:
[构建容器时,只需提供目录名称,Docker将选择正确的Dockerfile。
在newer versions(>=1.8.0) of docker中,您可以执行此操作
docker build -f Dockerfile.db .
docker build -f Dockerfile.web .
大节省。
编辑:根据raksja的评论更新版本
编辑:来自@vsevolod的评论:通过提供文件.Dockerfile扩展名(而不是名称),可以在VS代码中突出显示语法。 Prod.Dockerfile,Test.Dockerfile等。
docker-compose
和多个docker-compose
不要将您的
Dockerfile
]重命名为Dockerfile
或Dockerfile.db
,您的IDE可能不支持它,您将失去语法高亮显示。作为
Dockerfile.web
,您可以有多个Kingsley Uchnor said,每个目录一个,代表您要构建的内容。
我希望有一个Dockerfile
文件夹,其中包含每个应用程序及其配置。这是具有数据库的Web应用程序的示例项目文件夹层次结构。
docker
docker-compose.yml docker ├── web │ └── Dockerfile └── db └── Dockerfile
示例:
docker-compose.yml
[
version: '3' services: web: # will build ./docker/web/Dockerfile build: ./docker/web ports: - "5000:5000" volumes: - .:/code db: # will build ./docker/db/Dockerfile build: ./docker/db ports: - "3306:3306" redis: # will use docker hub's redis prebuilt image from here: # https://hub.docker.com/_/redis/ image: "redis:alpine"
命令行用法示例:
docker-compose
如果构建Dockerfile时需要以前文件夹中的文件,则>]
您仍然可以使用上述解决方案,并将
# The following command will create and start all containers in the background # using docker-compose.yml from current directory docker-compose up -d # get help docker-compose --help
放置在诸如Dockerfile
的目录中,您需要像在docker/web/Dockerfile
中那样设置内部版本context
:
docker-compose.yml
这样,您将可以拥有这样的东西:
version: '3' services: web: build: context: . dockerfile: ./docker/web/Dockerfile ports: - "5000:5000" volumes: - .:/code
和这样的
config-on-root.ini docker-compose.yml docker └── web ├── Dockerfile └── some-other-config.ini
:./docker/web/Dockerfile
FROM alpine:latest COPY config-on-root.ini / COPY docker/web/some-other-config.ini /
。请确保参考Here are some quick commands from tldr docker-compose了解更多详细信息。
[在Intellij中,我简单地将Docker文件的名称更改为* .Dockerfile,并将文件类型* .Dockerfile与docker语法相关联。
[添加一个抽象层,例如,在此项目official documentation中的YAML文件,看起来像]
https://github.com/larytet/dockerfile-generator
简短的Python脚本/ make可以从配置文件生成所有Dockerfile。
[在需要使用多个dockerfile的项目中工作时,只需在单独的目录中创建每个dockerfile。例如,
app /db /
以上每个目录都将包含其dockerfile。构建应用程序时,docker将搜索所有目录并构建所有dockerfile。
[在Intellij中,我简单地将Docker文件的名称更改为* .Dockerfile,并将文件类型* .Dockerfile与docker语法相关联。
[添加一个抽象层,例如,在此项目official documentation中的YAML文件,看起来像]
[在需要使用多个dockerfile的项目中工作时,只需在单独的目录中创建每个dockerfile。例如,