DockerとGitLabを用いたマルチ環境デプロイメントと分離戦略完全ガイド
Docker-GitLabは、開発者がGitLabインスタンスを簡単にデプロイ・管理し、コードリポジトリ管理、コラボレーション開発、CI/CDプロセスを一体化させる強力なDocker化ソリューションです。本ガイドでは、Docker Composeを使用してGitLabのマルチ環境デプロイメントと分離を実現する方法を詳細に解説し、チームが開発、テスト、本番環境を効率的に管理できるよう支援します。
環境準備と基本アーキテクチャ
デプロイを開始する前に、システムにDockerとDocker Composeがインストールされていることを確認してください。Docker-GitLabの基本アーキテクチャは、docker-compose.ymlで定義される3つのコアサービスで構成されます:
- Redis:キャッシュとセッション管理用
- PostgreSQL:GitLabのデータベースストレージとして
- GitLab:Webインターフェースとバックグラウンドサービスを含むコアアプリケーション
このアーキテクチャ設計により、各コンポーネント間の結合が緩和され、後のマルチ環境分離の基盤が整います。
シングルノードデプロイメントの迅速な開始
開発環境やテスト環境では、シングルノードデプロイメントが最もシンプルで効率的な方法です。以下のコマンドを実行するだけでGitLabを迅速に起動できます:
git clone https://gitcode.com/gh_mirrors/do/docker-gitlab
cd docker-gitlab
docker-compose up -d
Docker Composeは必要なイメージを自動的にプルしてサービスを起動します。デフォルトでは、GitLab Webインターフェースはhttp://localhost:10080で利用可能であり、SSHアクセスポートは10022です。
Keycloak統合による認証実装
セキュリティを強化し、統一認証を実現するために、Docker-GitLabはIdP(Identity Provider)としてKeycloakの統合をサポートしています。以下は設定手順です:
- Keycloakサービスの起動:docker-compose.ymlを修正してKeycloakサービスを追加
- Keycloak管理コンソールへのアクセス:Keyトップページにアクセスして管理インターフェースにログイン
- GitLabクライアントの作成:Keycloakで新しいクライアントを作成し、アクセスタイプを"confidential"に設定し、リダイレクトURLを構成
- GitLab認証パラメータの設定:docker-compose.ymlでOAuth関連パラメータを設定、KeycloakのURL、クライアントID、シークレットを含む
設定完了後、GitLabログインページにKeycloakログインオプションが表示され、シングルサインオンが実現されます。
マルチ環境分離戦略
開発、テスト、本番環境の分離を実現するために、以下の戦略が推奨されます:
1. 環境変数ファイルの使用
各環境の構成パラメータを保存するための異なる.envファイルを作成します。例:.env.dev、.env.test、.env.prod。
# .env.prod
GITLAB_HOST=gitlab.example.com
GITLAB_PORT=80
GITLAB_SSH_PORT=22
2. 複数のdocker-composeファイル
異なる環境向けのdocker-compose構成ファイルを作成します:
- docker-compose.yml:基本構成
- docker-compose.dev.yml:開発環境向け拡張構成
- docker-compose.prod.yml:本番環境向け拡張構成
特定環境を起動する場合は以下を使用します:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
3. データボリュームの分離
異なる環境で独立したデータボリュームを使用し、データが相互に干渉しないようにします:
# docker-compose.prod.yml
volumes:
gitlab-data-prod:
postgresql-data-prod:
redis-data-prod:
設定のベストプラクティス
セキュリティ設定
- 必ずデフォルトパスワードを変更し、docker-compose.ymlで
GITLAB_ROOT_PASSWORDを設定 - HTTPSを有効にし、
GITLAB_HTTPS=trueを設定してSSL証明書を構成 - 定期的にデータをバックアップし、
GITLAB_BACKUP_SCHEDULEで自動バックアップを設定
パフォーマンス最適化
- サーバーリソースに応じてGitLabのPumaとSidekiq設定を調整
- PostgreSQLとRedisに適切なメモリ制限を設定
- 大規模なファイルの保存にはS3互換ストレージなどの外部ストレージサービスの使用を検討
拡張リソース
- 公式ドキュメント:docs/keycloak-idp.md
- Docker Compose設定:docker-compose.yml
- Swarmデプロイメントガイド:docker-compose.swarm.yml
プロジェクトリンク
docker-gitlab Dockerized GitLab プロジェクト: https://gitcode.com/gh_mirrors/do/docker-gitlab