반응형
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반응형