민프
[Docker][Docker-Compose] 🐳 1. docker-compose란 무엇인가? - 복잡한 컨테이너를 한 번에 관리하기 본문
Backend/[Docker]
[Docker][Docker-Compose] 🐳 1. docker-compose란 무엇인가? - 복잡한 컨테이너를 한 번에 관리하기
민프야 2025. 5. 14. 19:00
1. 왜 docker-compose가 필요한가?
단일 컨테이너 (예: Node.js 앱만 실행)는 docker run으로 충분합니다.
하지만 실무에서는 보통 이런 구조입니다
[Node.js 백엔드] ↔ [MySQL DB] ↔ [Redis] ↔ [Nginx]
각각 다른 설정, 네트워크, 환경변수를 다 개별로 설정하려면 복잡하겠죠?
docker-compose는 이런 복잡한 환경을 한 YAML 파일로 정의해서 한 번에 띄우고 관리할 수 있도록 해줍니다.
2. docker-compose가 해결하는 것
기능 | 설명 |
여러 컨테이너를 하나로 묶음 | 예: backend, db, redis 를 하나의 services: 아래 정의 |
네트워크 자동 설정 | 같은 프로젝트 내부 컨테이너끼리는 컨테이너 이름으로 접근 가능 |
환경 변수 관리 | .env 파일로 쉽게 설정 가능 |
의존성 관리 | depends_on으로 Redis → Node 순서대로 실행 |
3. 기본 구조 예시
version: '3.8'
services:
php:
image: php:7.4-fpm
container_name: payment-php
volumes:
- ./html:/var/www/html
restart: always
nginx:
image: nginx:latest
container_name: payment-nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./html:/var/www/html
- ./nginx/default.${ENV}.conf:/etc/nginx/conf.d/default.conf
# - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- /etc/letsencrypt:/etc/letsencrypt # ← 이 줄 추가!!
depends_on:
- php
restart: always
저는 php서버와 ngninx를 통한 https인증 등.. 을 docker-compose로 한번에 실행을 할 것 입니다.
4. 사용 방법
- 로컬에서 실행
- ENV=local docker-compose up -d --build
- 실서버에서 실행
- ENV=prod docker-compose up -d --build
- 컨테이너 종료
- docker-compose down
(up은 컨테이너 시작, --build는 이미지 재빌드, down은 완전 종료)
만약 ENV로 사용환경을 다르게 하고싶다면 저렇게 하셔도 됩니다.
5. 사용 결과
잘 실행이되고 있는 부분을 확인하실 수 있습니다.
이처럼 Docker-Compose를 사용하게되면 각각의 서비스들의 환경을 한 YAML 파일로 정의해서 한 번에 띄우고 관리할 수 있도록 해줍니다.
'Backend > [Docker]' 카테고리의 다른 글
[Docker][Docker-Compose] 🐳 2. docker-compose.override.yml란? - 환경별 설정을 나누는 진짜 이유 (0) | 2025.05.14 |
---|---|
[Docker] 4. Docker 이미지 작성 및 코드 실행 하기 (Python기준) (0) | 2023.04.18 |
[Docker] 3. Docker 입문 - 이미지 PULL (생활코딩 정리) (0) | 2022.03.11 |
[Docker] 1. Docker 입문 (생활코딩 정리) (0) | 2022.03.11 |
[Docker] Windows 10에 Docker , WSL설치하기 (0) | 2022.03.10 |
Comments