Edited at

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



参考サイトリスト