프리젠테이션 계층 컨테이너화
- 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. 브라우즈로 앱 정상 동작여부 확인 --> 성공
'리눅스 > Part1. Ch04. 웹 어플리케이션 컨테이너화' 카테고리의 다른 글
06. (실습) 앱 컨테이너화 - 디버깅 환경 구성 (0) | 2022.12.07 |
---|---|
04. (실습) 앱 컨테이너화 - App 서버 구성 (0) | 2022.12.06 |
05. (실습) 앱 컨테이너화 - Web 서버 구성 (0) | 2022.06.28 |
03. (실습) 앱 컨테이너화 - DB 서버 구성 (0) | 2022.06.28 |
02. Docker 기본명령 소개 (0) | 2022.06.28 |