【Synology】DockerでGitLabを構築してみた
GitLab構築
DockerでSynologyにGitLabを構築してみます。
DDNSで独自ドメインを設定しているところに構築します。
このブログの「inkblogdb.com」ドメインを例にして設定していますので、ご参考にしてください。
docker-compose.yml
初めにdocker-compose.ymlを載せておきます。
後ほど解説します。
version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ee:latest
container_name: gitlab
restart: always
hostname: 'inkblogdb.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://inkblogdb.com:50433'
registry_external_url 'https://inkblogdb.com:50000'
gitlab_rails['gitlab_shell_ssh_port'] = 50022
gitlab_rails['time_zone'] = "Asia/Tokyo"
# Synologyの独自証明書を設定
letsencrypt['enable'] = false
nginx['ssl_certificate'] = "/etc/ssl/certs/gitlab/RSA-fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/ssl/certs/gitlab/RSA-privkey.pem"
ports:
- '50433:50433' # external_url用
- '50000:50000' # registry_external_url用
- '50022:22' # SSH用
volumes:
- './gitlab/config:/etc/gitlab'
- './gitlab/logs:/var/log/gitlab'
- './gitlab/data:/var/opt/gitlab'
# Synologyの独自証明書を反映
- '/usr/syno/etc/certificate/system/default:/etc/ssl/certs/gitlab'
shm_size: '256m'
entrypoint: >
sh -c "
mkdir -p /etc/gitlab/ssl ;
ln -s /etc/ssl/certs/gitlab/RSA-fullchain.pem /etc/gitlab/ssl/inkblogdb.com.crt ;
ln -s /etc/ssl/certs/gitlab/RSA-privkey.pem /etc/gitlab/ssl/inkblogdb.com.key ;
/assets/wrapper
"
Synology特有の注意点・変更点
ホストおよび証明書
例ではNASのDDNSに設定している独自ドメインを使用しています。
NAS側でLet's Encryptの証明書も自動更新してくれるので、証明書が更新されたらGitLabにも反映すべく
できる限りコピーはせず、Synologyのシステムをそのまま使うようにしました。
volumes
まずSynologyのデフォルト証明書が管理されているディレクトリは/usr/syno/etc/certificate/system/default
です。
なので、そのディレクトリをDockerのvolumesに設定し、GitLabコンテナ内の/etc/ssl/certs/gitlab
に反映させます。
volumes:
- '/usr/syno/etc/certificate/system/default:/etc/ssl/certs/gitlab'
GITLAB_OMNIBUS_CONFIG
上記Dockerのvolumesで反映した証明書を認識させるために、下記設定を行います。
environment:
GITLAB_OMNIBUS_CONFIG: |
letsencrypt['enable'] = false
nginx['ssl_certificate'] = "/etc/ssl/certs/gitlab/RSA-fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/ssl/certs/gitlab/RSA-privkey.pem"
entrypoint
最後にGitLab起動時に、GitLabが認識できる形にさせるためにシンボリックリンクを貼ります。
entrypoint: >
sh -c "
mkdir -p /etc/gitlab/ssl ;
ln -s /etc/ssl/certs/gitlab/RSA-fullchain.pem /etc/gitlab/ssl/inkblogdb.com.crt ;
ln -s /etc/ssl/certs/gitlab/RSA-privkey.pem /etc/gitlab/ssl/inkblogdb.com.key ;
/assets/wrapper
"
/etc/gitlab/ssl
がGitLabがデフォルトで読み込みに行くディレクトリなので、ディレクトリを作成します。
そこにhostnameで設定したドメイン名.crtと.keyを配置します。
最後にGitLab起動のための/assets/wrapper
を実行します。
ポート番号
NASだといろいろサービスやシステム等が起動しているため、競合しないように自由枠の50000番台を使います。
ご自由に変更いただいて問題ないです。
設定項目 | ポート番号 |
---|---|
external_url | 50433 |
registry_external_url | 50000 |
gitlab_shell_ssh_port | 50022 |
まとめ
GitLabをSynology上に構築するのは簡単でしたが、証明書周りがちょっと面倒だったのでまとめてみました。
以上、ここまで見ていただきありがとうございます。
皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。