PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Не можа да се свърже със сървър на postgres в докер от докеризирано приложение

Просто използвайте дефинирана от потребителя мостова мрежа. Първо, използвайте знанията си, като прочетете кратко обяснение на различните типове мрежи в Docker:https://docs.docker.com/network/bridge/

Второ, дефинирайте своя собствена мрежа

docker network create foo

След това стартирайте контейнерите си свързани към тази мрежа:

docker run --rm --env-file /path/to/variables -d --network foo django_app:test
docker run --rm -d ... --network foo postgres:alpine ...

Забележете и в двете команди --network foo . Също така, не трябва за да разкриете портове в този случай - вътре в потребителски дефинирани мрежи това се прави автоматично:

Контейнерите, свързани към една и съща дефинирана от потребителя мостова мрежа, автоматично излагат всички портове един на друг и никакви портове към външния свят. Това позволява на приложенията в контейнери да комуникират лесно помежду си, без случайно отваряне на достъп до външния свят.

Трето, дайте на вашите контейнери четими от човека имена на хостове с --name bar

docker run ... --network foo --name my-django django_app:test ...
docker run ... --network foo --name my-postgres postgres:alpine ...

И накрая коригирайте низа за свързване - променете от localhost към името на контейнера, като my-postgres :

...
POSTGRES_HOST=my-postgres
...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразувайте шестнадесетичен в текстово представяне в десетично число

  2. Големите обекти не могат да се използват в режим на автоматично записване

  3. Вземете номера на седмицата от дата в PostgreSQL

  4. Индекс на клеймото за време:Функциите в индексния израз трябва да бъдат маркирани като НЕИЗМЕНЯЕМИ

  5. Изберете произволен ред от PostgreSQL таблица с претеглени вероятности за редове