Рубрики
Без рубрики

Мои переработанные установки блога

Супер гладкий dev-ux для pelican + автоматизированные развертывания для подключения с circleci. Теги с Docker, Python, учебником, CI.

Первоначально опубликовано в gdelgado.ca.

В этом посте я описываю, как я обновил мой Пеликан Настройка блога.

Некоторое время назад HTTP-запросы на мой сайт перестали работать по какой-либо причине. Это была ошибка с моим CDN (CloudFlare). Это, для меня, был признаком от богов, что пришло время сделать что-то излишне сложное, чтобы исправить проблему.

Если серьезно; Были некоторые вещи, которые я хотел долго починить, что я не оказался, чтобы делать. Текущий выпуск CDN + длинные выходные казались нужным временем, чтобы сделать это.

TLDR :

Зависимость ад

Были какие-то вещи, которые являя меня о том, как Blican Blogs создают для местного развития. Pelican Docs Предложите, что вы устанавливаете Виртуальский Отказ Это работало нормально, пока я не решил, что хочу лучшего опыта разработчика с CSS. Я переключился на SASS для моих CSS, но это означало, что мне пришлось установить Ruby, так как это драгоценность Ruby.

Хорошо, так что теперь у меня есть Python, Virtualenv и Ruby, установленные на глобальном масштабе просто так, чтобы я мог запустить блог локально. Это усложняет автоматическое развертывание, так как вы должны установить эти зависимости, чтобы обеспечить построение блога успешно.

Докер к спасению

Я действительно не люблю иметь зависимости во всем мире. Поэтому я понял, что это будет забавная возможность играть с докером.

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

Есть три файлы, связанные с докерами:

  • Dockerfile-push
  • Dockerfile
  • Docker-Compose.yml.yml.yml

Dockerfile-push Содержит инструкции для создания многоразового изображения (я повторно использую это изображение во время процесса CI. Больше на это позже). Это изображение живет на https://hub.docker.com/r/giorgio14/pelican/ … Я знаю изображение довольно большое, я знаю. И что? Подать в суд на меня.

Теперь, когда у меня есть базовое изображение для запуска PELICAN и всех его зависимостей, я могу создать новый образ из него, который запускает сервер разработки. Вот где Dockerfile приходит в. В нем я:

  • Создать изображение От Мой пользовательский Giorgio14/Pelican Image
  • Скопировать соответствующие файлы и каталоги на изображение
  • Связать порт моего ОС 8080 на порт 8080 контейнера
  • Запустите сделать Сценарий, который запускает сервер Live-Reloading на порту 8080

Есть только одна проблема. Если бы я создал контейнер с этого изображения, контейнер создает копии моих файлов, но это не связывает их. Другими словами; Контейнер имеет свои собственные копии, которые полностью не связаны с моим ОС. Это означает, что, несмотря на отсутствие сервера Live-Reloading, который слушает изменения файлов, файлы будут фактически измениться в контейнере.

Нам нужно тома . Это механизм, который позволяет контейнеру иметь доступ к файлам и каталогам Host OS. Я использую тома, чтобы я мог редактировать что-либо внутри тема и Содержание Справочники и имеют эти изменения, распространяющиеся на беговой контейнере докера. Как только изменения происходят в контейнере, то сервер Python работает внутри контейнера, может восстановить блог и обслуживать обновленные файлы.

По этой причине я использую Docker-Compose.yml файл. В нем есть Объемы Ключ, который описывает, какие местные каталоги я хочу установить на беговой контейнер.

Теперь, что это все сделано, я могу просто запустить:

docker-compose up

И Докер будет:

  • Потяните и генерируйте необходимые изображения
  • Беги сделать Deverserver (который исходит из Dockerfile ) внутри контейнера

Теперь у меня есть Schnazzy Dev Setup, которая не нуждается в Python, Virtualenv, Ruby или что-нибудь:) … Только докер!

Автоматизированное развертывание

Теперь, когда у меня есть многоразовый докер изображения, размещенного на hub.docker.com, я могу использовать его, чтобы сделать мои шаги CI Super легко.

Моя цель была для моего веб-сайта, чтобы обновить на каждом новом толчке к главной ветке на моем репо. Я выбрал Circleci для своего бренда, отличная документация (взяла меня менее чем в день, чтобы выяснить, как его использовать), а также бесплатная цена 🙃.

Я в основном только что последовал за документацией для подключения моего GitHub Repo к кругу и имел « Hello World » трубопровод, бегущий вскоре после этого.

Здесь являются соответствующими файлами, связанными с кругом. Мне потребовалось несколько попыток и твики, чтобы получить работу по трубопроводу, как я хотел, поэтому я создал сценарий Bash, который позволил мне запустить трубопроводы, не толкая коммиты в Github. Здесь Соответствующий док из круга.

Я упомяну о некоторых точках высокого уровня о config.yml файл. Обратите внимание, что я использую пользовательское изображение, которое я сделал выше. Не нужно устанавливать Ruby, делать APT-Get, или что-нибудь. Все это просто готов пойти с Пеликан CLI установлен также.

Поскольку я хочу развернуть в NetLify, я должен установить их CLI. Я выбрал свою нынешнюю стабильную CLI (Repo здесь ) вместо их узел, поскольку я уже знаком с этим.

Затем я генерирую производственную сборку блога, используя сделать публикацию Отказ

Ради будущего отладки я подумал, что сохранил вывод сделать публикацию Команда на случай, если что-то странное когда-либо произошло. UI Circle позволяет мне получить доступ к каталогу на молнии, если мне нужно.

Наконец, я развернул до подключения.

Я настроил пользовательский домен в NetLify, создавая запись CNAME, которая указывает на случайно сгенерированный URL-адрес NetLify. Больше информации здесь на NetLify Пользовательские домены.

Все еще нужно выяснить

Я действительно хочу получить комментарии на моем сайте, но я определенно не хочу использовать Disqus. Когда у меня есть шанс, я дам Статический человек выстрел.

Staticman + Pelican Учебник

… вот и все!

Оригинал: “https://dev.to/_gdelgado/my-over-engineered-blogging-setup-41i0”