みずりゅの自由帳

主に参加したイベントやソフトウェア技術/開発について記録しています

速攻で Jenkins を練習する環境を用意するためのDockerfileを用意する

社内の勉強会で、「DockerでJenkins環境を作ってCIを試す」というのを実施しました。
その際「Jenkins環境を作るコマンドはDockerfileにしといたら楽チンでは?」と思ったので作ってみました。

Jenkins環境作成のコマンドは、「技術をかじる猫」さんの記事を参考にして作成しています。

white-azalea.hatenablog.jp


なお、今回のDockerfileでは最後のコマンド「/etc/init.d/jenkins start」の部分は抜いています。
Jenkinsの起動/停止くらいは手動で実行させようかなー、くらいの感覚です。
それに、JenkinsをUnlockするために一旦ログインして「Administrator password」を入手しないといけないので。

できたDockerfileはこちら。

これを、docker buildコマンドで実行します。今回は適当にタグ名(例ではtest:test2019)をつけて実行します。
Dockerfile があるディレクトリに移動後、以下のdockerコマンドを実行。

$ docker build -t test:test2019 .

aptコマンドをRUNで実行すると、以下のような警告メッセージが出てきますが、仕上がりに影響は特にありません。

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

しばらく待っていると、以下のようにSuccessfully builtが出力されました。

Processing triggers for libc-bin (2.27-3ubuntu1) ...
Removing intermediate container 980206a7b336
 ---> 47a5beac2879
Successfully built 47a5beac2879
Successfully tagged test:test2019

イメージができているか確認。
元のubuntuのイメージと比べると随分とサイズの大きいイメージとなりました。
とはいえ、これでJenkinsがインストールされた状態のイメージは作成されました。

$ docker images
REPOSITORY          TAG             IMAGE ID            CREATED             SIZE
test                test2019        47a5beac2879        57 seconds ago      721MB
ubuntu              latest          47b19964fb50        3 weeks ago         88.1MB

イメージができたので、docker runでコンテナ生成&実行。(※コンテナの名前は適宜変更してください。)

$ docker run --name jenkins-example -it -p 8080:8080 -p 8000:80 test:test2019
root@2cd682fb7a7a:/#

コンテナ内にログインできたので、Jenkinsのサービスを起動。

root@2cd682fb7a7a:/# /etc/init.d/jenkins start
Correct java version found
 * Starting Jenkins Automation Server jenkins                                                                                                                           [ OK ]
root@2cd682fb7a7a:/#

起動が完了したので、Jenkinsをunlockするためのパスワード(Administrator password)の確認。

root@2cd682fb7a7a:/# cat /var/lib/jenkins/secrets/initialAdminPassword
ddb2ccxxxxxxxxxxxxxxxxxxxxe23586

ブラウザを立ち上げて localhost:8080 にアクセスしてみると、JenkinsのUnlock画面が表示されました。

f:id:mzryuka:20190301000025p:plain

ここに、先ほど確認したAdministrator passwordを入力して、Continueを実行。ちゃんと先に進めました。

f:id:mzryuka:20190301000656p:plain

ひとまず、これでいけそう。

おまけ:Proxy環境配下のdocker buildの場合

Proxy環境の配下にいる場合、docker build実行中でのaptやwgetでProxyを経由する必要があります。
そのため、環境変数に対してhttp_proxyやhttps_proxyを指定します。
今回は「--build-arg」オプションを利用して実行します。

$ docker build -t test:test2019 --build-arg http_proxy=http://proxy.example.jp:8080 --build-arg https_proxy=http://proxy.example.jp:8080 .

余談:上記はProxyサーバに認証情報(ユーザ/パスワード)が記載されていない例です。認証情報が含めてしまうような場合には、以下の記事などを参考にして一工夫してください。

qiita.com