RU.LINUX ---------------- < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 Nп/п : 98 из 99
 От   : Sergey Anohin                       2:5034/10.1       29 май 26 16:26:34
 К    : Oleg Nazaroff                                         29 май 26 16:53:02
 Тема : Как сказать докеру где лежит база приложения?
----------------------------------------------------------------------------------
                                                                                 
@MSGID: 2:5034/10.1 24fff5cf
@REPLY: 2:50/700.700 29080d69
@CHRS: CP866 2
@PID: wfido 0.0.1/a
@TID: FTN::Pkt 1.02
@Posted: 29 May 26 16:45:56
Hello, Oleg!

  SA>> Так точно так же, ты же либо пробрасываешь сокет в
контейнер, либо ходишь по сети в базу, или
 SA>> в чем подвох?
  ON> Точно так же не выходит. "Так-же" я просто указываю имя
контейнера с базой, а когда контейнера нет, должен же как-то показать что база
живет на локалхосте. Через настройки сайта тоже не выходит, в результате
имею еггог 502 ;( и по образу и подобию работающего под докером Joplin
тоже не выходит..

Из гугла

Способ 1
 В Docker для Windows и Mac есть встроенное волшебное доменное имя,
которое автоматически перенаправляет трафик на хост-машину.
Вместо localhost используйте: host.docker.internal
 Пример строки подключения: mongodb://host.docker.internal:27017 или
postgresql://user:pass@host.docker.internal:5432/db

Способ 2
 Linux контейнеры обычно подключаются к стандартной bridge-сети Docker.
У этой сети есть шлюз (gateway), который и является вашей хост-машиной.
Найдите IP-адрес шлюза. Выполните на хосте команду:
Bash
ip addr show docker0
Обычно это 172.17.0.1.
 Используйте этот IP в настройках подключения внутри контейнера
(например, 172.17.0.1:3306).

Способ 3
 Вы можете заставить контейнер использовать сетевой стек хоста. Тогда
у контейнера и хоста будут общие IP и порты, и localhost внутри
контейнера начнет указывать на хост.
При запуске через CLI: Добавьте флаг --network=host

#Bash
docker run --network=host my-app-image
В docker-compose.yml:

#YAML
version: `3.8`
services:
  my-app:
    image: my-app-image
    network_mode: "host"
 Минус: Этот способ лишает контейнер сетевой изоляции и не работает
на macOS/Windows из-за особенностей виртуализации Docker на этих ОС.

Проверьте настройки самой базы данных!
 Даже если вы всё настроили правильно со стороны Docker, база данных
на хосте может сбросить соединение. По умолчанию многие БД безопасности
ради слушают только локальные соединения (127.0.0.1).

 Вам нужно разрешить базе принимать подключения с других IP (в данном
случае - из подсети Docker):
 PostgreSQL: В файле postgresql.conf установите listen_addresses = `*`,
а в pg_hba.conf добавьте строку разрешающую доступ (например, host all
all 172.17.0.0/16 md5).
 MySQL / MariaDB: В файле my.cnf (или mysqld.cnf) измените
bind-address = 127.0.0.1 на bind-address = 0.0.0.0.
 Redis: В redis.conf закомментируйте bind 127.0.0.1 или укажите
protected-mode no.
Не забудьте перезапустить службу базы данных после изменения конфигурации!

С наилучшими пожеланиями, Sergey Anohin.

--- wfido
 * Origin: https://5034.ru/wfido (2:5034/10.1)
SEEN-BY: 46/49 50/18 606 700 450/68 452/28 455/19
469/122 5010/275 352
SEEN-BY: 5019/40 400 5020/290 545 556 570 715 837
848 921 1042 1146 2992 4096
SEEN-BY: 5020/4441 9696 12000 5022/2 128 5023/24
5026/49 5030/500 1081
SEEN-BY: 5034/10 13 16 5037/28 5051/44 5055/73
5057/19 5059/37 5060/900
SEEN-BY: 5075/128 5090/138 6035/4 6078/80 6090/1
@PATH: 5034/10 13 5020/715 4441



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх