BackEnd

軽量なAlpine Linuxイメージでgitbookのローカル環境を構築する

投稿日:2018年9月20日 更新日:

はじめに

前回の記事でご紹介したgitbookですが、環境構築の方法はローカルに直接node.jsを入れるものでした。できればローカル環境は汚さず、Dockerで構築できるに越したことはない…と考えておりました。

ググってみると billryan/gitbook というイメージが公開されておりDockerfiledocker-compose.yml を一切書かず、dockerコマンドをコピペ実行するだけでgitbookを動かすことができます。
ただこのイメージは1.34GBとそこそこ容量を食うため「試すだけなら最小限のリソースで!」→「 Alpine Linux で何とかできないかな?」と思い立ち、試してみました。

Alpine Linuxとは

  • 超軽量なLinuxディストリビューションです。とにかく容量が小さく、OS最小構成だと5MB(!)を下回ります。CentOSの最新版が約200MBですから、圧倒的な差です。
  • Docker用というわけではありませんが、その軽量っぷりでDocker界隈では人気のようです。
  • 今回は出てきませんが、 apk という独自のパッケージ管理システムを使います。

Docker本体のインストール

環境はmacOS High Sierra 10.13.6を前提としています。すでにDockerがPCにインストール済みであれば、この項目は読み飛ばしてください。

インストール手順は簡単です。Docker公式でdmgファイルをダウンロードして実行するだけです(ダウンロードの際、アカウント作成が必要になります)。
インストール完了したらターミナルで確認しましょう。

サンプルリポジトリのダウンロード

まっさらな状態のGitbookに1ファイルだけ追加したリポジトリを作成しました。ローカルに適当なディレクトリを作成し、その中で実行してください。

dockerイメージ作成

公開されているAlpine Linuxイメージから、node.js用のイメージを取得してビルドします。 vi ~/test/gitbook-sample/Dockerfile でDockerfileを作成し、以下のように記述してください。

Node.js用のAlpine Linuxイメージが追加されました。サイズは342MBで、最小構成の5GB未満と比べるとさすがに容量が増えていますが、 billryan/gitbook に比べて4分の1程度に抑えることができました。

Gitbook初期化&実行

initからserveまでを実行します。

ここまで成功すれば、ブラウザで閲覧できる状態になります。ターミナルに出力されている http://localhost:4000 にアクセスしてみましょう。

Dockerの状態確認、停止など

上記のコマンドで起動はできていますが、 Serving book on http://localhost:4000 のまま CTRL+C も受け付けない状態になっていると思います。
ターミナルを別ウィンドウで立ち上げて、Dockerの状態を確認してみましょう。

さいごに

いかがでしたでしょうか。Dockerfileやdocker-compose.ymlを細かく設定して、いかにイメージの容量を削るかを目指す場合もあるようですが、今回はなるべく軽量・なるべく簡素を目標としてみました。
Dockerには最近触れ始めたばかりですが、すでにバックエンドの技術としてはデファクトスタンダードになっているらしく、少し危機感を覚えています。引き続き学習し、実用に持っていきたいと思います。

参考

blog-page_footer_336




blog-page_footer_336




-BackEnd
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

MySQLでFULL OUTER JOIN (完全外部結合)を行う

1 はじめに2 FULL OUTER JOIN とは3 MySQLでは4 CROSS JOIN5 さいごに6 おすすめ書籍 はじめに テーブル結合と言えば、INNER JOIN か LEFT OUTE ...

rails

Shrineでアップロードする際に画像を加工する

1 はじめに2 アップロードする画像のリサイズ2.1 Gemを追加2.2 Uploaderの修正3 サムネイルを作成する3.1 Uploaderの修正3.2 サムネイルを表示する4 バリデーションの追 ...

laravel logo

LaravelでのDB操作の基礎

1 はじめに2 Eloquent2.1 モデルの定義2.2 モデルの取得2.3 モデルの追加2.4 モデルの更新2.5 モデルの削除2.6 クエリスコープ3 マイグレーション3.1 マイグレーションフ ...

Go言語

Go言語でテスト作成 testifyの基本的な使い方

1 はじめに2 Goテストフレームワークのスター数3 testifyについて3.1 testifyを導入する方法4 assartionについて4.1 assertion紹介4.2 ElementsMa ...

Go言語

Go言語 gocraft/workを使って常駐プロセスでジョブを処理させる

1 はじめに2 workの特徴3 workを使えるようにする3.1 Redisのインストール3.2 Go用のライブラリインストール4 Enqueue〜ジョブ実行まで4.1 Enqueue側4.2 ジョ ...

フォロー

blog-page_side_responsive

2018年9月
 1
2345678
9101112131415
16171819202122
23242526272829
30  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。