Docker Swarm выполнить команду в контейнере - PullRequest
1 голос
/ 28 октября 2019

Итак, я настраиваюсь с помощью Docker Swarm.

Теперь я в порядке с командой docker stack deploy -c docker-compose.yml myapp, которая заменяет мою прежнюю docker-compose up.

Но одна из моих услуг - это мояDB и мне нужно pgrestore внутри него.

Ранее с compose я запускал:

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 или что-то еще?

Спасибо

1 Ответ

0 голосов
/ 29 октября 2019

Вы можете следовать изображению Docker Документы ( Сценарии инициализации * секция 1004 *):

и создать *.sh скрипт под /docker-entrypoint-initdb.d, который будет запускаться pg_restore ... приКонтейнер Postgres будет работать как часть службы Docker.

Похоже, он не является прямым ответом на ваш вопрос, однако он может достичь вашей цели восстановления дампа во время инициализации Postgres.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...