다른 app을 시작하기 전에 데이터베이스가 준비되어 있는지 확인하기 위해 wait-for-it 스크립트를 사용하고 있습니다.succesfull wait-for-it 스크립트 후 도커 컨테이너를 시작하는 방법
#!/bin/bash
set -e
host="$1"
shift
cmd="[email protected]"
until psql -h "$host" -U "postgres" -c '\l'; do
>&2 echo "Postgres is unavailable - sleeping"
sleep 1
done
>&2 echo "Postgres is up - executing command"
exec $cmd
이 스크립트는 here입니다. 이제 내 앱 컨테이너가 MySQL is up - executing command
과 함께 실행되지 않습니다. 그렇다면 스크립트가 성공적으로 실행되었지만 (db가 실행 중임) 내 앱의 dockerfile에있는 실제 CMD (스크립트 이후)를 실행하는 방법이 명확하지 않습니다. 첫 번째 것들 중
COPY docker-entrypoint.sh /entrypoint.sh
COPY ./wait-for-it.sh wait-for-it.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 2368
CMD ["npm", "start"]
'ENTRYPOINT'을 제거하고 둘 다'CMD'에 넣을 수 있습니다 :'CMD /entrypoint.sh && npm start'. –
안녕하세요, 당신이 말한대로했는데 성공한 psql 검사 후 CMD에서 명령을 실행할 수없는 것 같습니다. 따라서 이미지가 빌드되고, 도커 작성은 wait-for-it 스크립트를 실행합니다. 따라서 컨테이너가 시작될 수는 있지만 성공하지 못합니다. 아무 일도 일어나지 않습니다. – DenCowboy
wait-for-it 스크립트에 인수가 필요하다고 생각합니다. '/entrypoint.sh localhost npm start'을 시도하십시오. 미안 리눅스 박스가 없으므로 지금 테스트 할 수 없습니다. 회신에 감사드립니다. –