본문 바로가기
카테고리 없음

[Docker] Docker compose로 Postgresql 설치

by 쿡노트 2025. 11. 5.
반응형

Docker compose 설치 및 버전 확인

$ docker compose version
Docker Compose version v2.21.0

Postgresql 컨테이너 저장소 기본 디렉터리 생성

$ mkdir postgresql_16_docker
$ cd postgresql_16_docker/

Postgresql 설치 이미지 버전 확인

docker hub의 postgres 공식 이미지 URL > Tags 탭으로 이동. 원하는 버전 확인 (ex 이미지명 : postgres:16.9)

https://hub.docker.com/_/postgres

docker-compose.yml 파일 작성

$ vi docker-compose.yml
version: "3"

services: 
  postgresql:
    #docker hub에서 찾은 이미지
    image: postgres:16.9
    #컨테이너 실행 시 재시작
    restart: always
    container_name: postgres
    ports:
      - "15432:5432" #호스트 Port:컨테이너 Port
    environment: 
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: test #사용할 패스워드로 설정
    volumes:
      #./data (로컬 디렉터리 /data 디렉터리는 자동으로 생성됨) ex /postgresql_16_docker/data
      # /var/lib/postgresql/data : 컨테이너 내부 Postgresql 'data' 디렉터리
      - ./data:/var/lib/postgresql/data

docker compose로 postgresql 실행

$ cd postgresql_16_docker
$ ll
docker-compose.yml
#이미지 다운로드 및 컨테이너 기동
$ docker compose up -d
[+] Running 15/15
 ✔ postgresql 14 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled 
   ✔ 59e22667830b Pull complete 
   ✔ c98010e7bb9b Pull complete
   ✔ 9204b4e7631a Pull complete
   ✔ b08c5deb8c35 Pull complete
   ✔ ff24f36f9605 Pull complete
   ✔ 6b3b5f65e3cd Pull complete
   ✔ d7f875e2b62b Pull complete
   ✔ b8860d4eda7a Pull complete
   ✔ 75d30a5de1fb Pull complete
   ✔ 97afbbdefb7d Pull complete
   ✔ e1ee0353aab9 Pull complete
   ✔ 3dc5e0f3117f Pull complete
   ✔ 1d577202ffc0 Pull complete
   ✔ 19a781737ad0 Pull complete
[+] Running 2/2
 ✔ Network postgresql_16_docker_default  Created
 ✔ Container postgres                    Started

#컨테이너 실행 확인
$ docker ps
CONTAINER ID   IMAGE           COMMAND                   CREATED          STATUS          PORTS                                         NAMES
b8a5071b096a   postgres:16.9   "docker-entrypoint.s…"   24 seconds ago   Up 23 seconds   0.0.0.0:15432->5432/tcp, :::15432->5432/tcp   postgres

컨테이너 psql 접속

#컨테이너 접속 docker exec -it [컨테이너 NAME] /bin/bash
$ docker exec -it postgres /bin/bash
# 또는 POSTGRES_USER로 바로 접속 docker exec -it -u postgres postgres /bin/bash
postgres@b8a5071b096a:/$ psql
psql (16.9 (Debian 16.9-1.pgdg120+1))
Type "help" for help.

postgres=#

참조 : 컨테이너 posetgresql 'data' 디렉터리 호스트에서 확인 **pg_dump 등 생성된 파일을 호스트에서 확인할 수 있다.

#컨테이너
postgres@b8a5071b096a:~$ cd /var/lib/postgresql/data
postgres@b8a5071b096a:~/data$ ls postgresql.conf
postgresql.conf

#호스트
$ pwd
/postgresql_16_docker/data
$ ls postgresql.conf
postgresql.conf

기타 docker compose 명령어

#doker-compose.yml 파일이 존재 하는 경로에서 실행 하면 되고, 기타 다른 yml 파일을 사용하려면 -f 옵션을 주면된다.
docker compose stop # 컨테이너 중지
docker compose start # 컨테이너 시작
docker compose down # 컨테이너, 네트워크, 볼륨 중지 및 삭제
docker compose -f docker-postgresql16.yml down
반응형