GitLab CIジョブでのサービス設定
データベース、キャッシュ、Docker-in-Docker用のGitLab CIサービス設定方法。サービスエイリアス、ヘルスチェック、環境変数をカバー。
Docker & Containers
詳細な説明
GitLab CIでのサービス使用
GitLab CIのサービスは、ジョブコンテナと並行して実行されるDockerコンテナです。Docker Composeなしでデータベースやキャッシュなどの依存関係を提供します。
PostgreSQLサービス
test_with_postgres:
stage: test
image: node:20-alpine
services:
- name: postgres:16-alpine
alias: db
variables:
POSTGRES_DB: testdb
POSTGRES_USER: runner
POSTGRES_PASSWORD: secret
DATABASE_URL: "postgresql://runner:secret@db:5432/testdb"
script:
- npm ci
- npm run test:integration
サービスネットワークの仕組み
サービスはDockerネットワーキングを通じてジョブコンテナにリンクされます。aliasがホスト名になります。エイリアスがない場合、ホスト名はイメージ名から派生します。
サービス変数
variablesセクションで設定された環境変数は、ジョブコンテナとすべてのサービスコンテナの両方に渡されます。これがデータベースの設定方法です。
ユースケース
テストと並行して単一のデータベースやキャッシュが必要な場合にサービスを使用します。より複雑なマルチコンテナセットアップの場合は、Docker Composeを検討してください。