はじめに
Jenkins × Docker × AWS で動かしてみようとしています。
内容が長くなると思うので複数回にわけてまとめています。
自己学習の目的でやっているので、読みづらいかもしれませんができるだけ分かりやすくまとめていきたいと思っています。
今回やること
Jenkins
まずはこれをDocker上で動かします。
なんでこんな事するの?
JenkinsをそのままPCにインストールして動かす事もできますが、その場合、PCに最低限Javaが入っていなければいけません。
そんな状態でJenkinsを動かしているサーバーを移行するってなった場合、一から環境を用意する必要があります。
開発経験がある方はわかると思いますが、同じ環境を用意するのって意外と大変だったりします。
手順通りにやったのに、俺だけ動かないんだけど。。みたいな経験はあると思います。
Jenkinsの場合だとJenkinsで使うプラグインのインストールし直しなども発生してきます。
そこでDockerを使ってコマンド1発であらかじめ必要なものがインストールされている環境を作ろうというわけです。
そうすれば簡単に同じ環境が作れるので。
環境
- Ubuntu 20.04.1 LTS
(初期セットアップ状態 JavaやJenkinsなどはインストールされていない)
Docker環境の用意
Dockerを使うため最低限Dockerを入れる必要があります。
それ以外は必要ありません。なのでDockerだけはいれてあげましょう
Dockerがインストールされていることを確認
$ docker -v
Docker version 19.03.8, build afacb8b7f0
Dokcer上でJenkinsを動かす
Dockerが入ればあとは簡単です。
Docker上でJenkinsを動かせばいいのですが既に公式が用意してくれています。
なので我々は下記コマンドを打つだけでJenkinsの起動するところまでもっていけます。超簡単
docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts-jdk11
次にコンテナが変わっても同じデータを使うようにしておきます。
Dockerを動かすとわかりますが、上記のコマンドを実行し、Ctrl + Cで抜けたあと
再度上記のコマンドを実行すると、コンテナIDが変わります。
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
47b654c3bbc5 jenkins/jenkins:lts-jdk11 "/sbin/tini -- /usr/…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp charming_golick
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df2e4f0ba204 jenkins/jenkins:lts-jdk11 "/sbin/tini -- /usr/…" 38 seconds ago Up 37 seconds 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp sweet_dijkstra
コンテナIDが変わればコンテナ内に保存されていたデータは消えてしまいます。
つまり、上記のコマンドでは毎回、初期状態で起動してしまいます。
そのため、コンテナIDが変わっても使いまわしたいデータはマウントしておく必要があります。
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
これで/var/jenkins_homeに保存されるデータ(Jenkinsのプラグインやユーザー情報などなど)はローカルのjenkins_homeディレクトリに保存されコンテナ起動時にjenkins_homeあるデータが使われコンテナIDに変わっても同じ状態で起動してくれます。
おわりに
今回はDokcer上でJenkinsを動かすところまでまとめました。
しかし最低限必要なものしか入っていません。
次は必要なプラグインインストール済みのJenkins環境作成についてまとめていきます。