Docker Compose для Ghost CMS (Blogging) + MySQL 8 + Nginx SSL
Готовый рецепт docker-compose.yml для блоговой платформы Ghost 5: контейнер Ghost CMS, база данных MySQL 8, Nginx SSL прокси и сохранение контента в томах.
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
docker-compose.yml
# docker-compose.yml
version: '3.8'
services:
ghost:
image: ghost:5-alpine
container_name: ghost_app
restart: always
ports:
- "2368:2368"
environment:
database__client: mysql
database__connection__host: db
database__connection__user: ghost_user
database__connection__password: GhostSecretPassword2026!
database__connection__database: ghost_db
url: https://blog.example.com
volumes:
- ghost_content:/var/lib/ghost/content
depends_on:
- db
networks:
- ghost_net
db:
image: mysql:8.0
container_name: ghost_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: GhostSecretPassword2026!_root
MYSQL_DATABASE: ghost_db
MYSQL_USER: ghost_user
MYSQL_PASSWORD: GhostSecretPassword2026!
volumes:
- db_data:/var/lib/mysql
networks:
- ghost_net
networks:
ghost_net:
driver: bridge
volumes:
ghost_content:
db_data:
Разбор ключевых директив конфигурации
Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).
| Директива / Блок | Рекомендуемое значение | Зачем нужно и системное влияние (CPU / RAM / I-O) |
|---|---|---|
url: https://{{domain}} |
URL блога с HTTPS | Критически важно задавать протокол https:// во избежание бесконечных редиректов и Mixed Content ошибок. |
restart: unless-stopped |
unless-stopped | Обеспечивает автоматический перезапуск контейнеров при сбое демона Docker или перезагрузке VDS. |
logging / max-size: 10m |
max-size: 10m, max-file: 3 | Ограничивает размер логов контейнеров на диске, предотвращая переполнение дискового пространства NVMe (100% Disk Full). |
volumes / app_data |
named volume / local bind | Выносит базу данных и загружаемые файлы в постоянные тома, предотвращая потерю данных при обновлении контейнеров. |
Рекомендуемые системные требования VDS под этот стек
Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.
Оптимальный сайзинг: 1-2 vCPU, 2 GB RAM, 30 GB NVMe
Расчетная нагрузка: Ghost блог до 20 000 хостов/день
2 CPU / 2 GB NVMe
Timeweb Cloud
Рекомендуемые ресурсы
1-2 vCPU /
2 GB RAM /
30 GB NVMe
2 vCPU / 2 GB RAM
Selectel
Рекомендуемые ресурсы
1-2 vCPU /
2 GB RAM /
30 GB NVMe
Turbo 2 GB
Beget
Рекомендуемые ресурсы
1-2 vCPU /
2 GB RAM /
30 GB NVMe
Онлайн-утилиты SysKit для проверки этого сервера
Протестируйте корректность применения конфигурации прямо сейчас в один клик.
Частые ошибки при настройке и их решение (FAQ)
Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.
Где сохраняются загруженные изображения и темы Ghost?
В именованном томе `ghost_content`, который монтируется в `/var/lib/ghost/content`.
Как запустить и остановить стек в фоновом режиме?
Запуск: `docker compose up -d`. Остановка: `docker compose down`. Просмотр логов: `docker compose logs -f`.
Ошибка: Port already allocated (порт 80/443 занят)
Проверьте, не запущен ли локальный Nginx или Apache: `systemctl stop apache2` или `systemctl stop nginx`, либо измените внешний порт в `ports: ["8080:80"]`.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.