Docker上で動かすPhantomJS
去年の会社のAdventCalendarで投稿したものなのですが、最近Dockerの勉強をしているのでDocker化して遊んでみました。
Dockerfileの書き方についてはこれらの記事を参考にさせていただいています。
- 効率的に安全な Dockerfile を作るには - Qiita
- 【入門】Dockerfileの基本的な書き方 | レコチョクのエンジニアブログ
- Dockerfileについて - Qiita
- Dockerfileのコマンド - Qiita
- Dockerfileを書いてみる - Qiita
余談ですが、本日Qiitaがエイチームと言う会社に買収されましたね。
「Qiita」運営会社、スマホゲームのエイチームが買収 - ITmedia ビジネスオンライン
私の勤めている会社でもTeamQiitaを頻繁に利用しており、前述の私のAdventCalendarの記事もそうですが、日々調べている技術的な記事を検索すると高確率でQiitaにヒットするというくらいエンジニア勢は利用頻度の高いサービスなので、約14億円という金額が相場として妥当なのか分かりませんが、もっと高値つけても良いんじゃないかとは思いました。
閑話休題。
私の元記事の方で docker run
コマンドで立ち上げたコンテナ上で一つ一つ叩いているものを単純に Dockerfile にするだけなんですけどね。
Dockerfileの記述方法を知っているのと知らないのでは随分工数が削減できるので早めに知っておくべきだったと痛感しましたね。
Dockerfileの記述は簡単。
プロジェクトのあるディレクトリの配下にテキストエディタで Dockerfile
という名前でファイルを作成すればOK。
次にベースとなるコンテナーのイメージを決める。今回の場合は元記事にあるように docker pull
コマンドで指定した openjdk:8
を記述する。
あとはDocker Container上で実行したコマンドを RUN hoge foo
のように記述しておけば良い。
徒にステップ数が増えてしまわないようにまとめられるものは \
を利用して一つにまとめておくと良いというのも同僚のDocker先生から教わった。ひとつにまとめることによってビルドに掛かる時間やキャッシュの効果を高められる。(ココらへんの仕組みはよく分かってないので突っ込まないで下さい)
大体↓のような形にまとめられる。
FROM openjdk:8 LABEL maintainer "madaocean <madaocean@hoge.com>" RUN wget http://ftp.riken.jp/net/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz \ && tar xzvf apache-maven-3.3.9-bin.tar.gz RUN wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 \ && bzip2 -dc phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar xvf - RUN mkdir /app
公開する場合や会社で利用する場合はMaintainerの記述も入れたほうが良いと思われるが、1.13以降はMAINTAINERの代わりにLABELを使うようにしよう - Qiitaという記事にもある通り、 Maintainer
と記述せず、 LABEL maintainer
と記載するようにしましょう。
Dockerを使うことで開発環境を容易に作成・配布することが出来る、複数の開発メンバーで作業をする際に同じ環境を利用することが簡単にできる、などの多くの恩恵にあずかれるので、是非是非エンジニアの皆さんにはDockerの利用を進めていって欲しいと思っています。