Как правильно настроить сайт на express.js на docker с nginx?
Всем привет, подскажите, в чём ошибка, я пытаюсь настроить проект на express.js, пытаюсь развернуть на docker'e, не могу подключить nginx, сайт не запускается вообще, вот docker-compose:
version: '3.8'
services:
backend:
container_name: my-server
image: my-server:0.2
build:
context: .
ports:
- "80:5001"
environment:
- EXTERNAL_PORT=5001
depends_on:
- node_db
node_db:
container_name: my_db
image: "postgres:13.5"
ports:
- "5432:5432"
volumes:
- nps_data:/var/lib/postgresql/data
environment:
- DB_NAME=name
- DB_USER=admin
- DB_PASSWORD=password
- DB_HOST=my_db
- DB_PORT=5432
- POSTGRES_PASSWORD=mysecretpassword
nginx:
image: nginx:1.19
volumes:
- .\nginx:/etc/nginx/conf.d
ports:
- 80:80
- 443:443
env_file:
- .env
depends_on:
- backend
volumes:
nps_data: {}
На самом докере сайт поднялся, но на моем ip сайта нет. default.conf
server {
listen 80 default_server;
server_name 44.11.22.33 www.domain.com;
location / {
proxy_set_header Host $host;
proxy_pass http://backend:5001;
}
}
Ответы (1 шт):
Порт 80 пытаются занять оба сервиса nginx и backend. Фронтом я так понимаю должен быть nginx и он должен слушать 80 и 443 порты. Сервис backend на то и бэкенд, чтобы не быть доступным извне. Поэтому порт 80 не нужно пробрасывать в него.
Таким образом проблема с портами будет решена.
Далее возникнет проблема с https. У вас сервис nginx слушает 80 и 443 порты, конфиг только для 80 порта. Т.е. приложение не будет доступно по https. Надо добавить в default.conf директивы listen 443 и сертификаты.