
docker를 사용하여 heroku에 백엔드를 배포하려고 했습니다. 여기 내 heroku.yml
파일이 있습니다
setup:
addons:
- plan: heroku-postgresql
as: DATABASE
build:
docker:
web: mymeds/Dockerfile
release:
image: web
command:
- ./release-tasks.sh
run:
web: python manage.py run
하지만 점점/bin/sh: 1: ./release-tasks.sh: 찾을 수 없음같은 폴더에 있는데도 말이죠. 내 디렉토리 구조는 다음과 같습니다.
Dec 15 05:58:17 mymedsbackend app/api Starting process with command `/bin/sh -c 'if curl $HEROKU_RELEASE_LOG_STREAM --silent --connect-timeout 10 --retry 3 --retry-delay 1 >/tmp/log-stream; then
Dec 15 05:58:17 mymedsbackend app/api chmod u+x /tmp/log-stream
Dec 15 05:58:17 mymedsbackend app/api /tmp/log-stream /bin/sh -c '"'"'/bin/sh -c ./release-tasks.sh'"'"'
Dec 15 05:58:17 mymedsbackend app/api else
Dec 15 05:58:17 mymedsbackend app/api /bin/sh -c ./release-tasks.sh
Dec 15 05:58:17 mymedsbackend app/api fi'` by user [email protected]
Dec 15 05:58:22 mymedsbackend heroku/release.7559 Starting process with command `/bin/sh -c 'if curl https://heroku-release-output.s3.amazonaws.com/log-stream?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJ3LIQ2SWG7V76SVQ%2F20201215%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20201215T135816Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=4f30c56d2f692e9d76dcaaebb9920cb7097c71cedcca597e26d2228de0e8497c --silent --connect-timeout 10 --retry 3 --retry-delay 1 >/tmp/log-stream; then
chmod u+x /tmp/log-stream
/tmp/log-stream /bin/sh -c '"'"'/bin/sh -c ./release-tasks.sh'"'"'
else
/bin/sh -c ./release-tasks.sh
fi'`
Dec 15 05:58:23 mymedsbackend heroku/release.7559 State changed from starting to up
Dec 15 05:58:25 mymedsbackend heroku/release.7559 Process exited with status 127
Dec 15 05:58:25 mymedsbackend heroku/release.7559 State changed from up to complete
Dec 15 05:58:25 mymedsbackend app/release.7559 /bin/sh: 1: curl: not found
Dec 15 05:58:25 mymedsbackend app/release.7559 /bin/sh: 1: ./release-tasks.sh: not found
Dec 15 05:58:27 mymedsbackend app/api Release v35 command failed by user [email protected]
Dec 15 05:59:35 mymedsbackend heroku/router at=error code=H14 desc="No web processes running" method=GET path="/robots.txt" host=mymedsbackend.herokuapp.com request_id=0640e377-880e-4e05-9fcc-c5b541020aac fwd="103.149.142.2" dyno= connect= service= status=503 bytes= protocol=https
Dec 15 05:59:35 mymedsbackend heroku/router at=error code=H14 desc="No web processes running" method=GET path="/" host=mymedsbackend.herokuapp.com request_id=0bb24c8a-9064-4d37-8c14-0ac046947583 fwd="103.149.142.2" dyno= connect= service= status=503 bytes= protocol=https
Dec 15 05:59:36 mymedsbackend heroku/router at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=mymedsbackend.herokuapp.com request_id=ed25b7de-de79-479f-a060-e322534d39a4 fwd="103.149.142.2" dyno= connect= service= status=503 bytes= protocol=https
내 release-tasks.sh
파일은 여기 있어요
cd mymeds/
python manage.py db init
python manage.py db migrate --message 'initial database migration'
python manage.py db upgrade
답변1
Dockerfile에 파일을 복사하는 단계가 있나요?
나 역시 이 문제에 직면했고 내 출력 이미지에 셸 스크립트가 누락된 것으로 나타났습니다.
Docker 이미지를 로컬로 실행하고 검사하여 복사되고 있는지 확인할 수 있습니다. (Docker 데스크톱에는 이를 위한 멋진 CLI 도구가 있거나 를 사용할 수 있습니다 docker exec
.)