티스토리 뷰

파이썬 웹 프레임워크 Django로 만든 프로젝트를 Django + uWSGI + NGINX로 웹에 띄우기 위해 Docker Container을 이용하는 과정에서 생긴 고민.

물론, Dockerfile을 작성하지 않고 컨테이너에 ubuntu나 centos만 설치해서 그 안에 들어가 직접 띄울 수 있지만, Kubernetes까지 활용해 자동화 시키려면 Dockerfile로 만드는게 깔끔할 것이라 생각함.

 

여기서 

 

uWSGI와 NGINX 둘 다 daemon으로 실행시켜야하는데, Dockerfile에서 어떻게 작성하지?

 

에 대한 고민을 해결한 과정에 대해 적어봄..

 

 

 

일단, Dockerfile 작성 시 컨테이너를 계속 띄우고 싶다면 foreground로 실행시켜야 함.

[참고] https://hyewon-s-dev.tistory.com/6

 

[Docker/Error] Dockerfile을 이용해 만든 이미지로 실행시킨 컨테이너가 바로 꺼지는 이유

여러 이유가 있겠지만, 도커를 구글링으로만 배워 얕은 지식을 가지고 에러 해결을 위해 헤맨 과정에 대한 기록. docker logs도 확인해봤을 때 에러 안떠서 머리를 싸메고 있다면 보세요 ..... 급하

hyewon-s-dev.tistory.com

 

Dockerfile에서 컨테이너가 실행된 후에 명령어를 입력하게 하고싶다면 CMD를 활용해야 함

    [참고] RUN은 컨테이너 실행 이전에, CMD는 컨테이너가 실행된 후에 입력됨

그러나, CMD는 Dockerfile 내 Stage 당 하나밖에 쓰지 못함. uWSGI와 NGINX를 활용해 웹 배포를 할 때에 둘 다 데몬으로 실행되는 애들이라, CMD에 둘 다 실행시켜야하는 상황이었음. 여기서 생각한 방법은 총 3가지.(결국 마지막 방법으로 했어요 급하면 세번째 방법 ㄱㄱ)

 

 

 

 

 


[시도1] Dockerfile 내 CMD에 && 명령어로 두 명령어를 한 줄에 실행되도록 함

 

[시도2] Django + uWSGI를 다른 컨테이너로 실행시키고, 그 ip주소를 가져와 NGINX에 연결

 

[시도3] shell script 작성해서 실행시킴


 

 

 

 

[시도1] Dockerfile 내 CMD에 && 명령어로 두 명령어를 한 줄에 실행되도록 함

터미널에서도 한 줄로 입력하려면 && 이용하듯이,

uWSGI는 데몬으로, NGINX는 daemon off;로 실행시키고자 입력했었는데

CMD ["{uwsgi 실행 파일}", "--ini", "uwsgi.ini", "&&", "{nginx 실행 파일}", "-g", "daemon off;"]

기억 상으로는 뒤쪽의 nginx 부분도 uwsgi의 옵션으로 인식하는 것 같았음. 그래서 실패.

 

 

 

[시도2] Django + uWSGI를 다른 컨테이너로 실행시키고, 그 ip주소를 가져와 NGINX에 연결

Django + uWSGI를 먼저 포트 8000으로 컨테이너를 실행시킨 다음, 그 8000 포트를 NGINX config 파일 작성 시

upstream django {
	server 0.0.0.0:8000;
}

로 작성하고 실행했는데, 굉장히 무거운 것 같았음.. 바이트 수를 넘어간다그랬나..? (uwsgi.sock로 실행시켜야 함)

에러 메시지를 따로 저장을 안해뒀어서, 시간나면 다시 해보고 정리해보겠음. 아무튼 그래서 실패.

 

 

 

[시도3] shell script 작성해서 실행시킴

무난하게 셸 스크립트로 작성해서 실행시킴. 도커 CMD에는 셸 스크립트 실행시키고, 셸 스크립트 내부에는

./uwsgi --ini uwsgi.ini
./nginx -g 'daemon off;'

이런 식으로 작성해서 실행 (uwsgi - 데몬실행, nginx - daemon off)

(uwsgi 실행파일과 nginx 실행파일 위치는 각자 다운받은 위치 확인하시고 설정해주세요)

실행은 되는데, docker logs로 로그 확인했을 때, nginx에 대한 로그가 뜨지 않는 것 같았음.

실행 되는걸로 만족 .....

 

더 좋은 방법 있다면, 피드백 주시면 감사하겠습니다.

 

 

 

 

피드백, 틀린 부분 지적 환영입니다 :)

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함