PostgreSQL Docker 설정
업데이트: Link
PostgreSQL Docker 설정
docker를 이용해 postgresql 서버를 새로 설치하고 사용하기 위한 간편 설정을 정리했다.
이 문서는 docker가 설치되어 있다는 가정 하에 진행한다. 설치되어 있지 않다면 먼저 설치를 하고 문서를 보고 따라하길 바란다.
설치 및 환경 설정
데이터베이스 postgresql
을 docker
를 이용해 독립적으로 설치하고 관리할 수 있다.
Dockerfile 생성
우선 첫째로, docker image 를 만들 Dockerfile
준비한다. 필요한 zsh
, locales
, tzdata
등을 설치하고, 대략 locale 설정이나 timezone 설정까지만 해놓으면 된다.
추가로 기분좋은 접속을해위해 zsh, powerlevel10k theme 까지 설치한다.
FROM postgres:15.1
RUN apt-get update
RUN apt-get install -y \
apt-utils \
wget \
zsh \
curl \
locales \
tzdata
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.1.5/zsh-in-docker.sh)"
# LOCALE 설정
RUN localedef -i ko_KR -c -f UTF-8 -A /usr/share/locale/locale.alias ko_KR.UTF-8
ENV LANG ko_KR.utf8
# localtime 에 링크할 시간대를 링크.
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
# 원하는 시간대 링크후 아래 수행시, /etc/timezone 파일변경됨.
RUN dpkg-reconfigure -f noninteractive tzdata
도커 이미지 빌드 및 실행
docker 이미지를 빌드한다.
docker build -t postgres15 .
docker run 스크립트를 하나 만든다. 이름은 postgres-15 으로하고, 타 컨테이너와 연계를 위해 network 설정을 해놓았다.
postgres 패스워드와 데이터 파일 연결등을 설정해 준다.
# docker-run.sh - sh 실행파일
docker run -d \
--name postgres-15 \
--network your-netword \
--restart=always \
-p 5432:5432 \
-e POSTGRES_PASSWORD=your_password \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v ~/postgres-15/data:/var/lib/postgresql/data \
postgres15
rem docker-run.bat - 윈도우즈 실행파일
docker run -d --name postgres-15 --network your-netword --restart=always -p 5432:5432 -e POSTGRES_PASSWORD=your_password -e PGDATA=/var/lib/postgresql/data/pgdata -v ~/postgres-15/data:/var/lib/postgresql/data postgres15
⚠️ 참고 혹시 네트워크 오류 아래 오류가 나타난다면 네트워크가 생성되어 있지 않다는 이야기다.
docker: Error response from daemon: network mqv-net not found.
실행한 도커를 중단 및 삭제하고 네트워크를 생성 후 다시 실행해야 한다. 중단 삭제 하기 위해서는 아래 명령이 필요하다.
# 도커 실행중단
docker stop postgres-15
# 네트워크 조회
docker network ls
# 네트워크 생성
network create your-netword
# 도커 컨테이너 삭제
docker rm postgres-15
실행 확인 및 database, user 생성
서버를 구동했으니, 서버에 접속하는 스크립트도 실행해서 접속해본다.
docker exec -it --user root -w /var/lib/postgresql postgres-15 zsh
docker exec 로 접속한 쉘에서 db_user
사용자를 만들고 해당 사용자를 owner로 하는 your_database
이름의 데이터베이스를 하나 만든다.
psql -U postgres
create user db_user with password 'db_pass';
create DATABASE your_database OWNER db_user;
\l
\q
물론 psql 로 커멘드창에서 붙어도 되긴하지만, DBeaver와 같은 프로그램으로 아래의 정로를 통해 접속을 시도해본다.
database: your_database
username: db_user
password: db_pass
댓글남기기