Первоначально опубликовано в gdelgado.ca.
В этом посте я описываю, как я обновил мой Пеликан Настройка блога.
Некоторое время назад HTTP-запросы на мой сайт перестали работать по какой-либо причине. Это была ошибка с моим CDN (CloudFlare). Это, для меня, был признаком от богов, что пришло время сделать что-то излишне сложное, чтобы исправить проблему.
Если серьезно; Были некоторые вещи, которые я хотел долго починить, что я не оказался, чтобы делать. Текущий выпуск CDN + длинные выходные казались нужным временем, чтобы сделать это.
TLDR :
- Создал Пользовательское изображение Docker С (Sass + Python и всеми пеликановыми зависимостями)
- Докеризировал весь проект Использование вышеупомянутый документ докера
- Настройте автоматическое развертывание (используя circleci ), чтобы развернуть блог на Нечто
Зависимость ад
Были какие-то вещи, которые являя меня о том, как 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”