moved over from moby/moby#43079
Tried some of the "solutions" from this thread and stackoverflow. No swarm, node or other hosts at all. Just trying to get it to work locally first without starting containers around docker-compose. Main idea is to get rid of these copies and just use replicas:
configsvr0:
image: mongo
command: mongod --configsvr --replSet configsvr --port 27017 --dbpath /data/db --keyFile /data/keyfile
volumes:
- configsvr0:/data/db
- ./keyfile:/data/keyfile:ro
configsvr1:
image: mongo
command: mongod --configsvr --replSet configsvr --port 27017 --dbpath /data/db --keyFile /data/keyfile
volumes:
- configsvr1:/data/db
- ./keyfile:/data/keyfile:ro
configsvr2:
image: mongo
command: mongod --configsvr --replSet configsvr --port 27017 --dbpath /data/db --keyFile /data/keyfile
volumes:
- configsvr2:/data/db
- ./keyfile:/data/keyfile:ro
volumes:
configsvr0:
configsvr1:
configsvr2:
See the difference? It's just counting up on the volume name...
It would be great to just have something like this:
configsvr0:
image: mongo
command: mongod --configsvr --replSet configsvr --port 27017 --dbpath /data/db --keyFile /data/keyfile
volumes:
- configsvr:/data/db
- ./keyfile:/data/keyfile:ro
volumes:
configsvr:
name: 'configsvr-{{.Task.Slot}}'
Tried this (see below) but it didn't work.
Note: Below I only copied small junks from my yml that I thought are important for this.
test 1 - volume name
would require to add entries under volumes so that's not really dynamic - but I gave it a try:
volumes:
- "configsvr{{.Task.Slot}}:/data/db"
➜ msc git:(develop) ✗ docker-compose up configsvr0
service "configsvr0" refers to undefined volume configsvr{{.Task.Slot}}: invalid compose project
test2 - dynamic name with task slot
that would be dynamic but still doesn't work though it was accepted in stackoverflow. That's actually my sample from top.
volumes:
- configsvr:/data/db
volumes:
configsvr:
name: 'configsvr-{{.Task.Slot}}'
➜ msc git:(develop) ✗ docker-compose up configsvr0
[+] Running 0/0
⠿ Volume "configsvr-{{.Task.Slot}}" Error 0.0s
Error response from daemon: create configsvr-{{.Task.Slot}}: "configsvr-{{.Task.Slot}}" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path
my env
mac monteray with docker desktop.
➜ msc git:(develop) ✗ docker -v
Docker version 20.10.11, build dea9396
➜ msc git:(develop) ✗ docker-compose -v
Docker Compose version v2.2.1
docker-compose.yml version: 3.9
moved over from moby/moby#43079
Tried some of the "solutions" from this thread and stackoverflow. No swarm, node or other hosts at all. Just trying to get it to work locally first without starting containers around docker-compose. Main idea is to get rid of these copies and just use replicas:
See the difference? It's just counting up on the volume name...
It would be great to just have something like this:
Tried this (see below) but it didn't work.
Note: Below I only copied small junks from my yml that I thought are important for this.
test 1 - volume name
would require to add entries under volumes so that's not really dynamic - but I gave it a try:
test2 - dynamic name with task slot
that would be dynamic but still doesn't work though it was accepted in stackoverflow. That's actually my sample from top.
my env
mac monteray with docker desktop.