Cloud/Cloud 공부일기

Day 68 - AWS 3tier (django 이용)

갬미 2022. 4. 18. 22:43

오늘 배운 내용

- nginx-django-RDS 3tier 만들기

- 직접 도커 이미지 생성하기

 


오늘은 먼저 VM으로 3tier를 구성하고, 컨테이너 기반으로 넘어갔다

장고 개발 소스는 강사님이 전달해주셨는데 이따 내가 만든 소스로도 실험해 볼 생각이다

 

순서는 다음과 같다.

1. RDS 생성 (mysql 5.7) 

    -> Dump.sql 이용하여 db, tables 덤프 or 직접 생성

2. django 서버용 vm 생성

3. django settings 수정 - DATABASE 부분을 RDS로 수정

4. django db migrate, runserver 

5. nginx용 vm 생성 -> conf 수정

 

 


미니과제

- 각 서비스 이미지를 만들고 컨테이너 돌리기

 

# amazon linux docker 설치
sudo yum update -y
sudo amazon-linux-extras install docker -y
systemctl start docker
systemctl enable docker

 

이미지 빌드하기

-> nginx dockerfile

FROM nginx
COPY ./nginx.conf /etc/nginx/

-> mysql dockerfile

FROM mysql:5.7

COPY ./utf8.cnf /etc/mysql/conf.d/
COPY ./Dump.sql /docker-entrypoint-initdb.d/

-> django dockerfile

FROM python:3.8

RUN python -m pip install --upgrade pip
WORKDIR /usr/src/app

RUN pip install django==3.1.13
RUN pip install pymysql==1.0.2

COPY . .

EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0:8000"]

- 사실 위 두개는 평소 하던거랑 비슷해서 어렵지는 않았는데 django에서 조금 헤맸다 ㅜㅜ 

workdir  -> 워킹 디렉토리를 바꾸겠다 (없는경로라면 만듦)

copy -> 현재경로의 모든 파일을 워킹디렉토리로 옮기겠다 

--> 따라서 dockerfile 이 있는 위치에 manage.py가 없다면 있는곳으로 copy 경로를 잡아주거나 워킹 디렉토리 위치를 바꿔줘야한다

 

실행하기

docker network create --driver bridge msanet

docker run --name mysql-svc -d --net msanet -e MYSQL_ROOT_PASSWORD='rlarudals' -e MYSQL_DATABASE='django_db' -e MYSQL_USER='python' -e MYSQL_PASSWORD='python' -e MYSQL_ROOT_HOST='%' gymin97/django:mysql_v1
docker run --name django-svc -d -p 8000:8000 --net msanet gymin97/django:django_v2
docker run --name nginx-svc -d -p 80:80 --net msanet gymin97/django:nginx_v1

--> 같은 network에서 실행하여 continer의 이름만으로 소통이 가능하도록 한다 

- nginx conf 파일을 이미지 만들때 같이 넣어버렸는데 그러지 않고 nginx conf 를 밖에서 마운트해주는게 더 좋은방법 같다 

 

오늘의 회고

  • 장고로 이미지를 만들으려니 또 쉽지않았다 .. 그래도 확실히 스스로 해보는게 도움이 많이 되는것 같고 성공하고 나니 뿌듯했다 추가로 도커 컴포즈로도 구성하는 과제가 있어 해보고 잘 예정이다
  • 시간이 남으면 추가 작업도 해볼까 하는데 안남을지,, 남을지^_6,,