We have created a docker compose file with multiple services. The images for these services are built in runtime using 'build' configuration option. The corresponding Dockerfile(s) are given in the respective directories.
Sample docker compose file...
version: '3'
services:
db2server:
build: ./db2server
ports:
- "50005:50000"
command: ["db2start"]
appruntime:
build: ./appruntime
depends_on:
- db2server
This docker compose file works with docker-compose
command.
db2server
& appruntime
directoriesBut when we try to deploy this in a docker swarm, the following error is thrown...
docker stack deploy -c /home/docker/docker-compose.yml app
Ignoring unsupported options: build
Creating network app_default
Creating service app_db2server
failed to create service app_db2server: Error response from daemon: rpc error: code = InvalidArgument desc = ContainerSpec: image reference must be provided
Looks like the 'build' configuration option is ignored during stack deployment in docker swarm.
How can we deploy these services (with build option) defined in docker compose file in a docker swarm.
If anyone is still on this you can tag the built image in compose by setting the image parameter along with the build parameter, as you can see in the build section of the docs. So the file should look like:
version: '3'
services:
db2server:
image: <your registry here>/db2server
build: ./db2server
ports:
- "50005:50000"
command: ["db2start"]
appruntime:
image: <your registry here>/appruntime
build: ./appruntime
depends_on:
- db2server
then you can do:
docker-compose build
docker-compose push
docker stack deploy -c /home/docker/docker-compose.yml app