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
関連記事
-
-
AWS Organizations EC2宣言型ポリシーを設定する
2024/12/1に発表されましたOrganizationsの宣言型ポリシーを設 …
-
-
Amazon ECSサービスでAWS App Meshを使用
AWS App MeshユーザーガイドのAWS App Mesh とAmazon …
-
-
特定AWSアカウント特定リージョンのSQSキューを削除するLambda(Python)
やりたいこと 特定アカウント内特定リージョン内のSQSキューを全部削除したいです …
-
-
EC2ユーザーデータからメタデータを取得してRocket.Chatで80ポートを使用する
Rocket.Chatのデフォルトポート番号は3000です。 80を使うようにす …
-
-
EFSをEC2(Amazon Linux 2)からマウントする
Amazon Elastic File Systemが東京リージョンに来たことも …
-
-
AWS CLIからIAM Identity CenterへサインインしてCodeCommitのリポジトリを使用する
Macで操作しました。 AWS CLIバージョンアップ [crayon-67d6 …
-
-
EC2インスタンスプロファイルによってAssumeRoleされた認証情報の有効期限は短くできるのでしょうか
「EC2インスタンスプロファイルによってAssumeRoleされた認証情報の有効 …
-
-
AWS Service Catalogチュートリアル
AWS Service Catalog 開始方法のチュートリアルにそってみました …
-
-
macOSにAWS Schema Conversion Toolをインストール
環境 macOS BigSur バージョン11.5(20G71) MacBook …
-
-
CUSTOMINEを使ってkintoneからAWS Lambdaを実行する(Cognito認証付き)
先日の記事「kintoneのカスタマイズ開発を超速にするCUSTOMINE」で書 …