인프런 커뮤니티 질문&답변

꺼넝님의 프로필 이미지

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

Azure PaaS 서비스에 도커 장고 서비스 배포하기

azure web app에서 배포가 계속 안됩니다...

작성

·

433

·

수정됨

0

스크린샷 2023-07-20 오후 4.32.05.png스크린샷 2023-07-20 오후 4.32.12.pngazure web app을 통해 배포를 하던중 계속해서 오류가 발생하였습니다.
처음에는
/usr/local/bin/gunicorn: exec format error
에러가 발생하여 제가 m1 맥북을 사용하다보면, 맥북에서 빌드한 이미지가, 서로 다른 CPU 아키텍처로 인해 서버 에러가 발생할 수 있다는 것을 알게되어 buildx을 이용하여스크린샷 2023-07-20 오후 4.39.04.png
위와 같이 설정을 하였으나 여전히 에러가 발생합니다.
local에서는 아무런 문제없이 작동하나 azure에서만 문제가 발생하여 데이터베이스연결과 storage연결까지는 아무런 문제가 없었습니다.
로컬에서 실행할 때는 아래와 같이 실행하였습니다.

docker run --rm --publish 9999:80 \
    -e DJANGO_SETTINGS_MODULE=backend.settings.prod \
    -e AZURE_ACCOUNT_NAME=capstonboom \
    -e AZURE_ACCOUNT_KEY="필요하시면 따로 알려드리겠습니다..." \
    -e ALLOWED_HOSTS=localhost \
    -e DB_HOST=capstonproject.postgres.database.azure.com \
    -e DB_USER=gunhong@capstonproject \
    -e DB_PASSWORD="비밀번호" \
    -e DB_NAME=postgres \
    keonhong/capstonproject:0.1

도커파일은 아래와 같이 설정했습니다.

FROM ubuntu:20.04

RUN apt-get update && apt-get install -y python3-pip && apt-get clean

WORKDIR /djangoproject

ADD . /djangoproject
RUN pip3 install -r requirements.txt

RUN which gunicorn || echo gunicorn not found

EXPOSE 8000
CMD ["gunicorn", "backend.wsgi:application", "--bind", "0.0.0.0:80"]

우분투 버전과 guncorn버전이 호완이 안될까 생각해서

gunicorn==20.0.4 을 이용하였습니다.

위와 같이 한 후 도커 허브의 레지스토리와 azure app web을 모두 삭제하고 새롭게 시작했더니

/usr/local/bin/gunicorn: exec format error
이 에러는 발생하지 않으나 여전히

Logging is not enabled for this container.
에러메세지는 출력됩니다... gunicorn 문제로 인해
Logging is not enabled for this container. 도 함께 출력되었는지 생각했으나 또 다른 문제였나 봅니다...

답변 2

0

이진석님의 프로필 이미지
이진석
지식공유자

아래 코드와 내역과 한 번 비교해보시겠어요?

샘플로 https://github.com/pyhub-kr/sample-django-azurewebapp-deploy 프로젝트를 간략히 만들어봤고,
도커 빌드해서 https://hub.docker.com/repository/docker/pyhubkr/sample-django-azurewebapp-deploy/general 에 올려봤습니다.

서비스는 https://sample-django-azurewebapp-deploy.azurewebsites.net/ 에서 돌고 있습니다. (서비스는 임시로 생성한 것이기에 몇 일 내로 삭제될 수 있습니다.)

image

꺼넝님의 프로필 이미지
꺼넝
질문자

선생님 감사합니다ㅠㅠ 제가
Logging is not enabled for this container. 이 문구가 무언가가 잘못되어서 계속 나타나는 것인줄 알았습니다....
처음에는
/usr/local/bin/gunicorn: exec format error 이 에러가 발생하여서 말씀하신것 처럼 빌드할때 linux/amd64 설정 추가하여 질문하기 전에 잘 해결하였는데,
Logging is not enabled for this container. 이 문구가 계속 보여서 뭐가 아직 해결이 안되었는줄 알았습니다ㅠㅠ 알고 보니 제가 url 주소를 /admin 으로 들어간게 아니라 .net/기본으로 들어가서 not found 화면이 나타난 것 이였습니다... 이건 서버는 잘 작동했다는 것인데 제가 그걸 캐치하지 못했네요ㅠㅠ
/usr/local/bin/gunicorn: exec format error 이것을 해결하기 전까지는 azure application error 이렇게 나타났던 것으로 기억합니다.

덕분에 감사합니다!! 저의 이상한 질문에 늦은 시간까지 해결해 주시느라 감사하면서도 죄송합니다ㅜㅜ

이진석님의 프로필 이미지
이진석
지식공유자

잘 해결되셔서 다행입니다.

이상한 질문이란 없습니다. :-)

이번 기회로 배포에 대한 이해도가 좀 더 올라가셨을 것이구요.

고민되시는 부분들은 같이 의견나누고 고민해보며 차근차근 학습해나가셨으면 합니다.

다양한 질문 많이 주세요.

화이팅입니다. ;-)

0

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

m1에서는 도커 디폴트 platform 옵션은 linux/amd64/v8이기에 Intel CPU 서버에서 구동하실려면,
도커 빌드 시에 --platform 옵션으로 linux/amd64를 지정해주셔야 합니다.

도커 이미지의 arch는 다음 명령으로 확인할 수 있습니다.
docker image inspect IMAGE | jq ".[].Architecture"

쓰시는 개발머신에서 아래 환경변수 지정을 위해 디폴트 platform을 변경하실 수도 있습니다.
export DOCKER_DEFAULT_PLATFORM="linux/amd64"

저는 M1 머신에서 ~/.zshrc 파일에 위 설정을 넣어두고 사용하고 있습니다.

꺼넝님의 프로필 이미지
꺼넝
질문자

https://velog.io/@baeyuna97/exec-user-process-caused-exec-format-error-에러해결
도커를 빌드할 시에 위의 게시물을 참고하여 빌드를 하였습니다...
그 후 도커 허브에서 확인을 해보면 제가 올린 3번째 이미지와 같이 OS/ARCH 에 linux/amd64와 linux/arm64 둘다 나타나고 있습니다..
현재 m1머신에서는 docker run을 했을 시에 admin페이지가 잘 나타나지만 azure에서만 not found에러가 발생합니다ㅜㅜ
제가 쓰는 개발머신(m1)에서는 잘 작동하는데
export DOCKER_DEFAULT_PLATFORM="linux/amd64"
을 따로 설정해줘야 azure web app에서도 잘 작동하나요...?

아 그리고 제일 위의 2개의 사진은 azure web app에서 배포 로그 입니다...!

이진석님의 프로필 이미지
이진석
지식공유자

도커 이미지를 빌드하실 때,

ARM CPU를 가진 머신에서 디폴트 platform으로 빌드하면, ARM CPU를 가진 서버에서만 구동이 가능하고, 인텔 CPU를 가진 서버에서는 말씀하신 exec format error 오류가 발생하는 것입니다.

그러니 ARM CPU를 가진 머신 (맥북 M1) 에서 인텔 CPU를 가진 서버 (애저 앱서비스나 보통의 서버들) 에서 구동하실려면 docker build 시에 --platform "linux/amd64" 를 지정해주셔야 합니다. 그렇지 않으면 서버 자체가 구동이 안 되는 거죠.

--

"Logging is not enabled for this container." 로그는 애저 웹서비스 단의 로그 서비스 활성화 여부를 보여주는 것일 뿐, 장고 서버 구동과는 무관합니다.

--

"azure에서만 not found 에러가 발생합니다." 가 정확히 어떤 상태인 것인가요? 상황을 정확히 파악할 수 있도록 스크린샷과 함께 좀 더 자세히 설명해주시면, 제가 보다 나은 설명을 드릴 수 있습니다. // 서버가 구동되고 웹페이지는 뜨는 데 CSS/JS 파일을 못 찾는 상황인 것인가요?

 

꺼넝님의 프로필 이미지

작성한 질문수

질문하기