Writebookとは?
Writebookはオンラインで本を執筆、公開できるツールです。
以下に公開されているので、実際に見ていただくのが最もわかりやすいです。
公式サイト
無料で利用することができ、zipファイルとしてもダウンロード可能です。
以下のリンク先のサイトから「Get it for free」ボタンを押して チェックアウトフローを完了すると、 zipファイルのダウンロードリンクが掲載されているメールが届きます。
今回はこのzipファイルを解凍してローカルで動かしてみました。
動作させるための制約
今回は正しさよりも、 writebookのソースコードを修正しない ことを最優先にしています。
zipファイルの解凍
専用のディレクトリを作成して、ディレクトリを移動します。
$ mkdir writebook $ cd writebook
専用のディレクトリでzipファイルを解凍します。 ファイルのパスは適宜書き換えてください。
$ unzip '/mnt/c/Users/ihato/Downloads/writebook.zip'
Dockerfileの作成
writebookに本番環境用のDockerfileが付属しているのですが、 ローカルで使うには使いづらいので専用のファイルを作成します。
$ touch Dockerfile.development
Dockerfile.development
には次のように記述します。
Gemを動かすために必要なパッケージをインストールするだけの最低限のDockerfileです。
またredisをインストールして、railsのサーバーと同一コンテナで動作させます。
それ以外にローカルで動かすために必要なコードは後述するDocker Composeに記述していきます。
FROM ruby:3.3.5 RUN apt-get update -qq && \ apt-get install --no-install-recommends -y \ build-essential \ git \ libyaml-dev \ pkg-config \ curl \ libjemalloc2 \ libvips \ sqlite3 \ vim \ redis \ && apt-get upgrade -y \ && rm -rf /var/lib/apt/lists /var/cache/apt/archives
Docker Compose
次にDocker Composeの設定ファイルを作成します。
$ touch compose.yml
compose.yml
には次のように記述します。
ポイントはcommandのbin/boot
コマンドで起動することです。
bin/boot
コマンドを使うとProcfileをもとに次のプロセスが起動します。
- Railsサーバー
- Redis
- Resque-pool(バックグランドジョブ)
またBINDINGとPORTを指定して、 ホストのブラウザから http://localhost:3000 でアクセスできるようにすることです。
services: web: image: writebook:latest build: context: . dockerfile: Dockerfile.development working_dir: /app volumes: - .:/app:cached - bundle:/usr/local/bundle:cached command: bash -c "rm -f tmp/pids/server.pid && bin/boot" stdin_open: true tty: true ports: - 3000:3000 environment: - BINDING=0.0.0.0 - PORT=3000 volumes: bundle:
これでローカルで動作させるための準備が整いました。
setup
セットアップを次のコマンドで実行します。 Gemfileのインストールやデータベースのセットアップが行われます。
$ docker compose run --rm web bin/setup
起動
セットアップが完了したら起動します。
$ docker compose up
ブラウザで http://localhost:3000 にアクセスしてみましょう。
セットアップ画面がみれましたね。
あとは自由にコードを見てみましょう。