Docker Compose 생성기

docker-compose.yml을 손으로 작성하려면 정확한 들여쓰기, 모든 포트 매핑의 따옴표, 그리고 현재 Compose 바이너리가 이해하는 버전 문자열을 기억해야 합니다. 이 생성기는 이름, 이미지, 호스트:컨테이너 포트 매핑, 볼륨 같은 간단한 필드로 서비스를 정의하게 해 줍니다. 최신 Compose 스펙(버전 키 없음)에 맞는 유효한 YAML 파일을 합리적인 기본값과 함께 출력합니다.

Compose 파일 만드는 방법

  1. 1

    서비스 추가

    각 서비스에 이름, 이미지, 호스트:컨테이너 포트 매핑, 볼륨을 지정합니다. 시작용 서비스 두 개가 이미 채워져 있습니다.

  2. 2

    행 수정 또는 삭제

    아무 필드나 직접 수정하고, + Service 버튼으로 서비스를 추가하거나 필요 없는 행을 삭제합니다.

  3. 3

    생성된 YAML 확인

    입력하는 동안 미리보기가 갱신됩니다. 최신 Compose 스펙에 맞게 포트 매핑은 따옴표로 감싸고 버전 키는 생략합니다.

  4. 4

    파일 복사

    생성된 docker-compose.yml을 복사해 프로젝트 루트에 붙여넣습니다.

최신 Compose 스펙

Compose V2(Docker Desktop과 최신 Docker Engine에 포함된 플러그인)는 Compose Specification을 따릅니다. version: 키는 더 이상 쓰지 않으며 생성기는 이를 생략합니다. 최상위 키는 services, networks, volumes, configs, secrets입니다.

서비스 구조

운영에 가까운 서비스는 이렇게 생겼습니다:

services:
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./public:/usr/share/nginx/html:ro
    depends_on:
      app:
        condition: service_healthy
    networks:
      - frontend
      - backend
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost/health"]
      interval: 30s
      timeout: 5s
      retries: 3

볼륨: 바인드 마운트와 명명된 볼륨

  • 바인드 마운트(./app:/var/www)는 컨테이너를 호스트의 경로에 연결합니다. 변경 사항이 즉시 반영되어 로컬 개발에 좋습니다.
  • 명명된 볼륨(pgdata:/var/lib/postgresql/data)은 Docker가 관리하며 호스트 경로와 무관하게 유지됩니다. 데이터베이스처럼 rm -rf로 실수로 지우면 안 되는 것에 적합합니다.
  • 익명 볼륨 - 피하세요. 재시작 후에도 남지만 docker compose down -v를 실행하면 경고 없이 사라집니다.

네트워크

기본적으로 Compose는 프로젝트 이름의 네트워크를 만들고 모든 서비스를 여기에 연결합니다. 명시적 네트워크를 선언하는 것이 유용한 경우는 다음과 같습니다:

  • 공개 서비스에서 데이터베이스를 격리하려는 경우.
  • 기존 인프라에 맞추기 위해 사용자 지정 서브넷의 브리지가 필요한 경우.
  • 이미 존재하는 외부 네트워크에 컨테이너를 연결하려는 경우(external: true).

피해야 할 흔한 실수

  • 버전 키 충돌. 맨 위의 version: "3.8"은 healthcheck의 start_interval 같은 최신 기능이 이전 Compose에서 동작하지 못하게 합니다. 생성기는 버전 키를 생략합니다.
  • 포트 따옴표. 8080:80은 일부 경계 상황에서 YAML 60진수로 해석됩니다. 생성기는 포트 매핑을 항상 따옴표로 감쌉니다.
  • 하드코딩된 비밀. compose.yml에 직접 쓴 비밀은 git에 커밋됩니다. env_file이나 플랫폼의 비밀 저장소에 보관하세요.
  • 조건 없는 depends_on. 단순한 depends_on: [db]는 컨테이너 시작만 기다리며 서비스 준비 상태를 기다리지 않습니다. condition: service_healthy를 쓰고 종속 서비스에 healthcheck를 추가하세요.

자주 묻는 질문

현재 Compose Specification(Docker Compose V2에 맞춘 규격)입니다. 파일은 version: 키를 생략하며, 이것이 최신 Compose 파일 작성 방식입니다. Docker Compose V2.22 이상에서 동작합니다.

이 버전의 폼에서는 불가능합니다. 생성기는 이미지, 포트, 볼륨으로 구성된 서비스 정의에 집중합니다. 생성된 YAML에 네트워크, 환경 변수, healthcheck 등 다른 키를 직접 추가한 뒤 사용할 수 있습니다.

아니요. 이 도구는 compose.yml에 집중합니다. Dockerfile은 기본 이미지 선택과 다섯 가지 스택의 COPY/RUN 순서를 다루는 Dockerfile 생성기를 사용하세요.

아니요. 서비스 정의는 이 페이지에서 YAML을 만들 때만 사용됩니다. 저장되거나 업로드되거나 공유되지 않습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다