#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;
}
}
}
Итак, выше приведены два файла
- XXXX заменяются на redact. Поэтому, пожалуйста, игнорируйте
- nginx работает по своему собственному значению, когда я вызываю http://localhost:5001 это маршруты и т.д., НО
- Из 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. Теперь все отсортировано. Комментарий здесь, поскольку это может быть полезно кому-то еще