docker -compose: дождитесь запуска контейнера перед запуском другого контейнера - PullRequest
0 голосов
/ 20 апреля 2020

В этом примере я хочу запустить контейнер prisma, только когда контейнер mysql выставлен на mysql:3036. Я пытался использовать wait-for-it.sh, но как я могу использовать это внутри контейнера призмы? https://github.com/vishnubob/wait-for-it

version: '3.7'
services:
  prisma:
    image: prismagraphql/prisma:1.34.8
    restart: always
    depends_on:
      - mysql
    ports:
      - '4466:4466'

    environment:
      PRISMA_CONFIG: |
        port: 4466
        databases:
          default:
            connector: mysql
            host: mysql
            user: root
            password: prisma
            rawAccess: true
            port: 3306
            migrations: true



  mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: prisma
    volumes:
      - ./persistence/test/mysql:/var/lib/mysql
  redis:
    image: redis:5-alpine
    command: redis-server
    ports:
      - 6379:6379
    volumes:
      - ./persistence/test/redis:/data
    hostname: redis
    restart: always
    # env_file: ${ENV_FILE}

1 Ответ

0 голосов
/ 20 апреля 2020

Если вы хотите использовать wait-for-it.sh для ожидания доступа к услуге mysql:3036, вам придется создать собственный образ FROM prismagraphql/prisma:1.34.8 и COPY wait-for-it.sh для этого образа. После этого вам нужно будет создать собственный скрипт запуска, который будет вызывать wait-for-fit.sh, а затем exec основной призменный процесс.

например Dockerfile

FROM prismagraphql/prisma:1.34.8
COPY wait-for-it.sh /
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

например entrypoint.sh

#!/usr/bin/env bash
/wait-for-it.sh mysql:3036   #add timeout if you want `-t 10s`
exec /app/start.sh "$@"

Сложная задача - найти стартовый скрипт внутри изображений. Иногда вы можете найти publi c Dockerfile в репозитории проектов, или вам придется проверить изображение, например docker image inspect prismagraphql/prisma:1.34.8 --format '{{.ContainerConfig.Entrypoint}}'

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