1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

docker-compsoeで jenkins導入までの道のり・・・

Last updated at Posted at 2021-02-05

はじめに

会社で、jenkinsを使った自動テスト環境を作ることになり、環境構築をしたもののDocker環境で動かすのに相当苦労したため、備忘も兼ねて記載
まぁ、Docker環境っていうより、docker-composeの方で躓いた感じですが・・・
一応、成功だけじゃなくて、過程も含めて、記載


導入するjenkinsについて

Jenkins(ジェンキンス)とは、継続的インテグレーション(CI)や継続的デリバリー(CD)を実現のためのツール
あとは、下記を見てもらえれば、jenkinsとはなんぞやがわかってくれると思ってます・・・

引用文献

Jenkinsとは?» CloudBees|テクマトリックス

参考文献

Jenkins
Jenkins - Wikipedia - ウィキペディア


作業環境

ubuntu20.04
Docker 20.10.2
docker-compose 1.26.2


作業

前提

Dockerとdocker-compsoeはインストールされていること

手順

環境構築で、変更作業としては、こんな感じかな~

  1. 作業(結果:失敗)
    1. ソース
    2. 結果
  2. 調査
  3. 作業(結果:成功)
    1. ソース
    2. 結果

1. 作業(結果:失敗)

docker-compose

いつもどおり、なにも考えず、データは永続化したいので、Volumeでjenkins_homeを永続化

docker-compose.yml

version: "3.7"
services:
  jenkins:
    container_name: jenkins
    image: jenkinsci/blueocean:latest
    volumes:
      - ./jenkins/jenkins-data:/var/jenkins_home
    restart: always
    ports:
      - "18080:8080"
      - "50000:50000"
    entrypoint: ["/bin/tini", "--", "/usr/local/bin/jenkins.sh"]

実行

command.
docker-compose up -d

動いたかどうか確認

http://xxx.xxx.xxx.xx:18080
にアクセス!!

error1.png

??あれ?
コンテナどうなってる?

command.
docker logs -f jenkins
ログ.
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

なんじゃこりゃ?
Dockerって基本rootだからPermissionでエラーすることないんやないの?
どういうこと?


2. 調査

ネットで頑張って調べる・・・

なんか調べてると、UIDとGUIDの1000がホスト側のフォルダに所有権に無いから、つければええよ感じっぽい・・・
UIDとGUIDの1000のホストの権限をつける?

あ~これ、コンテナ側が、rootでの起動をしていないのね・・・

でも、そうなると、shとか書かないと駄目だよな~
DockerfileにUser書いて、一度、rootでビルドした後に、実行時にjenkinsのユーザに変更して対応してたりするな~
面倒やな・・・って、コンテナのUIDとGUIDを直接rootにすればええんやない?
あんまり変更するのは、よろしくなさそうやけど・・・
まぁ、内部でしか使わんし、コンテナの起動ユーザをrootに書き換えちゃおう!!

参考文献

「Jenkins」Dockerイメージを使ってJenkinsの環境を構築する
ジェンキンスコンテナーを開始しますが、ボリュームに対して 'chown'を実行しましたが、アクセス許可が拒否されました
2015-02-10 Jenkinsの公式Dockerイメージ使ってみた
Dockerコンテナ上のJenkinsでコンテナをたててテストを実行する
Docker を使って Jenkins サーバーをローカルに構築する (プラグイン導入済み)


3. 作業(結果:成功)

docker-compose

docker-compose.yml
version: "3.7"
services:
  jenkins:
    container_name: jenkins
    user: 0:0
    image: jenkinsci/blueocean:latest
    volumes:
      - ./jenkins/jenkins-data:/var/jenkins_home
    restart: always
    ports:
      - "18080:8080"
      - "50000:50000"
    entrypoint: ["/bin/tini", "--", "/usr/local/bin/jenkins.sh"]

実行

comand.
docker-compose up -d

動いたかどうか確認

http://xxx.xxx.xxx.xx:18080
にアクセス!!

成功.PNG

成功~!!
動きました~
フォルダの中にもjenkins_homeの中身がホスト側からアクセスできるようにもなりました!


最後に

今回、docker-composeファイルしか作りたくない一心でrootユーザにして起動させています。
まぁ、jenkinsとしては、推奨していないと思われますので、こんなやり方じゃなく他のやり方でやりたいとかであれば、
docker-cmposeを使わずにやる方法か、ビルドだけrootで行い、ビルド中にユーザ権限を付けるようにshを組むかすると良いかと思います。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?