본문 바로가기

Docker

Dockerfile 분석!

https://github.com/litsynp/docker-example

 

 

 

 

1. # pull official base image
2. FROM python:3.8.3-alpine

4. ENV PYTHONDONTWRITEBYTECODE 1
5. ENV PYTHONUNBUFFERED 1

7. ARG DJANGO_ALLOWED_HOSTS
8. ARG DJANGO_SECRET_KEY
9. ARG DJANGO_CORS_ORIGIN_WHITELIST

11. ENV DJANGO_ALLOWED_HOSTS $DJANGO_ALLOWED_HOSTS
12. ENV DJANGO_SECRET_KEY $DJANGO_SECRET_KEY
13. ENV DJANGO_CORS_ORIGIN_WHITELIST $DJANGO_CORS_ORIGIN_WHITELIST

15. WORKDIR /backend
16. COPY requirements.txt /backend/

18. RUN apk add postgresql-dev libressl-dev libffi-dev gcc musl-dev gcc python3-dev musl-dev zlib-dev jpeg-dev #--(5.2)

20. RUN pip install --upgrade pip
21. RUN pip install -r requirements.txt

23. COPY . /backend/

 

----------------------------------------------------------------------------------------------------------------------------

 

2. FROM python:3.8.3-alpine

   3.8.3-alpine 태그를 가지는 파이썬 이미지로 이 Dockerfile로 새로운 이미지를 만들겠다!

 

4. ENV PYTHONDONTWRITEBYTECODE 1
5. ENV PYTHONUNBUFFERED 1

   환경변수를 지정해야겠다. ( 키 , 값 으로 이루어짐 , 1 은 true로 지정 )

 

 

7. ARG DJANGO_ALLOWED_HOSTS
8. ARG DJANGO_SECRET_KEY
9. ARG DJANGO_CORS_ORIGIN_WHITELIST

   Dockerfile 바깥에서 이미지 빌드시점에서 사용할 수 있음 (ENV와 비슷 )

   

 

# ENV    vs.     ARG

   - ENV는 Dockerfile내부 뿐만 아니라 컨테이너안에서 실행 중일 때도 환경변수로 사용가능

   - ARG는 Dockerfile 내부에서만 사용가능

 

 

11. ENV DJANGO_ALLOWED_HOSTS $DJANGO_ALLOWED_HOSTS
12. ENV DJANGO_SECRET_KEY $DJANGO_SECRET_KEY
13. ENV DJANGO_CORS_ORIGIN_WHITELIST $DJANGO_CORS_ORIGIN_WHITELIST

   $ 이후내용은 장고의 settings.py에 정의되어있다.

 

 

15. WORKDIR /backend

   작업경로. 우리가 지금 있는 디렉토리. 앞으로 나올 명령어들을 /backend 에서 수행을 하겠다.

 

 

 

16. COPY requirements.txt /backend/

   호스트컴퓨터(내 컴퓨터)에서 requirements.txt 파일을 복사해서 도커컨테이너의 /backend/ 에 넣겠다. (쓸거니까)

 

gunicorn, psycopg:postgresql 연결하는 패키지

 

 

18. RUN apk add postgresql-dev libressl-dev libffi-dev gcc musl-dev gcc python3-dev musl-dev zlib-dev jpeg-dev #--(5.2)

   이 컨테이너에서 리눅스 명령어를 실행하겠다.

   ( 추가로 깔아야할 것(연결하기위한 드라이버정도))

 

 

 

20. RUN pip install --upgrade pip
21. RUN pip install -r requirements.txt

   파이썬 패키지 설치

 

-------------------------------------------------------------------------------------------------------------------------------------------

NGINX의 dockerfile

6. 기본으로 제공되는 NGINX 설정파일을 내가 작성한 nginx.conf로 대체하겠다.

 

 

 

밑 파일은 그 때의 nginx.conf

 

4. server backend:8080;

   왜 backend라 되어있지? : nginx가 인식할 수 있나? -> dockercompose에 작성된 도커컨테이너(db끼리, fe끼리, be끼리) 끼리는 컨테이너에 서비스이름으로 접근 할 수 있다. backend만 적으면 backend에 접근할 수 있다.

 

 

'Docker' 카테고리의 다른 글

Docker Network 구조 및 동작 원리  (0) 2022.08.04
도커 정리 + 웹서버  (0) 2022.07.24
Docker-compose.yml 분석!  (0) 2022.07.07
Docker 기본개념  (0) 2022.07.06
Recent Posts
Popular Posts
Recent Comments