• Как сказать докеру где лежит база приложения?

    From Oleg Nazaroff@2:50/700.700 to All on Fri May 29 10:46:30 2026
    Hello, All.

    Сабж вот. Когда база в отдельном контейнере - вроде понятно как, линком на тот контейнер. А если база - просто в общем MySQL, как сказать контейнеру приложения в докере, что его база живет там-то?

    --
    WBR, ON
    --- ХотДог/2.14.5/Android
    * Origin: Somewhere at Russia, in the hut on chicken legs... (2:50/700.700)
  • From Sergey Kaluzhskiy@2:5055/182.1 to Oleg Nazaroff on Fri May 29 11:41:49 2026
    Hello, Oleg Nazaroff.
    On 29.05.2026 10:46 you wrote:

    Сабж вот. Когда база в отдельном контейнере - вроде понятно как, линком на тот контейнер. А
    если база - просто в общем MySQL, как сказать контейнеру приложения в докере, что его база
    живет там-то?

    Можно при запуске контейнера указать в аргументах докера --network=host . В этом случае контейнеру не будет создаваться отдельная подсесть и приложения в контейнере могут спокойно обращаться к сетевым ресурсам на локалхосте как будто оно запущено без докера. См https://stackoverflow.com/questions/43316376/what-does-network-host-option-in-docker-command-really-do



    --
    С наилучшими пожеланиями!
    Опубликовано ХотДогом с планеты Ведроид
    --- ХотДог/2.14.5/Android
    * Origin: Android device, Milky Way (2:5055/182.1)
  • From Sergey Anohin@2:5034/10.1 to Oleg Nazaroff on Fri May 29 11:35:03 2026
    Hello, Oleg!

    Сабж вот. Когда база в отдельном контейнере - вроде понятно как, линком на тот контейнер. А если база - просто в общем MySQL, как сказать контейнеру приложения в докере, что его база живет там-то?

    Так точно так же, ты же либо пробрасываешь сокет в контейнер, либо ходишь по сети в базу, или в чем подвох?

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

    --- wfido
    * Origin: https://5034.ru/wfido (2:5034/10.1)
  • From Oleg Nazaroff@2:50/700.700 to Sergey Anohin on Fri May 29 15:14:47 2026
    Hello, Sergey Anohin.
    On 29.05.2026 11:35 you wrote:

    Так точно так же, ты же либо пробрасываешь сокет в контейнер, либо ходишь по сети в базу, или
    в чем подвох?

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

    ЗЫ: Мне каким-то невероятным образом с очередным обновлением вернули контроль над докером, в демьян-подобном линухе, после перехода с iptables на nftables "по живому".

    --
    WBR, ON
    --- ХотДог/2.14.5/Android
    * Origin: Somewhere at Russia, in the hut on chicken legs... (2:50/700.700)
  • From Oleg Nazaroff@2:50/700.700 to Sergey Kaluzhskiy on Fri May 29 15:21:16 2026
    Hello, Sergey Kaluzhskiy.
    On 29.05.2026 11:41 you wrote:

    Можно при запуске контейнера указать в аргументах докера --network=host . В этом случае
    контейнеру не будет создаваться отдельная подсесть и приложения в контейнере могут спокойно
    обращаться к сетевым ресурсам на локалхосте как будто оно запущено без докера. См
    https://stackoverflow. com/questions/43316376/what-does-network-host-option-in-docker-command-really-do

    О!
    А еще вот такой момент, в чем принципиальная разница использования докера или докер-композитора и конфига в .env, .yml или ком.строке?

    Для Joplin я писал типа "docker run .." и весь конфиг прям в комстроке..

    --
    WBR, ON
    --- ХотДог/2.14.5/Android
    * Origin: Somewhere at Russia, in the hut on chicken legs... (2:50/700.700)
  • From Sergey Kaluzhskiy@2:5055/182.1 to Oleg Nazaroff on Fri May 29 15:45:53 2026
    Hello, Oleg Nazaroff.
    On 29.05.2026 15:21 you wrote:

    Можно при запуске контейнера указать в аргументах докера --network=host . В этом случае
    контейнеру не будет создаваться отдельная подсесть и приложения в контейнере могут спокойно
    обращаться к сетевым ресурсам на локалхосте как будто оно запущено без докера. См
    https://stackoverflow.
    com/questions/43316376/what-does-network-host-option-in-docker-command-really-do
    О! А еще вот такой момент, в чем принципиальная разница использования докера или
    докер-композитора и конфига в .env, .yml или ком.строке?

    docker-compose (в новом синтаксисе docker compose) предназначен для одновременного запуска нескольких контейнеров с общей сетью. Типа у тебя есть бэкенд и база данных, надо чтобы все это было контейнерезировано, запускалось одновременно и база данных была доступна только из бэкенда. у и к нему пишется файл конфигурации docker-compose.yml где описываются какие сервисы с какими настройками надо запускать. у и командная строка в этом случае максиально простая: docker compose up -d

    Просто docker - это для запуска одного контейнера. И да, можно все указать в параметрах, отдельно создать общую сеть, указать ее для каждого контейнера и так далее, поэтому можно обойтись и без compose, но будет менее удобно

    Для Joplin я писал типа "docker run .." и весь конфиг прям в комстроке..

    Видимо там был всего один контейнер либо так надо было писать для каждого


    --
    С наилучшими пожеланиями!
    Опубликовано ХотДогом с планеты Ведроид
    --- ХотДог/2.14.5/Android
    * Origin: Android device, Milky Way (2:5055/182.1)
  • From Sergey Anohin@2:5034/10.1 to Oleg Nazaroff on Fri May 29 16:11:10 2026
    Hello, Oleg!

    А еще вот такой момент, в чем принципиальная разница использования докера или докер-композитора и конфига в .env, .yml или ком.строке?

    Удобство, композер - это оркестратор, типа описал один раз и все. Тут тебе бы лучше теорию немного прочесть чтоб понять.

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

    --- wfido
    * Origin: https://5034.ru/wfido (2:5034/10.1)
  • From Sergey Anohin@2:5034/10.1 to Oleg Nazaroff on Fri May 29 16:26:34 2026
    Hello, Oleg!

    Так точно так же, ты же либо пробрасываешь сокет в контейнер, либо ходишь по сети в базу, или
    в чем подвох?
    Точно так же не выходит. "Так-же" я просто указываю имя контейнера с базой, а когда контейнера нет, должен же как-то показать что база живет на локалхосте. Через настройки сайта тоже не выходит, в результате имею еггог 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)
  • From Oleg Nazaroff@2:50/700.700 to Sergey Anohin on Sat May 30 01:56:22 2026
    Hello, Sergey Anohin.
    On 29.05.2026 16:11 you wrote:

    Удобство, композер - это оркестратор, типа описал один раз и все. Тут тебе бы лучше теорию
    немного прочесть чтоб понять.

    теория не всасывается без практики.. у меня не было кучи контейнеров просто!

    --
    WBR, ON
    --- ХотДог/2.14.5/Android
    * Origin: Somewhere at Russia, in the hut on chicken legs... (2:50/700.700)