LoginSignup
8
11

More than 5 years have passed since last update.

今更だけどDockerでJenkins構築するのにデータ永続化必須だよねって言ってほしかった

Last updated at Posted at 2018-06-07

Docker覚えたての時、JenkinsとDockerって相性悪いと思っていた。
DockerでJenkins動かしたらコンテナ内にビルドしたモジュール取りに行くの大変じゃない?
そんな手間かけるくらいなら最初からJenkinsをローカルにインストールした方がはやくないない?って
そんなことなかった。盛大な勘違してた。

ちょっと感動したので、その時のメモ書き。

DockerでJenkins構築するにはビルド結果のデータを永続化

  • Dockerの永続化って、要はコンテナとローカルのフォルダを共有させること。
  • コンテナ内のJenkinsの「/var/jenkins_home」中に成果物(ビルド結果)が入る。 それをローカル「/home/java-user/jenkins-docker」に出力すれば良い。
Dockerでjenkinsを起動するコマンド
docker run -p 8080:8080 -p 50000:50000 -v /home/java-user/jenkins-docker:/var/jenkins_home jenkins
  • Docker Composeで書くと以下のような形になる。docker-compose upで起動可能。
docker-compose.yml
version: '3.3'

services:
  jenkins:
    image: jenkins:2.60.3
    ports:
      - '8080:8080'
      - '5000:5000'
    volumes:
      - /home/java-user/jenkins-docker:/var/jenkins_home

初回起動時の注意事項

  • 初回インストール時は、インストールキーを入力必要なのでオプションdはつけない。

よしビルドしてみよう!そしたらエラった

  • Javaのブログラムでgradleでビルドしたとき、GitからCloneしたファイルのアクセス権ないよってエラーが出力された。
FATAL: command execution failed
java.io.IOException: Cannot run program "/var/jenkins_home/workspace/doma-sample/gradlew" (in directory "/var/jenkins_home/workspace/doma-sample"): error=13, Permission denied
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at hudson.Proc$LocalProc.<init>(Proc.java:245)
    at hudson.Proc$LocalProc.<init>(Proc.java:214)
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:850)
    at hudson.Launcher$ProcStarter.start(Launcher.java:384)
    at hudson.Launcher$ProcStarter.join(Launcher.java:395)
    at hudson.plugins.gradle.Gradle.performTask(Gradle.java:333)
    at hudson.plugins.gradle.Gradle.perform(Gradle.java:225)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:735)
    at hudson.model.Build$BuildExecution.build(Build.java:206)
    at hudson.model.Build$BuildExecution.doRun(Build.java:163)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:490)
    at hudson.model.Run.execute(Run.java:1735)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:405)

じゃあアクセス権付与すればよい。

シェルスクリプトに以下のように記載
cd /var/jenkins_home/workspace/doma-sample/
chmod +x gradlew

※ Jenkinsの設定イメージ

build-gradle.png

無事、ビルドできました。あとはビルドしたファイルをローカルの環境で動かすだけ。

8
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11