Docker Compose 생성기
필요한 기술 스택을 선택하면 표준화된 docker-compose.yml 파일을 자동으로 생성합니다.
웹 서버 / 애플리케이션
데이터베이스
캐시 / 검색
메시지 브로커 / 스토리지
Docker Compose 생성기 -- 멀티컨테이너 환경을 YAML 한 장으로
Docker Compose는 여러 컨테이너로 구성된 애플리케이션을선언적(Declarative)으로 정의하고 실행하는 도구입니다. 이 생성기는 Nginx, PostgreSQL, Redis, Kafka 등 15가지 인기 서비스를 클릭 한 번으로 선택하고, 버전 지정/포트 매핑/볼륨/환경 변수/헬스체크까지 포함된 표준 docker-compose.yml을 즉시 출력합니다.
Compose 파일 핵심 섹션 (v3.8+)
| 섹션 | 역할 | 예시 |
|---|---|---|
services | 각 컨테이너(서비스) 정의 | nginx, postgres, redis |
volumes | Named Volume 선언 | postgres_data, redis_data |
networks | 컨테이너 간 네트워크 | app-network (bridge) |
Docker Compose V2부터는 별도 설치 없이 Docker CLI 플러그인으로 통합되어docker compose up -d 명령으로 모든 서비스를 백그라운드 실행하고,docker compose down으로 종료합니다. 기존 docker-compose(하이픈) 명령도 하위 호환됩니다.
Health Check -- 서비스 준비 상태 확인
이 생성기가 자동으로 추가하는 healthcheck 블록은 컨테이너 내부에서 주기적으로 명령을 실행하여 서비스 상태를 확인합니다.
- PostgreSQL:
pg_isready -U postgres - Redis:
redis-cli ping - Nginx:
curl -f http://localhost/ || exit 1 - MongoDB:
mongosh --eval 'db.adminCommand("ping")'
depends_on과 헬스체크를 함께 설정하면 데이터베이스가 완전히 시작된 후에 애플리케이션 서버가 구동되도록 시작 순서를 보장할 수 있습니다.
실전 구성 예시: Node.js + PostgreSQL + Redis
웹 애플리케이션 개발 환경에서 가장 흔한 조합입니다. Node.js는 포트 3000, PostgreSQL은 5432, Redis는 6379에 각각 매핑하고, 볼륨으로 DB 데이터를 영속화하면 docker compose down 후 재시작해도 데이터가 유지됩니다. 환경 변수에 DB 접속 정보를 설정하면 코드 변경 없이 로컬/CI/스테이징 환경을 전환할 수 있습니다.
보안 주의사항
- 환경 변수에 포함된 비밀번호는 .env 파일로 분리하고, .gitignore에 등록하세요.
- 프로덕션에서는
MYSQL_ROOT_PASSWORD같은 기본값을 반드시 변경해야 합니다. - 외부 접근이 불필요한 서비스는 포트 바인딩을
127.0.0.1:5432:5432로 제한하세요. - Docker Compose의
secrets기능이나 Docker Swarm secrets를 활용하면 더 안전합니다.
관련 도구
Dockerfile 작성이 필요하면 Dockerfile 생성기를, Cron 스케줄링은 Cron 표현식 생성기를, 서버 접속 키 관리는 SSH 키 생성기를 함께 활용하세요.
참고 자료
- Docker Docs -- Compose file reference (docs.docker.com)
- Docker Docs -- "Use Compose in production"
- 12-Factor App -- Config 원칙 (12factor.net)
- OWASP -- Docker Security Cheat Sheet