본문 바로가기

Docker Compose 검사기

브라우저 처리

docker-compose.yml을 실제 YAML로 읽어 정의되지 않은 depends_on·볼륨·네트워크, 서비스끼리 겹치는 호스트 포트, 잘못된 restart 값, privileged·docker.sock·평문 비밀번호를 찾아 줍니다.

사용 전 확인
  • 파일·이미지·문서 처리 도구는 브라우저 안에서 처리되더라도 원본에 개인정보나 민감 정보가 포함될 수 있습니다. 공유·제출 전 원본과 결과를 한 번 더 확인하세요.
도구 실행입력 후 결과 확인
Docker Compose 검사기 샘플 실행

Compose 파일은 들여쓰기 한 칸이나 오타 하나로 서비스가 뜨지 않거나, 엉뚱한 볼륨이 새로 만들어지는 문제가 자주 생깁니다. 이 검사기는 파일을 YAML 규칙대로 읽어 들여쓰기, 탭, 중복 키 오류를 행 번호와 함께 먼저 알려 주고, 그다음 Compose 설정 내용을 점검합니다.

브라우저 처리
샘플 결과
오류 2 · 경고 0 · 참고 0
서비스 2개: web, admin

[오류] web: depends_on의 "api" 서비스가 정의되어 있지 않습니다.
[오류] admin: web 서비스와 호스트 포트(8080)가 겹칩니다.
자바스크립트가 활성화되면 이 영역이 실제 입력, 실행, 결과 패널로 바뀝니다.

Docker Compose 검사기 사용 가이드

Compose 파일은 들여쓰기 한 칸이나 오타 하나로 서비스가 뜨지 않거나, 엉뚱한 볼륨이 새로 만들어지는 문제가 자주 생깁니다. 이 검사기는 파일을 YAML 규칙대로 읽어 들여쓰기, 탭, 중복 키 오류를 행 번호와 함께 먼저 알려 주고, 그다음 Compose 설정 내용을 점검합니다.

서비스마다 image나 build가 있는지, depends_on과 networks에 적은 이름이 실제로 정의되어 있는지, 이름 있는 볼륨이 최상위 volumes에 선언되어 있는지, restart 값이 올바른지 확인합니다. 두 서비스가 같은 호스트 포트를 쓰면 실행 시 충돌하므로 오류로 표시합니다.

privileged: true, network_mode: host, cap_add SYS_ADMIN, docker.sock 마운트처럼 보안상 위험한 설정과, PASSWORD·TOKEN 같은 값이 파일에 그대로 적힌 경우도 경고합니다. ${VAR}처럼 환경 변수로 넘긴 값은 문제로 보지 않으며, &앵커와 <<: *병합 문법도 읽습니다.

사용 방법

  1. 'docker-compose.yml 내용' 칸에 파일 전체를 붙여 넣습니다.
  2. '실행'을 누르면 서비스 목록과 함께 오류·경고·참고가 나옵니다. YAML 문법 오류가 있으면 해당 행을 먼저 알려 줍니다.
  3. 지적된 서비스 이름과 항목을 찾아 고친 뒤 다시 실행해 '통과'를 확인합니다.

예시: 포트가 겹치는 두 서비스

입력
services:
  web:
    image: nginx:1.27
    ports:
      - "8080:80"
    depends_on: [api]
  admin:
    image: nginx:1.27
    ports:
      - "8080:80"
결과
오류 2 · 경고 0 · 참고 0
서비스 2개: web, admin

[오류] web: depends_on의 "api" 서비스가 정의되어 있지 않습니다.
[오류] admin: web 서비스와 호스트 포트(8080)가 겹칩니다.

api 서비스를 빠뜨렸고, admin이 web과 같은 8080 포트를 쓰려 합니다.

이럴 때 쓰면 좋아요

  • docker compose up 전에 설정 실수를 미리 찾을 때
  • 여러 사람이 고친 Compose 파일에서 포트 충돌을 확인할 때
  • 운영 서버에 올리기 전 privileged나 평문 비밀번호가 없는지 점검할 때
  • 다른 프로젝트에서 복사해 온 Compose 파일을 정리할 때

문제가 생겼을 때

'들여쓰기에 탭을 쓸 수 없습니다' 오류

YAML은 들여쓰기에 공백만 허용합니다. 편집기에서 탭을 공백 2칸으로 바꾸는 설정을 켜고 다시 저장하세요.

'이름 있는 볼륨이 최상위 volumes에 선언되지 않았습니다' 오류

dbdata:/var/lib/... 처럼 경로가 아닌 이름을 쓰면 최상위에 volumes: dbdata: {}를 선언해야 합니다. 호스트 폴더를 쓰려면 ./data:/var/lib/...처럼 ./로 시작하세요.

활용 팁

  • 최상위 version: 키는 Compose v2에서 무시되므로 지워도 됩니다. 남겨 두면 '참고'로 안내합니다.
  • 포트를 "8080:80"처럼 따옴표로 감싸 두면 오래된 YAML 파서에서 60진수로 잘못 읽히는 문제를 피할 수 있습니다.

자주 묻는 질문

docker compose config와 무엇이 다른가요?

docker compose config는 Docker가 설치된 곳에서 공식 검증을 하고, 이 도구는 브라우저에서 바로 자주 하는 실수와 보안 설정을 사람이 읽기 쉽게 알려 줍니다. 최종 확인은 compose config로 하는 것이 좋습니다.

extends나 include 파일도 따라가서 읽나요?

아니요. 붙여 넣은 파일 하나만 검사합니다. 다른 파일에 정의된 서비스를 depends_on으로 참조하면 정의되지 않았다고 나올 수 있습니다.

.env 파일의 값을 대입해서 검사하나요?

${VAR} 부분은 대입하지 않고 그대로 둡니다. 비밀번호 경고에서도 ${…}로 넘긴 값은 안전한 방식으로 봅니다.