# docker-compose.yml
version: '3'
services:
postgres:
image: postgres:14
container_name: postgres-server
environment:
POSTGRES_PASSWORD: password
volumes:
- ./init/:/docker-entrypoint-initdb.d/
- ./data/:/data/
ports:
- "5432:5432"
networks:
- docker-network
networks:
docker-network:
external: true
docker network create docker-network
volume 설정으로 원하는 sql들을 미리 작성 후 컨테이너로 바인딩 될 수 있도록 설정
init파일 바인딩 되고 docker 컨테이너 실행과 동시에 docker-entrypoint-initdb.d이하의 sql파일들이 이름순으로 순차적으로 실행된다.
하나의 파일로도 가능하지만 의미적으로 다른 부분은 분리를 함.
초기 데이터로 csv를 가지고 있어서, user생성 및 권한 설정, table 생성, data copy 세가지 파일로 분리해서 순차적으로 진행 되도록 설정
파일 명 앞을 숫자로 해놓으면 이름 순으로 실행되기 때문에 순서 정하기가 좋다!
csv copy
COPY target_schema.target_table(cols...)
FROM '/data/target.csv'
DELIMITER ','
CSV HEADER;
바인딩이 아니라 카피로 해도 문제 없을듯.