当您有一个数据库Dockerfile,一个用于应用程序服务器,等等时,如何组织属于项目的Dockerfiles?你是否在源代码中创建了某种层次结构?一个大型企业项目不能只包含一个Dockerfile?
Shu*_*huo 248
在较新版本(> = 1.8.0)的docker中,您可以执行此操作
docker build -f Dockerfile.db .
docker build -f Dockerfile.web .
Run Code Online (Sandbox Code Playgroud)
一个很大的节省.
编辑:根据raksja的评论更新版本
Gab*_*oux 100
docker-compose和多个Dockerfile不要将您重命名
Dockerfile为,Dockerfile.db或者Dockerfile.web您的IDE可能不支持它,您将失去语法突出显示.
正如Kingsley Uchnor所说,你可以拥有多个Dockerfile,每个目录一个,代表你想要构建的东西.
我喜欢有一个docker文件夹来保存每个应用程序及其配置.以下是具有数据库的Web应用程序的示例项目文件夹层次结构.
docker-compose.yml
docker
??? web
? ??? Dockerfile
??? db
??? Dockerfile
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
docker-compose 命令行用法示例:
# 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
Run Code Online (Sandbox Code Playgroud)
您仍然可以使用上面的解决方案,并把您Dockerfile的目录,例如docker/web/Dockerfile,所有你需要的是设置构建context在docker-compose.yml这样的:
version: '3'
services:
web:
build:
context: .
dockerfile: ./docker/web/Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
Run Code Online (Sandbox Code Playgroud)
这样,你就可以拥有这样的东西:
config-on-root.ini
docker-compose.yml
docker
??? web
??? Dockerfile
??? some-other-config.ini
Run Code Online (Sandbox Code Playgroud)
和./docker/web/Dockerfile这样:
FROM alpine:latest
COPY config-on-root.ini /
COPY docker/web/some-other-config.ini /
Run Code Online (Sandbox Code Playgroud)
以下是来自tldr docker-compose的一些快速命令.请务必参阅官方文档以获取更多详细信息.
小智 12
在 Intellij 中,我简单地将 docker 文件的名称更改为 *.Dockerfile,并将文件类型 *.Dockerfile 关联到 docker 语法。
这个答案已经过时了。无花果不再存在,已经被Docker compose取代。
我只是为每个组件创建一个包含Dockerfile的目录。例:
在构建容器时,只需提供目录名称,Docker将选择正确的Dockerfile。
| 归档时间: |
|
| 查看次数: |
67026 次 |
| 最近记录: |