Может ли кто-нибудь помочь мне с этим?
что я запускаю:
docker run --name pgres --rm \
-e POSTGRES_USER=uzer \
-e POSTGRES_PASSWORD=1234 \
-e POSTGRES_DB=sample_db \
-p 5432:5432 postgres:14.1
но я не могу подключиться к этому:
даже в журнале ничего не происходит:
waiting for server to shut down...2024-07-24 18:07:19.272 UTC [48] LOG: received fast shutdown request
.2024-07-24 18:07:19.273 UTC [48] LOG: aborting any active transactions
2024-07-24 18:07:19.275 UTC [48] LOG: background worker "logical replication launcher" (PID 55) exited with exit code 1
2024-07-24 18:07:19.275 UTC [50] LOG: shutting down
2024-07-24 18:07:19.284 UTC [48] LOG: database system is shut down
done
server stopped
PostgreSQL init process complete; ready for start up.
2024-07-24 18:07:19.396 UTC [1] LOG: starting PostgreSQL 14.1 (Debian 14.1-1.pgdg110+1) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
2024-07-24 18:07:19.397 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
2024-07-24 18:07:19.397 UTC [1] LOG: listening on IPv6 address "::", port 5432
2024-07-24 18:07:19.398 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-07-24 18:07:19.401 UTC [62] LOG: database system was shut down at 2024-07-24 18:07:19 UTC
2024-07-24 18:07:19.405 UTC [1] LOG: database system is ready to accept connections
Поскольку у вас есть база данных в контейнере, а pgAdmin в другом контейнере, вы не можете использовать «localhost» в pgAdmin для попытки доступа к базе данных, поскольку «localhost» будет контейнером, в котором работает pgAdmin.
Убедитесь, что оба контейнера используют одну и ту же сеть (создайте сеть и запустите оба контейнера в -> https://docs.docker.com/engine/reference/run/#container-networking), а затем вместо этого в интерфейсе pgAdmin. из «localhost» используйте имя контейнера базы данных, это должно решить проблему.
Для запуска postgres используйте:
docker run --name pgres --network my-net --rm -e POSTGRES_USER=uzer -e POSTGRES_PASSWORD=1234 -e POSTGRES_DB=sample_db -p 5433:5432 postgres:14.1
Для запуска pgAdmin используйте:
docker run -p 80:80 --network my-net -e '[email protected]' -e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' -d dpage/pgadmin4
Теперь вы сможете использовать pgres в качестве сервера.
Если вы запустите «docker ps» после создания контейнера, каков будет результат?
Это нормально, 14016e0b2925 postgres:14.1 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:5432->5432/tcp pgres
Я не заметил, что pgAdmin также работает в докер-контейнере, на основе этого я отредактировал свой ответ.
использование pgres
в качестве имени хоста дает мне Unable to connect to server, Connection is bad, Name does not resolve
ошибку, и (по вдохновению вашего комментария, спасибо) при другой попытке я смог подключиться к IP
контейнера, это сработало, но почему localhost
нет? в то время как оба контейнера сопоставлены с локальным хостом
Попробуйте то, что я только что включил в свой ответ: работа с сетями. Localhost не будет работать, потому что pgres — это изолированный сервер, а pgadmin — другой, поэтому, если вы вызываете localhost внутри pgadmin, он будет искать базу данных на сервере pgadmin, где не работает служба базы данных. Затем вам нужно настроить сеть и разместить в ней оба контейнера.
Виноват; Я совсем забыл.
Проблема была в Tor, я его отключил и теперь проблема решена.
1. Я попробовал это, но проблема, я думаю, на шаг раньше, судя по сообщению об ошибке (подключение к порту). --- 2. localhost всегда помогал моей системе, так в чем же проблема сейчас? даже pgAdmin находится в другом контейнере и работает с ним
http://localhost:32769/
Я попробовал подключиться к pgAdmin и intellij Idea, но оба не увенчались успехом.