본문 바로가기
리눅스/Part1. Ch04. 웹 어플리케이션 컨테이너화

05. (실습) 앱 컨테이너화 – docker-compose (추가, 수정 필요)

by Engineer-Lee 2022. 6. 28.
반응형

프리젠테이션 계층 컨테이너화
- Docker compose를 적용하여 컨테이너 구성 간편화 하기
→ 하나의 YAML파일로 서비스 구성, 한번의 커맨드로 서비스 작업 관리, 컨테이너 간 네트워크 연결

기존 상태는 컨테이너들 간의 네트워크가 모두 분리된 상태이다. 이를 docker compose를 이용해서 네트워크를 공유하고 라이프사이클도 편하게 관리해보자

 

 

1. docker stop poll_web poll_app postgres 명령어로 실행중인 Docker를 종료한다.

 

 

2. docker compose를 설치하기 위해 아래 명령어를 입력한다.

 

 

3. docker-compose --version 으로 설치를 확인한다.

 

 

4. 주요 변수들 환경변수로 입력 받기(하드코딩된 환경변수들을 변수로 바꾸기)
Django config 수정하기 
projects/Django-Poll-App/pollme/settings.py
"""
import os

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get('POSTGRES_DB'),
        'USER': os.environ.get('POSTGRES_USER'),
        'PASSWORD': os.environ.get('POSTGRES_PASSWORD'),
        'HOST': os.environ.get('POSTGRES_HOST'),
        'PORT': '5432',
    }
}
"""

 


5. poll_app 이미지 새로 생성하기
docker build --tag poll_app . 

 


6. docker-compose.yml 작성
vim docker-compose.yml
"""
version: "3"
   
services:
  db:
    image: postgres
    volumes:
      - poll-db-volume:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=poll
      - POSTGRES_USER=fast
      - POSTGRES_PASSWORD=1234qwer

  app:
    image: poll_app
    environment:
      - POSTGRES_DB=poll
      - POSTGRES_USER=fast
      - POSTGRES_PASSWORD=1234qwer
      - POSTGRES_HOST=db
    depends_on:
      - db
    
  web:
    image: poll_web
    ports:
      - "80:80"
    depends_on:
      - app

volumes:
  poll-db-volume:
    external: true
    name:
      poll-db-volume

"""

7. docker compose 구동
docker-compose up


8. 브라우저로 앱 정상 동작여부 확인 --> 실패

 


9. nginx/config/nginx.conf 수정하기 
"""
        location / {
            # 실습에서는 host의 private ip 사용 ($ ip address show eth0)
            proxy_pass              http://app:8000;  
            proxy_set_header        Host $host;
        }
"""

 


10. nginx image 빌드 
docker build --tag poll_web -f nginx/Dockerfile .

 


11. docker compose 시작 
docker-compose up

 


12. 브라우즈로 앱 정상 동작여부 확인 --> 성공

반응형