개발노트/Linux

#3. Rocky Linux 9 - Docker에 PostgreSQL 설치 및 설정 방법

안엘파파 2025. 2. 7. 15:44
반응형

📌 1. PostgreSQL 컨테이너 실행

🔹 1-1. PostgreSQL 최신 버전의 Docker 이미지 다운로드

docker pull postgres:latest

버전 지정 가능

  • 특정 버전 예:
    docker pull postgres:14

🔹 1-2. PostgreSQL 컨테이너 실행

docker run -d \
  --name my-postgres \
  -e POSTGRES_USER=admin \
  -e POSTGRES_PASSWORD=admin123 \
  -e POSTGRES_DB=mydatabase \
  -p 5432:5432 \
  -v postgres_data:/var/lib/postgresql/data \
  postgres:latest

설명

  • -d : 백그라운드 실행
  • --name my-postgres : 컨테이너 이름
  • -e POSTGRES_USER=admin : DB 사용자 계정
  • -e POSTGRES_PASSWORD=admin123 : 사용자 비밀번호
  • -e POSTGRES_DB=mydatabase : 기본 생성할 데이터베이스
  • -p 5432:5432 : 로컬 포트 5432 → 컨테이너 포트 5432
  • -v postgres_data:/var/lib/postgresql/data : 데이터를 영구 보관

📌 2. PostgreSQL 컨테이너 설정 및 접속

🔹 2-1. 컨테이너 목록 확인

docker ps

✅ 실행 중인 컨테이너 확인

🔹 2-2. 컨테이너 내부로 접속

docker exec -it my-postgres psql -U admin -d mydatabase

✅ PostgreSQL 프롬프트 (psql) 실행됨


📌 3. PostgreSQL 기본 설정

🔹 3-1. 데이터베이스 목록 확인

\l

🔹 3-2. 새로운 사용자 및 데이터베이스 생성

CREATE USER myuser WITH PASSWORD 'mypassword';
CREATE DATABASE mydb OWNER myuser;
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

🔹 3-3. 테이블 생성 및 데이터 삽입

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100) UNIQUE
);

INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
SELECT * FROM users;

🔹 3-4. psql 종료

\q

📌 4. PostgreSQL 컨테이너 자동 실행 설정

PostgreSQL 컨테이너를 서버 재부팅 후에도 자동 실행되도록 설정

docker update --restart always my-postgres

📌 5. PostgreSQL 컨테이너 상태 및 로그 확인

🔹 5-1. 컨테이너 상태 확인

docker ps -a

my-postgres 컨테이너가 실행 중인지 확인

🔹 5-2. 컨테이너 로그 확인

docker logs my-postgres

📌 6. PostgreSQL 컨테이너 중지 및 삭제

🔹 6-1. 컨테이너 중지

docker stop my-postgres

🔹 6-2. 컨테이너 삭제

docker rm my-postgres

🔹 6-3. Docker 볼륨 삭제 (데이터까지 삭제됨)

docker volume rm postgres_data

📌 📌 최종 정리

작업 명령어
PostgreSQL 이미지 다운로드 docker pull postgres:latest
PostgreSQL 컨테이너 실행 docker run -d --name my-postgres -e POSTGRES_USER=admin -e POSTGRES_PASSWORD=admin123 -e POSTGRES_DB=mydatabase -p 5432:5432 -v postgres_data:/var/lib/postgresql/data postgres:latest
PostgreSQL 컨테이너 접속 docker exec -it my-postgres psql -U admin -d mydatabase
DB 사용자 생성 CREATE USER myuser WITH PASSWORD 'mypassword';
DB 자동 실행 설정 docker update --restart always my-postgres
컨테이너 중지 및 삭제 docker stop my-postgres && docker rm my-postgres
반응형