LINUX.ORG.RU

Можно ли nginx`ом проксировать в docker-контейнер?

 


1

3

Есть vps на которой nginx, postgres, synapse. Хочу для тестов развернуть в docker-контейнере synapse и с хоста nginx`ом проксировать в контейнер.

Собрал образ с python3.7 и установил synapse. synapse внутри контейнера слушает 8008/tcp и также 5432.

Выполняю команду

docker run -d -it --expose 5432 --p127.0.0.1:8848:8008 --name synapse_dev my-repo/my-image

Проверяю

 curl -XGET http://localhost:8848

Курл достучатся не может. Также через браузер отдаёт 502.

nginx

server {
 listen 80;

 location / {
  proxy_pass http://localhost:8848
 }
}

Вроде бы казалось, прокинуть порты и вот счастье, но нет. Что я упустил для решения моей задачи?

А если так то все ок?

$ docker run -d -p 8080:80 nginx
$ curl localhost:8080 -I
HTTP/1.1 200 OK

может какой нибудь bind_addresses или bind_port у сервиса не туда настроен на публикацию?

из другого контейнера на curl отвечает?

WoozyMasta
()
Ответ на: комментарий от hippi90
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
6f185551e795 villiwalla/synapse «/bin/bash» 15 hours ago Up 2 hours 5432/tcp, 127.0.0.1:8848->8008/tcp synapse_dev 

villiwalla
() автор топика
Ответ на: комментарий от WoozyMasta
150646:~$ docker run -d -p 8080:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
b8f262c62ec6: Pull complete 
e9218e8f93b1: Pull complete 
7acba7289aa3: Pull complete 
Digest: sha256:aeded0f2a861747f43a01cf1018cf9efe2bdd02afd57d2b11fcc7fcadc16ccd1
Status: Downloaded newer image for nginx:latest
71c59ee52b335879961c829ade56481aaab8f35f84882d531e6831a072564853
150646:~$ curl localhost:8080 -I
HTTP/1.1 200 OK
Server: nginx/1.17.4
Date: Wed, 25 Sep 2019 07:55:27 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 24 Sep 2019 14:49:10 GMT
Connection: keep-alive
ETag: "5d8a2ce6-264"
Accept-Ranges: bytes

В конфиге synapse

listeners:
  - port: 8008
    tls: false
    bind_addresses: ['127.0.0.1']
    type: http
    x_forwarded: true

bind_addresses на [‘0.0.0.0’]?

villiwalla
() автор топика

Вот буквально вчера читал про взаимодружбу докера и файрволла. Рауты и файрволл дают связность из хоста в контейнер по lo?

heilnull ★★
()

Сначала убеждаешься что порт действительно слушается локально
lsof -Pni :1234

Дальше уже телнеты/курлы, и только потом nginx

zolden ★★★★★
()

Так, а если напрямую в контейнер запрос отправить?

curl http://<container_ip>:8008

Сервис точно запущен?

hippi90 ★★★★★
()
Ответ на: комментарий от villiwalla

@villiwalla

В конфиге synapse

 listeners:
  - port: 8008
    tls: false
    bind_addresses: ['127.0.0.1']
    type: http
    x_forwarded: true

bind_addresses на [‘0.0.0.0’]?

таки да, вещаешь то в локалхост, а запросы с хоста приходят из докерной сети, а именно с 172.17.0.1

WoozyMasta
()
Ответ на: комментарий от hippi90

Сервис и не стартовал. Нашел образ с синапсисом.

$ docker run -d -it --name matrix10 -e SYNAPSE_CONFIG_PATH=/data/homeserver.yaml  -v`pwd`/data:/data -p8008:8008 matrixdotorg/synapse

$ docker start matrix10
$ docker ps

CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS                                        NAMES
9754a47af3ee        matrixdotorg/synapse   "/start.py"         32 minutes ago      Up 35 seconds       8009/tcp, 0.0.0.0:8008->8008/tcp, 8448/tcp   matrix8

Проверку на ответ сервиса курлом проходит:

 curl -XGET localhost:8008

<html>
    <head>
        <meta http-equiv="refresh" content="0;URL=/_matrix/static">
    </head>
    <body bgcolor="#FFFFFF" text="#000000">
    <a href="/_matrix/static">click here</a>
    </body>
</html>

Остаётся вопрос за тем как пробросить в контейнер бд. Если -p5432:5432 не прокатывает, так же как –expose 5432.

Как пробросить бд с хоста в контейнер?

villiwalla
() автор топика
Ответ на: комментарий от villiwalla

Если контейнер стартанyть с –expose 5432, то в контейнере следующие логи

2019-10-01 10:58:58,452 - twisted - 197 - ERROR - -     Is the server running on host "localhost" (127.0.0.1) and accepting
2019-10-01 10:58:58,455 - twisted - 197 - ERROR - -     TCP/IP connections on port 5432?
2019-10-01 10:58:58,461 - twisted - 197 - ERROR - - could not connect to server: Address not available
2019-10-01 10:58:58,465 - twisted - 197 - ERROR - -     Is the server running on host "localhost" (::1) and accepting
2019-10-01 10:58:58,471 - twisted - 197 - ERROR - -     TCP/IP connections on port 5432?
villiwalla
() автор топика
Ответ на: комментарий от villiwalla

Как пробросить бд с хоста в контейнер?

Внутри сети докера хост обычно виден как шлюз подсети, т.е. скорее всего твоя БД будет доступна по адресу 172.17.0.1:5432

Is the server running on host «localhost» (127.0.0.1)

Ну а это уже настройки приложения надо править, чтобы не на localhost смотрело, относительно контейнера localhost - это сам контейнер.

hippi90 ★★★★★
()
Ответ на: комментарий от hippi90

Есть у меня сеть docker0 дефолтная, шлюз у неё 172.0.0.1. У контейнера 172.17.0.2. В конфиге прилоги указал чтобы стучалась на шлюз. У постреса указал разрешения на 172.0.0.0/16 и изменил адрес биндинг на *. Но не пускает в бд все равно. Это наверное уже тема к ролям пользователей в бд

villiwalla
() автор топика

А если host networking (запустить контейнер с параметром --net=host) попробовать? Не знаю, насколько это правильный способ, но как минимум для тестирования попробуй.

te111011010
()
Ответ на: комментарий от te111011010

А если host networking (запустить контейнер с параметром --net=host) попробовать? Не знаю, насколько это правильный способ, но как минимум для тестирования попробуй.

Прокинул сокет в контейнер, но ```bash 2019-10-02 08:33:40,878 - twisted - 197 - ERROR - - psycopg2.OperationalError: could not connect to server: Connection refused 2019-10-02 08:33:40,881 - twisted - 197 - ERROR - - Is the server running locally and accepting 2019-10-02 08:33:40,884 - twisted - 197 - ERROR - - connections on Unix domain socket «/tmp/.s.PGSQL.5432»?

```

villiwalla
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.