Pandocサーバーのコンテナイメージを作成する
マークダウンからEPUBへの変換をAWS Batchで行いたく、ECRにアップロードするためにまずコンテナイメージを作成しました。
普段コンテナ使ってないので苦戦しながらやりましたが、ちょっと仲良くなれた気はします。
目次
Pandocのコンテナイメージをローカルにダウンロードする
環境はMacです。
まず、ベースになるDockerイメージをDocker Hubで探しました。

pandoc で検索してMost Popularなのが jagregory/pandocでしたので、それをpullしました。
|
1 2 3 4 5 6 |
$ docker pull jagregory/pandoc Using default tag: latest latest: Pulling from jagregory/pandoc ~~~~~~ Status: Downloaded newer image for jagregory/pandoc:latest |
とりあえず動かして確認してみました。
|
1 2 3 4 5 |
$ docker run -d --name pserver jagregory/pandoc $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6a3b854cbec7 jagregory/pandoc "/root/.cabal/bin/pa…" 16 seconds ago Exited (0) 14 seconds ago |
runしてすぐにExitedになりました。
コンテナイメージのドキュメントを見ると使い方が書いてあって、ディレクトリを/sourceディレクトリにして、変換前のファイルと変換後のファイル名とフォーマットを指定して実行するらしい。
|
1 2 |
$ docker run -v `pwd`:/source jagregory/pandoc -f markdown -t html5 myfile.md -o myfile.html |
自分が欲しかったのはPandocが実行されているサーバー環境だったのでこれではないらしい。
Amazon LinuxのコンテナイメージにPandocをインストールすることにしました。
Amazon Linux コンテナイメージにPandocをインストールする
|
1 2 |
$ docker pull amazonlinux |
|
1 2 3 |
$ docker run -it amazonlinux /bin/bash bash-4.2# |
入れた〜
EPEL リポジトリの有効化はこちらを見ました。
CentOS、RHEL、または Amazon Linux が実行されている Amazon EC2 インスタンスに対して EPEL リポジトリを有効にする方法を教えてください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # yum install -y pandoc # pandoc -v pandoc 1.12.3.1 Compiled with texmath 0.6.6, highlighting-kate 0.5.6. Syntax highlighting is supported for the following languages: actionscript, ada, apache, asn1, asp, awk, bash, bibtex, boo, c, changelog, clojure, cmake, coffee, coldfusion, commonlisp, cpp, cs, css, curry, d, diff, djangotemplate, doxygen, doxygenlua, dtd, eiffel, email, erlang, fortran, fsharp, gnuassembler, go, haskell, haxe, html, ini, java, javadoc, javascript, json, jsp, julia, latex, lex, literatecurry, literatehaskell, lua, makefile, mandoc, markdown, matlab, maxima, metafont, mips, modelines, modula2, modula3, monobasic, nasm, noweb, objectivec, objectivecpp, ocaml, octave, pascal, perl, php, pike, postscript, prolog, python, r, relaxngcompact, restructuredtext, rhtml, roff, ruby, rust, scala, scheme, sci, sed, sgml, sql, sqlmysql, sqlpostgresql, tcl, texinfo, verilog, vhdl, xml, xorg, xslt, xul, yacc, yaml Default user data directory: /root/.pandoc Copyright (C) 2006-2013 John MacFarlane Web: http://johnmacfarlane.net/pandoc This is free software; see the source for copying conditions. There is no warranty, not even for merchantability or fitness for a particular purpose. |
イメージのIDを確認してコンテナイメージを作成します。
|
1 2 3 |
$ docker ps -a $ docker commit 85a95b686219 pandoc |
テストするためにローカルディレクトリをマウントさせてコンテナを起動しました。
|
1 2 |
$ docker run -v /Users/xxx/Documents/docker/pandoc:/tmp -it pandoc /bin/bash |
ローカルのディレクトリはフルパスで指定するんですね。
そしてそのパスは、Docker for Macの設定で設定されているディレクトリの配下である必要があるそうです。
何はともあれ、マウントできたので、変換テストをしてみます。
|
1 2 3 |
# pandoc -f markdown sample.md -o sample.epub # pandoc -f markdown sample_ja.md -o sample_ja.epub |
日本語でもテストをしてみました。
コンテナ上で作成したファイルが、マウント先のMacのディレクトリにもできてました。

Sample.mdの内容はこちらです。
|
1 2 3 4 5 6 7 |
# Sample ## Module1 test test |
Sample_ja.mdの内容はこちらです。
|
1 2 3 4 5 6 7 |
# サンプル ## 第一章 テスト テスト |
確認してみると、日本語もちゃんとEPUBになってました。
これでとりあえずイメージが出来たので先にすすめます。
今日はひとまずここまで。
あと、今回よく使ったコマンドで、Dockerコンテナの削除です。
|
1 2 |
$ docker rm `docker ps -aq` |
試してダメならコンテナを削除してイメージからやり直せばいいので、すごく便利ですね。
コンテナが便利なことは頭ではわかっていたのですが、手を動かして実感すると違います。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
CUSTOMINEを使ってkintoneからAWS Lambdaを実行する(Cognito認証付き)
先日の記事「kintoneのカスタマイズ開発を超速にするCUSTOMINE」で書 …
-
-
AWS CodeCommit 認証情報ヘルパーをmacOSに設定しました
AWS CLI 認証情報ヘルパーを使用して Linux, macOS, or U …
-
-
S3バケットポリシーですべてDenyにしてしまったらルートユーザーの出番
特定のConditionsを指定して、それ以外はすべて拒否するS3バケットポリシ …
-
-
EC2 Instance Connect向けのセキュリティグループのソースにプレフィックスリストを
EC2 Instance Connect、便利ですね。 キーペア不要で、EC2イ …
-
-
RDS自動バックアップの自動クロスリージョンコピー
このブログのRDS for MySQLはAWS Backupで大阪リージョンから …
-
-
Amazon EC2 Auto ScalingのVPCは変更できる
EC2 Auto ScalingのVPCは変更できたっけ??と思いまして試しまし …
-
-
Amazon Data Lifecycle Manager(DLM)が東京リージョンで使えるようになったのでLambdaでAMI自動取得から乗り換えた
EBSのスナップショットを自動で作成してくれるAmazon Data Lifec …
-
-
AWS CloudFormationでAmazon DynamoDBテーブルを作ってアイテムを追加する
デモ用にDynamoDBテーブルを作って消して、ということをたまにするので、Cl …
-
-
webフォームからの問い合わせをRedmineに自動登録して対応状況を管理する(API Gateway + Lambda)
先日、検証目的で作成したRedmineの冗長化の一機能として、webフォームから …
-
-
WordPressで発生した「No space left on device」に対応
CloudWatch Logsメトリクスフィルターで「No space left …



