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
関連記事
-
Projectタグを強制するSCPでアクションやリソースを限定しないとき成り立つのか
ふと疑問に思ったので試しました。 予想は、拒否されてしまう、です。 [crayo …
-
EC2インスタンスWindowsでセッションマネージャーを使う
WindowsのEC2インスタンスでセッションマネージャーを使ってみたことがない …
-
VPC内のLambdaからVPCエンドポイント経由でSecrets Managerを使う
InternetGatewayのないVPCでMySQLに対して一日数回のレポーテ …
-
AWS Toolkit for Eclipseをセットアップ(2021年版)
AWS Toolkit for Eclipseをセットアップするで6年前に書いて …
-
AWS Certificate Manager証明書とAmazon Route 53でAmazon API GatewayのAPIのカスタムドメイン名前解決する
AWS Certificate ManagerとAmazon Route 53と …
-
PyCharmにAWS CloudFormationプラグインをインストールして入力補完してみる
JetBrainsのPython統合開発環境(IDE)のPyCharmを1年ちょ …
-
AtomエディタでEC2のファイルを直接編集する
Webページを編集していてEC2のファイルをvimエディタでさわったりしています …
-
Route 53 の加重ラウンドロビンルーティングでロードバランサー
Route 53の加重ラウンドロビンで両方1に設定してみました。 上図はイメージ …
-
Lucidchart AWSアカウントからインポート機能で自動作図
SNSでLucidchartというサービスが話題になってました。 AWSの環境を …
-
CloudWatchアラームをAWS CLIでテスト
CloudWatchアラームをテストするコマンドです。 –state …