!아리까리해서... 추가로 더 공부하고 마저 정리할 예정
도커 컨테이너는 도커 이미지를 기반으로 생성된다.
도커 이미지는 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태이며, 컨테이너 생성/실행에 필요한 모든 파일과 설정값을 지닌 것으로, 더 이상의 의존성 파일을 컴파일하거나 이것저것 설치할 필요 없는 상태의 파일을 의미한다.
ex) Ubuntu 이미지는 Ubuntu를 실행하기 위한 모든 파일을 가지고 있음
컨테이너는 이 이미지를 실행한 상태이며, 응용프로그램 자체를 패키징 or 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술이다.
나넌 도커 설치 후 거기다 우분투 이미지를 만들어 놓고 도커에서 우분투를 실행할 수 있게 세팅해뒀다.
공부하믄서 추가로 찾아 보면서 재밌게 읽은 포스팅 > 초보를 위한 도커 안내서 - 도커란 무엇인가?
guniconr이라는 runserver를 가지고 배포
ubuntu
백엔드 디렉토리 생성
mkdir backend
프로젝트 파일 클론
~/backend$ git clone 프로젝트 파일 ./django
클론 후 settings.py를 열어 설정할 것들을 설정해 줌
backend/Dockerfile
설정
# python 3.10.8버전 이미지를 사용해 빌드
FROM python:3.10.8
# .pyc 파일을 생성하지 않도록 설정합니다.
ENV PYTHONDONTWRITEBYTECODE 1
# 파이썬 로그가 버퍼링 없이 즉각적으로 출력하도록 설정합니다.
ENV PYTHONUNBUFFERED 1
# /app/ 디렉토리를 생성합니다.
RUN mkdir /app/
# /app/ 경로를 작업 디렉토리로 설정합니다.
WORKDIR /app/
# requirments.txt를 작업 디렉토리(/app/) 경로로 복사합니다.
COPY ./django/requirements.txt .
# 프로젝트 실행에 필요한 패키지들을 설치합니다.
RUN pip install --no-cache-dir -r requirements.txt
# gunicorn을 사용하기 위한 패키지를 설치합니다.
RUN pip install gunicorn
ubuntu 경로에서 docker-compose.yml 파일 설정
nginx로 웹서버 컨테이너 생성
nginx는 클라이언트의 request 요청을 처리해주는 웹 서버(web server)이다.
reverse proxy, 로드밸런싱, 캐싱 등의 기능을 지원하며, 클라이언트의 요청을 nginx가 받은 후 service(django) 데이터를 넘겨주는 역할을 해준다.
nginx를 사용하는 이유
💡 로드밸런싱을 활용해 트래픽을 분산할 수 있음.
SSL 기능을 사용해 데이터를 안전하게 전달할 수 있으며, reverse proxy 기능을 통해 client에서 서버에 직접적으로 접근하는 것을 막아준다.
콘텐츠를 캐싱하여 동일한 요청에 대해 더 빠른 속도로 처리할 수 있게 해준다.
nginx postgresql django 연동하기
디렉토리 만들기
mkdir nginx
vi nginx/default.conf
에 설정값 작성 후 저장
django settings.py 설정
디렉토리 구조
path : /home/ubuntu/
├── backend
│ ├── Dockerfile
│ └── django # project directory
├── docker-compose.yml
└── nginx
└── default.conf
docker-compose.yml 설정
배포 테스트 후
sudo docker exec -it backend /bin/bash
위 명령어로 파이썬 컨테이너로 접속하여 다른 테스트 조작도 가능하다.