PostgreSQL

docker-compose로 테스트용 PostgreSQL 14 구축하기

lejpower 2025. 1. 24. 13:18

구성

docker
├── docker-compose.yml
├── image
│   └── postgreSQL
│       └── Dockerfile
└── postgreSQL
    └── init
        └── init.sql

 

docker-compose를 사용해서 테스트용 PostgreSQL을 구축할 수 있습니다.

 

docker-compose.yml

version: '3'
services:
  postgres:
    container_name: juni-postgre-db
    build: ./image/postgreSQL
    restart: always
    ports:
      - "5432:5432"
    volumes:
      - /Users/uijun-lee/Private/Git/docker-postgreSQL/postgreSQL/init:/docker-entrypoint-initdb.d
    environment:
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "postgres"

volumes:
  db-store:

   

도커파일

docker-compose.yml내에서 build:지정한 패스에 Dockerfile를 작성해 image를 정의합니다.
다음과 같이 한 줄로 정의하면 OK입니다.

 

FROM postgres:14

 

init파일

CREATE DATABASE junitest;
\c junitest;
DROP TABLE IF EXISTS sample;
CREATE TABLE sample (
	id integer NOT NULL PRIMARY KEY,
	name char(100) NOT NULL,
	created_date_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE SEQUENCE sample_id_seq START 1;
INSERT INTO sample (id, name) VALUES(nextval('sample_id_seq'), 'sample name');

 

 

PostgreSQL에 접속

docker-compose exec postgres bash -c 'psql -U postgres -d junitest'

 

docker안으로 들어가서 접속하는 법

% docker exec -it juni-postgre-db bash
root@1f9bf9e5b21e:/# psql -U postgres -d junitest

 

query

SELECT * FROM sample;

 

 

데이터의 초기화

docker-compose down --volumes
docker-compose up -d



 

로그의 확인

 docker-compose logs postgres