Ghost + Docker
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 initial page


В принципе 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)


  1. methodx
    06.04.2017 18:53

    Полезная информация. Аналогично разворачиваю, обновляю и работаю с ghost но только без composer.


  1. Defman21
    06.04.2017 18:53

    version: '2'
    
    services:
        ghost:
            image: ghost:latest
            restart: always
            volumes:
                - ghost:/var/lib/ghost
            environment:
                - NODE_ENV=production

    Вот так запускается ghost в production mode.


    1. sochix
      06.04.2017 18:57

      К сожалению нет, у меня он так падает с ошибкой. А именно ругался на ошибку в путях, для этого я прописал:


       paths: {
                  contentPath: path.join(process.env.GHOST_CONTENT, '/')
              },
      

      Но этого было не достаточно. Если у вас есть еще какие-либо предложения готов выслушать


      1. Defman21
        06.04.2017 19:02

        production: {
            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, '/')
            }
        }

        У меня такой конфиг. Все работает :)


  1. Amet13
    07.04.2017 18:58
    +1

    Остановим наш блог:
    docker-compose up -d

    Так остановим или поднимем?

    Статья из области микрозапись в свой бложек, но как туториал для хабра не годится, имхо.

    В следующей статье я расскажу как быстро настроить OpenVPN c помощью docker-compose.

    Зачем? Уже все давным давно сделано и не раз.