🐕

Dockerを利用した技術書展執筆環境構築MEMO

2022/01/01に公開

概要

技術書展の出展にあたって執筆環境である Re:VIEWをDockerで構築しました。その際の作業のログを雑にまとめていきます。

追記

技術書典12でReactアプリケーション開発に関する内容で出展中です。よろしければご覧ください。

https://techbookfest.org/product/6276462447427584?productVariantID=5679692579340288

参考
https://techbookfest.org/

使用したツール

実行環境

macOS 10.14.5

自分のGithubにRe-View Templateのリポジトリをfork

参考
https://mochikoastech.hatenablog.com/entry/2019/08/05/130711

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

https://github.com/TechBooster/ReVIEW-Template#dockerを使う

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.ymlarticlesに存在する場合の例)
  • /bin/sh -c "cd /work && rake pdf" : pdf出力

https://hub.docker.com/r/vvakame/review

その他

Github上で無料公開されている
「技術書をかこう! ~はじめてのRe:VIEW~ 改訂版【C92新刊】」のローカルでのPDF作成方法について記載してきます(こちらもdockerで環境構築します)。

https://techbooster.booth.pm/items/586727

リポジトリをclone

下記のgithubのリポジトリをローカルにcloneします

https://github.com/TechBooster/C89-FirstStepReVIEW-v2

(必要に応じて)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 WITH2.0.3に更新すると治ります。

https://github.com/TechBooster/C89-FirstStepReVIEW-v2/issues/61

PDFを出力

最後に、下記のコマンドでスクリプトを実行するとpdf形式で電子書籍を生成できます
(articles/C89-FirstStepReVIEW-v2.pdfの名前でgit管理から外れています)

./build-in-docker.sh

Discussion