Итак, я настраиваю Docker Swarm.
Теперь я спокойно работаю с командой docker stack deploy -c docker-compose.yml myapp
, которая заменяет мою прежнюю docker-compose up
.
Но один из моих сервисов — это моя БД, и мне нужно pgrestore
внутри нее.
Раньше с композицией я запускал:
docker-compose run --rm postgres pg_restore --rest-of-command
Как я могу сделать то же самое с stack deploy
?
К сожалению, контейнер, созданный с помощью compose, отличается от контейнера из stack deploy
: первый называется myapp_postgres
, а второй myapp_postgres.1.zamd6kb6cy4p8mtfha0gn50vh
.
Думаю, я мог бы написать что-то вроде docker exec 035803286af0
, но тогда я теряю все преимущества конфига от docker-compose.yml
, а в данном случае это:
postgres:
env_file:
- ./.env
image: postgres:11.0-alpine
volumes:
- "..:/app" # toe make the dump accessible to the container
- "/var/run/postgresql:/var/run/postgresql"
Так что это решение не очень IaC.
Так разве там нет docker service run
или что-то в этом роде?
Спасибо
pgrestore
при запуске контейнера или вручную после этого? - person Ay0   schedule 29.10.2019