기본적인 Docker & Docker-Compoes 설치 생략
Docker Compose 기본 설정
version: '3.8'
services:
postgres:
image: postgres:15
container_name: postgres
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- "5432:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
pgadmin:
image: dpage/pgadmin4
container_name: pgadmin
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: jhkim@docker.co.kr
PGADMIN_DEFAULT_PASSWORD: 123456
ports:
- "5431:80"
volumes:
postgres-data:
docker-compose.yml 파일을 사용하면 여러 서비스를 정의할 수 있습니다.
여기서는 postgres와 pgadmin 두 가지 서비스를 설정합니다.
1. PostgreSQL 서비스
먼저 postgres 서비스는 PostgreSQL 데이터베이스를 설정합니다. 주요 설정 사항은 다음과 같습니다:
- 이미지: postgres:15 이미지를 사용합니다. 이는 PostgreSQL 15 버전의 공식 Docker 이미지입니다.
- 컨테이너 이름: postgres로 설정하여 컨테이너 이름을 명확히 지정합니다.
- 환경 변수: POSTGRES_USER와 POSTGRES_PASSWORD를 설정하여 데이터베이스의 기본 사용자와 비밀번호를 지정합니다.
- 포트: 5432:5432로 설정하여 로컬에서 PostgreSQL에 접근할 수 있게 합니다. 기본적으로 PostgreSQL은 5432 포트를 사용합니다.
- 볼륨: postgres-data라는 볼륨을 마운트하여 데이터베이스의 데이터를 컨테이너 외부에 저장합니다. 이 볼륨은 Docker Compose의 volumes 항목에서 정의됩니다.
2. pgAdmin 서비스
pgAdmin은 PostgreSQL 데이터베이스를 관리할 수 있는 웹 기반 도구입니다. 이 서비스는 다음과 같이 설정됩니다:
- 이미지: dpage/pgadmin4 이미지를 사용하여 pgAdmin을 실행합니다.
- 컨테이너 이름: pgadmin으로 설정합니다.
- 환경 변수: PGADMIN_DEFAULT_EMAIL과 PGADMIN_DEFAULT_PASSWORD를 설정하여 pgAdmin의 기본 로그인 정보를 지정합니다.
- 포트: 5431:80으로 설정하여 로컬에서 pgAdmin 웹 UI에 접근할 수 있도록 합니다. 포트 80은 pgAdmin이 기본적으로 사용하는 포트이며, 로컬에서는 5431로 접근할 수 있습니다.
3. Docker Volumes
- postgres-data: PostgreSQL 데이터베이스의 데이터를 외부에서 지속적으로 저장하기 위해 볼륨을 사용합니다. 이 볼륨은 컨테이너를 재시작하거나 삭제해도 데이터가 유지됩니다.
실행 방법
- 위의 docker-compose.yml 파일을 작성합니다.
- 터미널에서 docker-compose up 명령을 실행하여 PostgreSQL과 pgAdmin 서비스를 시작합니다.
- pgAdmin은 localhost:5431에서 웹 브라우저를 통해 접근할 수 있습니다.
- pgAdmin에 로그인한 후, PostgreSQL 데이터베이스에 연결하고 SQL 쿼리 등을 실행할 수 있습니다.
멀쩡히 생성 되어 데이터베이스 서버까지 잘 만들어지는 모습
- Host name / address : 컨테이너 이름
- Port : 컨테이너 포트
- 데이터베이스 이름
- Username : compose에 작성한 내용
- Password : compose에 작성한 내용