LoginSignup
3
13

More than 3 years have passed since last update.

Gitlab-CEとRedmineを連携してdockerコンテナで運用する(DBを1コンテナにまとめてHTTPS付き)

Posted at

TL;DR

つくるもの

  • docker-composeで,Gitlab-CE(Omnibus Package),Redmine,リバースプロキシを稼働させます
    • 反応速度向上のために,GitlabにRedis,Redmineにmemcachedを接続します.
    • 上記2つはdocker-compose.ymlにコンテナとして稼働させます
    • GitlabとRedmineで,1つのDBコンテナ(MySQL)にまとめます
      • 1つのMySQLコンテナのデータベースの分けて使用することで,2つのサービスを共用します

準備

  • gitlab-ceをConoha-VM(上のdockerコンテナ)で運用する(HTTPS付き)を参考に,以下の作業を実施します
    • docker-comopseを含むDockerの実行環境
    • LetsEncryptoでのSSLワイルドカード証明書(fullchain.pem, privkey.pem)の取得方法は上記記事をご覧ください
    • redmine用のサブドメインと,gitlab用のサブドメインから,当該VMのグローバルIPが引けるように,DNSへの名前登録をします

docker-compose.ymlの構成

  • sameersbn氏が提供しているDockerイメージを組み合わせて作ります
  • リクエストURIで処理を振り分けるリバースプロキシをnginx公式イメージで作ります
    • SSLなどのを含めた設定ファイルは別途nginx.confを作ってマウントします

docker-compose.ymlの内容

  • コンテナの立ち上げ方法を紹介します
  • 基本的にはDockerHubで配布されているDockerイメージの組み合わせですが,1つのdocker-compose.ymlにまとめる上で適用した修正事項を説明します
  • Gistsにdocker-compose.ymlを掲載していますので,git cloneして必要な部分を修正してください

dockerコンテナの立ち上げ

  • project001-docker-compose.ymlと同じディレクトリに,リバースプロキシ設定(nginx.conf),証明書ファイル(fullchain.pem,privkey.pem)を置いてください
    • リバースプロキシされてリクエストが転送されるホストは,gitlab:80, redmine:80です
    • [gitlab-ceをConoha-VM(上のdockerコンテナ)で運用する(HTTPS付き)]に参考にできるnginx.confを掲載しています
  • /srv/docker/に不揮発ボリュームが格納されます
git clone https://gist.github.com/88ba5b2b9a57ef73912e3872ff978452.git project
cd project
cp <path>/{nginx.conf,fullchain.pem,privkey.pem} .
docker-compose -f project001-docker-compose.yml

RedmineのDBをMySQLに変更

  • Redmineが使用するデータベース(DockerhubデフォルトではPostgreSQL)を,MySQLに変更します
    • 環境変数DB_ADAPTERに,mysql2を指定すると,MySQLを使用するようになります
    • MySQLコンテナの名前をmysqlにすることにして,depends_onディレクティブでリンクします
    • データベース名をredmine_productionにしておきます
  redmine:
    image: sameersbn/redmine:4.0.3-1
    restart: always
    depends_on:
      - memcached-redmine
      - mysql
...<snip>...
    environment:
      - TZ=Asia/Tokyo
      - DB_ADAPTER=mysql2
      - DB_HOST=mysql
      - DB_USER=dbuser
      - DB_PASS=dbpass
      - DB_NAME=redmine_production

GitlabのDBをMySQLに変更

  • 前節のRedmineと同様に,GitlabのDBもPostgreSQLからMySQLに変更します.
    • 環境変数はRedmineと同じものを設定します
    • データベース名をgitlabhq_productionにしておきます
  gitlab:
    restart: always
    image: sameersbn/gitlab:11.10.4
    depends_on:
      - redis-gitlab
      - mysql
.....<snip>.....
    environment:
      - DEBUG=false
      - DB_ADAPTER=mysql2
      - DB_HOST=mysql
      - DB_PORT=3306
      - DB_USER=dbuser
      - DB_PASS=dbpass
      - DB_NAME=gitlabhq_production

サービスが接続するMySQLコンテナの作成

  • 前節までで設定を記述したMySQLのコンテナを作成します
    • ポイント :2つのコンテナからデータベースを分けて使用されるので,2つのデータベースを作る必要があります.そのため,DB_NAMEを2つ,カンマ区切りで記述します
  mysql:
    restart: always
    image: sameersbn/mysql:5.7.24
    environment:
      - DB_USER=dbuser
      - DB_PASS=dbpass
      - DB_NAME=redmine_production,gitlabhq_production
    volumes:
      - /srv/docker/mysql:/var/lib/mysql:Z

動作確認

  • docker-compose up -dでコンテナを立ち上げます
  • docker ps -aでコンテナ情報を見ると,以下のように6個のコンテナが立ち上がります
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                                    NAMES
XXXXXXXXXXX0        sameersbn/redmine:4.0.3-1     "/sbin/entrypoint.sh…"   3 seconds ago       Up 2 seconds        80/tcp, 443/tcp                          project_redmine_1
XXXXXXXXXXX1        sameersbn/gitlab:11.10.4      "/sbin/entrypoint.sh…"   4 seconds ago       Up 2 seconds        80/tcp, 443/tcp, 0.0.0.0:10022->22/tcp   project_gitlab_1
XXXXXXXXXXX2        sameersbn/redis:4.0.9-1       "/sbin/entrypoint.sh…"   5 seconds ago       Up 3 seconds        6379/tcp                                 project_redis-gitlab_1
XXXXXXXXXXX3        sameersbn/memcached:1.5.6-1   "/sbin/entrypoint.sh…"   5 seconds ago       Up 3 seconds        11211/tcp, 11211/udp                     project_memcached-redmine_1
XXXXXXXXXXX4        nginx:1.15.8                  "nginx -g 'daemon of…"   5 seconds ago       Up 2 seconds        80/tcp, 0.0.0.0:443->443/tcp             project_rev_1
XXXXXXXXXXX5        sameersbn/mysql:5.7.24        "/sbin/entrypoint.sh…"   5 seconds ago       Up 3 seconds        3306/tcp                                 project_mysql_1
  • リバースプロキシに設定したURLにアクセスして,gitlab, redmineに接続できれば完成です
  • メモリを比較的食うので,注意してください(メモリ4GBだと足りなくなると思われます)
    • gitlabが2GBくらい
    • redmineとmysqlがそれぞれ200MBくらい

参考

3
13
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
3
13