6
5

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-composeを用いたローカルJenkins環境構築方法 メモ

Posted at
  • マスター/スレーブ構成のJenkinsをローカル環境にdocker-composeで構築する手順をメモする。

Jenkins 構成

  • マスターノードとスレーブノードの2コンテナで構成する。

    • マスターノード : Jenkinsがインストールされたコンテナ

    • スレーブノード:マスターに操作されるコンテナ

      ※ビルド/実行環境などを分けたいときに利用する。

前提条件

  • docker/docker-composeはインストール済みであること。
  • 以下の構成のフォルダで作業する。
jenkins ____ jenkins_home		 # マウント場所。docker-compose up実行時に生成される。
		 L__ docker-compose.yml
		 L__ Dockerfile_SLAVE 	# スレーブ用Dockerfile		 

作成手順

1. マスターコンテナ作成

  • docker-compose.ymlを用意する。※後でスレーブ用設定を追加する。

    version: "3"
    services:
      jenkins_master:
        container_name: jenkins_master
        image: jenkins/jenkins:latest
        ports:
          - 18080:8080
        volumes:
          - ./jenkins_home:/var/jenkins_home
    
  • マスターコンテナを起動する。

    • docker-compose.ymlを配置しているフォルダ内で以下のコマンドを実行する。
    docker-compose up -d
    
  • マスターコンテナに入る。

    docker exec -it <コンテナID> /bin/bash
    
  • 管理者パスワードを取得する。

    cat /var/jenkins_home/secrets/initialAdminPassword
    
  • SSH認証キーを作成する。

    ssh-keygen -t rsa -C ""
    
    • jenkins_home/.ssh/id_rsa(秘密鍵)、id_rsa.pub(公開鍵)が生成される。
  • マスターコンテナを停止する。

    exit
    docker-compose stop
    

2. スレーブコンテナ作成

  • スレーブコンテナ用Dockerfileを作成し、docker-compose.ymlと同一フォルダに配置する。

    FROM jenkinsci/ssh-slave
    RUN ln -s /usr/local/openjdk-8/bin/java /usr/local/bin/java
    

    ※Java のパスを通す。

  • docker-compose.ymlを修正する。

    • スレーブコンテナ用サービス設定を追加する。※以下は最終的なdocker-compose.yml
    version: "3"
    services:
      jenkins_master:
        container_name: jenkins_master
        image: jenkins/jenkins:latest
        ports:
          - 18080:8080
        volumes:
          - ./jenkins_home:/var/lib/jenkins_home
        links:
          - jenkins_slave01
    
      jenkins_slave01:
        container_name: jenkins_slave01
        build:
          context: .
          dockerfile: Dockerfile_SLAVE
        environment:
          - JENKINS_SLAVE_SSH_PUBKEY= #前述のid_rsa.pubの値を指定する。
    
    

3. 起動

  • コンテナ起動

    docker-compose up -d
    
  • 起動確認

    docker-compose ps
         Name                    Command               State                 Ports
    ---------------------------------------------------------------------------------------------
    jenkins_master    /sbin/tini -- /usr/local/b ...   Up      50000/tcp, 0.0.0.0:18080->8080/tcp
    jenkins_slave01   setup-sshd                       Up      22/tcp
    
    • URL:http://localhost:18080/にアクセスする。

    • 新規ノード追加などの設定を行う。

      ※「[SSH] No Known Hosts file was found at /var/lib/jenkins/.ssh/known_hosts. Please ensure one is created at this path and that Jenkins can read it. Key exchange was not finished, connection is closed.」のようなエラーが出て、上手くスレーブと接続できなかったが、ノード->スレーブ->起動方法の「Host Key Verification Strategy」を「Manually trusted key Verification Strategy」に変更することで接続できた。

参考情報

6
5
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
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?