1. Docker 설치
Docker 설치가 안 되어 있다면, Docker는 공식 웹사이트를 참고하여 설치
2. PostgreSQL 이미지 가져오기
Docker 이미지: 컨테이너를 생성하기 위한 설계도
Docker Hub: 다양한 이미지를 제공하는 공식 저장소
Docker Hub에서 공식 PostgreSQL 이미지를 가져오기
3. Docker 컨테이너 생성
Docker 컨테이너: Docker 이미지를 기반으로 실행되는 가상화된 환경
두가지 방법이 있다
- PostgreSQL 이미지에서 바로 생성
- Dockerfile을 통해서 생성
3.1. PostgreSQL 이미지에서 바로 생성
1
| docker run --name postgres_db -e POSTGRES_PASSWORD=mysecretpassword -d postgres
|
3.2. Dockerfile을 통해서 생성
Dockerfile 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
| # Use the official PostgreSQL image from Docker Hub
FROM postgres:latest
# Set environment variables
ENV POSTGRES_USER=myuser
ENV POSTGRES_PASSWORD=mypassword
ENV POSTGRES_DB=mydatabase
# Copy initialization scripts to be executed when container starts
COPY init.sql /docker-entrypoint-initdb.d/
# Expose PostgreSQL port
EXPOSE 5432
|
init.sql 생성
1
2
3
4
5
| CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);
|
Docker 이미지 빌드
1
| docker build -t my-postgres-image .
|
Docker 컨테이너 실행
1
| docker run --name postgres_db -d -p 5432:5432 my-postgres-image
|
4. 컨테이너 상태 확인
5. 컨테이너 내부에 들어가기
PostgreSQL 이미지에서 바로 생성했을 경우
1
| docker exec -it postgres_db psql -U postgres
|
Dockerfile을 통해서 생성
1
| docker exec -it postgres_db psql -U myuser mydatabase
|
6. PostgreSQL 사용
PostgreSQL 이미지에서 바로 생성했을 경우
1
2
3
4
5
6
7
| CREATE DATABASE mydatabase;
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);
|
데이터 입력
1
2
3
4
| INSERT INTO users (username, email) VALUES
('user1', 'user1@example.com'),
('user2', 'user2@example.com'),
('user3', 'user3@example.com');
|
7. 컨테이너 중지 및 삭제
컨테이너 중지
1
| docker stop postgres_db
|
컨테이너 삭제