Глава 5: Изоляция — Запуск BookStack в Docker
Теперь, когда сетевая инфраструктура настроена, мы переходим непосредственно к серверу Debian. Мы развернем BookStack внутри изолированного Docker-контейнера. Это избавит нас от необходимости вручную устанавливать в систему PHP, веб-сервер Apache и модули, а также гарантирует, что приложение не будет конфликтовать с другим софтом на сервере.
1. Подготовка директорий для данных
Для того чтобы все ваши статьи, настройки и загруженные картинки не пропали при обновлении или перезапуске Docker-контейнеров, нам нужно вынести их на жесткий диск хост-машины (в вашу домашнюю папку, которую потом легко бэкапить).
Подключитесь к серверу по SSH и создайте структуру папок для проекта:
mkdir -p ~/bookstack/app && mkdir -p ~/bookstack/db && cd ~/bookstack
2. Создание файла конфигурации Docker Compose
Мы будем использовать Docker Compose для одновременного запуска двух контейнеров: самого BookStack и базы данных MariaDB. Создайте файл манифеста:
nano docker-compose.yml
Вставьте в него следующий конфигурационный код (используются надежные и регулярно обновляемые образы от сообщества linuxserver.io):
version: '2'
services:
bookstack-db:
image: lscr.io/linuxserver/mariadb:latest
container_name: bookstack_db
environment:
- PID=1000
- PGID=1000
- TZ=Europe/Moscow
- MYSQL_ROOT_PASSWORD=your_super_secret_root_password
- MYSQL_DATABASE=bookstackapp
- MYSQL_USER=bookstackuser
- MYSQL_PASSWORD=your_secure_db_password
volumes:
- ./db:/config
restart: unless-stopped
bookstack:
image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Moscow
- APP_URL=https://wiki.myserver.ru
- DB_HOST=bookstack-db
- DB_USER=bookstackuser
- DB_PASS=your_secure_db_password
- DB_DATABASE=bookstackapp
volumes:
- ./app:/config
ports:
- "6875:80"
restart: unless-stopped
3. Важные параметры, которые нужно изменить:
TZ=Europe/Moscow— укажите ваш актуальный часовой пояс.MYSQL_ROOT_PASSWORD— придумайте сложный пароль для главного администратора базы данных.MYSQL_PASSWORDиDB_PASS— придумайте и пропишите одинаковый надежный пароль для пользователя базы данных (эти поля должны строго совпадать в обоих блоках!).APP_URL— укажите ваш будущий защищенный адрес с https:// (например,https://wiki.myserver.ru). BookStack жестко привязывается к этому URL для генерации внутренних ссылок и стилей.- Порты (ports): Обратите внимание на строку
- "6875:80". Контейнер BookStack внутри себя слушает стандартный 80-й порт, но мы "пробрасываем" его наружу на свободный порт сервера 6875. Именно на этот порт в следующей главе мы натравим Nginx.
Сохраните файл (в nano: Нажмите Ctrl+O, затем Enter, для выхода — Ctrl+X).
4. Запуск контейнеров
Запустите сборку и старт контейнеров в фоновом режиме (демоне):
sudo docker compose up -d
Проверьте статус запущенных контейнеров:
sudo docker ps
Оба контейнера (bookstack и bookstack_db) должны иметь статус Up (healthy) или просто Up.
5. Промежуточная проверка
Сейчас BookStack уже работает внутри вашего сервера. Вы можете временно проверить это, открыв браузер на рабочем компьютере в локальной сети и перейдя по адресу: http://192.168.1.100:6875 (где вместо 192.168.1.100 укажите локальный IP вашего сервера).
Примечание: На данном этапе сайт может отображаться некорректно (без картинок или стилей) или выдавать ошибку перенаправления. Это абсолютно нормально! Приложение ждет, когда к нему обратятся по протоколу HTTPS через доменное имя, которое мы прописали в APP_URL.
Итог главы: Движок BookStack запущен и крутится внутри Docker, изолированно сохраняя свои данные в папки на сервере. В следующей главе мы настроим Nginx, который примет на себя роль диспетчера на входе в сервер.
Нет комментариев для отображения
Нет комментариев для отображения