Поиск по сайту:

Как развернуть блог-призрак с помощью Docker


Ghost — это популярная платформа для создания контента, написанная на JavaScript с помощью Node.js. Программное обеспечение с открытым исходным кодом поставляется со всем необходимым для создания, оформления, публикации и ведения собственного блога.

Ghost — это программное обеспечение с открытым исходным кодом, поддерживаемое официальной службой Ghost(Pro). Вы можете установить его на свой собственный сервер, добавив Node.js и используя Ghost CLI для настройки своего стека. Ghost также доступен в виде образа Docker, который объединяет все зависимости для вас.

В этом руководстве мы будем использовать Docker, чтобы быстро запустить новый блог Ghost. Прежде чем продолжить, установите Docker и Docker Compose на свой хост. Хотя вы можете развернуть Ghost, используя только Docker, Compose упрощает предоставление и управление значениями конфигурации, которые потребуются вашему сайту для начала работы.

Запуск контейнера-призрака

Вы можете запустить базовый сайт Ghost с помощью одной команды Docker:

docker run -d -p 2368:2368 --name simple-ghost ghost:4

При этом Ghost будет подключен к порту по умолчанию 2368. Посетите http://localhost:2368, чтобы просмотреть свой сайт, или http://localhost:2368/ghost, чтобы получить доступ панель администратора Ghost. Вам нужно будет указать некоторые настройки первого запуска, чтобы завершить установку Ghost и создать начальную учетную запись пользователя.

Этот подход отлично подходит для быстрых экспериментов, если вы только пробуете Ghost. Однако мы еще не настроили постоянное хранилище, поэтому ваши данные будут потеряны при остановке контейнера.

Вот более полный пример, в котором Docker Compose используется для настройки Ghost с томом Docker. Смонтируйте том в каталог /var/lib/ghost/content, чтобы хранить данные Ghost вне контейнера.

version: "3"
services:
  ghost:
    image: ghost:4
    ports:
      - 8080:2368
    environment:
      url: https://ghost.example.com
    volumes:
      - ghost:/var/lib/ghost/content
    restart: unless-stopped
volumes:
  ghost:

Этот файл Compose демонстрирует несколько других изменений в конфигурации контейнера. Порт 2368, предоставляемый контейнером, сопоставляется с портом 8080 на вашем хосте, что позволяет вам использовать localhost:8080 для доступа к Ghost. Политика перезапуска изменена на unless-stopped, чтобы ваш сайт автоматически открывался после перезагрузки хоста.

Теперь используйте Compose, чтобы открыть свой сайт:

docker-compose up -d

Настройка призрака

Ghost поддерживает несколько параметров конфигурации для настройки его работы и настройки вашего сайта. Когда вы используете Docker, вы можете указать эти значения как переменные среды.

Файлы конфигурации Ghost используют вложенные объекты JSON для хранения значений. Вы можете преобразовать ключи JSON в их аналоги переменных среды, заменив каждый уровень дерева символами __ (двойное подчеркивание):

# in a JSON config file
{
    "mail": {
        "transport": "SMTP"
    }
}

# as an environment variable
mail__transport=SMTP

Используйте поле environment в файле docker-compose.yml, чтобы указать следующие параметры для контейнера Ghost:

version: "3"
services:
  ghost:
    environment:
      mail__transport: SMTP

Обратитесь к документации Ghost за исчерпывающим списком поддерживаемых опций. Вы можете настроить почтовую систему, использовать отдельный URL-адрес для доступа к панели администратора, переопределить пути к каталогам и переключить параметры конфиденциальности с помощью доступных переменных среды.

Параметр url особенно важен, поскольку он требуется для рабочих сайтов. Это определяет URL-адрес, который внешние посетители будут использовать для доступа к вашему сайту. Установите это на доменное имя вашего сайта в вашем docker-compose.yml:

environment:
  url: https://ghost.example.com

Использование внешней базы данных

По умолчанию Ghost использует базу данных SQLite, которая хранится в виде файла в каталоге содержимого вашего сайта. Он будет сохранен как часть тома Docker, созданного выше. Вместо этого вы можете использовать внешнюю базу данных MySQL, указав сведения о подключении через переменные среды с префиксом database:

services:
  ghost:
    # ...
    environment:
      database__client: mysql
      database__connection__host: ghost_mysql
      database__connection__user: root
      database__connection__password: databasePw
      database__connection__database: ghost

  ghost_mysql:
    image: mysql:5.7
    expose:
      - 3306
    environment:
      MYSQL_DATABASE: ghost
      MYSQL_ROOT_PASSWORD: databasePw
    volumes:
      - mysql:/var/lib/mysql
    restart: unless-stopped

volumes:
  mysql:

Этот файл Compose включает другую службу, которая запускает MySQL в дополнительном контейнере. Переменные среды устанавливаются в службе Ghost для предоставления сведений о соединении с MySQL. Для сохранения файлов хранилища базы данных создается отдельный том mysql.

Compose автоматически связывает сервисы с сетью Docker. Ghost может получить доступ к контейнеру ghost_mysql, используя имя службы в качестве имени хоста. Если вы хотите использовать существующую базу данных MySQL без Dockerized, вы можете удалить определение службы ghost_mysql и указать вместо него IP-адрес вашего сервера MySQL, имя схемы базы данных и учетные данные пользователя.

Проксирование трафика в ваш контейнер

Теперь ваш сайт Ghost должен работать, но он по-прежнему доступен через порт 8080. Если вы не будете запускать что-либо еще на своем хосте, вы можете вместо этого привязать порт 80 или 443, чтобы сделать его напрямую доступным через доменное имя вашего сервера. В других ситуациях используйте обратный прокси-сервер, например NGINX, для перенаправления трафика из Интернета в контейнер Ghost.

Добавьте NGINX на свой хост:

sudo apt update
sudo apt install nginx

# Allow HTTP/HTTPS traffic through the firewall
sudo ufw allow 80
sudo ufw allow 443

Определите хост NGINX для своего сайта в /etc/nginx/sites-available/ghost.example.com:

server {
    
    server_name ghost.example.com;
    index index.html;

    access_log /var/log/nginx/ghost_access.log
    error_log /var/log/nginx/ghost_error.log error;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect off;
        proxy_set_header Host $http_host;
        proxy_set_header X-Original-IP $remote_addr;
    }

}

Этот файл настраивает NGINX для перенаправления трафика на ghost.example.com через порт 8080 на localhost, который ранее был привязан к вашему контейнеру Ghost. Включите новый файл конфигурации, связав его с каталогом sites-enabled NGINX:

sudo ln -s /etc/nginx/sites-available/ghost.example.com /etc/nginx/sites-enabled/ghost.example.com

Перезапустите NGINX, чтобы применить изменения:

sudo service nginx restart

Теперь вы можете настроить SSL с помощью бесплатного сервиса Let’s Encrypt. Добавьте Certbot от Let’s Encrypt для автоматизации выдачи и обновления сертификатов:

sudo apt install certbot

Используйте Certbot для получения сертификатов для вашего сайта NGINX:

sudo certbot --nginx

Certbot прочитает ваши сайты NGINX и сгенерирует сертификаты для их полей конфигурации server_name. Он автоматически перенастроит NGINX для обслуживания сертификата на вашем сайте. Теперь вы сможете получить доступ к своему блогу Ghost, посетив свое доменное имя через HTTPS.

Хотя в этой статье мы сосредоточились на NGINX, существуют и другие варианты проксирования веб-трафика через ваш контейнер Ghost. Traefik — ведущий претендент, получивший первоклассную поддержку Docker. Развертывание экземпляра Traefik позволит вам настроить маршрутизацию и автоматический SSL с помощью меток Docker, которые вы установили в своем контейнере Ghost.

Управление обновлениями Ghost

Вы можете обновить Ghost, заменив контейнер Docker вашего сайта на новый с обновленной версией образа Ghost. Поскольку содержимое вашего сайта безопасно хранится в отдельном томе Docker, оно будет сохранено при повторном подключении тома к новому контейнеру.

Если вы помечаете основную версию образа в файле docker-compose.yml, например ghost:4, вы можете выполнить обновление до последней дополнительной версии, запустив docker-compose up с флагом --pull:

docker-compose up -d --pull

Это указывает Compose проверять наличие изменений в теге изображения и извлекать обновленную версию, когда она доступна. Он заменит ваши контейнеры новыми экземплярами, используя последнюю версию образа, соответствующую тегу.

Если вы хотите изменить используемый тег, обновите ссылку image в файле docker-compose.yml. Повторите docker-compose up -d, чтобы извлечь образ и запустить новые контейнеры. Например, если Ghost v5 выйдет в будущем, вы можете изменить свой docker-compose.yml на image: ghost:5, чтобы перейти на новую основную версию.

Docker упрощает получение обновлений Ghost, загружая последний образ и заменяя ваши контейнеры. Тем не менее, вы все равно должны обращать внимание на изменения, которые вы применяете. Проконсультируйтесь с журналом изменений Ghost, прежде чем приступать к серьезному обновлению, если вам нужно предпринять дополнительные шаги для завершения миграции.

Использование Ghost-Cli

ghost-cli доступен в образе Ghost Docker. Эта утилита используется для настройки и обслуживания Ghost, когда он установлен в традиционных неконтейнерных средах.

Вы можете получить доступ к ghost-cli через Docker, используя команду ghost с docker exec. Вот пример, который использует подкоманду version, чтобы показать версию Ghost, которую вы используете:

docker exec -it my-ghost-container ghost version

Хотя многие компоненты ghost-cli будут работать, некоторые из них не поддерживаются в Dockerized средах. Такие команды, как install, setup, update и uninstall, либо не работают, либо бессмысленны, либо противоречат рекомендациям. при использовании с образом Ghost Docker. Ghost и все его зависимости встроены в образ, и их не нужно «устанавливать»; обновления следует применять, запуская новый контейнер, как показано выше.

Краткое содержание

Ghost — это современная платформа для ведения блогов, которая предлагает чистую панель инструментов, широкие возможности для создания контента, а также расширенную поддержку тем и настроек. Использование Docker для размещения Ghost упрощает процедуру установки, уменьшает количество необходимых пакетов ОС и помогает сделать ваш сайт более переносимым в разных средах.

Как только ваш Dockerized блог заработает, используйте стандартную документацию по разработке Ghost для управления своим сайтом и его содержимым. Вы можете настроить членство, информационные бюллетени, пользовательские темы и интеграцию API, используя встроенные функции платформы.




Все права защищены. © Linux-Console.net • 2019-2024