Nginx、php、postgresでUbuntuイメージを作成しました。
現在のイメージのpostgresデータベースをローカルマシンにあるpgadmin
に接続したい。
Dockerインスペクタを使用して、イメージIPを使用してローカルpgadminとの接続を試みましたが、あまり成功しませんでした。また、ローカルでいくつかのポートを設定して、接続が機能するようにしました。
なぜ人々が「その質問に答えることができないようだ」と感じるのかはわからない有効な質問です。
だから、ここにあなたがやろうとしていることをする方法があります:
Docker Hubからpostgresイメージをプルします
docker pull postgres:latest
以下のコマンドを使用してコンテナを実行します
docker run -p 5432:5432 postgres
Dockerのinspectコマンドを使用してIPを見つける
そのIP、PORT、ユーザー名、およびパスワードを使用して、PGADMINで接続します
また、以下のような簡単なtelnetを実行して、docker postgresコンテナーにアクセスできるかどうかを確認できます。
telnet IP_ADDRESS 5432
Windows 1.12.6(9655)のdockerを実行しているwindows 10で成功した場合、ステップは次のようになります。
最新のpostgresを取得する
docker pull postgres:latest
postgresコンテナーを実行します。
docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name db-my -p 5432:5432 --restart=always postgres
次に、 pgadmin Webサイト からpgAdmin4の最新バージョンをインストールしました
PgAdmin 4を実行して新しいサーバーを作成し、次のように入力します。ホスト:127.0.0.1ポート:5432ユーザー名:ユーザーパスワード:password123
または、PostgresとPgadminを1つのdocker-compose
ファイルに結合し、ユーザー[email protected]
、pwd:admin
としてログインできます。 Posgresサーバーを追加するには、ホスト名postgres
、ポート5432
を使用します。
version: '3'
services:
postgres:
image: postgres
hostname: postgres
ports:
- "6543:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: TEST_SM
volumes:
- postgres-data:/var/lib/postgresql/data
restart: unless-stopped
pgadmin:
image: dpage/pgadmin4
depends_on:
- postgres
ports:
- "5555:80"
environment:
PGADMIN_DEFAULT_EMAIL: [email protected]
PGADMIN_DEFAULT_PASSWORD: admin
restart: unless-stopped
volumes:
postgres-data:
PgAdminを同じUbuntuホスト/ゲストで実行する場合は、postgresコンテナーをリンクする必要があるため、名前で解決できます。
1。postgresコンテナを実行します:
docker run --name some-postgres -e POSTGRES_PASSWORD=postgres -d postgres
2。pgAdminコンテナーの実行:
docker run -p 80:80 --link some-postgres -e "[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=postgres" -d dpage/pgadmin4
。phAdmin Webアプリで新しいサーバーを追加する場合、サーバー名としてsome-postgres
を使用
PgAdminを起動したときに--link some-postgres
に注意してください。このコマンドは、pgAdminコンテナーからpostgresコンテナーを表示できるようにします。
これは私がやったことです
docker run -p 5432:5432 --name container-postgresdb -e POSTGRES_PASSWORD=admin -d postgres
docker run -p 5050:80 -e "[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=admin" -d dpage/pgadmin4
Host: Host.docker.internal
database: postgres
user: postgres
password: admin
うまくいく!!!!!
コンテナのpostgresポートをローカルシステムに公開する必要があります。これを行うには、次のようにコンテナを実行します。
docker run -p 5432:5432 <name/id of container>
gUIクライアントまたはCLIで接続するときは、たとえIPアドレスがローカルホストのIPアドレスであっても、ローカルホストではなくIPアドレスを使用するようにしてください。
docker ps
は、postgresコンテナが存在するIPアドレスを提供します。
私が試し、働いた解決策は、postgressとpgadminをサービスとして含めたdocker composeファイルを作成することでした。詳細: pgadminをdockerのpostgresに接続
これをdocker yamlファイルに含めて、データベースとpgAdminを取得しました。
database:
image: postgres:10.4-Alpine
container_name: kafka-nodejs-example-database
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
expose:
- "5432"
ports:
- 8000:5432
volumes:
- ./services/database/schema.sql:/docker-entrypoint-initdb.d/1-schema.sql
- ./services/database/seed.sql:/docker-entrypoint-initdb.d/2-seed.sql
pgadmin:
image: dpage/pgadmin4
ports:
- 5454:5454/tcp
environment:
- [email protected]
- PGADMIN_DEFAULT_PASSWORD=postgres
- PGADMIN_LISTEN_PORT=5454
Postgresユーザー名はalphaone、パスワードはxxxxxxxxxxxです。
docker ps
コンテナIDを取得してからdocker inspect <dockerContainerId> | grep IPAddress
例:docker inspect 2f50fabe8a87 | grep IPAddress
IpアドレスをpgAdminに挿入し、dockerで使用されるデータベース資格情報を挿入します。