Docker로 PostgreSQL 로컬 환경 구축

요약

Docker로 PostgreSQL 뚝딱! 로컬 개발 환경 구축

2026년 최신 기준으로 Docker와 Docker Compose를 활용하여 PostgreSQL 데이터베이스를 로컬에 쉽고 빠르게 구축하는 방법을 상세히 안내합니다.

핵심 키워드: Docker, PostgreSQL, 로컬 개발 환경

이 글의 순서

1. 왜 Docker로 PostgreSQL을 구축해야 할까요?

2. Docker와 PostgreSQL, 그리고 Docker Compose 알아보기

3. Docker Compose를 이용한 PostgreSQL 로컬 환경 구축

4. PostgreSQL 데이터베이스 접속 및 활용

5. 자주 발생하는 문제와 해결책

6. Docker Compose를 활용한 고급 설정

7. 자주 묻는 질문 (FAQ)

배경

왜 Docker로 PostgreSQL을 구축해야 할까요?

개발자라면 누구나 한 번쯤 로컬 환경에 데이터베이스를 설치하며 골머리를 앓아본 경험이 있을 겁니다. 버전 충돌, 복잡한 설정, 시스템 리소스 소모 등 다양한 문제들이 개발 시작 단계부터 우리를 지치게 만들곤 하죠. 하지만 2026년 현재, 이러한 고민을 한 번에 날려버릴 수 있는 강력한 도구들이 있습니다. 바로 DockerDocker Compose를 활용한 PostgreSQL 로컬 개발 환경 구축입니다.

이 글에서는 DockerDocker Compose를 사용하여 관계형 데이터베이스의 강자, PostgreSQL을 여러분의 로컬 개발 환경에 빠르고 효율적으로 설치하고 관리하는 방법을 상세히 안내해 드릴 예정입니다. 더 이상 복잡한 의존성 문제나 환경 설정에 시간을 낭비하지 않고, 오로지 개발에만 집중할 수 있는 최적의 환경을 함께 만들어 보시죠.

핵심 포인트

로컬 개발 환경에서 데이터베이스 설치 및 관리에 드는 시간과 노력을 Docker가 혁신적으로 줄여줍니다. 개발자는 핵심 비즈니스 로직에 집중할 수 있게 됩니다.

개념 이해

Docker와 PostgreSQL, 그리고 Docker Compose 알아보기

Docker: 컨테이너 기술의 표준

Docker는 애플리케이션과 그 종속성을 컨테이너라는 격리된 환경에 패키징하여 배포하고 실행할 수 있도록 돕는 플랫폼입니다. 컨테이너는 가상 머신(VM)보다 훨씬 가볍고 빠르게 작동하며, 개발 환경과 운영 환경 간의 불일치 문제를 해결해 줍니다. “내 컴퓨터에서는 잘 되는데…” 라는 말을 Docker는 과거의 유물로 만들었습니다.

Docker 컨테이너는 애플리케이션 실행에 필요한 모든 것(코드, 런타임, 시스템 도구, 라이브러리 등)을 포함하고 있어, 어떤 환경에서든 동일하게 작동함을 보장합니다. 이는 개발팀 내에서 일관된 개발 환경을 유지하고, CI/CD 파이프라인을 구축하는 데 필수적인 요소로 자리 잡았습니다.

Docker의 주요 장점

환경 일관성 — 개발, 테스트, 운영 환경에서 동일한 소프트웨어 스택을 보장합니다.

빠른 배포 — 컨테이너는 VM보다 훨씬 빠르게 시작하고 중지할 수 있습니다.

리소스 효율성 — 호스트 OS의 커널을 공유하여 VM보다 적은 리소스를 사용합니다.

격리성 — 각 컨테이너는 독립적으로 실행되어 서로에게 영향을 주지 않습니다.

PostgreSQL: 강력하고 안정적인 오픈소스 RDBMS

PostgreSQL은 세계에서 가장 진보된 오픈소스 관계형 데이터베이스 시스템으로 손꼽힙니다. 안정성, 기능적 풍부함, 표준 SQL 준수 및 확장성 면에서 높은 평가를 받고 있으며, 복잡한 데이터 처리와 대규모 애플리케이션에 이상적입니다. 특히 엔터프라이즈 수준의 기능들을 오픈소스로 제공한다는 점에서 많은 기업과 개발자들에게 사랑받고 있습니다.

PostgreSQL은 ACID(원자성, 일관성, 고립성, 지속성) 속성을 완벽하게 지원하며, 다양한 데이터 타입(JSON, XML, 배열 등)과 고급 인덱싱 기술을 제공합니다. 또한, 강력한 커뮤니티 지원과 활발한 개발로 2026년에도 계속해서 발전하고 있는 데이터베이스입니다.

PostgreSQL 아키텍처 다이어그램

핵심 포인트

PostgreSQL은 단순한 관계형 데이터베이스를 넘어, 객체-관계형 데이터베이스로서 유연하고 강력한 데이터 모델링 기능을 제공하여 현대적인 애플리케이션 개발에 최적화되어 있습니다.

Docker Compose: 다중 컨테이너 애플리케이션 관리

Docker Compose는 여러 개의 Docker 컨테이너를 정의하고 실행하기 위한 도구입니다. 복잡한 마이크로서비스 아키텍처나 웹 애플리케이션처럼 여러 서비스(예: 웹 서버, 데이터베이스, 캐시)가 함께 작동해야 하는 경우, Docker Compose는 YAML 파일을 통해 이 모든 서비스를 한 번에 정의하고 관리할 수 있게 해줍니다. 즉, docker-compose up 명령어 하나로 전체 애플리케이션 스택을 시작할 수 있습니다.

Docker Compose는 개발 환경에서 특히 유용합니다. 백엔드 서버, 프론트엔드 빌드 환경, 그리고 PostgreSQL 같은 데이터베이스를 각각의 컨테이너로 격리하여 관리하면서도, 이들을 하나의 논리적인 단위로 묶어 쉽게 시작하고 중지할 수 있기 때문입니다. 2026년의 현대적인 개발 환경에서는 Docker Compose가 거의 필수가 되었습니다.

환경 구축

Docker Compose를 이용한 PostgreSQL 로컬 환경 구축

1. Docker 설치 확인

먼저 여러분의 시스템에 Docker가 설치되어 있는지 확인해야 합니다. 터미널 또는 명령 프롬프트에서 다음 명령어를 실행하여 Docker 버전 정보를 확인하세요. 만약 설치되어 있지 않다면, Docker 공식 웹사이트에서 다운로드하여 설치해야 합니다.

Docker가 시스템에 올바르게 설치되었는지 확인하는 명령어입니다.

docker --version
docker compose version

2026년 현재, 대부분의 Docker 설치는 Docker Compose를 함께 제공합니다. docker compose (띄어쓰기) 형식의 명령어가 기본이며, 구버전의 docker-compose (하이픈) 명령어는 점차 사용이 줄어들고 있습니다.

터미널에서 Docker 버전 및 Docker Compose 버전 출력 화면

2. Docker Compose 파일 (docker-compose.yml) 작성

이제 PostgreSQL 데이터베이스 컨테이너를 정의할 Docker Compose 파일을 작성해 봅시다. 프로젝트의 루트 디렉토리에 docker-compose.yml 파일을 생성하고 다음 내용을 입력합니다.

PostgreSQL 데이터베이스 컨테이너를 정의하는 Docker Compose 파일입니다. services 섹션 아래에 db라는 이름으로 PostgreSQL 서비스를 정의했습니다.

version: '3.8'

services:
  db:
    image: postgres:16-alpine # PostgreSQL 16 버전 (경량 Alpine 기반)
    container_name: my_postgres_db # 컨테이너 이름 지정
    restart: always # 컨테이너 종료 시 항상 재시작
    environment:
      POSTGRES_DB: mydatabase # 생성할 데이터베이스 이름
      POSTGRES_USER: myuser # 데이터베이스 사용자 이름
      POSTGRES_PASSWORD: mypassword # 데이터베이스 사용자 비밀번호
    ports:
      - "5432:5432" # 로컬 5432 포트와 컨테이너 5432 포트 연결
    volumes:
      - db_data:/var/lib/postgresql/data # 데이터 영속성을 위한 볼륨 마운트

volumes:
  db_data: # db_data라는 이름의 볼륨 정의 (외부에서 데이터 관리)

위 파일의 각 설정에 대해 자세히 살펴보겠습니다.

  • version: '3.8': Docker Compose 파일의 버전을 나타냅니다. 최신 기능을 사용하기 위해 ‘3.8’을 권장합니다.
  • services: 애플리케이션을 구성하는 서비스들을 정의하는 섹션입니다. 여기서는 db라는 이름으로 PostgreSQL 서비스를 정의했습니다.
  • image: postgres:16-alpine: 사용할 Docker 이미지와 태그를 지정합니다. postgres:16-alpine은 PostgreSQL 16 버전을 기반으로 하며, 경량 리눅스 배포판인 Alpine을 사용하여 이미지 크기가 작고 효율적입니다.
  • container_name: my_postgres_db: Docker 컨테이너에 고유한 이름을 부여합니다. 이를 통해 컨테이너를 쉽게 식별하고 관리할 수 있습니다.
  • restart: always: 컨테이너가 어떤 이유로든 종료될 경우, 항상 자동으로 재시작하도록 설정합니다. 개발 중이거나 서버 재부팅 시 유용합니다.
  • environment: 컨테이너 내부에서 사용할 환경 변수들을 설정합니다. PostgreSQL 이미지의 경우, 데이터베이스 초기 설정에 필요한 변수들을 정의합니다.
    • POSTGRES_DB: 컨테이너 시작 시 자동으로 생성될 데이터베이스의 이름입니다.
    • POSTGRES_USER: 데이터베이스에 접속할 사용자 이름입니다.
    • POSTGRES_PASSWORD: 해당 사용자의 비밀번호입니다. 실제 운영 환경에서는 이 값을 절대 하드코딩하지 않고, 환경 변수로 관리해야 합니다.
  • ports: - "5432:5432": 호스트 머신의 포트와 컨테이너 내부의 포트를 연결합니다. 왼쪽의 5432는 호스트 머신의 포트이고, 오른쪽의 5432는 PostgreSQL 컨테이너가 기본적으로 사용하는 포트입니다. 이를 통해 로컬 애플리케이션이 호스트의 5432 포트를 통해 컨테이너 내부의 PostgreSQL에 접속할 수 있게 됩니다.
  • volumes: - db_data:/var/lib/postgresql/data: 데이터 영속성을 위한 볼륨을 설정합니다. 컨테이너가 삭제되더라도 데이터는 유지될 수 있도록 호스트 머신의 물리적인 저장 공간에 데이터를 저장합니다. db_data는 Docker가 관리하는 명명된 볼륨(named volume)이며, /var/lib/postgresql/data는 PostgreSQL 컨테이너 내부에서 데이터가 저장되는 경로입니다.
  • volumes: db_data:: 위에서 사용한 db_data 명명된 볼륨을 정의합니다. Docker가 이 볼륨을 생성하고 관리합니다.

핵심 포인트

Docker Compose 파일은 YAML 형식으로 작성되며, 여러 컨테이너 서비스의 설정(이미지, 포트, 환경 변수, 볼륨 등)을 한눈에 파악하고 관리할 수 있게 해주는 청사진 역할을 합니다.

3. 데이터 볼륨 관리의 중요성

Docker 컨테이너는 기본적으로 임시적입니다. 컨테이너가 삭제되면 그 안에 저장된 데이터도 함께 사라집니다. 데이터베이스와 같이 영구적인 데이터가 필요한 서비스에서는 이 문제를 해결하기 위해 ‘볼륨(Volume)’을 사용합니다. 위 docker-compose.yml 파일에서 db_data라는 명명된 볼륨을 사용한 이유가 바로 여기에 있습니다.

명명된 볼륨은 Docker가 관리하는 파일 시스템의 일부이며, 컨테이너의 생명주기와 독립적으로 존재합니다. 따라서 컨테이너를 삭제하고 다시 생성하더라도, 기존의 db_data 볼륨을 재사용하면 이전에 저장했던 모든 데이터가 그대로 유지됩니다. 이는 개발 중 데이터 손실 걱정 없이 컨테이너를 자유롭게 생성하고 삭제할 수 있게 해주는 매우 중요한 기능입니다.

Docker 볼륨과 데이터 영속성 개념도

4. 데이터베이스 실행 및 확인

이제 docker-compose.yml 파일이 있는 디렉토리로 이동하여 다음 명령어를 실행합니다.

Docker Compose 파일에 정의된 서비스들을 백그라운드(-d 옵션)에서 실행합니다. 이미지가 없으면 자동으로 다운로드하고 컨테이너를 생성하여 시작합니다.

docker compose up -d

명령어를 실행하면 Docker가 PostgreSQL 이미지를 다운로드하고, my_postgres_db라는 이름의 컨테이너를 생성하여 백그라운드에서 실행할 것입니다. 컨테이너가 정상적으로 실행 중인지 확인하려면 다음 명령어를 사용합니다.

현재 실행 중인 모든 Docker 컨테이너의 상태를 보여줍니다. my_postgres_db 컨테이너가 Up 상태여야 합니다.

docker ps

이제 여러분의 로컬 머신에 PostgreSQL 데이터베이스가 성공적으로 컨테이너화되어 실행 중입니다! 이제 이 데이터베이스에 접속하여 사용하는 방법을 알아보겠습니다.

활용 가이드

PostgreSQL 데이터베이스 접속 및 활용

1. GUI 툴 (DBeaver)을 이용한 접속

대부분의 개발자는 데이터베이스를 시각적으로 관리하고 쿼리하기 위해 GUI(Graphical User Interface) 툴을 사용합니다. DBeaver는 다양한 데이터베이스를 지원하는 인기 있는 무료 GUI 툴입니다. DBeaver를 사용하여 방금 생성한 PostgreSQL 컨테이너에 접속해 봅시다.

  • DBeaver 설치: DBeaver 공식 웹사이트에서 Community Edition을 다운로드하여 설치합니다.
  • 새 연결 생성: DBeaver를 실행하고 ‘새 데이터베이스 연결’을 클릭합니다.
  • PostgreSQL 선택: 데이터베이스 유형 목록에서 ‘PostgreSQL’을 선택하고 ‘다음’을 클릭합니다.
  • 연결 정보 입력:
    • 호스트(Host): localhost (Docker 컨테이너가 호스트의 5432 포트로 노출되었기 때문입니다)
    • 포트(Port): 5432
    • 데이터베이스(Database): mydatabase (Docker Compose 파일에 설정한 POSTGRES_DB 값)
    • 사용자 이름(Username): myuser (Docker Compose 파일에 설정한 POSTGRES_USER 값)
    • 비밀번호(Password): mypassword (Docker Compose 파일에 설정한 POSTGRES_PASSWORD 값)
  • 연결 테스트: ‘테스트 연결’ 버튼을 클릭하여 연결이 성공하는지 확인합니다. 성공하면 ‘마침’을 클릭하여 연결을 생성합니다.

이제 DBeaver를 통해 여러분의 로컬 PostgreSQL 데이터베이스를 편리하게 관리할 수 있습니다. 테이블 생성, 데이터 삽입, 쿼리 실행 등 모든 작업을 GUI로 수행할 수 있습니다.

DBeaver PostgreSQL 연결 설정 화면

핵심 포인트

GUI 툴을 사용하면 복잡한 데이터베이스 관리 작업을 시각적으로 쉽게 처리할 수 있습니다. 특히 DBeaver는 다양한 DB를 지원하여 개발자들에게 필수적인 도구입니다.

2. CLI (psql)을 이용한 접속

GUI 툴 외에도 터미널에서 직접 psql 명령어를 사용하여 PostgreSQL에 접속할 수 있습니다. psql은 PostgreSQL 공식 클라이언트 도구로, 컨테이너 내부에서 실행하거나 호스트 머신에 PostgreSQL 클라이언트가 설치되어 있다면 직접 접속할 수 있습니다.

컨테이너 내부에서 psql 실행

가장 간단한 방법은 docker exec 명령어를 사용하여 실행 중인 PostgreSQL 컨테이너 내부로 들어가 psql을 실행하는 것입니다.

실행 중인 my_postgres_db 컨테이너 내부에서 psql 명령어를 실행하여 mydatabasemyuser로 접속합니다.

docker exec -it my_postgres_db psql -U myuser -d mydatabase

이 명령어를 실행하면 비밀번호를 묻는 프롬프트가 나타나고, 올바른 비밀번호(mypassword)를 입력하면 psql 쉘에 접속됩니다.

호스트에서 psql 실행 (PostgreSQL 클라이언트 설치 필요)

만약 호스트 머신에 PostgreSQL 클라이언트(psql)가 설치되어 있다면, 직접 호스트에서 컨테이너화된 데이터베이스에 접속할 수도 있습니다. 이 방법은 호스트의 5432 포트가 컨테이너의 5432 포트와 연결되어 있기 때문에 가능합니다.

호스트 머신에서 psql을 사용하여 localhost:5432에 접속합니다.

psql -h localhost -p 5432 -U myuser -d mydatabase

마찬가지로 비밀번호를 입력하면 접속됩니다. 이 방법은 호스트에 별도의 PostgreSQL 클라이언트 설치가 필요하다는 단점이 있지만, 더 유연한 접근 방식을 제공합니다.

3. 간단한 SQL 쿼리 예시

psql 쉘에 접속한 후, 기본적인 SQL 명령어를 실행하여 데이터베이스를 테스트해 볼 수 있습니다.

간단한 테이블을 생성하고 데이터를 삽입한 후 조회하는 SQL 쿼리 예시입니다.

-- users 테이블 생성
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

-- 데이터 삽입
INSERT INTO users (name, email) VALUES ('권퓨터', '[email protected]');
INSERT INTO users (name, email) VALUES ('김개발', '[email protected]');

-- 데이터 조회
SELECT * FROM users;

-- 테이블 목록 조회 (psql 메타 명령어)
\dt

위 쿼리를 실행하여 테이블이 생성되고 데이터가 올바르게 삽입되었는지 확인해 보세요. \dt와 같은 psql 메타 명령어는 데이터베이스 객체를 빠르게 조회하는 데 유용합니다.

psql 콘솔에서 테이블 생성 및 데이터 삽입 결과 화면

문제 해결

자주 발생하는 문제와 해결책

문제 01

포트 충돌 오류 (Port Conflict Error)

Docker Compose로 PostgreSQL 컨테이너를 시작할 때, “port is already allocated” 또는 “address already in use”와 같은 오류 메시지가 발생할 수 있습니다. 이는 호스트 머신의 5432 포트가 이미 다른 프로세스(예: 로컬에 설치된 다른 PostgreSQL 인스턴스)에 의해 사용 중이기 때문입니다.

해결 — 포트 번호 변경 또는 기존 프로세스 종료

1. Docker Compose 파일에서 포트 번호 변경: docker-compose.yml 파일의 ports 섹션을 수정하여 호스트 포트를 다른 번호(예: 5433)로 변경합니다.

코드 설명

호스트의 5433 포트를 컨테이너의 5432 포트에 연결하도록 설정합니다.

ports:
  - "5433:5432" # 호스트 5433 포트 사용

2. 기존 프로세스 종료: 5432 포트를 사용하고 있는 프로세스를 찾아 종료합니다. 리눅스/macOS에서는 lsof -i :5432 명령어로, Windows에서는 netstat -ano | findstr :5432 명령어로 해당 프로세스를 찾을 수 있습니다.

문제 02

데이터 볼륨 권한 문제 (Volume Permission Issue)

때때로 PostgreSQL 컨테이너가 데이터 볼륨에 데이터를 쓰거나 읽지 못하는 권한 문제가 발생할 수 있습니다. 특히 리눅스 환경에서 Docker를 실행할 때, 호스트의 파일 시스템 권한과 컨테이너 내부의 PostgreSQL 프로세스 사용자 권한이 일치하지 않아 발생합니다. 컨테이너 로그에서 “Permission denied”와 같은 메시지를 발견할 수 있습니다.

해결 — 볼륨 권한 조정 또는 사용자 지정

1. 볼륨 권한 조정 (리눅스/macOS): 호스트 머신에서 Docker가 생성한 볼륨 디렉토리의 권한을 PostgreSQL 컨테이너 사용자(일반적으로 UID 999)에 맞게 조정합니다. 이는 복잡할 수 있으므로, 대부분의 경우 Docker가 알아서 처리하도록 두는 것이 좋습니다.

2. Docker Compose 파일에 사용자 지정: docker-compose.yml 파일에 user 속성을 추가하여 컨테이너 내부에서 실행될 사용자 ID를 명시적으로 지정할 수 있습니다. 예를 들어, 현재 호스트 사용자의 UID/GID를 사용합니다.

코드 설명

컨테이너를 현재 호스트 사용자의 UID/GID로 실행하여 권한 문제를 회피합니다. $(id -u):$(id -g)는 리눅스/macOS에서 현재 사용자의 UID와 GID를 가져옵니다.

services:
  db:
    # ...
    user: "${UID:-1000}:${GID:-1000}" # 리눅스/macOS 사용자 UID/GID 설정. Windows에서는 이 줄을 제거하세요.
    volumes:
      - db_data:/var/lib/postgresql/data

주의: Windows 환경에서는 일반적으로 이 문제가 발생하지 않으므로 user 설정을 사용하지 않아야 합니다.

핵심 포인트

Docker 컨테이너는 격리된 환경이지만, 호스트와 공유하는 볼륨에서는 권한 문제가 발생할 수 있습니다. 이 경우 user 설정을 통해 해결할 수 있습니다.

고급 설정

Docker Compose를 활용한 고급 설정

1. .env 파일을 이용한 환경 변수 관리

docker-compose.yml 파일에 직접 민감한 정보(예: 비밀번호)를 하드코딩하는 것은 보안상 좋지 않습니다. 대신 .env 파일을 사용하여 환경 변수를 관리하는 것이 일반적입니다. Docker Compose는 .env 파일을 자동으로 읽어와 환경 변수로 사용합니다.

프로젝트 루트 디렉토리에 .env 파일을 생성하고 다음과 같이 작성합니다.

데이터베이스 접속 정보를 .env 파일에 정의합니다. 이 파일은 Git에 커밋하지 않도록 .gitignore에 추가해야 합니다.

# .env 파일
POSTGRES_DB=mydatabase
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
POSTGRES_PORT=5432

이제 docker-compose.yml 파일을 다음과 같이 수정하여 .env 파일의 변수들을 참조하도록 합니다.

환경 변수들을 .env 파일에서 가져오도록 ${변수명} 문법을 사용합니다.

version: '3.8'

services:
  db:
    image: postgres:16-alpine
    container_name: my_postgres_db
    restart: always
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    ports:
      - "${POSTGRES_PORT}:5432"
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

이렇게 하면 민감한 정보가 코드에 노출되지 않으며, 여러 개발자가 각자의 환경에 맞게 쉽게 변수를 변경할 수 있습니다. .env 파일은 반드시 .gitignore에 추가하여 버전 관리 시스템에 포함되지 않도록 해야 합니다.

2. 초기 SQL 스크립트 실행

데이터베이스 컨테이너가 처음 시작될 때, 미리 정의된 SQL 스크립트를 실행하여 스키마를 초기화하거나 초기 데이터를 삽입하고 싶을 때가 있습니다. PostgreSQL Docker 이미지는 이를 위한 편리한 기능을 제공합니다.

프로젝트 루트 디렉토리에 ./db/init.sql 파일을 생성하고 다음과 같이 작성합니다.

데이터베이스가 처음 시작될 때 자동으로 실행될 SQL 스크립트입니다. IF NOT EXISTS를 사용하여 테이블이 이미 존재하면 오류가 발생하지 않도록 합니다.

-- ./db/init.sql
CREATE TABLE IF NOT EXISTS products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    stock INT DEFAULT 0
);

INSERT INTO products (name, price, stock) VALUES
('노트북', 1200.00, 50),
('마우스', 25.00, 200),
('키보드', 75.00, 100)
ON CONFLICT (id) DO NOTHING;

이제 docker-compose.yml 파일을 수정하여 이 스크립트를 컨테이너의 /docker-entrypoint-initdb.d/ 디렉토리에 마운트합니다. 이 디렉토리에 있는 .sql 파일은 컨테이너가 처음 시작될 때 자동으로 실행됩니다.

코드 설명

호스트의 ./db/init.sql 파일을 컨테이너의 초기화 스크립트 디렉토리에 마운트합니다.

services:
  db:
    # ...
    volumes:
      - db_data:/var/lib/postgresql/data
      - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql # 초기화 스크립트 마운트

이제 카테고리 인프라, 개발 태그 , , , , , , , , ,