はじめに
Jenkins × Docker × AWS で動かしてみようとしています。
内容が長くなると思うので複数回にわけてまとめています。
の続きになります。
今回やること
前回、Dockerを使って、公式が提供しているJenkinsのイメージからJenkins起動までを行いました。しかし、これだけでは最低限必要なものしか入っていないので、
追加したいものを入れたイメージを作っていきます。
ベースは公式のイメージでそれに必要なものを追加してきます。
Dockerfileの作成
公式イメージに追加でJenkinsのプラグイン「configuration-as-code」が入ったイメージ
を作成するDockerfileを作成します。
FROM jenkins/jenkins:lts
# セットアップウィザードを無効化する
ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false"
# プラグインのインストール
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt
# configuration-as-codeプラグインを使って予めadmin userを作成
COPY jenkins-casc.yaml /usr/local/jenkins-casc.yaml
ENV CASC_JENKINS_CONFIG /usr/local/jenkins-casc.yaml
プラグインのインストールについてはJenkinsの公式が提供している方法をそのまま使います。
plugins.txtというファイルを用意して、そこにインストールしたいプラグイン名を記載しておけば
インストールしてくれます。超便利
FROM jenkins/jenkins:lts-jdk11
COPY --chown=jenkins:jenkins plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN jenkins-plugin-cli -f /usr/share/jenkins/ref/plugins.txt
今回はこんな感じ。
configuration-as-code
configuration-as-codeはJenkinsの設定をyaml形式で記述し、その内容に従って設定してくれるというプラグインです。今回はユーザー設定だけ設定したyamlを用意しました。
jenkins:
securityRealm:
local:
allowsSignup: false
users:
- id: "admin"
password: "admin"
- id: "dev"
password: "dev"
これを特定の場所にコピーして環境変数として定義してあげるだけです。
# configuration-as-codeプラグインを使って予めadmin userを作成
COPY jenkins-casc.yaml /usr/local/jenkins-casc.yaml
ENV CASC_JENKINS_CONFIG /usr/local/jenkins-casc.yaml
イメージの作成
Dockerfileができたので、それをもとにイメージを作ります。
docker image build -t イメージ名[:タグ名] [Dockerfileが配置されているディレクトリパス]
イメージ名、タグ、はお好きなものにしてください。
今回はdockerコマンドを実行するディレクトリにDockerfileを置いているのでパスは「.」にします。
$ docker image build -t satoru/myjenkins:0.1.0 .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
satoru/myjenkins 0.1.0 c0917eb4fea5 26 seconds ago 580MB
jenkins/jenkins lts 3c87c42366c1 3 weeks ago 576MB
イメージができたら起動させてみます。前回はイメージ名を「jenkins/jenkins:lts-jdk11」にしていますが、今回は「satoru/myjenkins:0.1.0」にしてあります。
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home satoru/myjenkins:0.1.0
起動してみるとわかりますが、「configuration-as-code」プラグインが入った状態のJenkinsが立ち上がります。簡単!!
おわりに
今回はプラグインインストール済みのJenkins環境を立ち上げるところまでまとめました。
次はこの作成したイメージを使ってAWSのECR上で動かして行きたいと思います。