본문 바로가기
개발 관련됨/개발 관련 유용한 정보함

docker 에 올라온 postgres 에 접속해, Database 확인하는 방법

by simplify-len 2021. 7. 9.

png.vector.me/files/images/2/8/284731/postgresq...

InteliiJ 의 편리함에 속아, 실제 DB 작업할 때는 어버버한 저를 위해 남깁니다.

먼저, 작성하기 전에 데이터베이스의 목적은 영속성입니다. 그러나 Docker는 쉽게 지우고 설치할 수 있습니다. DB의 영속성과 Docker? 사실 말이 안맞긴 합니다만... 😳 우리는 개발환경을 빨리 세팅하고 싶으니까...ㅎㅎ

참조문서 - https://hub.docker.com/_/postgres

아래 명령어를 실행했다고 가정하겠습니다.

docker run --rm --name mypg -d \
-v ${PWD}/app/src/main/resources:/docker-entrypoint-initdb.d \
-p 5432:5432 \
-e POSTGRES_PASSWORD="password" \
-e POSTGRES_USER="masil" \
-e POSTGRES_DB="playthegames"  \
postgres

먼저 Docker 를 통해 우리의 docker deamon을 확인해봅시다.

CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                                    NAMES
1adb90ce9e85   postgres    "docker-entrypoint.s…"   7 seconds ago   Up 5 seconds   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp                mypg

그 다음 무엇을 해야될까?

mypg 로 띄운 컨테이너에 접근해야겠죠? 어떻게 접근해야되나...?

docker exec -it <containerId> /bin/sh 이렇게 작성하면 안된다.

docker exec -it <containerId> /bash 로 접근해야 한다.

이 둘의 차이는 개인적으로 리눅스를 진득하게 공부한 컴공과가 아니기 때문에 정확히 잘 모른다.

그러나, "/bin/sh" 을 리눅스에 치면

$ ls -al /bin/sh
lrwxrwxrwx 1 root root 4 Apr 30 23:16 /bin/sh -> dash

dash 라는 쉘에 링크가 걸려있다. 아마 dash 라는 도구가 있는듯하다?

이번에는 bash 를 쳐보면

$ ls -al /bin/bash
-rwxr-xr-x 1 root root 1183448 Jun 18  2020 /bin/bash

알아보니, dash가 우분투 6.06 버전부터 bash 에서 dash로 변경된 것이다. 근데 왜 docker 로 뛰울때 /bin/sh 은 안되고, /bash 는 되던것일까?

아 글을 하다보니, 뭐가 되고, 뭐가 안되는지에 대한 설명이 빠졌네요🙇‍♂️

간단합니다. 우리의 목적은 postrgres 의 내부를 보고싶은 것. 즉 psql 실행어가 동작되지 않았다 라는 말을 하고 싶었습니다.

네, 좋아요. 잠시 딴길로 빠졌지만 다시 우리의 목표였던 docker에 있는 postgrea에 접속해 DB 확인 진행해봅시다.

이제 bash 에 들어왔고, 예상으로 때려 맞쳐 psql 에 접속하는 방법으로, psql -U root 를 쳐보자. (타 DB 가 이렇게 접속한다)

root@0b4e4cb57ef3:/# psql -U root
psql: error: FATAL:  role "root" does not exist

뭔가 되는것 처럼 보이지만, role 즉, 사용자가 없다. 왜냐하면... 생성할 때 masil 로 생성했기 때문이다. 그리고 DB도 같이 설정해주자.

root@0b4e4cb57ef3:/# psql -d playthegames -U masil
psql (13.3 (Debian 13.3-1.pgdg100+1))

성공이다!!

그 다음

show databases

아니다.. \d 이렇게 하면 된다.

playthegames-# \d
                      List of relations
 Schema |              Name               |   Type   | Owner
--------+---------------------------------+----------+-------
 public | baseball_playing_context        | table    | masil
 public | baseball_playing_context_id_seq | sequence | masil
 public | events                          | table    | masil
 public | events_id_seq                   | sequence | masil
 public | high_low_playing_context        | table    | masil
 public | high_low_playing_context_id_seq | sequence | masil
 public | ranking                         | table    | masil
 public | ranking_id_seq                  | sequence | masil
 public | ranking_item                    | table    | masil

끝..! 이제 그만 구글링하고 싶다.

 

[같이 보면 좋은 자료]

https://storycompiler.tistory.com/101

댓글