запросы не отправляются на обратный прокси-сервер ngnix в docker compose

#docker #nginx #nginx-reverse-proxy

#docker #nginx #nginx-reverse-proxy

Вопрос:

Я новичок в мире docker / dev ops. Поэтому, пожалуйста, извините меня. У меня есть файл docker compose и конфигурация ngnix, как показано ниже

 version: '3.2'
services:
  risk-analysis-XXXX1:
    image: c360saascr.azurecr.io/risk-analysis-XXXX1:1118_ra_in_java
    ports:
      - "8080:8080"
      - "9010:9010"
    links:
      - ngnix-server
    command: -Xms12g -Xmx12g -XX:ActiveProcessorCount=8 -Dapi.connectTimeout=60 -Dapi.readTimeout=60 -Drisk.analysis.service.indexNameDictionaryMatchCounter=id_clients1 -Dlogging.level.com.classify360=DEBUG -Drisk.analysis.XXXX.hostName=ngnix-server -Drisk.analysis.XXXX.port=5001 -verbose:gc -XX: PrintGCDetails -XX: HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heapdumps -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=0.0.0.0 -Dcom.sun.management.jmxremote.port=9010  -Dcom.sun.management.jmxremote.rmi.port=9010  -jar risk-analysis-XXXX-0.0.1-SNAPSHOT.jar


  risk-analysis-XXXX2:
    image: c360saascr.azurecr.io/risk-analysis-XXXX2:1123
    expose:
    - "5000"
    links:
      - elastic-search
    command: http://somerandom:8761/ risk-analysis-XXXX2 5000 risk-analysis-XXXX2-5000.log http://elastic-search:9200
    restart: on-failure


  elastic-search:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      discovery.type: single-node

  ngnix-server:
    image: nginx:1.15
    ports:
      - "5001:80"
    volumes:
      - ./default.conf:/etc/nginx/nginx.conf
    depends_on:
      - risk-analysis-XXXX2


user nginx;
events { worker_connections 1024;}
http {
        server {
              listen 80;
              location / {
                proxy_pass http://risk-analysis-XXXX2:5000;
              }
        }
}
 

Итак, выше приведены два файла

  1. XXXX заменяются на redact. Поэтому, пожалуйста, игнорируйте
  2. nginx работает по своему собственному значению, когда я вызываю http://localhost:5001 это маршруты и т.д., НО
  3. Из risk-analysis-XXXX1 он не может вызвать nginx. Я связал это с ngnix-server, как вы также видите, URL-адрес, который я пытаюсь найти, http://ngnix-server:5001 с помощью анализа рисков-XXXX1

Пожалуйста, помогите с # 3. Почему он не попадает http://ngnix-server:5001 ? Я получаю java.net.ConnectException: соединение отклонено. Я попытался добавить их в ту же сеть, но это не сработало. Примечание: — Я использую docker-compose up —scale risk-analysis-XXXX2 = 3 для масштабирования

Ответ №1:

Итак, вы сопоставляете порт 80 в вашем контейнере с 5001 на хосте, верно? Если затем вы хотите подключиться к контейнеру nginx по той же сети, вам следует попытаться подключиться к порту 80 (это, по-видимому, единственный «открытый» порт, который есть у контейнера).

Так что это должно работать из вашего контейнера risk-analysis-XXXX1:

http://ngnix-server:80

Комментарии:

1. Ты звезда. Это сработало. Большое вам спасибо. Я собираюсь отметить ваш ответ как потрясающий

2. Ха, нет проблем, рад, что смог помочь.

3. У меня на моем ноутбуке локально установлен docker для рабочего стола, где я протестировал ваше предложение, и оно сработало. Теперь я скопировал nginx.conf и docker-compose.yml в amazonlinux (ec2). У меня там установлен docker (далее — docs.aws.amazon.com/AmazonECS/latest/developerguide /… ) … Проблема в том же docker-compose, и ngnix.config выдает java.net.ConnectException: соединение отказано при вызове ngnix-server: 80 … Любые предложения помогут.

4. Теперь он отсортирован. в порту 80 было запущено что-то еще. Поэтому я изменил его на 4000. Теперь все отсортировано. Комментарий здесь, поскольку это может быть полезно кому-то еще