😀
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
-
Ubuntuのインストール手順の
Install using the repository
を参考に、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は立ち上がりに若干時間がかかる)
- GitLab
- GitLab http://localhost/gitlab/
- Mattermost
- GitLab Pages
- GitLab Resistory
- Redmine http://localhost/redmine/
- Nexus3 http://localhost/nexus/
- Jenkins http://localhost/jenkins/
- archiva http://localhost/archiva/
初期ユーザとパスワードは以下の通り。
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
Discussion