웹 개발/웹 아키텍처
[Docker] 다중 컨테이너 앱 환경 구축
ecofinder
2024. 1. 22. 17:00
반응형
1. 도입 배경
- 기존 서버 관리의 문제점: 인스턴스 내에 응용프로그램 등을 직접 설치함으로써 환경을 구축하기 때문에, 여러 인스턴스 환경 운영/관리의 어려움이 있음
- 호스트와 격리된 각 컨테이너를 실행 함으로써 여러 App 간의 독립성과 확장성을 가진 환경을 보장함
- Docker image를 이용하여 개발/운영 환경의 통합, 각종 라이브러리 설치 등으로 인한 의존성을 걱정할 필요 없이 인프라 구축에 용이함
- 배포 신속성, 자동화 등
2. 컨테이너 구조
- Nginx Reverse Proxy를 통한 클라이언트 요청 처리
- 프록시 서버의 IP와 port만 공개가 되어 보안 대비
- API (php-fpm) 로드 밸런싱으로 트래픽 분산
- 프록시 캐싱과 트래픽 분산으로 인한 서버 성능 향상
- 이후 상황에 맞는 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
이 포스팅은 쿠팡 파트너스의 활동의 일환으로, 일정한 금액의 수수료를 받게됩니다.
반응형