로컬 호스트에서 Docker의 PostgreSQL 연결
전제 조건
설치하지 않은 경우 이미 다음 링크를 확인하세요.
다음을 통해 확인할 수 있습니다.
$ docker -v
Docker version 19.03.13, build 4484c46d9d
$ docker-compose -v
docker-compose version 1.23.2, build 1110ad01
컨테이너 빌드
아래 명령을 실행하여 PostgreSQL 컨테이너를 생성합니다.
$ docker run -d -p 5432:5432 --name localpostgres -e POSTGRES_PASSWORD=secretpassword postgres:11.6
이 명령은 Docker Postgre Hub 에서 Postgres 11.6을 다운로드합니다.
자세히 살펴보면 다음과 같습니다.
-d
: 분리 모드에서 실행을 의미합니다. --name
: 컨테이너에 이름을 부여합니다 : localpostgres, -e
: 환경 변수; postgres:11.6
: 컨테이너를 생성하는 기본 이미지입니다INFO
I use PostgreSQL version 11.6 since I have it already but you can use whatever version you want.
Also if you leave tag blank docker will fetch the latest version.
However I definitely don't recommend that since it may break your software stack.
컨테이너에 들어가기
컨테이너를 만든 후 호스트에서 액세스할 수 있습니다.
$ docker exec -it localpostgres bash
root@6542951f176a:/# psql -U postgres
psql (11.6 (Debian 11.6-1.pgdg90+1))
Type "help" for help.
postgres=#
컨테이너 사용
데이터베이스 생성
PostgreSQL 컨테이너 내부에 데이터베이스를 생성합니다.
root@cb9222b1f718:/# psql -U postgres
psql (11.6 (Debian 11.6-1.pgdg90+1))
Type "help" for help.
postgres=# CREATE DATABASE testdb;
CREATE DATABASE
postgres=#
테이블 생성
testdb 내부에 예제 테이블을 생성해 보겠습니다.
postgres=# CREATE TABLE accounts (
user_id serial PRIMARY KEY,
username VARCHAR ( 50 ) UNIQUE NOT NULL,
password VARCHAR ( 50 ) NOT NULL,
email VARCHAR ( 255 ) UNIQUE NOT NULL,
created_on TIMESTAMP NOT NULL,
last_login TIMESTAMP
);
CREATE TABLE
테이블/관계 확인
테이블을 확인하려면:
postgres=# \dt
List of relations
Schema | Name | Type | Owner
--------+----------+-------+----------
public | accounts | table | postgres
(1 row)
postgres=#
Docker Compose 사용
원시 docker 명령 대신 docker compose를 사용하여 PostgreSQL 데이터베이스를 만들고 액세스할 수 있습니다.
아래 코드를 사용하여
docker-compose.yml
라는 파일을 만듭니다.version: '3.5'
volumes:
local_postgres_data: {}
services:
postgres:
build: ./
image: postgres:11.6
container_name: localpostgres
environment:
POSTGRES_DB: ${POSTGRES_DB:-testdb}
POSTGRES_USER: ${POSTGRES_USER:-debug}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-debug}
POSTGRES_PORT: ${POSTGRES_PORT:-5432}
POSTGRES_HOST: ${POSTGRES_HOST:-postgres}
volumes:
- local_postgres_data:/var/lib/postgresql/data
ports:
- "127.0.0.1:5432:5432"
컨테이너 회전:
$ docker-compose up -d
Creating localpostgres ... done
이 명령은 서비스의 컨테이너를 빌드, (재)생성, 시작 및 연결합니다.
이제 데이터베이스 -
testdb
를 사용자 - debug
와 직접 연결할 수 있습니다.$ docker exec it localpostgres psql -U debug -d testdb
psql (11.6 (Debian 11.6-1.pgdg90+1))
Type "help" for help.
testdb=#
모두 완료되었습니다!
Reference
이 문제에 관하여(로컬 호스트에서 Docker의 PostgreSQL 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/serhatteker/connect-postgresql-in-docker-from-your-local-host-4epk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)