LINUX.ORG.RU

История изменений

Исправление 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, т.е. это внутренний адрес хоста в сети для докер-контейнера. Ну и всё должно работать.