Jenkins

Mac mini + Docker + Jenkins環境をを構築し、Laravelのテストを実行する(その1)

Mac mini上でCI/CDを行うためにJenkinsサーバーを構築しました。
CI/CDには色々なサービスがありますが、そこまで使わないのと社内だけで使用する事を想定した場合のための記録です。
今回はMacに直接インストールせず、Docker上にJenkinsイメージを作成して稼働させます。
またLaravelのテストを完了させるまでを目的としております。
LaravelのプロジェクトにDocker環境を構築するため、Docker in Dockerを想定しております。

0. 環境

  • Mac 15.4.1
  • docker 27.4.0
  • docker-compose v2.31.0-desktop.2
  • Jenkins 2.504.1

1. Dockerfileの作成

JenkinsのDockerfileを作成します。
Dockerの中に更にDockerをインストールし、MacにインストールされているDockerを利用するために権限に一工夫を加えております。
作成したDockerfileは「.docker/jenkins」フォルダを作成して、そこに設置します。

FROM jenkins/jenkins:lts

USER root

# パッケージリストを更新し、必要なツールをインストール
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    git \
    curl \
    apt-transport-https \
    ca-certificates \
    gnupg \
    lsb-release

# Docker クライアントのインストール
RUN mkdir -p /etc/apt/keyrings && \
    curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
    apt-get update && \
    apt-get install -y --no-install-recommends docker-ce-cli

# docker-compose のインストール
RUN curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
    chmod +x /usr/local/bin/docker-compose

# Mac側のDockeを利用するため、jenkins ユーザーとrootを同じグループにする
RUN usermod -aG 0 jenkins 

# ユーザーを jenkins に戻す
USER jenkins

2. docker-compose.yml の記述

Docker自体は以前にもインストールしているので省略します。
まずは「docker-compose.yml」を作成します。

services:
  jenkins:
    build:
      context: .
      dockerfile: .docker/jenkins/Dockerfile
    container_name: jenkins
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./jenkins_data:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock # Docker in Docker用の設定
    environment:
      - JAVA_OPTS=-Duser.timezone=Asia/Tokyo
    restart: unless-stopped
    networks:
      - default

上記ファイルを作成後にイメージをビルドします。

docker-compose build

ビルドが完了すると、コンテナを起動します。

docker-compose up -d

2. Jenkinsの初期設定

以下のURLにアクセスすると、初期パスワードを入力する画面が表示されます。

http://localhost:8083/

初期パスワードは、dockerコマンドで取得することができます。

docker logs jenkins

以下のようにパスワードが表示されます。(XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXにパスワードが表示されます)

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

取得した初期パスワードを入力して「Continue」を押下します。


次のページで「Install suggested plugins」を選択しましょう。
よほどの入れたいものがある場合にカスタムにしましょう。

次のページでログインIDとパスワードを設定します。

次のページでJenkinsのURLを入力しましょう。


入力を完了するとJenkinsの画面となります。

一旦、今回はJenkinsの構築までをまとめました。
ローカルでCI/CD環境を試していこうと思います。