Saya telah membuat image ubuntu dengan nginx, php dan postgres.
Saya ingin menghubungkan database postgres di gambar saya saat ini dengan pgadmin
terletak di mesin lokal saya.
Saya telah mencoba menggunakan inspektur buruh pelabuhan untuk mencoba menggunakan gambar ip untuk membuat koneksi dengan pgadmin lokal saya tetapi tidak berhasil. Saya juga mencoba mengonfigurasi beberapa port di lokal agar koneksi berfungsi.
postgresql
docker
pgadmin
Rigoxls
sumber
sumber
Jawaban:
Ini adalah pertanyaan yang valid, tidak tahu mengapa orang merasa "sepertinya tidak mungkin untuk menjawab pertanyaan itu".
Jadi, inilah cara saya melakukan apa yang Anda coba lakukan:
Tarik gambar postgres dari Docker Hub
docker pull postgres:latest
Jalankan penampung menggunakan perintah di bawah ini
docker run -p 5432:5432 postgres
Menggunakan perintah inspeksi buruh pelabuhan menemukan IP
Gunakan IP, PORT, Username, dan Password tersebut untuk terhubung di PGADMIN
Anda juga dapat melakukan telnet sederhana seperti di bawah ini untuk mengonfirmasi apakah Anda dapat mengakses container postgres docker:
telnet IP_ADDRESS 5432
sumber
-p 5432:5432
maka Anda tidak perlu menemukan IP penampung, Anda dapat menggunakan IP host Anda, atau127.0.0.1
atau hanyalocalhost
Apa yang telah saya lakukan berhasil pada windows 10 yang menjalankan buruh pelabuhan untuk windows 1.12.6 (9655), langkahnya seperti di bawah ini:
Tarik postgres terbaru
docker pull postgres:latest
jalankan penampung postgres:
docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name db-my -p 5432:5432 --restart=always postgres
Kemudian instal versi terbaru pgAdmin4 dari situs web pgadmin
Jalankan pgAdmin 4 buat server baru, dan masukan sebagai berikut Host: 127.0.0.1 Port: 5432 Nama pengguna: kata sandi pengguna: kata sandi123
sumber
Atau, Anda bisa menggabungkan Postgres dan pgAdmin dalam satu
docker-compose
file, dan login sebagai pengguna[email protected]
, pwd:admin
. Untuk menambahkan server Posgres, gunakan nama hostpostgres
, port5432
.sumber
docker network ls
, Anda akan melihat jembatan untuk jaringan postgres-ke-pgadmin (milik saya adalah postgres_postgres). Kemudian, Anda dapatdocker network inspect postgres_postgres
dan melihat dua kontainer, masing-masing dengan ip / hostname. Ambil yang dari Postgres (milik saya adalah postgres_db_1) agar berhasil terhubung dari pgAdmin.Inilah yang saya lakukan
untuk postgres
docker run -p 5432:5432 --name container-postgresdb -e POSTGRES_PASSWORD=admin -d postgres
untuk pgadmin
String koneksi untuk pgadmin
Ini bekerja dengan baik !!!!!
sumber
Unable to connect to server: could not translate host name "host.docker.internal" to address: Try again
Dalam kasus saya, saya bisa menyelesaikan masalah memeriksa gambar postgre saya melalui perintah
Jadi, saya menggunakan alamat ip buruh pelabuhan untuk mengkonfigurasi koneksi pgadmin 4 saya dan semuanya baik-baik saja. Terima kasih kepada @Afshin Ghazi
sumber
Jika pgAdmin dimaksudkan untuk dijalankan dengan host / tamu Ubuntu yang sama, maka Anda perlu menautkan kontainer postgres, sehingga dapat diselesaikan dengan sebuah nama.
1. Jalankan wadah postgres:
docker run --name some-postgres -e POSTGRES_PASSWORD=postgres -d postgres
2. Jalankan container pgAdmin:
docker run -p 80:80 --link some-postgres -e "[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=postgres" -d dpage/pgadmin4
3. Sekarang saat menambahkan server baru di aplikasi web phAdmin, gunakan
some-postgres
sebagai nama serverPerhatikan
--link some-postgres
saat kami membuka pgAdmin. Perintah ini membuat penampung postgres terlihat oleh penampung pgAdmin.sumber
Warning: The --link flag is a legacy feature of Docker. It may eventually be removed. Unless you absolutely need to continue using it, we recommend that you use user-defined networks to facilitate communication between two containers instead of using --link.
Saya juga tidak beruntung menggunakan--link
container pgadmin saya untuk berbicara dengan container postgres saya. Saya dapat mengakses postgres dari instalasi lokal pgadmin.Saya menyertakan ini di file docker yaml untuk mendapatkan database dan pgAdmin:
Nama pengguna postgres adalah alphaone dan kata sandinya adalah xxxxxxxxxxx.
Lakukan a
docker ps
untuk mendapatkan id penampung laludocker inspect <dockerContainerId> | grep IPAddress
misalnya:
docker inspect 2f50fabe8a87 | grep IPAddress
Masukkan alamat Ip ke pgAdmin dan kredensial database yang digunakan di buruh pelabuhan:
sumber
localhost
tidak berhasil.Dalam kasus saya, saya memiliki container PostgreSQL, jadi saya tidak mengubah container saya atau membuat pendekatan docker-compose, saya perlu pgadming setelah beberapa bulan untuk menginstal PostgreSQL, jadi inilah pendekatan saya:
docker inspect my_container_id_postgreSQL
Jaringan yang ditugaskan ke PostgreSQL adalah:
"Jaringan": {"docker_default": {"IPAddress": "172.18.0.2", ...}}
Jalankan PGADMIN saya dengan
--network
perintah.docker run -p 85:80 --network docker_default -e '[email protected]' -e 'PGADMIN_DEFAULT_PASSWORD = SuperSecret' -d dpage / pgadmin4
Masukkan alamat Ip ke pgAdmin dan kredensial database yang digunakan di buruh pelabuhan.
Semoga bermanfaat bagi seseorang. Salam.
sumber
Untuk mencari atau menemukan IP wadah Anda, gunakan perintah berikut
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
Referensi: Cara mendapatkan alamat IP container Docker dari host
sumber
Anda harus mengekspos port postgres di container ke sistem lokal Anda. Anda melakukan ini dengan menjalankan penampung Anda seperti ini:
docker run -p 5432:5432 <name/id of container>
saat menghubungkan dengan klien GUI atau CLI Anda pastikan untuk menggunakan alamat ip bukan localhost meskipun ip-address Anda adalah alamat ip localhost.
docker ps
akan memberi Anda alamat ip tempat penyimpanan postgres Anda berada.sumber
Jika Anda memverifikasi bahwa PostgreSQL sedang berjalan dan Anda dapat terhubung ke sana dengan salinan lokal PgAdmin ...
Jawabannya sederhana: gunakan
host.docker.internal
pertamalocalhost
untuk PgAdmin yang berjalan di dalam Dockersumber
Anda dapat membuat jaringan jembatan Docker untuk melakukan ini juga.
$ docker network create pgnet a0ae44aaf6f806fc37302e4c603b4828c4edb8d487fd9cd90e2fb19ae1d5c65f $ docker run --detach \ --name pg \ --network pgnet \ --publish 5432:5432 \ --restart always \ --env POSTGRES_PASSWORD=pg123 \ --volume ${PWD}/data:/var/lib/postgresql/data \ postgres:12.1 b60611e43727dabe483c1f08fdf74961b886ce05b432a10a0625bd1b6db87899 $ docker run --detach \ --name pgadm \ --network pgnet \ --publish 8000:80 \ --volume ${PWD}/pgadmin:/var/lib/pgadmin \ --env [email protected] \ --env PGADMIN_DEFAULT_PASSWORD=pgadm123 \ dpage/pgadmin4:4.20 27f9ce1c1c4c383ee1507f4e2d88f6ef33d4fcf5b209a8a03b87519f90d56312
Buka http: // localhost: 8000 /
Hostname / alamat yang digunakan di atas adalah nama container Postgres yang diberikan oleh
--name pg
sumber
Setelah menghadapi masalah ini selama dua hari, saya dapat menyelesaikan masalah itu.
solusi dari masalah ini sudah dijawab oleh orang-orang seperti lakukan inspeksi
docker inspect CONTAINER_ID
tetapi saat menjalankan perintah ini saya mendapat banyak log seperti Host Config Config Pengaturan Jaringan dll. jadi saya bingung IPAddress mana yang harus ditambahkan ke koneksi pgAdmin karena saya mencoba 0.0.0.0 dan config, host, networkSettings berbeda -2 IPAddress di log tetapi akhirnya berhasil setelah mencoba banyak.
ini berfungsi dengan IP mana, kami harus menambahkan alamat ip jaringan itu (yang kami buat untuk menghubungkan postgres dan pgAdmin .)
seperti dalam kasus saya ketika saya menjalankan: -
jadi kita harus menambahkan NetworkSettings -> Network -> Postgres (jaringan yang saya buat) -> IPAddress yaitu "IPAddress": "192.168.16.2".
Setelah menambahkan ip ini, itu akan berfungsi.
Saya harap ini akan membantu.
sumber
Untuk menemukan ip yang benar untuk penampung Anda, jalankan perintah berikut:
Periksa ID penampung:
Untuk memeriksa IP yang benar dari penampung Anda:
Konfigurasi PostgreSQL dan PgAdmin dengan Docker sederhana, jika tidak benar, saya sarankan untuk mengulang konfigurasi dari awal, jika masalah Anda lebih dalam.
Berikut ini skrip yang saya kembangkan untuk mengatasi masalah ini. script-sh / install-docker-postgres-dan-pgadmin
sumber
Untuk macOS IP
postgres
danpgadmin4
berbeda dari yangdocker inspect
disediakan. TipeLihatlah nama server di sebelah kiri. Ini
default
secara default.docker-machine ip default
akan IP yang perlu Anda gunakan untuk keduanya ,pgadmin4
di browser danpostgres
dipgadmin4
pengaturan.sumber
Solusi yang saya coba dan berhasil untuk saya, adalah membuat file tulis buruh pelabuhan di mana saya menyertakan postgress dan pgadmin sebagai layanan. Untuk lebih jelasnya: Menghubungkan pgadmin ke postgres di buruh pelabuhan
sumber