1

ansible-containerを使用してPostgreSQLとCitus拡張をホストする2つのDockerコンテナを構築して実行しようとしています。私はCitusがコンテナを提供していることを知っていますが、私は自分のものを作りたいと思っています。Dockerized PostgreSQL:psql:FATAL:データベースシステムが起動しています

次のように私のcontainer.yamlが見えます:

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'] 

Iの開始と停止クラスタをpg_ctlclusterを経由して、それが正常に終了することができ、ビルドプロセス中。私はその後、容器を実行したときしかし、私は次のエラーを取得する:私は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プロセスが正常にpostgrespg_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内のRUN間でpg_ctlclusterを使ってサービスをきれいにシャットダウンして問題を解決しました。ありがとう – Eldamir

関連する問題