Скопировать содержимое репозитория в новую директорию проекта.
Конфиг nginx находится по пути:
cfg/template_cfg.conf
Необходимо:
-
Переименовать конфиг
template_cfg.confв соответствии с названием проекта. -
Изменить путь
rootв соответствии с названием проекта:root /opt/msp/project-name/;
В Dockerfile, в блоке настройки Nginx, внести следующие изменения:
-
Переименовать конфиг nginx:
COPY cfg/template_cfg.conf /etc/nginx/conf.d/project-name.conf -
Изменить название проекта:
COPY --from=build /usr/src/app/build /opt/msp/project-name -
Обновить пути к
entrypoint.sh:COPY entrypoint.sh /opt/msp/project-name/entrypoint.sh ENTRYPOINT ["/opt/msp/project-name/entrypoint.sh"]
Обновить путь до config.js:
CONFIG_PATH="/opt/msp/project-name/config.js"Пример структуры:
window.config = {
APP_TOKEN: '${APP_TOKEN:-"default_token"}',
NEW_FIELD: '${NEW_FIELD:-"default_value"}'
};
⚠️ Если значение не строка — не используйте кавычки:
NEW_BOOL_VALUE: ${NEW_BOOL_VALUE:-true}
Вот более аккуратный, структурированный и «документационный» вариант с пояснениями и примерами 👇
Для корректного деплоя приложения в поддиректорию сайта например:
https://domain.com/my-app/
используется переменная окружения PUBLIC_PATH.
Она определяет базовый путь, относительно которого будут загружаться статические файлы (JS, CSS, assets) и работать роутинг приложения.
Значение PUBLIC_PATH необходимо передать на этапе сборки, так как оно используется бандлером (Vite / Webpack) при генерации статических файлов:
docker build \
--build-arg PUBLIC_PATH=/test \
-t my-app .
⚠️ Важно Путь должен начинаться со слэша (/) и не заканчиваться слэшем.
Переменная также должна быть доступна во время запуска контейнера, чтобы приложение и сервер (nginx / node) работали в одном и том же контексте:
docker run \
-e PUBLIC_PATH=/test \
my-appПри значении:
PUBLIC_PATH=/testприложение будет доступно по адресу:
https://domain.com/test/
и все статические ресурсы будут корректно загружаться относительно этого пути.
-
Используйте одно и то же значение
PUBLIC_PATHпри сборке и запуске контейнера -
Для деплоя в корень домена используйте:
PUBLIC_PATH=/
Для получения значений из config.js используйте функцию getConfigProperty из пакета isp-ui-kit.
Пример:
getConfigProperty(
'APP_TOKEN',
import.meta.env.DEV_APP_TOKEN
)