웹 개발/웹 아키텍처

[Docker] 다중 컨테이너 앱 환경 구축

ecofinder 2024. 1. 22. 17:00
반응형

도커 (Docker)

1. 도입 배경

  1. 기존 서버 관리의 문제점: 인스턴스 내에 응용프로그램 등을 직접 설치함으로써 환경을 구축하기 때문에, 여러 인스턴스 환경 운영/관리의 어려움이 있음
  2. 호스트와 격리된 각 컨테이너를 실행 함으로써 여러 App 간의 독립성과 확장성을 가진 환경을 보장함
  3. Docker image를 이용하여 개발/운영 환경의 통합, 각종 라이브러리 설치 등으로 인한 의존성을 걱정할 필요 없이 인프라 구축에 용이함
  4. 배포 신속성, 자동화 등

2. 컨테이너 구조

  1. Nginx Reverse Proxy를 통한 클라이언트 요청 처리
  2. 프록시 서버의 IP와 port만 공개가 되어 보안 대비
  3. API (php-fpm) 로드 밸런싱으로 트래픽 분산
  4. 프록시 캐싱과 트래픽 분산으로 인한 서버 성능 향상
  5. 이후 상황에 맞는 Best Practice로 변경 적용하여 효율적인 운영

3. 설치 방법

  • docker-nginx-proxy” 프로젝트 클론 (GitLab 계정 생성 요청)
  • 컨테이너 실행 방법

1) 각 디렉토리 내부에서 프로젝트 clone (web, admin, api)
2) proxy 디렉토리 내 host 설정 파일(default.conf)의 서버네임, 포트 등 변경하여 사용
3) proxy/certs 디렉토리 내부에 전달받은 SSL 인증서 위치
4) 루트 디렉토리에서 docker-compose up -d --build

$ pwd
/data/schoolp

$ docker-compose up -d --build
Step 1/5 : ...
...

$ docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED             STATUS             PORTS                                                                      NAMES
e595b5f9c1df   nginx:latest    "/docker-entrypoint.…"   About an hour ago   Up About an hour   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx-proxy
e820192a699a   api             "/docker-entrypoint.…"   About an hour ago   Up About an hour   80/tcp, 0.0.0.0:8100->8100/tcp, :::8100->8100/tcp                          api
afe8e1f521cf   php-1           "docker-php-entrypoi…"   About an hour ago   Up About an hour   9000-9001/tcp                                                              php-1
1754d309960c   web             "/docker-entrypoint.…"   About an hour ago   Up About an hour   80/tcp, 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp                          web
02a01ebab9af   admin           "/docker-entrypoint.…"   About an hour ago   Up About an hour   80/tcp, 0.0.0.0:8083->8083/tcp, :::8083->8083/tcp                          admin
8837b6d58416   php-2           "docker-php-entrypoi…"   About an hour ago   Up About an hour   9000-9001/tcp                                                              php-2

 

 

 

COUPANG

쿠팡은 로켓배송

www.coupang.com

이 포스팅은 쿠팡 파트너스의 활동의 일환으로, 일정한 금액의 수수료를 받게됩니다.

 

반응형