52

fig Web サイトのチュートリアルを使用して、postgres コンテナーを作成しました。コンテナにdbという名前を付けました。

コンテナーは実行中で、アプリはコンテナーに正常に接続します。fig run db psql実行中のdbコンテナーでコマンドを実行しようとしたところ、エラーが発生しました。

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

実行中のdbコンテナのpsqlインターフェイスにアクセスするにはどうすればよいですか?

4

6 に答える 6

102

figは、ファイルで使用されている名前とは異なる名前のDocker コンテナーを作成しfig.ymlます。

コンテナ名を見つけてNAMESdocker psを見ることで機能しました。

次にpsql、実行中のコンテナでコマンドを実行しますdocker exec -ti NAME_OF_CONTAINER psql -U YOUR_POSTGRES_USERNAME

重要な注意点:

  • docker exec実行中のpsqlコンテナでコマンドを実行します
  • docker run新しいコンテナを開始します。

アップデート

figdocker-composeと呼ばれるようになりました

于 2014-12-28T05:49:19.353 に答える
12

ここに私の 2P; ミドルウェアをホスト システムにインストールして維持するのではなく、コンテナーとしてデプロイすることを好みます。

docker run --rm --name postgresql -p 5432:5432
-e POSTGRES_USER=admin -e POSTGRES_PASSWORD=admin
-e POSTGRES_DB=demodb
-d postgres:latest
docker exec -it postgresql psql -d demodb -U admin
于 2019-12-11T08:32:21.683 に答える
3

fig によって開始されたコンテナに接続するには、新しいコンテナを実行する必要があります。これは、メイン コンテナがデフォルトでサービスを開始するためですfig run db psql。fig を実行すると、サービスは開始されず、代わりに psql クライアントが実行されます。Dockerfileを参照してください。

したがって、PostgreSQL サービスに接続するには、図 1 によって開始されたコンテナーにリンクされた別のコンテナーを実行する必要があります。https://registry.hub.docker.com/_/postgres/を参照してください。

まず、fig は起動したコンテナの名前を変更するので、docker ps実行後にコンテナの NAMES 列を確認しますfig up。それで:

docker run -it --link <postgres_container_name>:postgres --rm postgres sh -c 'exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres'

docker exec@sargas で説明されているのと同じようにトリックを行うこともできますが、リンク方法は私にはより標準的に聞こえます。

于 2014-12-28T15:55:23.340 に答える