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


関連記事

laravel logo

LaravelでHTTP通信

1 はじめに2 インストール3 基本的な使い方3.1 GETでリクエストを投げる3.2 リクエストヘッダーを指定3.3 クエリパラメータを指定3.4 timeout時間を指定3.5 POSTでリクエス ...

laravel logo

Laravelで非同期実行する

1 はじめに1.1 動作環境2 準備2.1 デーブルの作成2.2 .envの修正3 ジョブの作成4 ジョブのディスパッチ5 キューワーカーを起動6 より細かな制御6.1 特定のキューにディスパッチする ...

docker-syncでファイルの同期を高速化する

1 はじめに2 docker-syncの導入3 設定ファイルの作成3.1 docker-composer.yml3.2 docker-compose-dev.yml3.3 docker-sync.ym ...

laravel logo

LaravelのHttp Facade

1 はじめに2 基本定な使い方2.1 get2.2 post3 タイムアウト4 リトライ5 マルチパートリクエスト6 エラー処理7 さいごに8 おすすめ書籍 はじめに 現在関わっている案件でHttpク ...

Go言語

Go言語で使えるORMライブラリ

1 はじめに2 ORMライブラリ2.1 GORM2.2 SQLBoiler3 GORMを使ってみる3.1 導入3.2 migration3.3 insert3.4 select3.5 update3. ...

フォロー

blog-page_side_responsive

2018年9月
 1
2345678
9101112131415
16171819202122
23242526272829
30  

アプリ情報

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