도커 Docker 를 공부하자 2 - Docker 설치와 배포

r5z Yoon·2022년 11월 14일
0

!아리까리해서... 추가로 더 공부하고 마저 정리할 예정

도커 이미지와 컨테이너

도커 컨테이너는 도커 이미지를 기반으로 생성된다.

도커 이미지는 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태이며, 컨테이너 생성/실행에 필요한 모든 파일과 설정값을 지닌 것으로, 더 이상의 의존성 파일을 컴파일하거나 이것저것 설치할 필요 없는 상태의 파일을 의미한다.
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

위 명령어로 파이썬 컨테이너로 접속하여 다른 테스트 조작도 가능하다.



profile
_____ is a process </br> https://github.com/R5Z

0개의 댓글