Ghost это очень мощная и в то же время лаконичная платформа для блогинга, а docker-compose прекрасный инструмент для установки и конфигурирования программ с помощью одного .yml файла. В этой статьей я хочу коротко рассказать о том как мы быстро настроили блог для нашего проекта с помощью docker-compose.
Начнем!
Во-первых, проверьте что на вашей машине установлен docker
и docker-compose
. Команды приведенные ниже должны вывести версии этих утилит.
docker -v
docker-compose -v
В Docker Hub есть официальный образ с Ghost, его мы и будем использовать в нашем docker-compose.yml
файле.
Создадим docker-compose.yml
файл
touch docker-compose.yml
И вставим в него следующие строки
version: '2'
services:
web:
restart: always
image: ghost
ports:
- "80:2368"
volumes:
- {path_to_save_ghost_data}:/var/lib/ghost
Заменим {path_to_save_ghost_data}
на путь в котором Ghost будет хранить свою конфигурацию и БД, например у меня это /home/administrator/ghost
.
Все готово для того чтобы запустить Ghost на вашей машине:
docker-compose up -d
Предлагаю проверить что Ghost завелся и работает. Откройте в своем браузере адрес машины на которой установлен Ghost — вы должны увидеть стандартное приветствие.
В принципе Ghost работает и можно все оставить как есть, но я рекомендую чуть-чуть настроить конфигурацию.
Остановим наш блог:
docker-compose down
Откроем конфигурационный файл, находящийся по адресу {path_to_save_ghost_data}/config.js
, в моем случае это /home/administrator/ghost/config.js
.
Найдем секцию development
(да! не production
, т.к. по некоторым причинам невозможно запустить Ghost в production режиме внутри Docker, если вы знаете способ расскажите о нем в комментариях).
Укажите адрес своего блога и адрес отправителя, должно получится примерно так:
development: {
url: 'https://blog.ambar.cloud', // адрес вашего блога
mail: {
from: 'hello@ambar.cloud', // адрес отправителя
},
database: {
client: 'sqlite3',
connection: {
filename: path.join(process.env.GHOST_CONTENT, '/data/ghost-dev.db')
},
debug: false
},
server: {
host: '0.0.0.0',
port: '2368'
},
paths: {
contentPath: path.join(process.env.GHOST_CONTENT, '/')
}
},
Запустим блог, и проверим что все работает
docker-compose up -d
На этом все, спасибо за внимание! В следующей статье я расскажу как быстро настроить OpenVPN c помощью docker-compose.
Комментарии (5)
Defman21
06.04.2017 18:53version: '2' services: ghost: image: ghost:latest restart: always volumes: - ghost:/var/lib/ghost environment: - NODE_ENV=production
Вот так запускается ghost в production mode.
sochix
06.04.2017 18:57К сожалению нет, у меня он так падает с ошибкой. А именно ругался на ошибку в путях, для этого я прописал:
paths: { contentPath: path.join(process.env.GHOST_CONTENT, '/') },
Но этого было не достаточно. Если у вас есть еще какие-либо предложения готов выслушать
Defman21
06.04.2017 19:02production: { url: 'url', mail: {}, database: { client: 'sqlite3', connection: { filename: path.join(process.env.GHOST_CONTENT, '/data/ghost.db') }, debug: false }, server: { host: '0.0.0.0', port: '2368' }, paths: { contentPath: path.join(process.env.GHOST_CONTENT, '/') } }
У меня такой конфиг. Все работает :)
Amet13
07.04.2017 18:58+1Остановим наш блог:
docker-compose up -d
Так остановим или поднимем?
Статья из области микрозапись в свой бложек, но как туториал для хабра не годится, имхо.
В следующей статье я расскажу как быстро настроить OpenVPN c помощью docker-compose.
Зачем? Уже все давным давно сделано и не раз.
methodx
Полезная информация. Аналогично разворачиваю, обновляю и работаю с ghost но только без composer.