1

ansible-container을 사용하여 PostgreSQL과 Citus 확장을 호스팅하는 두 개의 Docker 컨테이너를 빌드하고 실행하려고합니다. Citus가 컨테이너를 제공한다는 것을 알고 있지만, 나는 자체적으로 구조물을 만들고 싶습니다. 내가 시작하고 pg_ctlcluster를 통해 클러스터를 중지 할 수 있습니다 빌드 과정에서Dockerized PostgreSQL : psql : FATAL : 데이터베이스 시스템이 시작됩니다

version: '2' 

services: 

    database_master: 
    image: hackermd/ubuntu-trusty-python 
    user: postgres 
    expose: 
     - 5043 
    entrypoint: ['dumb-init', '--'] 
    command: ['/usr/bin/pg_ctlcluster', '9.6', 'master', 'start'] 
    links: 
     - database_worker 
    depends_on: 
     - database_worker 

    database_worker: 
    image: hackermd/ubuntu-trusty-python 
    user: postgres 
    expose: 
    - 9700 
    entrypoint: ['dumb-init', '--'] 
    command: ['/usr/bin/pg_ctlcluster', '9.6', 'worker', 'start'] 

를하고 성공적으로 완료 다음과 같이

container.yaml 보인다. 나는 이후에 용기를 실행할 때, 나는 다음과 같은 오류가 발생합니다 : 나는 command: []과 용기를 구축하고 컨테이너 내부 ps aux을 실행

$ docker logs ansible_database_master_1 
Removed stale pid file. 
Warning: connection to the database failed, disabling startup checks: 
psql: FATAL: the database system is starting up 

, 나는 다음과 같은 과정 참조 : 나는 '

postgres 14 1.6 0.1 307504 3480 ?  Ds 16:46 0:00 postgres: 9.6/master: startup process 

을 또한 dumb-init 진입 점없이 시도했습니다. 내가 뭘 놓치고 있니?

답변

3

이 문제는 모드의 기본 종료 방법 (pg_ctlpg_ctlcluster에 의해 호출 됨)과 관련이 있습니다.

pg_ctlcluster 9.6 master stop -- -m smart 

은 "스마트"방법은 기본 대조적으로 종료하기 전에 분리하는 활성 클라이언트와 완료 온라인 백업을 기다립니다 "빌드 과정에서 pg_ctl 옵션 -m smartpg_ctlcluster를 통해 클러스터를 중지하면이 문제를 해결합니다 빠른 "방법. 이 내용은 pg_ctl 설명서에 설명되어 있습니다.

또한, 컨테이너는 한 번 종료 것 pg_ctlcontrol 프로세스가 성공적으로 postgres (pg_ctlcontrol ->pg_ctl ->postgres)를 통해 데이터베이스 클러스터를 시작했다. 이를 방지하기 위해 postgres을 직접 호출 할 수 있습니다. container.yml 파일은 다음과 같이 표시됩니다.

version: '2' 

services: 

    database_master: 
    image: hackermd/ubuntu-trusty-python 
    user: postgres 
    expose: 
     - 5043 
    command: ['dumb-init', '/usr/lib/postgresql/9.6/bin/postgres', '-D', '/var/lib/postgresql/9.6/master'] 
    links: 
     - database_worker 
    depends_on: 
     - database_worker 

    database_worker: 
    image: hackermd/ubuntu-trusty-python 
    user: postgres 
    expose: 
     - 9700 
    command: ['dumb-init', '/usr/lib/postgresql/9.6/bin/postgres', '-D', '/var/lib/postgresql/9.6/worker'] 
+0

동일한 상황에서 동일한 오류가있었습니다. 내 Dockerfile에서 pg_ctlcluster를 사용하여 RUN간에 서비스를 깔끔하게 종료하면 문제가 해결됩니다. 감사 – Eldamir