Expand your docker-compose.yml file with this tool.
$ pip3 install --user docker-compose-expand
Your services in docker-compose.yml
file.
version: "3"
services:
api:
image: ef9n/supervisord:0.1.0
restart: on-failure
ports:
- "9001:9001"
products:
image: ef9n/supervisord:0.1.0
restart: on-failure
ports:
- "9002:9001"
analysis:
image: ef9n/supervisord:0.1.0
restart: on-failure
ports:
- "9003:9001"
monitoring:
image: ef9n/supervisord:0.1.0
restart: on-failure
ports:
- "9004:9001"
Instead of using the docker-compose
tool, define the same services in the docker-compose-expand.yml
file and use the docker-compose-expand
tool that generates the docker-compose.yml
file for your expandable services.
-
You can define variables in
loop
field orvars
field. -
In the
loop
field, you can refer to a variable which is in thevars
field.
version: "3"
services:
api:
image: ef9n/supervisord:0.1.0
restart: on-failure
ports:
- "9001:9001"
expand:
vars:
services:
- name: "{{ name }}"
service:
image: ef9n/supervisord:0.1.0
restart: on-failure
volumes:
- "/tmp/{{ name }}/:/opt/{{name}}/"
ports:
- "{{ port }}:9001"
loop:
- name: products
port: 9002
- name: analysis
port: 9003
- name: monitoring
port: 9004
# Vars Field
version: "3"
services:
api:
image: ef9n/supervisord:0.1.0
restart: on-failure
ports:
- "9001:9001"
expand:
vars:
supervisors:
- name: products
port: 9002
- name: analysis
port: 9003
- name: monitoring
port: 9004
services:
- name: "{{ name }}"
service:
image: ef9n/supervisord:0.1.0
restart: on-failure
volumes:
- "/tmp/{{ name }}/:/opt/{{name}}/"
ports:
- "{{ port }}:9001"
loop: "{{ supervisors }}"
Look up the examples directory.