ОШИБКА: Неверный аргумент: ./wait-for-it.sh - PullRequest
0 голосов
/ 24 августа 2018

У меня есть следующий файл docker compose:

version: '3'
services:
  my_sql_conatainer_name:
    image: percona:latest
    container_name: my_sql_conatainer_name
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: secret
    ports:
    - "3306:3306"
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      timeout: 20s
      retries: 10
  migration:
    image: boxfuse/flyway:latest
    container_name: flyway_migration
    volumes:
       - ./flyway_scripts/src/main/resources/db/migration:/flyway/sql
    command: ["./wait-for-it.sh", "mysql:3306", "--", "migrate", "-url=jdbc:mysql://my_sql_conatainer_name:3306/secret?useUnicode=true&characterEncoding=utf8&useSSL=false", "-user=root", "-password=password"]

wait-for-it.sh файл находится рядом с составным файлом

Когда я up вижу следующую ошибку:

flyway_migration | ОШИБКА: Неверный аргумент: ./wait-for-it.sh

Что я не прав?

1 Ответ

0 голосов
/ 24 августа 2018

Файл Docker для этого изображения говорит:

ENTRYPOINT ["flyway"]
CMD ["-?"]

Эти две части объединяются вместе, и все, что вы вводите в качестве параметров docker run, заменяет только часть CMD. То есть в действительности вы запускаете flyway ./wait-for-it.sh ..., а команда flyway не понимает, что с ней делать.

Если вы хотите продолжить этот путь, возможно, ваш самый простой следующий шаг - написать собственное пользовательское изображение FROM boxfuse/flyway, которое COPY wait-for-it.sh, добавит в изображение, а затем добавит собственный сценарий точки входа, который выполняет шаг wait-for-it и завершает его. с exec flyway "$@".

...