구성
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