如何使用docker-compose构建所有镜像但仅运行web服务?
解决方案
当然可以实现你的需求,以下是两种常用的可行方式:
方式一:通过命令行直接指定执行
运行这条命令即可达成目标:
docker-compose up --build web
--build参数会触发构建所有与web服务相关的镜像(包括web-prebuild,因为web声明了依赖它)- 结尾指定
web,表示仅启动该服务的容器,不会运行web-prebuild对应的容器
方式二:修改docker-compose.yml配置
给web-prebuild服务添加profiles配置,让它默认不被启动:
name: polyocr services: web-prebuild: build: context: ./../.. dockerfile: ./deployment/docker/web/Dockerfile.prebuild profiles: ["prebuild-only"] # 添加该行,指定一个非默认的配置组 web: build: context: ./../.. dockerfile: ./deployment/docker/web/Dockerfile depends_on: - web-prebuild ports: - "80:8000"
之后直接执行:
docker-compose up --build
此时只会启动web服务,但因为web依赖web-prebuild,Docker Compose会自动先构建web-prebuild的镜像,不会运行它的容器。如果后续需要单独处理web-prebuild,可以用docker-compose --profile prebuild-only build web-prebuild。
内容的提问来源于stack exchange,提问作者GuruYaya
相关产品推荐
相关产品推荐

