🐕
Dockerを利用した技術書展執筆環境構築MEMO
概要
技術書展の出展にあたって執筆環境である Re:VIEWをDockerで構築しました。その際の作業のログを雑にまとめていきます。
追記
技術書典12でReactアプリケーション開発に関する内容で出展中です。よろしければご覧ください。
参考
使用したツール
- ReVIEW-Template
- docker
実行環境
macOS 10.14.5
自分のGithubにRe-View Templateのリポジトリをfork
参考
forkして作成したリポジトリをlocalにクローン
ex)
git clone https://github.com/katsuharu/technical_market_v12_draft.git
Docker imageをpull
$ docker pull vvakame/review:5.3
イメージの確認
$ docker images vvakame/review
REPOSITORY TAG IMAGE ID CREATED SIZE
vvakame/review 5.3 a29cba9fab47 3 weeks ago 2.99GB
Dockerを使ってPDFを出力する
プロジェクトのルートディレクトリ直下で下記を実行します
docker run --rm -v `pwd`/articles:/work vvakame/review:5.3 /bin/sh -c "cd /work && rake pdf"
上記コマンド説明
-
docker run -v 'pwd'/articles:/work
:config.yml
が存在するディレクトリをdockerコンテナ上にマウントする(config.yml
がarticles
に存在する場合の例) -
/bin/sh -c "cd /work && rake pdf"
: pdf出力
その他
Github上で無料公開されている
「技術書をかこう! ~はじめてのRe:VIEW~ 改訂版【C92新刊】」のローカルでのPDF作成方法について記載してきます(こちらもdockerで環境構築します)。
リポジトリをclone
下記のgithubのリポジトリをローカルにcloneします
(必要に応じて)ReVIEWのversionを更新
articles/config.yml
ファイルを更新して review_versionを更新します
review_version: 5.0
使用するdocker imageのversionを指定(必要に応じて)
環境構築に使用されるスクリプトファイルで指定されている dockerのversionをローカルの環境に応じて修正します
build-in-docker.sh
#!/bin/bash
if ! (test -e node_modules && test -e vendor/bundle); then
# node_modules と vendor/bundle がなかったらsetup.shを動かして作成する
# ホスト環境でこれを作成していた場合、噛み合わせが悪い場合があるので手動で消してやり直す必要がある
docker run -t --rm -v $(pwd):/book vvakame/review:5.3 /bin/bash -ci "cd /book && ./setup.sh"
fi
# コマンド手打ちで作業したい時は以下の通り /book に pwd がマウントされます
# docker run -i -t -v $(pwd):/book vvakame/review:5.3 /bin/bash
docker run -t --rm -v $(pwd):/book vvakame/review:5.3 /bin/bash -ci "cd /book && npm run pdf"
Gemfile.lockで指定の Bundlerのバージョン指定を修正(必要に応じて)
./build-in-docker.sh
の実行に失敗した場合、下記のissueに記載されているようにGemfile.lock
ファイルに記載のBUNDLED WITH
を2.0.3
に更新すると治ります。
PDFを出力
最後に、下記のコマンドでスクリプトを実行するとpdf形式で電子書籍を生成できます
(articles/C89-FirstStepReVIEW-v2.pdf
の名前でgit管理から外れています)
./build-in-docker.sh
Discussion