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/ 에 넣겠다. (쓸거니까)
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
파이썬 패키지 설치
-------------------------------------------------------------------------------------------------------------------------------------------
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 |