Почему testcafe-docker.sh игнорирует параметр app-init-delay? - PullRequest
1 голос
/ 08 мая 2019

Я пытаюсь создать docker-compose, чтобы включить мое приложение в качестве службы и testcafe в качестве другой службы.Оба контейнера собраны и инициализированы, но я не могу заставить testcafe ждать, пока мое приложение станет доступным для запуска тестов.

Я попытался передать параметр --app-init-delay 30000 в качестве параметрав testcafe-docker.sh, но игнорирует его.

entrypoint: ["/opt/testcafe/docker/testcafe-docker.sh", "'chromium --no-sandbox'", "--app-init-delay 30000", "e2e"]

Также пытался использовать сценарий https://github.com/Eficode/wait-for в точке входа или команде перед вызовом testcafe-docker.sh.Кажется, что команда вступает в конфликт с командой entrypoint, когда я использую ее на точке входа, я получаю testcafe для ожидания, но вместо запуска тестов заканчивается «Operation timed out»

entrypoint: ['/script/wait-for', 'app:8080 -- "/opt/testcafe/docker/testcafe-docker.sh chromium --no-sandbox e2e"']

(кажется, чтовсе параметры ожидания должны быть в одной и той же записи массива, чтобы он работал как скрипт точки входа)

Это мой файл docker-compose

version: "2"
services:
  app:
    container_name: app
    build: ./dist/docker/
    ports:
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./dist/docker/dependency:/dependency

  testcafe:
    container_name: testcafe
    image: testcafe/testcafe
    depends_on:
      - app
    volumes:
      - ./test/e2e:/e2e
      - ./package.json:/package.json
      - ./package-lock.json:/package-lock.json
      - ./script:/script
    entrypoint: ['/script/wait-for', 'app:8080 -- "/opt/testcafe/docker/testcafe-docker.sh chromium --no-sandbox e2e"']
#    entrypoint: ["/opt/testcafe/docker/testcafe-docker.sh", "'chromium --no-sandbox'", "--app-init-delay 30000", "e2e"]

Кажетсячто я очень близок к решению проблемы с ожиданием, но почему-то мой синтаксис точки входа неверен

1 Ответ

3 голосов
/ 08 мая 2019

Вы можете сделать это проще:

  testcafe:
    container_name: testcafe
    image: testcafe/testcafe
    depends_on:
      - app
    volumes:
      - ./test/e2e:/e2e
      - ./package.json:/package.json
      - ./package-lock.json:/package-lock.json
      - ./script:/script
    entrypoint: ['/script/run.sh']

Создайте run.sh в скрипте папки и сделайте его исполняемым:

#!/bin/bash

/script/wait-for app:8080 -t 60 -- /opt/testcafe/docker/testcafe-docker.sh chromium --no-sandbox e2e
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...