История изменений
Исправление
Legioner,
(текущая версия)
:
Ок, предположим я отделил БД от докера и крутится она у меня локально. Есть ли адекватные способы прокинуть локальный порт в докер-контейнер? То о чем я читал - какая-то дичь: либо использовать net-host, но это размывает идею контейнеризации, либо проброс порта через SSH в контейнер, но это медленно и как-то нелепо
Если я правильно понял, ты хочешь на одном сервере запустить постгрес без докера и рядом в докере приложение, работающее с постгресом.
Если ты постгрес забиндишь на 127.0.0.1, тогда я не знаю, как это решить. Наверное --net=host
поможет, но я не пробовал.
А так - ты в постгресе пишешь в конфиге, чтобы он биндился на 0.0.0.0, обязательно убеждаешься, что внешние соединения блокируются фаерволом. После этого ты в докер-композ добавляешь extra_hosts: [ "host-gateway:host-gateway" ]
(не помню, как в командной строке это прописать, но можно и без композа, конечно, сделать) и прописываешь адрес БД как host-gateway. Это будет что–то вроде 172.17.0.1, т.е. это внутренний адрес хоста в сети для докер-контейнера. Ну и всё должно работать.
Но вообще я советую сначала попробовать запустить постгрес в докере. У нас на проде работает несколько баз в докере, проблем нет. Просто сделай volume в локальную папку. Тогда всё ещё проще будет.
Исправление
Legioner,
:
Ок, предположим я отделил БД от докера и крутится она у меня локально. Есть ли адекватные способы прокинуть локальный порт в докер-контейнер? То о чем я читал - какая-то дичь: либо использовать net-host, но это размывает идею контейнеризации, либо проброс порта через SSH в контейнер, но это медленно и как-то нелепо
Если я правильно понял, ты хочешь на одном сервере запустить постгрес без докера и рядом в докере приложение, работающее с постгресом.
Если ты постгрес забиндишь на 127.0.0.1, тогда я не знаю, как это решить. Наверное --net=host
поможет, но я не пробовал.
А так - ты в постгресе пишешь в конфиге, чтобы он биндился на 0.0.0.0, обязательно убеждаешься, что внешние соединения блокируются фаерволом. После этого ты в докер-композ добавляешь extra_hosts: [ "host-gateway:host-gateway" ]
(не помню, как в командной строке это прописать, но можно и без композа, конечно, сделать) и прописываешь адрес БД как host-gateway. Это будет что–то вроде 172.17.0.1, т.е. это внутренний адрес хоста в сети для докер-контейнера. Ну и всё должно работать.
Но вообще я советую сначала попробовать запустить постгрес в докере. У нас на проде работает несколько баз в докере, проблем нет. Просто сделай volume в локальную папку.
Исходная версия
Legioner,
:
Ок, предположим я отделил БД от докера и крутится она у меня локально. Есть ли адекватные способы прокинуть локальный порт в докер-контейнер? То о чем я читал - какая-то дичь: либо использовать net-host, но это размывает идею контейнеризации, либо проброс порта через SSH в контейнер, но это медленно и как-то нелепо
Если я правильно понял, ты хочешь на одном сервере запустить постгрес без докера и рядом в докере приложение, работающее с докером.
Если ты постгрес забиндишь на 127.0.0.1, тогда я не знаю, как это решить. Наверное --net=host
поможет, но я не пробовал.
А так - ты в постгресе пишешь в конфиге, чтобы он биндился на 0.0.0.0, обязательно убеждаешься, что внешние соединения блокируются фаерволом. После этого ты в докер-композ добавляешь extra_hosts: [ "host-gateway:host-gateway" ]
(не помню, как в командной строке это прописать, но можно и без композа, конечно, сделать) и прописываешь адрес БД как host-gateway. Это будет что–то вроде 172.17.0.1, т.е. это внутренний адрес хоста в сети для докер-контейнера. Ну и всё должно работать.