Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 481. docker - PostgreSQL 컨테이너 실행 [링크 복사], [링크+제목 복사]
조회: 1083
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

docker - PostgreSQL 컨테이너 실행

PostgreSQL도 공식 이미지가 있군요. ^^

postgres - Docker Official Images
; https://hub.docker.com/_/postgres

c:\temp> docker pull postgres
c:\temp> docker run --name postgres1 -p 5432:5432 -e POSTGRES_PASSWORD=test_1234 -d postgres

마찬가지로 데이터베이스 변경에 대한 유지를 위해 볼륨 매핑을 추가할 수 있고,

c:\temp> docker run --name postgres1 -p 5432:5432 -v postgresql:/var/lib/postgresql/data -e POSTGRES_PASSWORD=test_1234 -d postgres

DB 성격상 매번 자동으로 올라오게 설정할 것입니다.

c:\temp> docker run --name postgres1 -p 5432:5432 -v postgresql:/var/lib/postgresql/data --restart=always -e POSTGRES_PASSWORD=test_1234 -d postgres

"DockerDesktopVM의 파일 시스템 접근"에 따라 매핑된 볼륨은 다음과 같이 _data가 구성됩니다.

/ # ls host/var/lib/docker/volumes/postgresql/_data
PG_VERSION            pg_dynshmem           pg_multixact          pg_snapshots          pg_tblspc             postgresql.auto.conf
base                  pg_hba.conf           pg_notify             pg_stat               pg_twophase           postgresql.conf
global                pg_ident.conf         pg_replslot           pg_stat_tmp           pg_wal                postmaster.opts
pg_commit_ts          pg_logical            pg_serial             pg_subtrans           pg_xact               postmaster.pid




이후 구성은 닷넷에서 접근해보는 PostgreSQL 글과 같이 GUI 도구를 이용하거나,

pgAdmin 4 - Download
; https://www.pgadmin.org/download/

컨테이너 내부로 들어가 SQL 쿼리 실행을 위한 psql 명령행 프로그램을 찾아,

c:\temp> docker exec -it postgres1 /bin/bash

/# find / -name psql
/usr/lib/postgresql/12/bin/psql
/usr/bin/psql
...[생략]...

실행할 수도 있습니다.

/# /usr/bin/psql --username=postgres
psql (12.2 (Debian 12.2-2.pgdg100+1))
Type "help" for help.

postgres=# \list
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(3 rows)

postgres=# \connect postgres
You are now connected to database "postgres" as user "postgres".

postgres=# \dt
Did not find any relations.

postgres=# SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name;
 table_name
------------
(0 rows)




참고로, PostgreSQL 컨테이너의 초기화는 기본적으로 postgres 사용자로 생성하므로 root가 없어 그냥 실행하면 다음과 같은 오류가 발생합니다.

# /usr/bin/psql
psql: error: could not connect to server: FATAL:  role "root" does not exist

그리고 아래는 정상적으로 실행된 경우의 로그 출력입니다.

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Etc/UTC
creating configuration files ... ok
running bootstrap script ... okperforming post-bootstrap initialization ... ok
syncing data to disk ... initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
ok


Success. You can now start the database server using:

    pg_ctl -D /var/lib/postgresql/data -l logfile start

waiting for server to start....2020-03-10 00:01:30.405 UTC [46] LOG:  starting PostgreSQL 12.2 (Debian 12.2-2.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2020-03-10 00:01:30.472 UTC [46] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2020-03-10 00:01:30.788 UTC [47] LOG:  database system was shut down at 2020-03-10 00:01:29 UTC
2020-03-10 00:01:30.847 UTC [46] LOG:  database system is ready to accept connections
 done
server started

/usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*

2020-03-10 00:01:30.942 UTC [46] LOG:  received fast shutdown request
waiting for server to shut down....2020-03-10 00:01:30.995 UTC [46] LOG:  aborting any active transactions
2020-03-10 00:01:30.998 UTC [46] LOG:  background worker "logical replication launcher" (PID 53) exited with exit code 1
2020-03-10 00:01:30.998 UTC [48] LOG:  shutting down
2020-03-10 00:01:31.451 UTC [46] LOG:  database system is shut down
 done
server stopped

PostgreSQL init process complete; ready for start up.

2020-03-10 00:01:31.605 UTC [1] LOG:  starting PostgreSQL 12.2 (Debian 12.2-2.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2020-03-10 00:01:31.605 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2020-03-10 00:01:31.606 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2020-03-10 00:01:31.747 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2020-03-10 00:01:31.907 UTC [55] LOG:  database system was shut down at 2020-03-10 00:01:31 UTC
2020-03-10 00:01:31.958 UTC [1] LOG:  database system is ready to accept connections




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]


donaricano-btn



[최초 등록일: ]
[최종 수정일: 3/10/2020 ]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 쓴 사람
 




1  2  3  4  5  6  7  8  9  [10]  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
12281정성태8/2/2020894개발 환경 구성: 500. (PDB 연결이 없는) DLL의 소스 코드 디버깅을 dotPeek 도구로 해결하는 방법
12280정성태8/2/2020795오류 유형: 634. 오라클 (평생) 무료 클라우드 VM 생성 후 SSH 접속 시 키 오류 발생
12279정성태7/29/2020550개발 환경 구성: 499. 닷넷에서 접근해보는 InterSystems의 Cache 데이터베이스파일 다운로드1
12278정성태8/2/2020497VS.NET IDE: 149. ("Binary was not built with debug information" 상태로) 소스 코드 디버깅이 안되는 경우
12277정성태8/2/2020800개발 환경 구성: 498. DEVPATH 환경 변수의 사용 예 - .NET Reflector의 (PDB 연결이 없는) DLL의 소스 코드 디버깅
12276정성태7/23/2020725.NET Framework: 930. 개발자를 위한 닷넷 어셈블리 바인딩 - DEVPATH 환경 변수
12275정성태7/28/2020711개발 환경 구성: 497. 닷넷에서 접근해보는 InterSystems의 IRIS Data Platform 데이터베이스파일 다운로드1
12274정성태7/21/2020742개발 환경 구성: 496. Azure - Blob Storage Account의 Location 이전 방법파일 다운로드1
12273정성태7/20/2020813개발 환경 구성: 495. Azure - Location이 다른 웹/DB 서버의 경우 발생하는 성능 하락
12272정성태7/16/2020509.NET Framework: 929. (StrongName의 버전 구분이 필요 없는) .NET Core 어셈블리 바인딩 규칙파일 다운로드1
12271정성태7/16/2020590.NET Framework: 928. .NET Framework의 Strong-named 어셈블리 바인딩 (2) - 런타임에 바인딩 리디렉션파일 다운로드1
12270정성태7/16/2020912오류 유형: 633. SSL_CTX_use_certificate_file - error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small
12269정성태7/16/2020508오류 유형: 632. .NET Core 웹 응용 프로그램 - The process was terminated due to an unhandled exception.
12268정성태7/15/2020578오류 유형: 631. .NET Core 웹 응용 프로그램 오류 - HTTP Error 500.35 - ANCM Multiple In-Process Applications in same Process
12267정성태7/15/2020807.NET Framework: 927. C# - 윈도우 프로그램에서 Credential Manager를 이용한 보안 정보 저장파일 다운로드1
12266정성태7/14/2020626오류 유형: 630. 사용자 계정을 지정해 CreateService API로 서비스를 등록한 경우 "Error 1069: The service did not start due to a logon failure." 오류발생
12265정성태12/17/2020512오류 유형: 629. Visual Studio - 웹 애플리케이션 실행 시 "Unable to connect to web server 'IIS Express'." 오류 발생
12264정성태7/9/2020638오류 유형: 628. docker: Error response from daemon: Conflict. The container name "..." is already in use by container "...".
12261정성태9/26/20201019VS.NET IDE: 148. 윈도우 10에서 .NET Core 응용 프로그램을 리눅스 환경에서 실행하는 2가지 방법 - docker, WSL 2 [5]
12260정성태7/8/2020619.NET Framework: 926. C# - ETW를 이용한 ThreadPool 스레드 감시파일 다운로드1
12259정성태7/8/2020528오류 유형: 627. nvlddmkm.sys의 BAD_POOL_HEADER BSOD 문제
12258정성태8/4/2020898기타: 77. DataDog APM 간략 소개
12257정성태7/7/2020501.NET Framework: 925. C# - ETW를 이용한 Monitor Enter/Exit 감시파일 다운로드1
12256정성태7/7/2020722.NET Framework: 924. C# - Reflection으로 변경할 수 없는 readonly 정적 필드 [4]
12255정성태7/6/2020606.NET Framework: 923. C# - ETW(Event Tracing for Windows)를 이용한 Finalizer 실행 감시파일 다운로드1
12254정성태7/2/2020543오류 유형: 626. git - REMOTE HOST IDENTIFICATION HAS CHANGED!
1  2  3  4  5  6  7  8  9  [10]  11  12  13  14  15  ...