私のオーバーエンジニアリングブログのセットアップ


当初投稿gdelgado.ca
このポストでは、私は私が私の更新方法を説明しますPelican ブログ設定.
少し前に、私のウェブサイトへのHTTP要求は何らかの理由で働くのを止めました.私のCDN ( CloudFlare )でエラーだった.これは私にとって、問題を解決するために不必要に複雑なことをする時であったことを神々からのサインでした.
真剣に私は長い間修正したいことがいくつかありました.現在のCDN問題+長い週末は、これをする正しい時間のようでした.
TLDR
  • Aを作成custom docker image ( SASS + Pythonと全てのペリカン依存症)
  • プロジェクト全体using 前述のDocker画像
  • 自動配置の設定CircleCI ) ブログを展開するにはNetlify

  • 依存地獄
    ペリカンのブログが地元の開発のために設定されている方法について私を盗んでいたいくつかのことがあった.The pelican docs インストールをお勧めしますVirtualenv . 私がCSSでより良い開発者経験を望むと決定するまで、それはうまくいきました.私はCSSのためにsassに切り替えました、しかし、それはルビー宝石であるので、私がRubyをインストールしなければならなかったことを意味しました.
    今のところ、私はPython、VirtualEnv、Rubyをグローバルにインストールしているので、ローカルにブログを走らせることができます.これは自動化された展開を複雑にします.なぜなら、これらの依存関係をインストールする必要があるためです.

    ドックからの救出
    私は本当に依存関係をグローバルにインストールしたくない.それで、私はこれがDockerで遊ぶ楽しい機会であると考えました.
    私はあなたのDockerのセットアップのすべての中間バージョンをスペアし、現在のレポで参照してくださいに取得します.
    Docker関連のファイルは三つあります.
  • Dockerfile-push
  • Dockerfile
  • docker-compose.yml
  • Dockerfile-push 再利用可能なイメージを作成する手順が含まれます(CIプロセス中にこのイメージを再利用します.このイメージはhttps://hub.docker.com/r/giorgio14/pelican/ ... そのイメージはかなり大きいです.何?私を訴える.
    ペリカンとその依存関係を動かすベースイメージを持っているので、開発サーバを動かす新しいイメージを作成できます.それでDockerfile 入る.Iでは、
  • 画像を作成するFROM ペリカン・イメージ
  • COPY 関連するファイルとディレクトリを画像に
  • 私のOSのポート8080をコンテナのポート8080にバインドします
  • Aを実行するmake ポート8080上で生の再読み込みサーバを実行するスクリプト
  • つだけ問題がある.このイメージからコンテナを作成する場合、コンテナは私のファイルのコピーを作成しますが、それらにリンクしません.つまりコンテナは完全に私のOS上のものとは無関係に独自のコピーを持っています.これは、ファイルの変更をリッスンする生の再読み込みサーバを持っているにもかかわらず、実際にコンテナ内でファイルが変更されないことを意味します.
    我々は必要volumes . これはコンテナがホストOSのファイルやディレクトリにアクセスできるようにする仕組みです.私は、私が中で何でも編集することができるように、ボリュームを使いますtheme and content ディレクトリは、これらの変更を実行しているDockerコンテナに伝播します.コンテナー内で変更が発生したら、コンテナ内で実行されているPythonサーバーがブログを再生成し、更新されたファイルに対応できます.
    このため、私はdocker-compose.yml ファイル.それには、あるvolumes 実行中のコンテナにマウントするローカルディレクトリを記述するキー.
    これがすべて完了したら、簡単に実行できます.
    docker-compose up
    
    とDocker :
  • 必要な画像をプルして生成する
  • ランmake devserver PORT=8080 (これはDockerfile ) コンテナの中
  • 今、私はPython、VirtualEnv、Rubyまたは何かを必要としないschnazzdev設定を持っています.唯一のDocker!

    自動配備
    今、私はハブでホストされている再利用可能なDockerイメージを持っています.ドッカー.私は、私のCIステップを超簡単にするためにそれを活用することができます.
    私の目標は、私のウェブサイトのために私のrepoのマスター支店へのあらゆる新しいプッシュに更新することでした.私はブランドのためのCircleCiを選んだ、素晴らしいドキュメント(私はそれを使用する方法を把握する1日未満私を取った)、および無料の価格設定🙃.
    私は基本的にちょうど私のgithubレポを円に接続するためにドキュメンテーションに続きましたhello world 「まもなくパイプラインが走る.
    Here 円に関連する関連ファイルです.私が欲しいのと同じようにパイプラインを走らせるために少しの試みと調整をしたので、私はgithubにコミットを押すことなくパイプラインを走らせることができたbashスクリプトを作成しました.Here '円からの関連DOC.
    私はいくつかのハイレベルのポイントについて言及しますconfig.yml ファイル.私が上記のカスタムイメージを使用することに注意してください.Rubyをインストールする必要はありません.それはすべてのだけで行く準備が整いましたpelican CLIもインストールしました.
    netlifyに展開したいので、CLIをインストールしなければなりません.私は彼らの現在の安定したCLIhere ) 私はすでにそれに精通して以来、そのノードベースの1つの代わりに.
    それから私はブログの生産ビルドを生成するmake publish .
    将来のデバッグのために、私は私が出力を保存すると考えましたmake publish 何か奇妙なことが起こった場合のコマンド.円のUIは、私が今までに必要な場合は、ジッパーディレクトリにアクセスすることができます.
    最後にnetlifyに展開します.
    ランダムに生成されたNetLify URLを指すCNAMEレコードを作成することで、カスタムドメインを設定しました.詳しい情報はこちらnetlify カスタムドメイン.

    まだ考え出される
    私は本当に私のウェブサイトにコメントをしたいです、しかし、私は間違いなくDisqusを使いたくありません.チャンスを得るとき私は与えるStaticman ショット.
    Staticman + Pelican Tutorial
    ... そして、それ!