웹개발일지

[1-2] Postgres & Docker 포스그레 설치 후 도커 실행까지 본문

데이터베이스

[1-2] Postgres & Docker 포스그레 설치 후 도커 실행까지

hee_log 2023. 1. 6. 21:19
728x90

 이 글은 유데미 강좌를 들으며 아래 공식 문서를 따라 실습한 내용입니다. 

 

 

https://hub.docker.com/_/postgres

 

postgres - Official Image | Docker Hub

Note: the description for this image is longer than the Hub length limit of 25000, so has been trimmed. The full description can be found at https://github.com/docker-library/docs/tree/master/postgres/README.md. See docker/hub-beta-feedback#238 for more in

hub.docker.com

 

1. 도커 컨테이너에서 postgres 이미지를 받기위해 다음 명령을 수행한다. 

docker pull postgres:<image tag>

 도커가 포스그레 이미지를 다운받는 명령이다. 여기서 포스그레가 이미지가 되고 이미지태그는 포스그레 버전을 뜻한다. 콜론은 구분을 위함이다. 공식 문서를 참고하여 원하는 버전을 다운로드한다. 여기서는 12-alpine 을 사용했다. 

docker pull postgres:12-alpine

 

 

설치 후 images라는 커맨드를 주면 설치된 이미지 현황을 볼 수 있다. 

docker images

 

 

도커 컨테이너 실행하기 

 

도커로 컨테이너를 실행하여 포스그래 db를 연다. 위 명령어로 할 수 있는 건 다음과 같다.

1. user와 password 설정을 한다.

2. 인자로 image name 을 넣어준다.  -> Postgres

 

 

 e- 컨테이너의 환경변수 설정 -> 컨테이너를 커스텀할 수 있다. 

e -flag

d- 컨테이너를 백그라운드에서 실행하겠다. (detach mode)

d -flag

컨테이너가 실행되면 기본 데이터베이스가 생성된다. postgres_user 가 기본값이다 

 

db 실행 

docker run --name postgres12 -p 5432:5432 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=secret -d postgres:12-alpine

 

중요한개념, 포트매핑 

 바로 위 코드를 보면 -pe뒤에 5432:5432로 포트지정을 해준것을 볼 수 있다. 

 

다만 처음 run할 때 포트지정을 안하고 실행한 걸 되돌리고 다시하고 싶었다. 이런경우 컨테이너 실행을 중단후 삭제 해주어야한다. 

 

1. 중단 

docker stop fc4d33cf0a46

2. 삭제

docker rm fc4d33cf0a46

명령어 뒤 container id는 docker ps 명령시 조회 가능하다. 내가 생성한 시간이 얼마나 지났는지까지 조회되므로 최근 생성한 컨테이너를 찾아 바로 삭제할 수 있었다. 

 

 

 지난 코멘토 실습으로 maridb를 연결해보고 이번엔 postgres를 연결하는 작업을 수행해보니 도커의 개념이 확실히 더 와닿는다. 별도의 가상 운영체제에서 db를 실행하는 것을 수행했다. 아직까지 조금어려운 개념은 포트지정인 것 같다. 위에서 5432포트를 지정해줬는데 이미 있다는 오류가 나서 해결해봐야 할 것 같다. 

 

 위 문제를 해결하려고 5432포트에 이미 존재한다는 컨테이너를 삭제하고 실행하는 것을 반복했으나 같은 오류가 계속 떴다. 아직 도커에 대해 잘 모르는 부분이라 해당 포트를 5432가 아닌 5430으로 바꿔주고 진행했다. 5430:5432 이렇게 있으면 5430이 내 host에서 사용중인 Port이고 5432가 컨테이너 안에서 실행될 port이다.