はじめに
OSSのGitリポジトリマネージャGitLabをDockerのコンテナ上で運用します
サブディレクトリで運用し,https://example.com/gitlab みたいなURLからアクセスできるようにします
構成
- Apacheでwebブラウザからの接続を受け,リバースプロキシでlocalhost:3000にHTTP接続
- HTTPSを使う場合でも,ApacheでHTTPS接続を終端
- Dockerで3000番ポートからコンテナの80番ポートに接続
これにより,システムの環境とGitLabの環境をコンテナで分離して運用できます
また,ApacheでHTTPS接続を終端するので,GitLab側で余計な設定が不要になります
環境
- Debian 9.11
- Apache 2.4.25
- Docker 1.13.1
- docker-compose 1.16.1
- GitLab 12.5.0
前提条件
ApacheやDocker, docker-composeのインストール及び基本的な設定は完了している事
HTTPSを使うならその設定も
手順
1.Dockerのコンテナを作成
- 以下の内容で
docker-compose.yml
を作成し,コンテナを起動します - ポート番号は3000で最低限の設定を記述
- 3000 や example.com とした箇所は必要に応じて書き換えてください
docker-compose.yml
web:
image: 'gitlab/gitlab-ce:12.5.0-ce.0'
restart: 'always'
hostname: 'example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://example.com/gitlab'
ports:
- '3000:80'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
$ sudo docker-compose up -d
2.Apacheでリバースプロキシの設定を追加
- 以下の内容で
/etc/apache2/sites-available/gitlab.conf
を作成し,設定を有効にします
/etc/apache2/sites-available/gitlab.conf
<Location /gitlab>
ProxyPass http://127.0.0.1:3000/gitlab/ nocanon
ProxyPassReverse http://127.0.0.1:3000/gitlab/
Header edit Location ^http:// https://
</Location>
$ sudo a2ensite gitlab.conf
$ sudo systemctl reload apache2
動作確認
- 以上の設定で https://example.com/gitlab からGitLabにアクセスできるはずです
- コンテナの再起動直後はProxy Errorや502が表示されますが,数分でアクセスできるようになります
その他
- GitLabの設定ファイルは
/srv/gitlab/config/gitlab.rb
から編集可能 - 変更後は以下のコマンドでGitLabを再構成します
$ sudo docker ps # コンテナ名(NAMES)を確認
$ sudo docker exec -it (コンテナ名) gitlab-ctl reconfigure
参考
GitLab Docker images | GitLab
[ApacheやNginxでHTTPS通信をリバースプロキシする - grep Tips *] (https://www.greptips.com/posts/1238/)