Есть docker-compose файл, запускаю там nginx в контейнере и 2 сервиса (1 на node js, второй на python).
Подключение к 1 сервису на node js работает, подключение ко 2 нет. в логах nginx ошибка: "111 connection refused while connecting to upstream". В docker-conpose у сервисов конфигурация одинаковая. Я решил, что ошибка должна быть в сервисе на python.
Я пробовал выяснить где ошибка так:
1) запустил сервис в контенейре (без compose - просто отдельно) - работает (и если внутри отправляю запрос и если снаружи к контенейру тоже)
2) если же запускаю через compose, но без nginx, то работает только запрос внутри контейнера. В снаружи ошибка "connection refused" .
Следовательно, ошибка в файле docker-compose. Но я не понимаю где.
Помогите, пожалуйста, в чем может быть проблема?
docker-compose.yml
version: '3.9'
services:
nginx-proxy:
image: nginx:stable-alpine
container_name: nginx-proxy
ports:
- 80:80
- 443:443
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
networks:
- network
service1:
build: ./code1
container_name: service1
restart: unless-stopped
networks:
- network
service2:
build: ./code2
container_name: service2
restart: unless-stopped
networks:
- network
networks:
network:
driver: bridge
Dockerfile service1
FROM node:16.13.0
WORKDIR /usr/src/service1
COPY tsconfig.json ./
COPY package*.json ./
COPY src/ ./src/
RUN npm install && npm run compile
EXPOSE 8081
CMD [ "node", "dist/index.js" ]
Dockerfile service2
FROM python:3.7
WORKDIR /usr/src/service2
COPY main.py ./
RUN pip install bottle && pip install secure-smtplib
EXPOSE 8086
CMD [ "python", "main.py" ]
nginx.conf
worker_processes auto;
events {
worker_connections 1024;
}
http {
upstream service1-stream {
server service1:8081;
}
upstream service2-stream {
server service2:8086;
}
server {
listen 80;
listen [::]:80;
server_name test1.ru www.test1.ru;
location / {
proxy_pass service1-stream;
}
}
server {
listen 80;
listen [::]:80;
server_name ser.test1.ru www.ser.test1.ru;
location / {
proxy_pass service2-stream;
}
}
}