docker-compose build
命令用于根据 Docker Compose 文件中的
build
配置来构建服务的 Docker 镜像。它从指定的 Dockerfile 或构建上下文中构建镜像,这样你可以将定制的镜像用于你的服务。
基本用法
docker-compose build
该命令会查看
docker-compose.yml
文件中所有定义了
build
部分的服务,并为它们构建 Docker 镜像。
详细说明
在
docker-compose.yml
文件中,如果某个服务需要构建自定义镜像,需要在该服务的定义中包含
build
配置项:
version: '3.8'
services:
web:
build:
context: ./app # 指定 Dockerfile 的构建上下文
dockerfile: Dockerfile # 可选,指定要使用的 Dockerfile(默认为 Dockerfile)
ports:
- "8080:80"
db:
image: postgres # 使用现有的镜像而不是构建
在这个示例中,
web
服务有一个
build
部分,它告诉 Docker Compose 在
./app
目录下查找 Dockerfile,并使用该文件构建镜像。
db
服务则使用现成的
postgres
镜像,所以不需要构建。
常用选项
- 强制重建镜像(--no-cache)- 默认情况下,Docker 会使用构建缓存来加快镜像构建速度。使用
--no-cache
选项可以强制不使用缓存。- 示例:docker-compose build --no-cache
- 只构建特定服务- 如果你只想构建某个特定的服务,可以在
build
后指定服务名称。- 示例:docker-compose build web
- 强制拉取基础镜像(--pull)- 如果你想确保 Docker 在构建过程中使用最新版本的基础镜像(如
FROM
指定的镜像),可以使用--pull
选项来强制从镜像仓库拉取最新的镜像。- 示例:docker-compose build --pull
- 跳过未更改的服务(--parallel)- Docker Compose 3.4+ 版本支持
--parallel
选项,可以并行构建服务。这对于有很多服务的项目可以加速构建过程。- 示例:docker-compose build --parallel
完整示例
下面是一个带有
build
配置的完整示例,包含多个服务,并使用自定义 Dockerfile 构建:
version: '3.8'
services:
web:
build:
context: ./app
dockerfile: Dockerfile.web
args:
- APP_ENV=production # 可传递构建参数
ports:
- "8080:80"
api:
build:
context: ./api
dockerfile: Dockerfile.api
environment:
- API_KEY=myapikey
ports:
- "8081:80"
在这个例子中:
web
服务和api
服务都从各自的 Dockerfile 构建镜像。web
服务的 Dockerfile 文件名是Dockerfile.web
,并且传递了构建时的参数APP_ENV=production
。api
服务从Dockerfile.api
构建,设置了环境变量API_KEY
。
总结
docker-compose build
用于构建docker-compose.yml
中定义的服务镜像,主要根据build
部分的配置进行构建。- 常用选项包括
--no-cache
(不使用缓存)、--pull
(拉取最新镜像)、--parallel
(并行构建)等。 - 可以选择构建所有服务或仅构建指定的服务。
通过灵活使用这些选项,可以高效管理和构建项目中的 Docker 镜像。
版权归原作者 小诸葛的博客 所有, 如有侵权,请联系我们删除。