2016-12-25 32 views
1

简短的问题。我有以下Dockerfile:Docker等待web应用程序启动(依赖)

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" ] 

和相应的泊坞窗 - 撰写: 版本:“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在我撰写文件,并且工作正常。但是,如何在Web服务器(komed-app)实际运行之前等待这些集成测试启动?试用CMD [ "./wait-for-it.sh", "komed-app-test:5001", "--", "npm", "run", "test-integration" ]但没有奏效。总是得到错误exited with code 127

任何想法?

+1

是否有错误代码的错误信息?什么是wait-for-it.sh? – BMitch

回答

1

最佳实践在Controlling startup order in Compose中描述。

您可以使用depends-on或(更好)vishnubob/wait-for-it(你做过)。
this issue中提到127,超时失败。

Docker node 6.9.2取决于杰西,没有高山,所以它不应该被issue 6影响:所以尽量和调试脚本,通过添加-x到first line

#!/usr/bin/env bash -x 

你会看到哪exit $RESULT产生的127错误代码。

OP Marc Borni确认in the comments问题的根源:针对unix脚本的windows文件编码。
有时,using dos2unix directly in a Dockerfile可以提供帮助。

+0

问题是我有Windows文件编码。谢谢! –

+0

@MarcBorni太棒了!我已将您的评论纳入答案中,以获得更多的知名度。 – VonC

相关问题