2016-12-25 1 views
1

Короткий вопрос. У меня есть следующий Dockerfile:Докер ждать веб-приложения, чтобы начать (зависимость)

FROM node:6.9.2 

RUN apt-get update 

RUN useradd --user-group --create-home --shell /bin/false app 

ENV HOME=/home/app 

RUN mkdir -p $HOME 
RUN chown -R app:app $HOME 

USER app 
WORKDIR $HOME/ 

VOLUME ["/home/app/uploads"] 

EXPOSE 5001 

CMD [ "npm", "run", "test-integration" ] 

и соответствующий докер-Compose: версии: '2,0'

services: 
    komed-test-integration: 
    image: borntraegermarc/komed-test-integration 
    container_name: komed-test-integration 
    build: . 
    depends_on: 
     - komed-app 
     - komed-mongo 
    volumes: 
     - .:/home/app 
    environment: 
     - HOST_URL=komed-app 
     - HOST_PORT=5001 
     - MONGO_HOST=komed-mongo 
     - MONGO_DATABASE=komed-health 

У меня есть зависимость к komed-app в моем файле создавать и что работает отлично. Но как я могу дождаться, когда эти интеграционные тесты начнутся до тех пор, пока веб-сервер (komed-app) не будет запущен? Пробовал с CMD [ "./wait-for-it.sh", "komed-app-test:5001", "--", "npm", "run", "test-integration" ], но не работал. Всегда получайте ошибку exited with code 127.

Любые идеи?

+1

Есть ли сообщение об ошибке с кодом ошибки? Что ждет-for-it.sh? – BMitch

ответ

1

Наилучшая практика описана в Controlling startup order in Compose.

Вы можете использовать depends-on или (лучше) vishnubob/wait-for-it (что вы сделали).
127 указан в this issue, когда тайм-аут терпит неудачу.

Docker node 6.9.2 зависит от Jessie, не альпийской, поэтому оно не должно влиять на issue 6: поэтому попробуйте и отлаживать скрипт, добавив -x к first line

#!/usr/bin/env bash -x 

Вы увидите который exit $RESULT производства, что 127 код ошибки.

OP Marc Borni подтверждает in the comments происхождение проблемы: кодирование файлов Windows для сценария unix.
Иногда, using dos2unix directly in a Dockerfile может помочь.

+0

Проблема заключалась в том, что у меня была кодировка файлов Windows. Благодаря! –

+0

@MarcBorni Отлично! Я включил ваш комментарий в ответ для большей наглядности. – VonC