Установка через Docker (внешний Nginx)
В этом варианте контейнер приложения NocoBase и контейнер Nginx запускаются отдельно. Можно начать с Установка через Docker (встроенный Nginx), а затем переключить точку входа на внешний контейнер Nginx.
Когда использовать этот вариант
- Вы хотите разнести NocoBase и веб-сервер по разным контейнерам
- Вы хотите самостоятельно управлять конфигурацией Nginx и опубликованными портами
- Вы хотите публиковать во внешнюю сеть только контейнер прокси
Пример docker-compose.yml
Если вам нужен образ full, замените latest-no-nginx на latest-full-no-nginx.
Проброс 13000:80 нужен только для удобного локального тестирования, чтобы не занимать стандартные порты хоста напрямую. В production обычно не оставляют 13000:80; вместо этого внешний контейнер Nginx напрямую публикует порты хоста 80 и 443.
Ключевые моменты
NOCOBASE_EXTRACT_CLIENT_ASSETS=trueизвлекает клиентские ресурсы и генерирует конфигурацию проксиNOCOBASE_PROXY_PROVIDER=nginxуказывает, что нужно сгенерировать конфигурацию NginxNOCOBASE_PROXY_UPSTREAM_HOST=appпозволяет контейнеру Nginx обращаться к сервисуappчерез сеть Compose./storageнужно смонтировать и вapp, и вnginx, чтобы они могли совместно использовать конфигурацию прокси, статические ресурсы и загруженные файлы- Контейнер
nginxдолжен дождаться созданияnocobase.conf, а затем с помощьюln -sfсвязать его с/etc/nginx/conf.d/default.conf - Созданная конфигурация передаёт в NocoBase как маршрут
/files/в пределахAPP_PUBLIC_PATH, так и корневой маршрут/files/, обеспечивая авторизованный предпросмотр и скачивание файлов - Если вы используете внешний контейнер Nginx, пусть контейнер
nginxуправляет пробросом порта хоста. Для тестирования можно начать с13000:80; в production обычно напрямую публикуют порты хоста80и443, а сервисуappне нужно публиковать порт на хост
Если используется локальный Nginx на хосте
Если ваш Nginx установлен прямо на хосте, а не работает в Docker-контейнере, лучше использовать отдельный docker-compose.yml. В этом варианте сервис app должен публиковать порт на хост, а переменные прокси должны быть заданы с точки зрения хоста.
Можно использовать такой docker-compose.yml:
В этом варианте:
NOCOBASE_PROXY_STORAGE_PATHдолжен быть абсолютным путём к каталогуstorageна хостеNOCOBASE_PROXY_UPSTREAM_HOSTдолжен быть127.0.0.1- Сервис
appдолжен сохранитьports, чтобы локальный Nginx мог обращаться к приложению через127.0.0.1:13000
После запуска контейнера app дождитесь генерации файла конфигурации, а затем создайте ссылку на него в локальном каталоге конфигурации Nginx:
Если ваш локальный Nginx не использует каталог conf.d, замените путь ссылки на свой путь конфигурации. Обычно безопаснее оставлять nocobase.conf как файл, который подключается из контекста http {}, а не копировать его содержимое вручную.
Если вы управляете Nginx самостоятельно и не используете созданную конфигурацию, убедитесь, что /files/ и соответствующий маршрут в пределах APP_PUBLIC_PATH передаются в NocoBase до правил резервной страницы SPA. Полный пример см. в разделе Обратный прокси Nginx.
Связанные ссылки
- Установка через Docker (встроенный Nginx) — Начните с одноконтейнерного варианта
- Прокси статических ресурсов Nginx — Подробнее о сгенерированной конфигурации Nginx

