Docker 쉬운 구축 데이터베이스 (PostgreSQL)

TL;DR



Docker로 손쉽게 PostgreSQL을 만들어 버리자는 기사이다.
연수 기사를 위해 툴 등등 결정 치고 하고 있지만, 그 근처는 돈마이인 것이다.

먼저 다운로드를 시작하자.



이번 SQL 클라이언트는 DBeaver를 사용한다. 굳이 최신판을 잡아주면 된다.
htps : // d 베아 ょ r. 이오/

다운로드중에 얼른 DB를 시작해 버린다.

Docker Desktop for Windows



이것이 없으면 이야기가 안된다. 우선은 설치해 버리자.
htps : // / cs. 도 c r. jp / 도 c 케 r 푸 r ぃ んど ws / ん s た. HTML

PowerShell에서 docker ps를 두드려 다음과 같이 나오면 준비는 완료된다.
> docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED        STATUS        PORTS                    NAMES

자, PostgreSQL을 시작하자.



연수이므로 정중하게 이미지를 찾는 방법에서.
이하 >의 뒤가 커맨드이다.
> docker search postgres
NAME                                    DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
postgres                                The PostgreSQL object-relational database sy…   8763      [OK]

검색하면 바삭바삭하게 발견되었다. 기본적으로는 OFFICIAL(공식)의 이미지를 찍는 것이 베터다.

여기서 다음 명령입니다.
docker run -d --rm --name db -p 5555:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres

이미지를 다운로드하여 시작합니다.
커맨드의 설명은 후술한다. docker ps 로 컨테이너가 기동하고 있으면 완료이다.
> docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                    NAMES
9676081a5f72   postgres   "docker-entrypoint.s…"   46 seconds ago   Up 46 seconds   0.0.0.0:5555->5432/tcp   db

DBeaver를 다운로드 할 수 있었습니까?



설치하고 시작해 보자.



포트 5555에서.


연결할 수 있었습니까?
테이블이나 컬럼을 만들어 보자.


이번에는 다음과 같이 '테스트 테이블'이라는 것을 만들어 보았다.


psql로 연결해보기


docker exec -it db bash 에서 컨테이너에 연결.
> docker exec -it db bash
root@9676081a5f72:/#
root@9676081a5f72:/# psql -U postgres
psql (13.0 (Debian 13.0-1.pgdg100+1))
Type "help" for help.

postgres=# \db
       List of tablespaces
    Name    |  Owner   | Location
------------+----------+----------
 pg_default | postgres |
 pg_global  | postgres |
(2 rows)

postgres=# \dt
             List of relations
 Schema |      Name      | Type  |  Owner
--------+----------------+-------+----------
 public | テストテーブル | table | postgres
(1 row)

postgres=#

제대로 됐네요. \q 에서 빠져 나와 exit 로 컨테이너에서 탈출하자.

이 컨테이너는 끝나면 사라지고 데이터도 지속되지 않습니다.


> docker ps --all
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS                        PORTS                    NAMES
9676081a5f72   postgres          "docker-entrypoint.s…"   20 minutes ago   Up 20 minutes                 0.0.0.0:5555->5432/tcp   db

지금은 이렇게 존재하고 있지만, 이 컨테이너를 멈추자.docker stop db 이다.

제대로 사라졌습니까?
> docker ps --all
CONTAINER ID   IMAGE             COMMAND                  CREATED        STATUS                        PORTS                    NAMES

이번 Docker 명령 설명



이 한 줄로 바삭하게 DB가 기동해 버렸다. 진짜 Docker 씨 신인가?
docker run -d --rm --name db -p 5555:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres



개요
비고


실행
시작
htps : // / cs. 도 c r. jp/엔기네/레후에렌세/룬. HTML

-d
분리
요컨대 배경

--rm
컨테이너 종료시 컨테이너 삭제
필수가 아닌 docker rm db에서 직접 지울 수 있습니다.

--name db
컨테이너 이름
이번에는 db로 했다. 선택

-p 5555:5432
포트 포워딩
컨테이너 5432를 호스트 5555로

-e POSTGRES_HOST_AUTH_METHOD=trust
비밀번호 없음
비밀번호를 붙이려면 -e POSTGRES_PASSWORD=password를 사용합시다.

postgres
이미지 이름
search에서 조사한 놈


덤 (docker-compose 및 영속화)



docker-compose 폴더 구성 및 Dockerfile 및 docker-compose.yml 샘플.
이 샘플에서는 호스트 5434에서 반응해야합니다.
서비스에 앱을 추가하고 db-net을 통해 앱에서 DB에 바로 연결합니다.
init.sql에 DB라든지 테이블이라든가 만드는 SQL을 넣어 둔다는 이미지.
상당히 전에 만든 것이니까 낡거나 이케하지 않는 쓰는 방법이라도 있어도 용서해.
./
- docker-compose.yml
+ database/
  - Dockerfile
+ postgres-init/
  - init.sql
+ postgres/
FROM postgres:9.6.16

RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
ENV LANG ja_JP.utf8

docker-compose.yml
version: "3.5"

services:
  db:
    build:
      context: database
    volumes:
      - ./postgres:/var/lib/postgresql
      - ./postgres-init:/docker-entrypoint-initdb.d
    expose:
      - '5432'
    ports: 
      - "5434:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
    restart: 'always'
    networks:
      - db-net

networks:
  db-net:
    driver: bridge

좋은 웹페이지 즐겨찾기