본문 바로가기

Docker

[Docker] Docker PostgreSQL 설치 및 실행

반응형

환경

mac - monterey 12.0.1

postgres - 14.1

spring boot - 2.5.2

docker - 20.10.10

 

PostgreSQL Image 설치 및 실행

먼저 DockerHub 에서 Postgres 버전을 확인해 주고 아래 명령어를 실행해 주면 Postgres Container 를 실행 (없다면 설치까지) 할 수 있다.

docker run -it --rm --name postgres-test -e POSTGRES_PASSWORD=password -p 5432:5432 -d postgres
  • 명령어 설명 (Docker 명령어)
    • -it : 컨테이너가 실행 후 터미널 명령어를 입력하기 위해 사용 (-i 와 -t 옵션을 같이 사용하는 것)
    • --rm : postgres 프로세스가 종료되면 container도 같이 종료
    • --name postgres-test : postgres container 의 이름을 postgres-test 로 지정하여 실행
    • -e POSTGRES_PASSWORD=password : postgres의 환경변수로 외부에서 접속할 때 필요한 비밀번호를 설정해줘야함
    • -p 5432:5432 : 호스트와 container 의 5432번 포트를 포트포워딩
    • -d : container를 백그라운드에서 실행
    • postgres : postgres image 를 실행, [:tag] 를 입력하지 않으면 :latest 버전으로 실행된다.

 

docker: Error response from daemon: driver failed programming external connectivity on endpoint angry_lamport (fc753990860795dc21dc196c2cc2f144c1189198a4c337bfeb5f8a2736556f2e): Bind for 0.0.0.0:5432 failed: port is already allocated.

* 만약 기존에 5432포트(또는 본인이 지정한 host포트)가 사용중이라면 위와 같은 에러 메세지가 나게되니 다른 포트를 사용하거나 해당 포트를 사용하는 프로세스를 종료하고 다시 실행해주면 된다.

 

docker container ls

설치가 되면 위 명령어를 통해 container 가 실행된 것을 확인할 수 있다.

postgres container가 실행되고 있다

또는 실행된 로그를 확인하고 싶다면 아래의 명령어를 통해 확인할 수 있다.

docker logs [container id or name]

postgres Container의 실행에 있어 필요로 했던 로그들

 

Postgres Container 터미널에 접속

$docker exec -it postgres-test bash

마지막에 bash 명령어의 입력으로  container shell에 접속이 된다.

계정은 'root' 호스트이름은 container의 id로 설정되어있다.

container의 shell 에서 postgres 접속

그리고 psql 명령어로 postgres에 접속 및 데이터베이스 생성 등 작업이 가능하다.

inteliJ Ide를 통해 database 연결 확인

IntelliJ IDE를 통해 테스트 연결까지 확인이 되었다.

 

* Container 를 삭제하게되면 Container 내부에 있는 데이터(postgres 계정, 테이블, 디비 등)도 모두 삭제되므로 유지되어야 할 데이터는 Container 내부가 아닌 외부에 저장하도록 해야한다.

반응형