Under docker-compose 1.x, the following two files merged correctly using this command: docker-compose -f docker-compose.yml -f docker-compose.build.yml up
docker-compose.yml:
version: '2'
services:
base:
build:
context: .
entrypoint:
- /bin/with-config
ports:
- "8080:8080"
tty: true
service:
command:
- /bin/start -d
extends: base
test:
command:
- npm
- test
extends: base
docker-compose.build.yml:
version: '2'
services:
service-prebuilt:
extends: service
build: $CP_BUILD_FORCE_NO_BUILD_CONTEXT
image: $CP_BUILD_BFF_IMAGE
test-prebuilt:
extends: test
build: $CP_BUILD_FORCE_NO_BUILD_CONTEXT
image: $CP_BUILD_BFF_IMAGE
However, using docker compose 2.x, I am getting the following error:
cannot extend service "service-prebuilt" in /Users/[me]/bff/docker-compose.build.yml: service not found
The extends
option lets you specify a filename:
services:
service-prebuilt:
extends:
file: docker-compose.yml
service: service
build: $CP_BUILD_FORCE_NO_BUILD_CONTEXT
image: $CP_BUILD_BFF_IMAGE
test-prebuilt:
extends:
file: docker-compose.yml
service: test
build: $CP_BUILD_FORCE_NO_BUILD_CONTEXT
image: $CP_BUILD_BFF_IMAGE
Ref: https://docs.docker.com/reference/compose-file/services/#extends