Я пытаюсь докеризировать приложение, написанное на React с использованием проксирования nginx'а. Для nginx'а использую образ с докерхаба, для nodejs пишу свой Dockerfile, помимо этого, для nginx'а пишу свой конфиг и использую его.
При запуске приложения я получаю 502 ошибку (Bad Gateway) и в логи приходит такая ошибка:
*16 connect() failed (111: Connection refused) while connecting to upstream, client: 172.28.0.1, server: ~.*, request: "GET / HTTP/1.1", upstream: "172.28.0.2:3000", host: "localhost"
*1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.28.0.1, server: ~.*, request: "GET /favicon.ico HTTP/1.1", upstream: "172.28.0.2:3000/favicon.ico", host: "localhost", referrer: "localhost"
Структура проекта следующая:
- project
- app
- package.json *and more*
- docker
- confing
- nginx
- default.conf
- dockerfile
- node
- Dockerfile
docker-compose.yml
Мой Dockerfile для Nodejs:
FROM node:13.12.0-alpine
# set working directory
WORKDIR /home/node/app
# install app dependencies
COPY package*.json ./
RUN npm install react-scripts -g
RUN npm install
# add app
COPY . ./
# start app
CMD ["npm", "start"]
Мой default.conf для nginx:
server {
listen 80;
server_name ~.*;
location / {
root /var/www/html/public;
proxy_pass http://nodejs:3000;
}
}
Мой docker-compose.yml:
version: '3'
services:
nodejs:
build:
context: ../app
dockerfile: ./../docker/dockerfile/node/Dockerfile
container_name: nodejs
networks:
- my-network
restart: unless-stopped
volumes:
- ../app:/home/node/app
expose:
- 3000
environment:
- NODE_ENV=development
nginx:
networks:
- my-network
image: nginx:latest
container_name: user-nginx
volumes:
- ../app:/var/www/html
- ./logs/nginx:/var/log/nginx
- ./config/nginx:/etc/nginx/conf.d
ports:
- 80:80
networks:
portfolio:
name: my-network
driver: bridge