Redmine
Jenkins
GitLab
docker
Nexus3

Dockerでredmine, jenkins, gitlab, nexus3, archiva の開発環境を構築する

本稿の目的

  • Dockerを開発に新規導入したいが、あまりスキルのないSEが環境構築する際に活用する手順の確立。

ホスト環境の前提条件

  • OS:Ubuntu x64

Dockerのインストール

フリーのDocker環境としては、Docker CE(Community Edition)とDocker Compose が公開されている。前者はDockerエンジン呼ばれる仮想化やDockerイメージの管理を行うDockerの本体である。後者は複数のDockerイメージを連携して動作させる場合に用いるオプションツールである。

Docker CE

Docker Compose

  • docker composeをダウンロードする。
sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  • 実行権限を付与する。
sudo chmod +x /usr/local/bin/docker-compose
  • インストール完了を確認する。
docker-compose --version

よく使う開発ツールの導入

独断と偏見で、以下の開発ツールを採用した。

docker-composeファイル作成

docker-compose.yml
version: '3.1'

services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: 'localhost:80'
    volumes:
      - 'gitlab-etc:/etc/gitlab'
      - 'gitlab-logs:/var/log/gitlab'
      - 'gitlab-data:/var/opt/gitlab'
    ports:
      - '80:80'
      - '10081:10081'
      - '10082:10082'
      - '10443:443'
      - '10022:22'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://localhost:80'
        mattermost_external_url 'http://localhost:10081'
        registry_external_url 'http://localhost:10082'
    links:
      - 'gitlab-runner'
      - 'gitlab-specific-runner'
      - 'nexus'

  gitlab-runner:
    image: 'gitlab/gitlab-runner:latest'
    restart: always
    volumes:
      - 'gitlab-runner-etc:/etc/gitlab-runner'
      - 'gitlab-runner-home:/home/gitlab-runner'
      - '/var/run/docker.sock:/var/run/docker.soc'

  gitlab-specific-runner:
    image: 'gitlab/gitlab-runner:latest'
    restart: always
    volumes:
      - 'gitlab-specific-runner-etc:/etc/gitlab-runner'
      - 'gitlab-specific-runner-home:/home/gitlab-runner'
      - '/var/run/docker.sock:/var/run/docker.soc'

  redmine:
    image: 'redmine:latest'
    restart: always
    ports:
      - '23000:3000'
    volumes:
      - 'redmine-files:/usr/src/redmine/files'
    environment:
      REDMINE_DB_POSTGRES: 'redmine-db'
      REDMINE_DB_PASSWORD: 'example'
    links:
      - 'gitlab'

  redmine-db:
    image: 'postgres:latest'
    restart: always
    volumes:
      - 'redmine-db-data:/var/lib/postgresql/data'
    environment:
      MYSQL_ROOT_PASSWORD: 'example'
      MYSQL_DATABASE: 'redmine'

  nexus:
    image: 'sonatype/nexus3:latest'
    restart: always
    ports:
      - '48081:8081'
    volumes:
      - 'nexus-data:/nexus-data'

  jenkins:
    image: 'jenkins:latest'
    restart: always
    volumes:
      - 'jenkins-home:/var/jenkins_home'
    ports:
      - '58080:8080'
      - '50000:50000'
    links:
      - 'gitlab'
      - 'nexus'

  archiva:
    image: 'xetusoss/archiva'
    restart: always
    volumes:
      - 'archiva-data:/archiva-data'
    ports:
      - '1080:8080'

volumes:
  gitlab-etc:
  gitlab-logs:
  gitlab-data:
  gitlab-runner-etc:
  gitlab-runner-home:
  gitlab-specific-runner-etc:
  gitlab-specific-runner-home:
  redmine-files:
  redmine-db-data:
  nexus-data:
  jenkins-home:
  archiva-data:

動作確認

コンソールで以下のコマンドを実行。

up.sh
docker-compose -f docker-compose.yml up -d

ブラウザで以下のリンク先を表示できることを確認する。(JenkinsとNexus3は立ち上がりに若干時間がかかる)

初期ユーザとパスワードは以下の通り。

NAME USER PASSWORD
GitLab root 初期表示画面で設定
Redmine admin admin
Nexus3 admin admin123
Jenkins - /var/jenkins_home/secrets/initialAdminPassword に記載されたハッシュ値
archiva admin 初期設定画面で設定

Jenkinsのハッシュ値は以下のコマンドでコンテナに入って確認する。

docker exec -it docker_jenkins_1 bash

volumeの代わりにローカルディレクトリを使う場合

JenkinsとNexus3のDocker Imageだけは事前にホスト側に特定のユーザでディレクトリを作成して置かなければならない。

jenkins.sh
#!/bin/sh

mkdir -p /srv/jenkins
chown -R 1000 /srv/jenkins
nexus.sh
#!/bin/sh

mkdir -p /srv/nexus/nexus-data
chown -R 200 /srv/nexus/nexus-data

参考サイトリスト