Обзор развертывания Redmine на сервере¶
Предварительные требования¶
Для корректной работы приложения требуются следующие условия:
-
Установленный Docker и Docker Compose.
-
Доступ к портам 80 (HTTP) и 443 (HTTPS).
-
Наличие доменного имени, соответствующего шаблону конфигурации.
-
Права суперпользователя (root) для управления директориями в
/optи/data.
FDQN итоговой панели на домене hostkey.in¶
Для доступа к приложению используется следующий шаблон домена:
| Параметр | Значение |
|---|---|
| Префикс | redmine |
| Домен | hostkey.in |
| Полный шаблон | redmine{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
В процессе работы приложения используются следующие пути:
-
/opt/redmine— рабочая директория приложения, содержащая конфигурацию Docker Compose. -
/data/nginx/user_conf.d/— директория с конфигурационными файлами Nginx для управления проксированием и SSL. -
/data/nginx/nginx-certbot.env— файл переменных окружения для контейнера Nginx.
Процесс установки приложения¶
Развертывание Redmine выполняется путем настройки Docker-окружения:
-
Создается рабочая директория
/opt/redmine. -
Формируется конфигурационный файл
docker-compose.ymlна основе параметров сервера. -
Генерируется конфигурационный файл Nginx для обеспечения обратного проксирования и поддержки SSL.
-
Запускается контейнерная среда с помощью команды
docker compose up -d.
Приложение использует автоматическую генерацию секретных ключей (REDMINE_SECRET_KEY) и паролей для базы данных (REDMINE_MYSQL_PASSWORD) в целях обеспечения безопасности.
Контейнеры Docker и их запуск¶
Для работы приложения используется группа контейнеров, описанных в docker-compose.yml. Все сервисы имеют политику автоматического перезапуска при сбоях.
База данных¶
-
Имя образа:
mysql:8.0 -
Имя контейнера:
redmine-mysql -
Переменные окружения:
-
MYSQL_ROOT_PASSWORD: пароль суперпользователя базы данных. -
MYSQL_DATABASE:redmine.
Основное приложение¶
-
Имя образа:
redmine -
Имя контейнера:
redmine -
Переменные окружения:
-
REDMINE_DB_MYSQL:db(имя сервиса базы данных). -
REDMINE_DB_PASSWORD: пароль для подключения к базе. -
REDMINE_SECRET_KEY_BASE: уникальный секретный ключ приложения. -
Зависимости: Запуск происходит только после успешной проверки состояния (healthcheck) контейнера базы данных.
Прокси-сервер и SSL¶
-
Имя образа:
jonasal/nginx-certbot:latest -
Имя контейнера:
redmine-nginx -
Порты: 80 (HTTP), 443 (HTTPS).
-
Тома (volumes):
-
nginx_secrets:/etc/letsencrypt— для хранения SSL-сертификатов. -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d— для пользовательских конфигураций Nginx. -
Переменные окружения:
-
CERTBOT_EMAIL:hkadm@hostkey.com.
Базы данных¶
База данных развернута в отдельном контейнере Docker (MySQL 8.0). Данные изолированы внутри контейнера и доступны приложению Redmine по внутреннему сетевому имени сервиса db.
Инструкция по обновлению приложения¶
Для обновления приложения необходимо обновить образы контейнеров до актуальных версий:
-
Перейти в директорию с конфигурацией:
cd /opt/redmine -
Выполнить команду:
docker compose pull && docker compose up -d
Расположение конфигурационных файлов и данных¶
-
Конфигурация Docker Compose:
/opt/redmine/docker-compose.yml -
Конфигурация Nginx (проксирование):
/data/nginx/user_conf.d/{prefix}{server_id}.{zone}.conf -
Данные SSL-сертификатов: хранятся в именованном томе
nginx_secrets.
Доступные порты для подключения¶
| Протокол | Порт | Назначение |
|---|---|---|
| HTTP | 80 | Перенаправление на HTTPS |
| HTTPS | 443 | Основной доступ к интерфейсу Redmine |