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
끝..! 이제 그만 구글링하고 싶다.
[같이 보면 좋은 자료]
'개발 관련됨 > 개발 관련 유용한 정보함' 카테고리의 다른 글
gradle 기반의 여러 모듈에서 공통으로 쓰인 스크립트가 있다면? (0) | 2022.02.06 |
---|---|
MAC OS 에서 Icon 이 Bouncing 하지 않도록 하는 방법 (0) | 2021.09.26 |
[Inteliij] 대문자 - 소문자 변환 단축키 (0) | 2021.06.03 |
[intellij] 동일한 단어를 Multi-line 으로 블록하는 방법 (0) | 2021.02.05 |
IntelliJ 에서 정규표현식으로 글자 교체하기 (0) | 2021.01.28 |
댓글