From 09a530ef8229aa1c2abba6fe4028f6242a6cbcf6 Mon Sep 17 00:00:00 2001
From: tobybellwood Lagoon makes use of the k8up operator to provide backup functionality for both database data as well as containers' persistent storage volumes. This operator utilizes Restic to catalog these backups, which is typically connected to an AWS S3 bucket to provide secure, off-site storage for the generated backups. Backups of databases and containers' persistent storage volumes happens nightly within production environments by default. If a different backup schedule for production backups is required, this can be specified at a project level via setting the "Backup Schedule" variables in the project's .lagoon.yml file. Production environment backups will be held according to the following schedule by default: Lagoon provides multiple methods for backing up environment data. Automated
+backups are done without user interaction and manual backups are done on-demand,
+as requested by users. By default, Lagoon will run nightly backups for each database and persistent
+volume. Daily backups are kept for seven days, and weekly backups are kept for
+six weeks. Lagoon keeps an up to date list of available backups. To view them, check the
+ Lagoon administrators Automated backups are reliant on the installation of
+K8up. Default settings
+can be configured
+per Lagoon remote. In order to download the contents of a backup, it must first be retrieved. Click
+the Automated backups can be disabled by setting the The storage bucket name can be changed by setting the Schedules use a cron-compatible syntax with the default being to run nightly
+backups ( Timezones: Backup schedules use the cluster's local timezone. Each environment type can be configured to have it's own schedule: Production Development The schedule can be set using environment variables: Pull Request The schedule can be set using environment variables: Backups will be held according to the following retention policy by default: If a different retention period for production backups is required, this can be specified at a project level via setting the "Backup Retention" variables in the project's .lagoon.yml file. Backups of development environments are attempted nightly and are strictly a best effort service. Backups stored in Restic will be tracked within Lagoon, and can be recovered via the "Backup" tab for each environment in the Lagoon UI. Lagoon supports custom backup and restore locations via the use of the "Custom Backup Settings" and/or "Custom Restore Settings" variables stored in the Lagoon API for each project. Production environments can set a different retention policy by changing
+ Warning Retention policies are evaluated by Restic, a 3rd party open source
+software. Make sure you are familiar with the policy
+options
+as they can be unintuitive. Other environment types cannot set a different retention policy. Lagoon supports custom backup locations and credentials for any project when all
+four of the following variables are set as Danger Using custom settings will override cluster default. Any misconfiguration or
+invalid/expired credentials may cause automated backups to fail or be
+inaccessible. No public access is needed on the S3 bucket and can be made entirely private. Lagoon will automatically prune the files in these S3 buckets, so no object
+retention policy is needed at the bucket level. Lagoon supports custom retrieval locations and credentials for any project when
+all four of the following variables are set as Danger Proceed with caution: Setting these variables will override backup/restore storage locations that may be configured at a cluster level. Any misconfiguration will cause backup/restore failures. Using custom settings will override cluster default. Any misconfiguration or
+invalid/expired credentials may cause retrieval of backups to fail or be
+inaccessible. The S3 bucket must have public access enabled, as Lagoon will create presigned
+URLs
+for the objects inside the bucket as needed. An example AWS IAM policy that you can create to allow access to just the S3
+bucket For increased security and reduced storage costs you can opt into removing
+restored backups after a set
+lifetime
+(e.g. 7 days). Lagoon caters for this scenario gracefully and will re-create any
+restored snapshots as needed. Users can manually backup databases and files by running a task, syncing data
+from one environment to another, or by running custom commands in containers. For Drupal projects, there are tasks available that will run drush backups. For
+non-Drupal projects, a custom task can
+be created to take a backup. For Drupal projects, the use of The Lagoon cli base images contain all the tools needed to backup databases and
+transfer files. A user familiar with Lagoon cannot automatically restore backups. After downloading the backups,
+users can restore them manually by copying
+them to the desired environment.
@@ -4965,98 +4937,6 @@
@@ -4799,20 +4785,6 @@
PHP_ERROR_REPORTING
-
-
-
+
+
@@ -4706,22 +4794,42 @@
+ Backups#
-Production Environments#
-Backup Schedules#
-Backup Retention#
-Automated Backups#
+Backups
tab of an environment in the Lagoon UI or use the Lagoon CLI (lagoon
+list backups --help
).Downloading#
+Retrieve
button in the UI or run lagoon retrieve --help
. After some time
+(how long depends on how large the backup is), it will be available to download.
+Click the Download
button in the UI or run lagoon get backup --help
.Configuring#
+LAGOON_BACKUPS_DISABLED=true
+environment
+variable.LAGOON_BAAS_BUCKET_NAME
+environment variable. Do not change this unless asked by your Lagoon
+administrator.Backup Schedules#
+M H(22-2) * * *
). The M
is special to Lagoon to allow for load
+balancing, and must be set, any other value will cause build failures.
+
+backup-schedule
in the
+ .lagoon.yml file.
+
+
+
+
+
+
+Name
+Value
+
+
+
+LAGOON_FEATURE_FLAG_CUSTOM_BACKUP_CONFIG
+enabled
+
+
+
+LAGOON_BACKUP_PROD_SCHEDULE
Cron schedule
+
+
+
+
+
+
+
+Name
+Value
+
+
+
+LAGOON_FEATURE_FLAG_CUSTOM_BACKUP_CONFIG
+enabled
+
+
+
+LAGOON_BACKUP_DEV_SCHEDULE
Cron schedule
+
+
+
+
+
+
+
+Name
+Value
+
+
+
+LAGOON_FEATURE_FLAG_CUSTOM_BACKUP_CONFIG
+enabled
+
+
+
+LAGOON_BACKUP_PR_SCHEDULE
Cron schedule
+Backup Retention#
+
-Development Environments#
-Retrieving Backups#
-Custom Backup and/or Restore Locations#
-backup-retention
in the
+.lagoon.yml
+file.Storage Location#
+BUILD
type variables. The
+environment variables need to be set at the project level (not per environment),
+and requires a Lagoon deployment after setting them (for every environment).
+
+
+
+
+
+
+Environment variable name
+Purpose
+
+
+
+LAGOON_BAAS_CUSTOM_BACKUP_ENDPOINT
Specify the S3 compatible endpoint where any Lagoon initiated backups should be stored. An example for S3 Sydney would be:
+https://s3.ap-southeast-2.amazonaws.com
.
+
+
+LAGOON_BAAS_CUSTOM_BACKUP_BUCKET
Specify the bucket name where any Lagoon initiated backups should be stored.An example custom setting would be:
+example-restore-bucket
.
+
+
+LAGOON_BAAS_CUSTOM_BACKUP_ACCESS_KEY
Specify the access key Lagoon should use to access the custom backup bucket. An example custom setting would be:
+AKIAIOSFODNN7EXAMPLE
.
+
+
+
+LAGOON_BAAS_CUSTOM_BACKUP_SECRET_KEY
Specify the secret key Lagoon should use to access the custom backup bucket. An example custom setting would be:
+wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
.Retrieval Location#
+BUILD
type environment
+variables. The environment variables need to be set at the project level (not
+per environment), and requires a Lagoon deployment after setting them (for every
+environment).
+
+
+
+
+
+
+Environment variable name
+Purpose
+
+
+
+LAGOON_BAAS_CUSTOM_RESTORE_ENDPOINT
Specify the S3 compatible endpoint where any Lagoon initiated restores should be stored. An example for S3 Sydney would be:
+https://s3.ap-southeast-2.amazonaws.com
.
+
+
+LAGOON_BAAS_CUSTOM_RESTORE_BUCKET
Specify the bucket name where any Lagoon initiated restores should be stored.An example custom setting would be:
+example-restore-bucket
.
+
+
+LAGOON_BAAS_CUSTOM_RESTORE_ACCESS_KEY
Specify the access key Lagoon should use to access the custom restore bucket. An example custom setting would be:
+AKIAIOSFODNN7EXAMPLE
.
+
+
+
+LAGOON_BAAS_CUSTOM_RESTORE_SECRET_KEY
Specify the secret key Lagoon should use to access the custom restore bucket. An example custom setting would be:
+wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
.example-restore-bucket
is:{
+ "Version": "2012-10-17",
+ "Statement": [
+ {
+ "Effect": "Allow",
+ "Action": [
+ "s3:GetBucketLocation",
+ "s3:ListBucket"
+ ],
+ "Resource": [
+ "arn:aws:s3:::example-restore-bucket"
+ ]
+ },
+ {
+ "Effect": "Allow",
+ "Action": [
+ "s3:PutObject",
+ "s3:GetObject",
+ "s3:GetObjectVersion",
+ "s3:GetBucketLocation",
+ "s3:PutObjectAcl"
+ ],
+ "Resource": [
+ "arn:aws:s3:::example-restore-bucket/*"
+ ]
+ }
+ ]
+}
+
Manual Backups#
+Tasks#
+Sync#
+drush
to sync the database and files is
+recommneded. For non-Drupal projects,
+lagoon-sync can be added to the
+project and used to sync the database and files.Manual#
+mysqldump
and rsync
can make manual
+backups.Restoring Backups#
+PHP_ERROR_REPORTING
logging level you would like PHP to use. If not supplied, it will be set dynamically based on whether this is a production or development environment.
On production environments, this value defaults to E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
.
On development environments, this value defaults to E_ALL & ~E_DEPRECATED & ~E_STRICT
.
Lagoon supports custom backup locations and credentials for any project when all four of the following variables are set as BUILD
type variables. The environment variables need to be set at the project level (not per environment), and requires a Lagoon deployment after setting them (for every environment).
Please note that any use of these variables means that all environment and database backups created and managed by Lagoon will be stored using these credentials, meaning that any interruption of these credentials' may lead to failed or inaccessible backups.
-Environment variable name | -Purpose | -
---|---|
LAGOON_BAAS_CUSTOM_BACKUP_ENDPOINT |
-Specify the S3 compatible endpoint where any Lagoon initiated backups should be stored. An example for S3 Sydney would be: https://s3.ap-southeast-2.amazonaws.com . |
-
LAGOON_BAAS_CUSTOM_BACKUP_BUCKET |
-Specify the bucket name where any Lagoon initiated backups should be stored.An example custom setting would be: example-restore-bucket . |
-
LAGOON_BAAS_CUSTOM_BACKUP_ACCESS_KEY |
-Specify the access key Lagoon should use to access the custom backup bucket. An example custom setting would be: AKIAIOSFODNN7EXAMPLE . |
-
LAGOON_BAAS_CUSTOM_BACKUP_SECRET_KEY |
-Specify the secret key Lagoon should use to access the custom backup bucket. An example custom setting would be: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY . |
-
No public access is needed on the S3 bucket and can be made entirely private.
-Lagoon will automatically prune the files in these S3 buckets, so no object retention policy is needed at the bucket level.
-Lagoon supports custom restore locations and credentials for any project when all four of the following variables are set as BUILD
type environment variables. The environment variables need to be set at the project level (not per environment), and requires a Lagoon deployment after setting them (for every environment).
Please note that any use of these variables means that all environment and database snapshots restored by Lagoon will be stored using these credentials. This means that any interruption of these credentials' access may lead to failed or inaccessible restored files.
-Environment variable name | -Purpose | -
---|---|
LAGOON_BAAS_CUSTOM_RESTORE_ENDPOINT |
-Specify the S3 compatible endpoint where any Lagoon initiated restores should be stored. An example for S3 Sydney would be: https://s3.ap-southeast-2.amazonaws.com . |
-
LAGOON_BAAS_CUSTOM_RESTORE_BUCKET |
-Specify the bucket name where any Lagoon initiated restores should be stored.An example custom setting would be: example-restore-bucket . |
-
LAGOON_BAAS_CUSTOM_RESTORE_ACCESS_KEY |
-Specify the access key Lagoon should use to access the custom restore bucket. An example custom setting would be: AKIAIOSFODNN7EXAMPLE . |
-
LAGOON_BAAS_CUSTOM_RESTORE_SECRET_KEY |
-Specify the secret key Lagoon should use to access the custom restore bucket. An example custom setting would be: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY . |
-
The S3 bucket must have public access enabled, as Lagoon will create presigned URLs for the objects inside the bucket as needed.
-An example AWS IAM policy that you can create to allow access to just the S3 bucket example-restore-bucket
is:
{
- "Version": "2012-10-17",
- "Statement": [
- {
- "Effect": "Allow",
- "Action": [
- "s3:GetBucketLocation",
- "s3:ListBucket"
- ],
- "Resource": [
- "arn:aws:s3:::example-restore-bucket"
- ]
- },
- {
- "Effect": "Allow",
- "Action": [
- "s3:PutObject",
- "s3:GetObject",
- "s3:GetObjectVersion",
- "s3:GetBucketLocation",
- "s3:PutObjectAcl"
- ],
- "Resource": [
- "arn:aws:s3:::example-restore-bucket/*"
- ]
- }
- ]
-}
-
For increased security and reduced storage costs you can opt into removing restored backups after a set lifetime (e.g. 7 days). Lagoon caters for this scenario gracefully and will re-create any restored snapshots as needed.
diff --git a/concepts-basics/lagoon-yml/index.html b/concepts-basics/lagoon-yml/index.html index d2be32165a..0c22227276 100644 --- a/concepts-basics/lagoon-yml/index.html +++ b/concepts-basics/lagoon-yml/index.html @@ -5838,7 +5838,7 @@backup-retention.production.monthly
#Specify the number of monthly backups Lagoon should retain for your project's production environment(s).
-The global default is 1
if this value is not specified.
The global default is 0
if this value is not specified.
backup-retention.production.weekly
#Specify the number of weekly backups Lagoon should retain for your project's production environment(s).
The global default is 6
if this value is not specified.
backup-retention.production.hour
Backup Schedule#
backup-schedule.production
#
Specify the backup schedule for this project. Accepts cron-compatible syntax with the notable exception that the Minute
block must be the letter M
. Any other value in the Minute
block will cause the Lagoon build to fail. This allows Lagoon to randomly choose a specific minute for these backups to happen, while users can specify the remainder of the schedule down to the hour.
-The global default is M H(22-2) * * *
if this value is not specified. Take note that these backups will use the cluster's local timezone.
+The global default is M H(22-2) * * *
if this value is not specified.
+
+Timezones:
+Backup schedules use the cluster's local timezone.
+
Environments#
Environment names match your deployed branches or pull requests. This allows for each environment to have a different config. In our example it will apply to the main
and staging
environment.
environments.[name].routes
#
diff --git a/ja/concepts-advanced/environment-variables/index.html b/ja/concepts-advanced/environment-variables/index.html
index 302b789c83..8b71dee3b3 100644
--- a/ja/concepts-advanced/environment-variables/index.html
+++ b/ja/concepts-advanced/environment-variables/index.html
@@ -866,20 +866,6 @@
PHP_ERROR_REPORTING
-
-
-
-
- カスタムバックアップ設定
-
-
-
-
-
-
- カスタム復元場所
-
-
@@ -4799,20 +4785,6 @@
PHP_ERROR_REPORTING
-
-
-
-
- カスタムバックアップ設定
-
-
-
-
-
-
- カスタム復元場所
-
-
@@ -4965,98 +4937,6 @@ PHP_ERROR_REPORTING
ログレベルを定義します。指定されていない場合は、production
環境か開発環境かによって動的に設定されます。
production
環境では、この値はデフォルトでE_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
になります。
開発環境では、この値はデフォルトでE_ALL & ~E_DEPRECATED & ~E_STRICT
になります。
-カスタムバックアップ設定#
-Lagoonは、次の4つの変数すべてがBUILD
タイプの変数として設定されている場合、任意のプロジェクトのカスタムバックアップ場所と認証情報をサポートします。環境変数はプロジェクトレベルで(環境ごとではなく)設定する必要があり、それらを設定した後にLagoonのデプロイメントが必要です(すべての環境について)。
-これらの変数のいずれかを使用すると、Lagoonが作成および管理するすべての環境とデータベースのバックアップがこれらの認証情報を使用して格納されることを意味します。つまり、これらの認証情報の中断がバックアップの失敗またはアクセス不能を引き起こす可能性があります。
-
-
-
-環境変数名
-目的
-
-
-
-
-LAGOON_BAAS_CUSTOM_BACKUP_ENDPOINT
-Lagoonによって開始されたバックアップを保存するS3互換エンドポイントを指定しますS3 Sydneyの例は次のようになります。 https://s3.ap-southeast-2.amazonaws.com
-
-
-LAGOON_BAAS_CUSTOM_BACKUP_BUCKET
-Lagoonによって開始されたバックアップを保存するバケット名を指定します。カスタム設定の例は次のようになります。 example-restore-bucket
-
-
-LAGOON_BAAS_CUSTOM_BACKUP_ACCESS_KEY
-カスタム バックアップバケットにアクセスするためにLagoonが使用するアクセスキーを指定します。カスタム設定の例は次のようになります。 AKIAIOSFODNN7EXAMPLE
-
-
-LAGOON_BAAS_CUSTOM_BACKUP_SECRET_KEY
-カスタムバックアップバケットにアクセスするためにLagoonが使用する秘密キーを指定します。カスタム設定の例は次のようになります。 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
-
-
-
-S3バケットではパブリックアクセスは不要で、完全にプライベートにすることができます。
-LagoonはこれらのS3バケット内のファイルを自動的に削除するため、バケットレベルでのオブジェクト保持ポリシーは必要ありません。
-カスタム復元場所#
-BUILD
タイプの環境変数として以下の全4つの変数が設定されている場合、任意のプロジェクトに対してカスタムリストアロケーションとクレデンシャルを設定できます。環境変数はプロジェクトレベルで設定する必要があり(環境ごとではなく)、それらを設定した後、Lagoonのデプロイが必要です(各環境について)。
-これらの変数を使用すると、Lagoonによって復元されたすべての環境とデータベースのスナップショットがこれらのクレデンシャルを使用して保存されることに注意してください。これらのクレデンシャルへのアクセスが中断されると、復元されたファイルの失敗またはアクセス不能につながる可能性があることを意味します。
-
-
-
-環境変数名
-目的
-
-
-
-
-LAGOON_BAAS_CUSTOM_RESTORE_ENDPOINT
-Lagoonによって開始された復元を保存する S3 互換エンドポイントを指定します。S3 Sydneyの例は次のようになります。 https://s3.ap-southeast-2.amazonaws.com
-
-
-LAGOON_BAAS_CUSTOM_RESTORE_BUCKET
-Lagoonによって開始された復元を保存するバケット名を指定します。カスタム設定の例は次のようになります。 example-restore-bucket
-
-
-LAGOON_BAAS_CUSTOM_RESTORE_ACCESS_KEY
-カスタム復元バケットにアクセスするためにLagoonが使用するアクセスキーを指定します。カスタム設定の例は次のようになります。 AKIAIOSFODNN7EXAMPLE
-
-
-LAGOON_BAAS_CUSTOM_RESTORE_SECRET_KEY
-カスタム復元バケットにアクセスするためにLagoonが使用するシークレットキーを指定します。カスタム設定の例は次のようになります。 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
-
-
-
-Lagoonは必要に応じてバケット内のオブジェクトの署名済みURL を作成するため、S3バケットではパブリックアクセスが有効になっている必要があります。
-S3バケット example-restore-bucket
のみへのアクセスを許可するように作成できる AWS IAM ポリシーの例は次のとおりです。
-aws_iam_restore_policy.json{
- "Version": "2012-10-17",
- "Statement": [
- {
- "Effect": "Allow",
- "Action": [
- "s3:GetBucketLocation",
- "s3:ListBucket"
- ],
- "Resource": [
- "arn:aws:s3:::example-restore-bucket"
- ]
- },
- {
- "Effect": "Allow",
- "Action": [
- "s3:PutObject",
- "s3:GetObject",
- "s3:GetObjectVersion",
- "s3:GetBucketLocation",
- "s3:PutObjectAcl"
- ],
- "Resource": [
- "arn:aws:s3:::example-restore-bucket/*"
- ]
- }
- ]
-}
-
-セキュリティの強化とストレージコスト削減のために、設定されたライフタイム後に復元されたバックアップを削除する(例えば、7日間)を選択することができます。Lagoonはこのシナリオをうまく処理し、必要に応じて復元されたスナップショットを再作成します。
diff --git a/ja/concepts-basics/lagoon-yml/index.html b/ja/concepts-basics/lagoon-yml/index.html
index 9881a23f96..80f4c0da0b 100644
--- a/ja/concepts-basics/lagoon-yml/index.html
+++ b/ja/concepts-basics/lagoon-yml/index.html
@@ -5578,7 +5578,7 @@ post-rolloutタスクの例バックアップの保持期間 ( #backup-retention }#
backup-retention.production.monthly
#
プロジェクトのproduction環境の月次バックアップの保持数を指定します。
-この値が指定されていない場合、デフォルトは 1
です。
+この値が指定されていない場合、デフォルトは 0
です。
backup-retention.production.weekly
#
プロジェクトのproduction環境の週次バックアップの保持数を指定します。
この値が指定されていない場合、デフォルトは 6
です。
@@ -5591,7 +5591,11 @@ backup-retention.production.hour
バックアップスケジュール#
backup-schedule.production
#
プロジェクトのバックアップスケジュールを指定します。ただし、Minute
ブロックは M
でなければならず、他の値は Lagoon ビルドに失敗します。これにより、Lagoonはこれらのバックアップを何分に行うかランダムに選択することができ、ユーザーはスケジュールの残りの部分を時間単位で指定できます。
-この値が指定されていない場合、グローバルデフォルトは M H(22-2) * * *
です。注意して頂きたいのは、 これらのバックアップは、クラスタのローカルタイムゾーンを使用します。
+この値が指定されていない場合、グローバルデフォルトは M H(22-2) * * *
です。
+
+タイムゾーン:
+バックアップ スケジュールでは、クラスターのローカル タイムゾーンが使用されます。
+
環境#
環境名は、デプロイされたブランチ名やプルリクエスト名と一致します。これにより、各環境で異なる設定を持つことが可能になります。私たちの例では、main
とstaging
環境に適用されます。
environments.[name].routes
#
diff --git a/ja/resources/faq/index.html b/ja/resources/faq/index.html
index 44dc6adb7a..c87da8777d 100644
--- a/ja/resources/faq/index.html
+++ b/ja/resources/faq/index.html
@@ -3925,20 +3925,6 @@
amazee.ioのLagoonを利用したホスティングサービスに興味があります
-
-
-
-
- バックアップをどのように復元することができますか?
-
-
-
-
-
-
- データベースダンプをどのようにダウンロードすることができますか?
-
-
@@ -3970,28 +3956,28 @@
-
+
ビルドのステータスを確認するにはどうすればいいですか?
-
+
どのようにして追加しますか クロンジョブとは?
-
+
新しいルートを追加するには?
-
+
ルートを削除するには?
@@ -4033,7 +4019,7 @@
-
+
リダイレクトを追加するにはどうすればいいですか?
@@ -4047,14 +4033,14 @@
-
+
環境は完全に削除して、プロジェクトに大きなコード変更を展開できますか?
-
+
新しい環境変数を表示させるにはどうすればいいですか?
@@ -4096,7 +4082,7 @@
-
+
ここでは答えられない質問があります
@@ -4845,20 +4831,6 @@
amazee.ioのLagoonを利用したホスティングサービスに興味があります
-
-
-
-
- バックアップをどのように復元することができますか?
-
-
-
-
-
-
- データベースダンプをどのようにダウンロードすることができますか?
-
-
@@ -4890,28 +4862,28 @@
-
+
ビルドのステータスを確認するにはどうすればいいですか?
-
+
どのようにして追加しますか クロンジョブとは?
-
+
新しいルートを追加するには?
-
+
ルートを削除するには?
@@ -4953,7 +4925,7 @@
-
+
リダイレクトを追加するにはどうすればいいですか?
@@ -4967,14 +4939,14 @@
-
+
環境は完全に削除して、プロジェクトに大きなコード変更を展開できますか?
-
+
新しい環境変数を表示させるにはどうすればいいですか?
@@ -5016,7 +4988,7 @@
-
+
ここでは答えられない質問があります
@@ -5052,13 +5024,6 @@ バグを見つけました!🐞バグやセキュリティ問題を見つけた場合は、その内容をsupport@amazee.ioに送ってください。GitHubの問題として報告しないでください。
amazee.ioのLagoonを利用したホスティングサービスに興味があります#
それは素晴らしいニュースです!sales@amazee.ioまでメールでお問い合わせいただけます。
-バックアップをどのように復元することができますか?#
-ファイルやデータベースのバックアップを提供しており、通常は最大で24時間ごとに取得しています。これらのバックアップはオフサイトで保存されています。
-日次バックアップは最大7つ、週次バックアップは最大4つ保持しています。
-バックアップの復元や回復が必要な場合は、お気軽にチケットを提出するか、チャットでメッセージを送ってください。喜んでお手伝いします!
-データベースダンプをどのようにダウンロードすることができますか?#
-
-
私は無効なSSL証明書エラーが出ています#
まず最初に試すべきことは、私たちのドキュメンテーションに記載されているSSLに関する情報を参照してみてください。
その手順に従ってもまだエラーが出る場合は、チケットを送信するか、チャットでメッセージを送ってください。私たちはあなたの問題を解決するのをお手伝いします。
@@ -5092,16 +5057,16 @@ Kibanaログにアクセスしようとす
任意の環境にSSHで接続できない#
任意の環境にSSHで接続できません。次のメッセージが表示されます: Permission denied (publickey)
。drush sa
を実行すると、エイリアスが返されません。
これは通常、Pygmyの問題を示しています。Pygmyのトラブルシューティングドキュメントはこちらで見つけることができます:https://pygmystack.github.io/pygmy/troubleshooting/
-ビルドのステータスを確認するにはどうすればいいですか?#
+ビルドのステータスを確認するにはどうすればいいですか?#
-どのようにして追加しますか クロンジョブとは?#
+どのようにして追加しますか クロンジョブとは?#
-新しいルートを追加するには?#
+新しいルートを追加するには?#
-ルートを削除するには?#
+ルートを削除するには?#
Lagoonは、.lagoon.yml
からルートが削除されたことをデプロイ時に検出します。デプロイログを確認して、ルートが自動的に削除されたか、それらを削除する方法について確認してください。
pygmy status
を実行すると、キーがロードされません#
SSHキーをpygmyにロードする必要があります。方法はこちら:https://pygmystack.github.io/pygmy/ssh_agent
@@ -5117,15 +5082,15 @@ Pygmyを起動すると「アドレスはすでに使用中」エ
これにより、ポート80で実行中のすべてをリストアップします。ポート80で動作しているプロセスを終了させます。ポート80が解放されると、Pygmyはこれ以上のエラーなく起動するはずです。
プロジェクトのブランチ/PR環境/本番環境をどのように変更できますか?#
その変更はLagoon APIを使用して行うことができます!この変更に関するドキュメンテーションはGraphQLのドキュメンテーションで見つけることができます.
-リダイレクトを追加するにはどうすればいいですか?#
+リダイレクトを追加するにはどうすればいいですか?#
プロジェクト/グループに新しいユーザー(およびSSHキー)を追加するにはどうすればいいですか?#
これはLagoon APIを介して行うことができます。この変更のステップドキュメンテーションは私たちのGraphQLドキュメンテーションで見つけることができます。
-環境は完全に削除して、プロジェクトに大きなコード変更を展開できますか?#
+環境は完全に削除して、プロジェクトに大きなコード変更を展開できますか?#
環境は各デプロイで完全にゼロから構築され、古いデータベースとファイルを削除してコードをプッシュすると、新鮮なクリーンなビルドが得られます。再同期を忘れないでください!
GraphQLを介して環境を削除することも可能です。指示は私たちのGraphQLドキュメンテーションで見つけることができます。
-新しい環境変数を表示させるにはどうすればいいですか?#
+新しい環境変数を表示させるにはどうすればいいですか?#
GraphQLを介してプロダクション環境にランタイム環境変数を追加したら、デプロイを行うだけで新しい環境変数を表示させることができます。 あなたの環境に変更が反映されるようになります。
Lagoon環境にSFTPでファイルを送信/取得するにはどうすればいいですか?#
クラウドホスティングのお客様は、以下の情報を使用してLagoon環境にSFTPで接続することができます:
@@ -5153,7 +5118,7 @@ Lagoonのビルドを停止する方法はありますか?Elasticsearch\Solrサービスをウェブサイトにインストールしました。ブラウザからUI(ポート9200/8983)へのアクセスをどのように取得できますか?#
デプロイされた環境でウェブサービス(NGINX/Varnish/Node.js)のみを公開することをお勧めします。ローカルでは、これらのサービスのポートマッピングをdocker-compose ps
で確認して取得できます。 , そして [
http://localhost](http://localhost/)
:` をブラウザで読み込みます。
-ここでは答えられない質問があります#
+ここでは答えられない質問があります#
Discord または uselagoon@amazee.io のメールアドレスでチームに連絡することができます。
diff --git a/resources/faq/index.html b/resources/faq/index.html
index fc6173b7cd..58a3efccd2 100644
--- a/resources/faq/index.html
+++ b/resources/faq/index.html
@@ -3925,20 +3925,6 @@
I'm interested in amazee.io's hosting services with Lagoon
-
-
-
-
- How can I restore a backup?
-
-
-
-
-
-
- How can I download a database dump?
-
-
@@ -4845,20 +4831,6 @@
I'm interested in amazee.io's hosting services with Lagoon
-
-
-
-
- How can I restore a backup?
-
-
-
-
-
-
- How can I download a database dump?
-
-
@@ -5052,13 +5024,6 @@ I found a security issue! 🐞security@amazee.io. Please DO NOT file a GitHub issue for it.
I'm interested in amazee.io's hosting services with Lagoon#
That's great news! You can contact them via email at sales@amazee.io.
-How can I restore a backup?#
-We have backups available for files and databases, typically taken every 24 hours at most. These backups are stored offsite.
-We keep up to 7 daily backups and 4 weekly backups.
-If you ever need to recover or restore a backup, feel free to submit a ticket or send us a message via chat and we will be more than happy to help!
-How can I download a database dump?#
-
-
I'm getting an invalid SSL certificate error#
The first thing to try is what is listed in our documentation about SSL.
If you follow those steps, and you are still seeing an error, please submit a ticket or send us a message on chat and we can help resolve this for you.
diff --git a/search/search_index.json b/search/search_index.json
index 06d26de4d4..f9a4d1352b 100644
--- a/search/search_index.json
+++ b/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en","ja"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Lagoon","text":""},{"location":"#lagoon-the-open-source-application-delivery-platform-for-kubernetes","title":"Lagoon - the Open Source Application Delivery Platform for Kubernetes","text":"Lagoon gives developers what they dream about. It's a system that allows developers to run the exact same code in their local and production environment. The same Docker images, the same service configurations, and the same code.
"},{"location":"#where-do-i-start","title":"Where do I start?","text":"If you want to use Lagoon to host your website or application, visit Using Lagoon - The Basics
To get more in depth with Lagoon functionality, visit Using Lagoon - Advanced
To understand how Lagoon works, check out Lagoon Concepts - The Basics
and for a deeper understanding, Lagoon Concepts - Advanced
If you want to develop Lagoon (add features, fix bugs), Developing Lagoon
"},{"location":"#tldr-how-lagoon-works","title":"TL;DR: How Lagoon Works","text":" - Developers define and configure needed services within YAML files.
- When they are happy, they push the code to Git.
- Lagoon parses the YAML files and adds in any additional needed configuration.
- Lagoon builds the needed Docker images.
- Lagoon pushes them to a Docker registry.
- Lagoon creates the needed resources in Kubernetes.
- Lagoon monitors the deployment of the containers.
- When all is done, Lagoon informs the developers in different ways (Slack, email, website, etc).
"},{"location":"#help","title":"Help?","text":"Questions? Ideas? Meet the maintainers and contributors.
Chat with us on the Lagoon Discord: https://discord.gg/te5hHe95JE
"},{"location":"#a-couple-of-things-about-lagoon","title":"A couple of things about Lagoon","text":" - Lagoon is based on microservices. The deployment and build workflow is very complex. We have multiple version control sources, multiple clusters, and multiple notification systems. Each deployment is unique and can take from seconds to hours. It's built with flexibility and robustness in mind. Microservices communicate through a messaging system, which allows us to scale individual services up and down. It allows us to survive down times of individual services. It also allows us to try out new parts of Lagoon in production without affecting others.
- Lagoon uses many programming languages. Each programming language has specific strengths. We try to decide which language makes the most sense for each service. Currently, a lot of Lagoon is built in Node.js. This is partly because we started with Node.js, but also because Node.js allows asynchronous processing of webhooks, tasks and more. We are likely going to change the programming language of some services. This is what is great about microservices! We can replace a single service with another language without worrying about other parts of the platform.
- Lagoon is not Drupal-specific. Everything has been built so that it can run any Docker image. There are existing Docker images for Drupal, and support for Drupal-specific tools like Drush. But that's it!
- Lagoon is DevOps. It allows developers to define the services they need and customize them as they need. You might think this is not the right way to do it, and gives too much power to developers. We believe that as system engineers, we need to empower developers. If we allow developers to define services locally, and test them locally, they will find bugs and mistakes themselves.
- Lagoon runs on Docker and Kubernetes. (That one should be obvious, right?)
- Lagoon can be completely locally developed and tested.
- Lagoon is completely integration tested. This means we can test the whole process. From receiving Git webhooks to deploying into a Docker container, the same Git hash is deployed in the cluster.
- Most important: It's a work in progress. It's not done yet. At amazee.io, we believe that as a hosting community, we need to work together and share code where we can.
We want you to understand the Lagoon infrastructure and how the services work together. Here is a schema (it's a little out of date - it doesn't include some of the more recent services we've added, or cover Kubernetes, so we're working on an update!): Lucid Chart \u200c
"},{"location":"#history-of-lagoon","title":"History of Lagoon","text":"As described, Lagoon is a dream come true. At amazee.io, we've been hosting Drupal for more than 8 years. This is the fourth major iteration of our hosting platform. The third iteration was built around Puppet and Ansible. Every single piece of the platform was done with configuration management. This allowed very fast setup of new servers, but at the same time was also lacking customizability for developers. We implemented some customizability, with some already with Docker in production. However, we were never completely happy with it. We realized that our existing platform wasn't enough. With the rise of decoupled Drupal, the need to run Node.js on the server side, the requests for Elasticsearch, and different Solr versions, we had to do more. \u200c
At the same time, we've been using Docker for many years for local development. It was always an idea to use Docker for everything in production. The only problem was the connection between local development and production environments. There are other systems that allow you to run Drupal in Docker in production. But, nothing allowed you to test the exact same images and services locally and in production.
Lagoon was born in 2017. It has since been developed into a system that runs Docker in production. Lagoon has replaced our third generation hosting platform with a cutting edge all Docker-based system.
"},{"location":"#open-source","title":"Open Source","text":"At amazee.io, we believe in open source. It was always troubling for us that open source code like Drupal was hosted on proprietary hosting platforms. The strength and success of a hosting company is not just their deployment systems or service configurations. It's the the people and knowledge that run the platform. The processes, skills, ability to react to unforeseen situations, and last but not least, the support they provide their clients.
"},{"location":"#license","title":"License","text":"Lagoon is available under an Apache 2.0 License
.
"},{"location":"code-of-conduct/","title":"Code of Conduct","text":""},{"location":"code-of-conduct/#our-pledge","title":"Our Pledge","text":"In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
"},{"location":"code-of-conduct/#our-standards","title":"Our Standards","text":"Examples of behavior that contributes to creating a positive environment include:
- Using welcoming and inclusive language.
- Being respectful of differing viewpoints and experiences.
- Gracefully accepting constructive criticism.
- Focusing on what is best for the community.
- Showing empathy towards other community members.
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or advances.
- Trolling, insulting/derogatory comments, and personal or political attacks.
- Public or private harassment.
- Publishing others' private information, such as a physical or electronic address, without explicit permission.
- Other conduct which could reasonably be considered inappropriate in a professional setting.
"},{"location":"code-of-conduct/#our-responsibilities","title":"Our Responsibilities","text":"Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
"},{"location":"code-of-conduct/#scope","title":"Scope","text":"This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project email address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
"},{"location":"code-of-conduct/#enforcement","title":"Enforcement","text":"Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at uselagoon@amazee.io. You may also reach out directly to Brandon, a Lagoon team member who has completed CoC training. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
"},{"location":"code-of-conduct/#attribution","title":"Attribution","text":"This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at http://contributor-covenant.org/version/1/4.
"},{"location":"contributing/","title":"Contributing","text":"We gladly welcome any and all contributions to Lagoon!
"},{"location":"contributing/#what-kind-of-contributions-do-we-need","title":"What kind of contributions do we need?","text":"Lagoon benefits from any kind of contribution - whether it's a bugfix, new feature, documentation update, or simply some queue maintenance - we're happy that you want to help
"},{"location":"contributing/#developing-for-lagoon","title":"Developing for Lagoon","text":"There's a whole section on how to get Lagoon running on your local machine using KinD over at Developing Lagoon. This documentation is still very WIP - but there are a lot of Makefile routines to help you out.
"},{"location":"contributing/#installing-lagoon","title":"Installing Lagoon","text":"We've got another section that outlines how to install Lagoon from Helm charts at Installing Lagoon Into Existing Kubernetes Cluster - we'd love to get this process as slick as possible!
"},{"location":"contributing/#help-us-with-our-examples","title":"Help us with our examples","text":"Right now one of our biggest needs is putting together examples of Lagoon working with various content management systems, etc, other than Drupal.
If you can spin up an open source CMS or framework that we don\u2019t currently have as a Docker Compose stack, send us a PR. Look at the existing examples at https://github.com/uselagoon/lagoon-examples for tips, pointers and starter issues.
One small catch \u2013 wherever possible, we\u2019d like them to be built using our base Docker Hub images https://hub.docker.com/u/uselagoon \u2013 if we don\u2019t have a suitable image, or our images need modifying \u2013 throw us a PR (if you can) or create an issue (so someone else can) at https://github.com/uselagoon/lagoon-images.
Help us improve our existing examples, if you can - are we following best practices, is there something we\u2019re doing that doesn\u2019t make sense?
Bonus points for anyone that helps contribute to tests for any of these examples \u2013 we\u2019ve got some example tests in a couple of the projects you can use for guidance \u2013 https://github.com/amazeeio/drupal-example-simple/blob/8.x/TESTING_dockercompose.md. The testing framework we\u2019re using is Leia, from the excellent team behind Lando.
Help us to document our other examples better \u2013 we\u2019re not expecting a full manuscript, but tidy-ups, links to helpful resources and clarifying statements are all super-awesome.
If you have any questions, reach out to us on Discord!
"},{"location":"contributing/#i-found-a-security-issue","title":"I found a security issue \ud83d\udd13","text":"We take security very seriously. If you discover a security issue or think you found one, please bring it to the maintainers' attention.
Danger
Please send your findings to security@amazee.io. Please DO NOT file a GitHub issue for them.
Security reports are greatly appreciated and will receive public karma and swag! We're also working on a Bug Bounty system.
"},{"location":"contributing/#i-found-an-issue","title":"I found an issue","text":"We're always interested in fixing issues, therefore issue reports are very welcome. Please make sure to check that your issue does not already exist in the issue queue.
"},{"location":"contributing/#i-have-a-feature-request-or-idea","title":"I have a feature request or idea","text":"Cool! Create an issue and we're happy to look over it. We can't guarantee that it will be implemented. But we are always interested in hearing ideas of what we could bring to Lagoon.
Another good way is also to talk to us via Discord about your idea. Join today!
"},{"location":"contributing/#i-wrote-some-code","title":"I wrote some code","text":"Epic! Please send us a pull request for it, we will do our best to review it and merge it if possible.
"},{"location":"applications/","title":"A wide range of Applications, Frameworks and Languages are supported by Lagoon","text":"Lagoon broadly classifies three levels in the application stack:
"},{"location":"applications/#languages","title":"Languages","text":"The core building blocks of any Lagoon project, these are usually provided by Lagoon-specific images.
"},{"location":"applications/#frameworks","title":"Frameworks","text":"These take those base images, and add in the necessary logic, tools and packages needed to serve a website, or drive an application.
"},{"location":"applications/#applications","title":"Applications","text":"Usually built on top of Frameworks, this is the layer that content editors or developers will interact with to shape the finished product.
When we reference any repositories for use on Lagoon, we usually refer to them in three ways:
"},{"location":"applications/#templates","title":"Templates","text":"These are fully-functional, cloneable starter repositories, maintained and updated regularly, ready to be extended and used with little customization.
"},{"location":"applications/#examples","title":"Examples","text":"These are fully functional repositories, maintained and updated regularly, but may require some effort to make work for your individual project.
"},{"location":"applications/#demos","title":"Demos","text":"These are repositories that have been built as a demonstration, and are usable for some of the concepts within, but aren't routinely maintained or updated.
For a more complete list, check out out our GitHub repository: https://www.github.com/lagoon-examples and our website https://lagoon.sh/application/
"},{"location":"applications/laravel/","title":"Laravel on Lagoon","text":"There are multiple ways of running Laravel on Lagoon.
- You may choose to \"lagoonize\" your existing application yourself (see the Lagoonizing documentation).
- We have a Laravel example repo of a simple Lagoonized Laravel installation for you to have a look at.
- (Recommended) We provide a tool called \"Sail:onLagoon\" that will take a standard Laravel Sail application and generate the appropriate Lagoon configuration files for you.
"},{"location":"applications/laravel/#app-environment-key","title":"App environment key","text":"In order to set your app key, set the APP_KEY
environment variable, either via the cli or the UI.
This eliminates the need to store the key in code (in, for instance, a .env
file).
You can generate an app key by running the php artisan key:generate --show
, which will output a valid key, rather than adjusting the project files.
"},{"location":"applications/node/","title":"Node.js","text":""},{"location":"applications/node/#introduction","title":"Introduction","text":"Lagoon provides Node.js images that are based on the official Node Alpine images.
More information on how to adapt your project to run on Lagoon can be found in our Node.js Docker Images section.
"},{"location":"applications/options/","title":"Configuring Applications for use on Lagoon","text":""},{"location":"applications/options/#lagoonyml","title":"lagoon.yml
","text":"Project- and environment-level configuration for Lagoon is provided in the .lagoon.yml
file in your repository.
See lagoon-yml.md
.
"},{"location":"applications/options/#docker-composeyml","title":"docker-compose.yml
","text":"Service-level configuration for Lagoon in provided in the docker-compose.yml
file in your repository. In particular, the lagoon.type
and associated service labels are documented in the individual services.
See docker-compose-yml.md
"},{"location":"applications/options/#storage","title":"Storage","text":"Lagoon has the ability to provision storage for most services - the built-in Lagoon service types have a -persistent
variant that can add in the necessary PVCs, volumes, etc. We have updated our examples to reflect this configuration locally.
"},{"location":"applications/options/#databases","title":"Databases","text":"Lagoon has configurations available for:
- Mariadb - all supported versions
- PostgreSQL - all supported versions
"},{"location":"applications/options/#database-as-a-service","title":"Database-as-a-service","text":"Lagoon also has the capability to utilize the dbaas-operator to automatically provision these databases using an underlying managed database service (i.e. RDS, Google Cloud Databases, Azure Database). This will happen automatically when these services are provisioned and configured for your cluster. If these are not available, a pod will be provisioned as a fallback.
"},{"location":"applications/options/#cache","title":"Cache","text":"Lagoon supports Redis as a cache backend. In production, some users provision a managed Redis service for their production environments to help them scale.
"},{"location":"applications/options/#search","title":"Search","text":"Lagoon supports Elasticsearch, Solr and OpenSearch as search providers. External search providers can also be configured if required.
"},{"location":"applications/options/#ingressroutes","title":"Ingress/Routes","text":"Lagoon auto-generates routes for services that have ingress requirements. Custom routes can be provided in the .lagoon.yml
on a per-service basis.
"},{"location":"applications/options/#environment-variables","title":"Environment Variables","text":"Lagoon makes heavy use of environment variables, at build and runtime. Where these are used to provide critical configuration for your application (e.g. database config/credentials) - it is important that the local and Lagoon versions are named similarly.
See environment-variables.md.
"},{"location":"applications/other/","title":"Running other applications on Lagoon","text":"Even if Lagoon doesn't have a base image for your particular application, framework or language, Lagoon can still build it!
Extending on, or inheriting from the commons image, Lagoon can run almost any workload.
"},{"location":"applications/other/#hugo","title":"Hugo","text":"This brief example shows how to build a Hugo website and serve it as static files in an NGINX image. The commons image is used to add Hugo, copy the site in, and build it. The NGINX image is then used to serve the site, with the addition of a customized NGINX config.
nginx.dockerfileFROM uselagoon/commons AS builder\n\nRUN apk add hugo git\nWORKDIR /app\nCOPY . /app\nRUN hugo\n\nFROM uselagoon/nginx\n\nCOPY --from=builder /app/public/ /app\nCOPY lagoon/static-files.conf /etc/nginx/conf.d/app.conf\n\nRUN fix-permissions /usr/local/openresty/nginx\n
docker-compose.ymlservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: lagoon/nginx.Dockerfile\nlabels:\nlagoon.type: nginx\n
"},{"location":"applications/php/","title":"PHP","text":""},{"location":"applications/php/#introduction","title":"Introduction","text":"Lagoon supports a wide range of PHP-based applications, such as Drupal, Laravel, Wordpress, Magento and Symfony.
More information on how to adapt your PHP project to run on Lagoon can be found in our PHP-cli Docker Images and PHP-FPM Docker Images sections.
"},{"location":"applications/python/","title":"Python","text":""},{"location":"applications/python/#introduction","title":"Introduction","text":"Lagoon provides images for Python 3.7 and above that can be used to build web apps in a wide range of Python-based frameworks and applications.
More information on how to adapt your Python project to run on Lagoon can be found in our Python Docker Images section.
"},{"location":"applications/ruby/","title":"Ruby and Ruby on Rails","text":""},{"location":"applications/ruby/#introduction","title":"Introduction","text":"We provide images for Ruby 3.0 and above, built on the official Ruby alpine Docker images.
Below we assume that you're attempting to get a Rails app deployed on Lagoon, although most of the details described are really framework-neutral.
"},{"location":"applications/ruby/#getting-rails-running-on-lagoon","title":"Getting Rails running on Lagoon","text":""},{"location":"applications/ruby/#responding-to-requests","title":"Responding to requests","text":"The Ruby on Rails example in the Lagoon examples repository is instructive here.
In the docker-compose.yml
we set up a service named ruby
, which is the primary service that will be processing any dynamic requests.
If you look at the dockerfile specified for the ruby
service, you'll see that we're exposing port 3000. The nginx
service will direct any requests for non-static assets to the ruby
service on this port (see the nginx configuration file for more details).
"},{"location":"applications/ruby/#logging","title":"Logging","text":"The Lagoon logging infrastructure is described in the docs here. Essentially, in order to make use of the infrastructure, logs need to be sent via a UDP message to udp://application-logs.lagoon.svc:5140
.
In our Rails example, we're importing the logstash-logger
gem, and then in our config/application.rb
we're initializing it with the following:
config/application.rb if ENV.has_key?('LAGOON_PROJECT') && ENV.has_key?('LAGOON_ENVIRONMENT') then\nlagoon_namespace = ENV['LAGOON_PROJECT'] + \"-\" + ENV['LAGOON_ENVIRONMENT']\nLogStashLogger.configure do |config|\nconfig.customize_event do |event|\nevent[\"type\"] = lagoon_namespace\nend\nend\nconfig.logstash.host = 'application-logs.lagoon.svc'\nconfig.logstash.type = :udp\nconfig.logstash.port = 5140\nend\n
"},{"location":"applications/ruby/#database-configuration","title":"Database configuration","text":"The example uses our PostgreSQL image (see the docker-compose.yml
file). Configuring database access in Rails for Lagoon is very straightforward. Since Lagoon injects the database host, name, and credentials as environment variables, we can change our config/database.yml
to be aware of these env vars, and consume them if they exist.
config/database.ymldefault: &default\nadapter: postgresql\nencoding: unicode\npool: <%= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } %>\nusername: <%= ENV.fetch(\"POSTGRES_USERNAME\") { \"drupal\" } %>\npassword: <%= ENV.fetch(\"POSTGRES_PASSWORD\") { \"drupal\" } %>\nhost: <%= ENV.fetch(\"POSTGRES_HOST\") { \"postgres\" } %>\ndatabase: <%= ENV.fetch(\"('POSTGRES_DATABASE'\") { \"drupal\" } %>\n
"},{"location":"applications/wordpress/","title":"WordPress on Lagoon","text":"The WordPress template is configured to use Composer to install WordPress, its dependencies, and themes.
The WordPress template is based on the https://github.com/roots/bedrock boilerplate, but extended to match a standardized Lagoon deployment pattern.
"},{"location":"applications/wordpress/#composer-install","title":"Composer Install","text":"The template uses Composer to install WordPress and its themes.
"},{"location":"applications/wordpress/#database","title":"Database","text":"Lagoon can support MariaDB and PostgreSQL databases, but as support for PostgreSQL is limited in WordPress, it isn't recommended for use.
"},{"location":"applications/wordpress/#nginx-configuration","title":"NGINX configuration","text":"Lagoon doesn't have a built-in configuration for WordPress - instead, the template comes with a starting nginx.conf - please contribute any improvements you may find!
"},{"location":"applications/wordpress/#wp-cli","title":"WP-CLI","text":"The Lagoon template installs wp-cli
into the cli image to manage your WordPress install.
"},{"location":"applications/drupal/","title":"Drupal on Lagoon","text":"Lagoon was built to host Drupal sites (no, seriously, it was - at least initially!)
In this section you'll find more information on the various services that have been customised for use with Drupal.
"},{"location":"applications/drupal/#drupal_integrations-drupal-scaffolding-package","title":"drupal_integrations
Drupal scaffolding package","text":"The drupal_integrations
package, available on packagist extends Drupal's core-composer-scaffold for use on Lagoon. It also provides additional Drush command drush la
to retreive the Drush aliases for your Lagoon project.
"},{"location":"applications/drupal/#lagoon-logs-drupal-module","title":"lagoon-logs
Drupal module","text":"The lagoon_logs
module, availalble on drupal.org provides zero-configuration logging for Drupal on Lagoon.
"},{"location":"applications/drupal/automatic-updates/","title":"Automatic Updates","text":"Lagoon deploys applications in a way that is not compatible with some methods of updating Drupal core and contrib. Lagoon expects to build immutable images and run immutable containers. When the code of the application is changed at runtime, it can cause any of the following problems:
- Containers are managed automatically by Kubernetes and may be moved, restarted, or scaled at any time. When this happens, the original built container image will be ran and any changes that happened at runtime are lost.
- Tasks and cronjobs may run with the orignal built container image and won't have access to any updated code.
- Updating requires write permissions to the filesystem, but it is possible to configure an environment that forces a read-only filesystem.
- Best practices is to deploy small containers that each do one thing. For a typical Drupal project this means there is a
cli
, php
, and nginx
container which each contain a copy of the code. Updating only one of these containers will cause issues with code mismatches.
The following update methods been disabled by Lagoon.
"},{"location":"applications/drupal/automatic-updates/#drupal-automatic-updates","title":"Drupal Automatic Updates","text":"The Automatic Updates contrib module is disabled by and it will also be disabled when it moves into Drupal core.
"},{"location":"applications/drupal/automatic-updates/#drush","title":"Drush","text":"Using drush pm-install
or drush pm-update
is disabled by default as part of the amazeeio/drupal-integrations package.
"},{"location":"applications/drupal/drush-9/","title":"Drush 9","text":""},{"location":"applications/drupal/drush-9/#aliases","title":"Aliases","text":"Unfortunately, Drush 9 does not provide the ability to inject dynamic site aliases like Drush 8 did. We are working with the Drush team to implement this again. In the meantime, we have a workaround that allows you to use Drush 9 with Lagoon.
"},{"location":"applications/drupal/drush-9/#basic-idea","title":"Basic Idea","text":"Drush 9 provides a new command, drush site:alias-convert
, which can convert Drush 8-style site aliases over to the Drush 9 YAML site alias style. This will create a on- time export of the site aliases currently existing in Lagoon, and save them in /app/drush/sites
. These are then used when running a command like drush sa
.
"},{"location":"applications/drupal/drush-9/#preparation","title":"Preparation","text":"In order to be able to use drush site:alias-convert
, you need to do the following:
- Rename the
aliases.drushrc.php
inside the drush
folder to lagoon.aliases.drushrc.php
.
"},{"location":"applications/drupal/drush-9/#generate-site-aliases","title":"Generate Site Aliases","text":"You can now convert your Drush aliases by running the following command in your project using the cli
container:
Generate Site Aliasesdocker compose exec cli drush site:alias-convert /app/drush/sites --yes\n
It's good practice to commit the resulting YAML files into your Git repository, so that they are in place for your fellow developers.
"},{"location":"applications/drupal/drush-9/#use-site-aliases","title":"Use Site Aliases","text":"In Drush 9, all site aliases are prefixed with a group. In our case, this is lagoon
. You can show all site aliases with their prefix via:
Show all site aliasesdrush sa --format=list\n
and to use them:
Using Drush site aliasdrush @lagoon.main ssh\n
"},{"location":"applications/drupal/drush-9/#update-site-aliases","title":"Update Site Aliases","text":"If a new environment in Lagoon has been created, you can run drush site:alias-convert
to update the site aliases file. If running this command does not update lagoon.site.yml
, try deleting lagoon.site.yml
first, and then re-run drush site:alias-convert
.
"},{"location":"applications/drupal/drush-9/#drush-rsync-from-local-to-remote-environments","title":"Drush rsync
from local to remote environments","text":"If you would like to sync files from a local environment to a remote environment, you need to pass additional parameters:
Drush rsyncdrush rsync @self:%files @lagoon.main:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n
This also applies to syncing one remote environment to another, if you're not using the Lagoon tasks UI to copy files between environments.
For example, if you wanted to sync the files from @lagoon.main
to @lagoon.dev
, and ran drush rsync @lagoon.main @lagoon.dev
locally, without the extra parameters, you would probably run into a \"Cannot specify two remote aliases\" error.
To resolve this, you would first need to SSH into your destination environment drush @lagoon.dev ssh
, and then execute the rsync
command with parameters similar to the above:
Drush rsyncdrush rsync @lagoon.main:%files @self:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n
This is not necessary if you rsync
from a remote to a local environment.
Also, we're working with the Drush maintainers to find a way to inject this automatically.
"},{"location":"applications/drupal/first-deployment-of-drupal/","title":"First Deployment of Drupal","text":""},{"location":"applications/drupal/first-deployment-of-drupal/#1-make-sure-you-are-all-set","title":"1. Make sure you are all set","text":"In order to make your first deployment a successful one, please make sure that your Drupal Project is Lagoonized and you have set up the project in Lagoon. If not, don't worry! Follow the Step-by-Step Guide which show you how this works.
"},{"location":"applications/drupal/first-deployment-of-drupal/#2-push","title":"2. Push","text":"With Lagoon, you create a new deployment by pushing into a branch that is configured to be deployed.
If you don't have any new code to push, don't worry, you can run
Git pushgit commit --allow-empty -m \"go, go! Power Rangers!\"\ngit push\n
This will trigger a push, and the Git hosting will inform Lagoon about this push via the configured webhook.
If all is correct, you will see a notification in your configured chat system. (Contact your Lagoon administrator to configure this):
This tells you that Lagoon has just started to deploy your code. Depending on the size of the codebase and amount of containers, this will take a couple of seconds. Just relax. If you'd like to know what's happening now, check out the Build and Deploy Process of Lagoon.
You can also check your Lagoon UI to see the progress of any deployment. (Contact your Lagoon administrator for the URL if you don't have it).
"},{"location":"applications/drupal/first-deployment-of-drupal/#3-a-fail","title":"3. A fail","text":"Depending on the post-rollout tasks defined in .lagoon.yml
, you might have run some tasks like drush updb
or drush cr
. These Drush tasks depend on a database existing within the environment, which obviously does not exist yet. Let's fix that! Keep reading.
"},{"location":"applications/drupal/first-deployment-of-drupal/#4-synchronize-local-database-to-the-remote-lagoon-environment","title":"4. Synchronize local database to the remote Lagoon environment","text":"With full Drush site alias support in Lagoon, you can synchronize a local database with the remote Lagoon environment.
Warning
You may have to tell pygmy about your public keys before the next step.
If you get an error like Permission denied (publickey)
, check out the documentation here: pygmy - adding ssh keys.
First let's make sure that you can see the Drush site aliases:
Get site aliasesdrush sa\n
This should return your just deployed environment (let's assume you just pushed into develop
):
Returned site aliases[drupal-example]cli-drupal:/app$ drush sa\n@develop\n@self\ndefault\n
With this we can now synchronize the local database (which is represented in Drush via the site alias @self
) with the remote one (@develop
):
Drush sql-syncdrush sql-sync @self @develop\n
You should see something like:
Drush sql-sync results[drupal-example]cli-drupal:/app$ drush sql-sync @self @develop\nYou will destroy data in ssh.example.com/drupal and replace with data from drupal.\nDo you really want to continue? (y/n): y\nStarting to dump database on Source. [ok]\nDatabase dump saved to /home/drush-backups/drupal/20180227075813/drupal_20180227_075815.sql.gz [success]\nStarting to discover temporary files directory on Destination. [ok]\nYou will delete files in drupal-example-develop@ssh.example.com:/tmp/drupal_20180227_075815.sql.gz and replace with data from /home/drush-backups/drupal/20180227075813/drupal_20180227_075815.sql.gz\nDo you really want to continue? (y/n): y\nCopying dump file from Source to Destination. [ok]\nStarting to import dump file onto Destination database.\n
Now let's try another deployment, again an empty push:
Git pushgit commit --allow-empty -m \"go, go! Power Rangers!\"\ngit push\n
This time all should be green:
Click on the links in the notification, and you should see your Drupal site loaded in all its beauty! It will probably not have images yet, which we will handle in Step 6.
If it is still failing, check the logs link for more information.
"},{"location":"applications/drupal/first-deployment-of-drupal/#5-synchronize-local-files-to-the-remote-lagoon-environment","title":"5. Synchronize local files to the remote Lagoon environment","text":"You probably guessed it: we can do it with Drush:
Drush rsyncdrush rsync @self:%files @develop:%files\n
It should show you something like:
Drush rsync results[drupal-example]cli-drupal:/app$ drush rsync @self:%files @develop:%files\nYou will delete files in drupal-example-develop@ssh.example.com:/app/web/sites/default/files and replace with data from /app/web/sites/default/files/\nDo you really want to continue? (y/n): y\n
In some cases, though, it might not look correct, like here:
Drush rsync results[drupal-example]cli-drupal:/app$ drush rsync @self:%files @develop:%files\nYou will delete files in drupal-example-develop@ssh.example.com:'/app/web/%files' and replace with data from '/app/web/%files'/\nDo you really want to continue? (y/n):\n
The reason for that is that the Drupal cannot resolve the path of the files directory. This most probably has to do with Drupal not being fully configured or having a missing database. For a workaround you can use drush rsync @self:sites/default/files @develop:sites/default/files
, but we suggest that you actually check your local and remote Drupal (you can test with drush status
to see if the files directory is correctly configured).
"},{"location":"applications/drupal/first-deployment-of-drupal/#6-its-done","title":"6. It's done","text":"As soon as Lagoon is done building and deploying it will send a second notification to the chat system, like so:
This tells you:
- Which project has been deployed.
- Which branch and Git SHA has been deployed.
- A link to the full logs of the build and deployment.
- Links to all routes (URLs) where the environment can be reached.
That's it! We hope that wasn't too hard - making devOps accessible is what we are striving for.
"},{"location":"applications/drupal/first-deployment-of-drupal/#but-wait-how-about-other-branches-or-the-production-environment","title":"But wait, how about other branches or the production environment?","text":"That's the beauty of Lagoon: it's exactly the same: Push the branch name you defined to be your production branch and that one will be deployed.
"},{"location":"applications/drupal/first-deployment-of-drupal/#failure-dont-worry","title":"Failure? Don't worry","text":"Did the deployment fail? Oh no! But we're here to help:
- Click on the
logs
link in the error notification. It will tell you where in the deployment process the failure happened. - If you can't figure it out, contact your Lagoon administrator, they are here to help!
"},{"location":"applications/drupal/integrate-drupal-and-fastly/","title":"Integrate Drupal & Fastly","text":""},{"location":"applications/drupal/integrate-drupal-and-fastly/#prerequisites","title":"Prerequisites","text":" - Drupal 7+
- A Fastly service ID
- A Fastly API token with the permission to purge
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#drupal-7-with-url-based-purging","title":"Drupal 7 with URL based purging","text":" - Download and install the Fastly Drupal module.
- Configure the Fastly service ID and API token.
- Optionally configure the webhooks (so you can ping Slack for instance when a cache purge is sent)
- Only URL based purging can be done in Drupal 7 (simple purging).
- Alter Drupal's client IP in
settings.php
:
settings.php changes for Drupal 7$conf['reverse_proxy_header'] = 'HTTP_TRUE_CLIENT_IP';\n
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#drupal-10-with-cache-tag-purging","title":"Drupal 10+ with cache tag purging","text":"Use Composer to get the latest version of the module:
Download the Fastly Drupal module and dependenciescomposer require drupal/fastly drupal/http_cache_control drupal/purge\n
You will need to enable the following modules:
fastly
fastlypurger
http_cache_control
(2.x) purge
purge_ui
(technically optional, but this is really handy to have enabled on production) purge_processor_lateruntime
purge_processor_cron
purge_queuer_coretags
purge_drush
(useful for purge via Drush, here is a list of commands)
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#configure-the-fastly-module-in-drupal","title":"Configure the Fastly module in Drupal","text":"Configure the Fastly service ID and API token. A Site ID is generated for you automatically. You can use runtime environment variables, or you can edit the settings form found at /admin/config/services/fastly
:
FASTLY_API_TOKEN
FASTLY_API_SERVICE
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#set-the-purge-options","title":"Set the purge options","text":" - Cache tag hash length: 4
- Purge method: Use soft purge
A 4
character cache tag is plenty for most sites, a 5
character cache tag is likely better for sites with millions of entities (to reduce cache tag collisions).
Note
Soft purging should be used, this means the object in Fastly is marked as stale, rather than being evicted entirely so that it can be used in the event the origin is down (with the feature serve while stale).
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#set-the-stale-content-options","title":"Set the Stale Content Options","text":"Set the options to what makes sense for your site. Minimum 1 hour (3600
), maximum 1 week (604800
). Generally something like the following will be fine:
- Stale while revalidate - on,
14440
seconds - Stale if error - on,
604800
seconds
Optionally configure the webhooks (so you can ping Slack for instance when a cache purge is sent).
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#configure-the-purge-module","title":"Configure the Purge module","text":"Visit the purge page /admin/config/development/performance/purge
Set up the following options:
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#cache-invalidation","title":"Cache Invalidation","text":" - Drupal Origin: Tag
- Fastly: E, Tag, URL
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#queue","title":"Queue","text":" - Queuers: Core tags queuer, Purge block(s)
- Queue: Database
- Processors: Core processor, Late runtime processor, Purge block(s)
What this means is that we will be using Drupal's built-in core tag queuer (add tags to the queue), the queue will be stored in the database (default), and the queue will be processed by
- Cron processor
- Late runtime processor
In order for the cron processor to run, you need to ensure that cron is running on your site. Ideally every minute. You can manually run it in your cli
pod, to ensure that purge_processor_cron_cron()
is being executed without errors.
start cron[drupal8]production@cli-drupal:/app$ drush cron -v\n...\n[notice] Starting execution of purge_processor_cron_cron(), execution of node_cron() took 21.16ms.\n
The Late runtime processor
will run in hook_exit()
for every page load, this can be useful to process the purges nearly as quickly as they come into the queue.
By having both, you guarantee that purges happen as soon as possible.
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#optimal-cache-header-setup","title":"Optimal Cache Header Setup","text":"Out of the box, Drupal does not have the power to set different cache lifetimes in the browser vs in Fastly. So if you do set long cache lifetimes in Drupal, often end users will not see them if their browser has cached the page. If you install the 2.x
version of the HTTP Cache Control module, this will give you a lot more flexibility on what caches and for how long.
For most sites, a sensible default could be
- Shared cache maximum age : 1 month
- Browser cache maximum age : 10 minutes
- 404 cache maximum age: 15 minutes
- 302 cache maximum age: 1 hour
- 301 cache maximum age: 1 hour
- 5xx cache maximum age: no cache
Note
This relies on your site having accurate cache tags represented for all the content that exists on the page.
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#true-client-ips","title":"True client IPs","text":"We configure Fastly to send the actual client IP back on the HTTP header True-Client-IP
, you can make Drupal respect this header with the following changes in settings.php
:
settings.php changes for Drupal < 8.7.0$settings['reverse_proxy'] = TRUE;\n$settings['reverse_proxy_header'] = 'HTTP_TRUE_CLIENT_IP';\n
However, with Drupal 8.7.0, there was a change to remove this functionality. You can achieve the same goal with the following snippet
settings.php changes for Drupal >= 8.7.0/**\n * Tell Drupal to use the True-Client-IP HTTP header.\n */\nif (isset($_SERVER['HTTP_TRUE_CLIENT_IP'])) {\n $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_TRUE_CLIENT_IP'];\n}\n
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#drush-integration","title":"Drush integration","text":"settings.php fastly:\n fastly:purge:all (fpall) Purge whole service.\n fastly:purge:key (fpkey) Purge cache by key.\n fastly:purge:url (fpurl) Purge cache by Url.\n
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#viewing-fastly-caching-headers-using-curl","title":"Viewing Fastly caching headers using cURL","text":"Use this function: (works in Linux and Mac OSX)
cURL functionfunction curlf() { curl -sLIXGET -H 'Fastly-Debug:1' \"$@\" | grep -iE 'X-Cache|Cache-Control|Set-Cookie|X-Varnish|X-Hits|Vary|Fastly-Debug|X-Served|surrogate-control|surrogate-key' }\n
Using cURL$ curlf https://www.example-site-fastly.com\ncache-control: max-age=601, public, s-maxage=2764800\nsurrogate-control: max-age=2764800, public, stale-while-revalidate=3600, stale-if-error=3600\nfastly-debug-path: (D cache-wlg10427-WLG 1612906144) (F cache-wlg10426-WLG 1612906141) (D cache-fra19179-FRA 1612906141) (F cache-fra19122-FRA 1612906141)\nfastly-debug-ttl: (H cache-wlg10427-WLG - - 3) (M cache-fra19179-FRA - - 0)\nfastly-debug-digest: 1118d9fefc8a514ca49d49cb6ece04649e1acf1663398212650bb462ba84c381\nx-served-by: cache-fra19179-FRA, cache-wlg10427-WLG\nx-cache: MISS, HIT\nx-cache-hits: 0, 1\nvary: Cookie, Accept-Encoding\n
From the above headers we can see that:
- The HTML page is cacheable
- Browsers will cache the page for 601 seconds
- Fastly will cache the page for 32 days (
2764800
seconds) - Tiered caching is in effect (edge PoP in Wellington, and shield PoP in France)
- The HTML page was a cache hit at the edge PoP
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#sending-manual-purge-requests-to-fastly","title":"Sending manual purge requests to Fastly","text":"If you ever want to remove a specific page from cache manually, there are ways to do this.
Purge Fastly by single URLcurl -Ssi -XPURGE -H 'Fastly-Soft-Purge:1' -H \"Fastly-Key:$FASTLY_API_TOKEN\" https://www.example.com/subpage\n
You can also purge by cache tag:
Purge Fastly by cache tagcurl -XPOST -H 'Fastly-Soft-Purge:1' -H \"Fastly-Key:$FASTLY_API_TOKEN\" https://api.fastly.com/service/$FASTLY_API_SERVICE/purge/<surrogatekey>\n
You can also use the Fastly CLI which helps to make this a little nicer.
"},{"location":"applications/drupal/phpunit-and-phpstorm/","title":"PHPUnit and PhpStorm","text":"Note
This document assumes the following:
- You are using Docker.
- You are using a standard Amazee/Lagoon project with a docker-compose.yml
file.
- You are on a Mac - it should work for other operating systems but folder structure and some configuration settings may be different.
"},{"location":"applications/drupal/phpunit-and-phpstorm/#configuring-the-project","title":"Configuring the project","text":" - Duplicate* the
/core/phpunit.xml.dist
file to /core/phpunit.xml
-
Edit* /core/phpunit.xml
and fill in the following variables:
- SIMPLETEST_DB:
mysql://drupal:drupal@mariadb:3306/drupal#db
- SIMPLETEST_BASE_URL:
<PROJECT_URL>
"},{"location":"applications/drupal/phpunit-and-phpstorm/#configuring-phpstorm","title":"Configuring PhpStorm","text":""},{"location":"applications/drupal/phpunit-and-phpstorm/#set-up-docker","title":"Set Up Docker","text":" - In PhpStorm, go to File > Settings > Build, Execution, Deployment > Docker
- Click:
+
- Select:
Docker for Mac
"},{"location":"applications/drupal/phpunit-and-phpstorm/#set-up-cli-interpreter","title":"Set Up CLI interpreter","text":"Add a new CLI interpreter:
- In PhpStorm, go to File > Settings > Languages & Frameworks > PHP
- Click
...
and then +
- Next select: Add a new CLI interpreter from Docker, vagrant...
- Use the following configurations:
- Server:
<DOCKER>
- Configuration file(s):
./docker-compose.yml
- Service:
cli
- Lifecycle:
Connect to existing container ('docker compose exec')
- Path mappings:
- Local path:
<ROOT_PATH>
- Remote path*:
/app
"},{"location":"applications/drupal/phpunit-and-phpstorm/#set-up-remote-interpreter","title":"Set Up Remote Interpreter","text":"Add Remote Interpreter:
- In PhpStorm, go to File > Settings > Languages & Frameworks > PHP > Test Frameworks
- Click
+
and select PHPUnit by Remote Interpreter
- Use the following configurations:
- CLI Interpreter:
<CLI_INTERPRETER>
- Path mappings*:
<PROJECT_ROOT> -> /app
- PHPUnit:
Use Composer autoloader
- Path to script*:
/app/vendor/autoload.php
- Default configuration file*:
/app/web/core/phpunit.xml
"},{"location":"applications/drupal/phpunit-and-phpstorm/#setupconfigure-runner-template","title":"Setup/Configure Runner Template","text":" - Configure runner:
- In PhpStorm, go to Run > Edit Configurations... > Templates > PHPUnit
- Use the following configurations:
1. Test scope: Defined in the configuration file
2. Interpreter: <CLI_INTERPRETER>
Note
If you are not on a Mac, this may vary.
"},{"location":"applications/drupal/phpunit-and-phpstorm/#final-checks","title":"Final checks","text":""},{"location":"applications/drupal/phpunit-and-phpstorm/#some-final-checks-to-run-before-you-run-a-test","title":"Some final checks to run before you run a test","text":" - You have the project up and running:
$ docker compose up -d
- The project is working without any errors, visit the site just to make sure it all works as expected - this is not 100% necessary, but nice to know it is working normally.
- We should be ready to run some tests!
"},{"location":"applications/drupal/phpunit-and-phpstorm/#ready-to-run","title":"Ready to Run","text":"Now you have the above configuration set up it should be as straightforward as going to the test you want to run and pressing the green arrow!
Once you press this PhpStorm will use Docker to enter the CLI container, then start running PHPUnit based upon the config.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/","title":"Step by Step: Getting Drupal ready to run on Lagoon","text":""},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#1-lagoon-drupal-setting-files","title":"1. Lagoon Drupal Setting Files","text":"In order for Drupal to work with Lagoon, we need to teach Drupal about Lagoon and Lagoon about Drupal. This happens by copying specific YAML and PHP files into your Git repository.
If you're working on a Drupal project, you can check out one of the various Drupal example projects in our examples repository. We have Drupal 8 and 9 and some variants of each depending on your needs, such as database types. Clone the repository that best suits your needs to get started!
Here is a summary of the Lagoon- and Drupal-specific files you will find:
.lagoon.yml
- The main file that will be used by Lagoon to understand what should be deployed and many more things. This file has some sensible Drupal defaults. If you would like to edit or modify, please check the documentation for .lagoon.yml
. docker-compose.yml
, .dockerignore
, and *.dockerfile
(or Dockerfile
) - These files are used to run your local Drupal development environment, they tell Docker which services to start and how to build them. They contain sensible defaults and many commented lines. We hope that it's well-commented enough to be self-describing. If you would like to find out more, see documentation for docker-compose.yml
. sites/default/*
- These .php
and .yml
files tell Drupal how to communicate with Lagoon containers both locally and in production. They also provide a straightforward system for specific overrides in development and production environments. Unlike other Drupal hosting systems, Lagoon never ever injects Drupal settings files into your Drupal. Therefore, you can edit them however you like. Like all other files, they contain sensible defaults and some commented parts. drush/aliases.drushrc.php
- These files are specific to Drush and tell Drush how to talk to the Lagoon GraphQL API in order to learn about all site aliases there are. drush/drushrc.php
- Some sensible defaults for Drush commands.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#update-your-gitignore-settings","title":"Update your .gitignore
Settings","text":"Don't forget to make sure your .gitignore
will allow you to commit the settings files.
Drupal is shipped with sites/*/settings*.php
and sites/*/services*.yml
in .gitignore
. Remove that, as with Lagoon we don't ever have sensitive information in the Git repository.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#note-about-webroot-in-drupal-8","title":"Note about WEBROOT
in Drupal 8","text":"Unfortunately the Drupal community has not decided on a standardized WEBROOT
folder name. Some projects put Drupal within web
, and others within docroot
or somewhere else. The Lagoon Drupal settings files assume that your Drupal is within web
, but if this is different for your Drupal, please adapt the files accordingly.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#note-about-composerjson","title":"Note about composer.json
","text":"If you installed Drupal via composer, please check your composer.json
and make sure that the name
is NOT drupal/drupal
, as this could confuse Drush and other tools of the Drupal universe, just rename it to something like myproject/drupal
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#2-customize-docker-composeyml","title":"2. Customize docker-compose.yml
","text":"Don't forget to customize the values in lagoon-project
& LAGOON_ROUTE
with your site-specific name & the URL you'd like to access the site with. Here's an example:
docker-compose.ymlx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# Route that should be used locally. If you are using pygmy, this route *must* end with .docker.amazee.io.\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#3-build-images","title":"3. Build Images","text":"First, we need to build the defined images:
Build imagesdocker compose build\n
This will tell docker-compose
to build the Docker images for all containers that have a build:
definition in the docker-compose.yml
. Usually for Drupal this is the case for the cli
, nginx
and php
images. We do this because we want to run specific build commands (like composer install
) or inject specific environment variables (like WEBROOT
) into the images.
Usually, building is not necessary every time you edit your Drupal code (as the code is mounted into the containers from your host), but rebuilding does not hurt. Plus, Lagoon will build the exact same Docker images during a deploy, so you can check that your build will also work during a deployment by just running docker compose build
again.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#4-start-containers","title":"4. Start Containers","text":"Now that the images are built, we can start the containers:
Start containersdocker compose up -d\n
This will bring up all containers. After the command is done, you can check with docker compose ps
to ensure that they are all fully up and have not crashed. If there is a problem, check the logs with docker compose logs -f [servicename]
.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#5-rerun-composer-install-for-composer-projects-only","title":"5. Rerun composer install
(for Composer projects only)","text":"In a local development environment, you probably want all dependencies downloaded and installed, so connect to the cli
container and run composer install
:
Run composer install in CLIdocker compose exec cli bash\ncomposer install\n
This might sound weird, as there was already a composer install
executed during the build step, so let us explain:
- In order to be able to edit files on the host and have them immediately available in the container, the default
docker-composer.yml
mounts the whole folder into the the containers (this happens with .:/app:delegated
in the volumes section). This also means that all dependencies installed during the Docker build are overwritten with the files on the host. - Locally, you probably want dependencies defined as
require-dev
in composer.json
to exist as well, while on a production deployment they would just use unnecessary space. So we run composer install --no-dev
in the Dockerfile and composer install
manually.
If everything went well, open the LAGOON_ROUTE
defined in docker-compose.yml
(for example http://drupal.docker.amazee.io
) and you should be greeted by a nice Drupal error. Don't worry - that's ok right now, most important is that it tries to load a Drupal site.
If you get a 500 or similar error, make sure everything loaded properly with Composer.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#6-check-status-and-install-drupal","title":"6. Check Status and Install Drupal","text":"Finally it's time to install Drupal, but just before that we want to make sure everything works. We suggest using Drush for that:
Drush statusdocker compose exec cli bash\ndrush status\n
This should return something like:
Drush status result[drupal-example]cli-drupal:/app$ drush status\n[notice] Missing database table: key_value\nDrupal version : 8.6.1\nSite URI : http://drupal.docker.amazee.io\nDatabase driver : mysql\nDatabase hostname : mariadb\nDatabase port : 3306\nDatabase username : drupal\nDatabase name : drupal\nPHP binary : /usr/local/bin/php\nPHP config : /usr/local/etc/php/php.ini\nPHP OS : Linux\nDrush script : /app/vendor/drush/drush/drush\nDrush version : 9.4.0\nDrush temp : /tmp\nDrush configs : /home/.drush/drush.yml\n /app/vendor/drush/drush/drush.yml\nDrupal root : /app/web\nSite path : sites/default\n
Warning
You may have to tell pygmy about your public key before the next step.
If you get an error like Permission denied (publickey)
, check out the documentation here: pygmy - adding ssh keys
Now it is time to install Drupal (if instead you would like to import an existing SQL file, please skip to step 7, but we suggest you start with a clean Drupal installation in the beginning to be sure everything works).
Install Drupaldrush site-install\n
This should output something like:
drush site-install[drupal-example]cli-drupal:/app$ drush site-install\nYou are about to DROP all tables in your 'drupal' database. Do you want to continue? (y/n): y\nStarting Drupal installation. This takes a while. Consider using the --notify global option.\nInstallation complete. User name: admin User password: a7kZJekcqh\nCongratulations, you installed Drupal!\n
Now you can visit the URL defined in LAGOON_ROUTE
and you should see a fresh and clean installed Drupal site - Congrats!
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#7-import-existing-database-dump","title":"7. Import existing Database Dump","text":"If you already have an existing Drupal site, you probably want to import its database over to your local site.
There are many different ways to create a database dump. If your current hosting provider has Drush installed, you can use the following:
Drush sql-dumpdrush sql-dump --result-file=dump.sql\n\nDatabase dump saved to dump.sql\n
Now you have a dump.sql
file that contains your whole database.
Copy this file into your Git repository and connect to the cli
, and you should see the file in there:
Viewing dump.sql[drupal-example]cli-drupal:/app$ ls -l dump.sql\n-rw-r--r-- 1 root root 5281 Dec 19 12:46 dump.sql\n
Now you can drop the current database, and then import the dump.
Import dump.sqldrush sql-drop\n\ndrush sql-cli < dump.sql\n
Verify that everything works with visiting the URL of your project. You should have a functional copy of your Drupal site!
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#8-drupal-files-directory","title":"8. Drupal files directory","text":"A Drupal site also needs the files directory. As the whole folder is mounted into the Docker containers, add the files into the correct folder (probably web/sites/default/files
, sites/default/files
or something similar). Remember what you've set as your WEBROOT
- it may not be the same for all projects.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#9-done","title":"9. Done","text":"You are done with your local setup. The Lagoon team wishes happy Drupaling!
"},{"location":"applications/drupal/subfolders/","title":"Subfolders","text":"An example could be: www.example.com
points to one Drupal site, while www.example.com/blog
loads a blog built in another Drupal.
It would be possible to run both Drupals in a single Git repository and deploy it as a whole, but this workflow might not fit every team, and having separate Git repositories fits some situations better.
"},{"location":"applications/drupal/subfolders/#modifications-of-root-application","title":"Modifications of root application","text":"The root application (in this example, the Drupal site for www.example.com
), needs a couple of NGINX configs that will configure NGINX to be a reverse proxy to the subfolder applications:
"},{"location":"applications/drupal/subfolders/#location_prependconf","title":"location_prepend.conf
","text":"Create a file called location_prepend.conf
in the root of your Drupal installation:
location_prepend.confresolver 8.8.8.8 valid=30s;\n\nlocation ~ ^/subfolder {\n # If $http_x_forwarded_proto is empty (If it is not set from an upstream reverseproxy).\n # Aet it to the current scheme.\n set_if_empty $http_x_forwarded_proto $scheme;\n\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;\n proxy_set_header X-Lagoon-Forwarded-Host $host;\n # Will be used by downstream to know the original host.\n proxy_set_header X-REVERSEPROXY $hostname;\n proxy_set_header FORWARDED \"\";\n # Unset FORWARDED because drupal8 gives errors if it is set.\n proxy_set_header Proxy \"\";\n # Unset Proxy because drupal8 gives errors if it is set.\n proxy_ssl_server_name on;\n\n # NGINX needs a variable set in order for the DNS resolution to work correctly.\n set $subfolder_drupal_host \"https://nginx-lagoonproject-${LAGOON_GIT_SAFE_BRANCH}.clustername.com:443\";\n # LAGOON_GIT_SAFE_BRANCH variable will be replaced during docker entrypoint.\n proxy_pass $subfolder_drupal_host;\n proxy_set_header Host $proxy_host;\n # $proxy_host will be automatically generated by NGINX based on proxy_pass (it needs to be without scheme and port).\n\n expires off; # make sure we honor cache headers from the proxy and not overwrite them\n
Replace the following strings:
/subfolder
with the name of the subfolder you want to use. For example, /blog
. nginx
with the service that you want to point too in the subfolder project. lagoonproject
with the Lagoon projectname of the subfolder project.
"},{"location":"applications/drupal/subfolders/#nginx-dockerfile","title":"NGINX Dockerfile","text":"Add the following to your NGINX Dockerfile (nginx.dockerfile
or Dockerfile.nginx
):
nginx.dockerfileCOPY location_prepend.conf /etc/nginx/conf.d/drupal/location_prepend.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/*\n
"},{"location":"applications/drupal/subfolders/#modifications-of-subfolder-application","title":"Modifications of subfolder application","text":"Like the root application, we also need to teach the subfolder application (in this example, the Drupal installation for www.example.com/blog
), that it is running under a subfolder. To do this, we create two files:
"},{"location":"applications/drupal/subfolders/#location_drupal_append_subfolderconf","title":"location_drupal_append_subfolder.conf
","text":"Create a file called location_drupal_append_subfolder.conf
in the root of your subfolder Drupal installation:
location_drupal_append_subfolder.conf# When injecting a script name that is prefixed with `subfolder`, Drupal will\n# render all URLs with `subfolder` prefixed\nfastcgi_param SCRIPT_NAME /subfolder/index.php;\n\n# If we are running via a reverse proxy, we inject the original HOST URL\n# into PHP. With this Drupal will render all URLs with the original HOST URL,\n# and not the current used HOST.\n\n# We first set the HOST to the regular host variable.\nfastcgi_param HTTP_HOST $http_host;\n# Then we overwrite it with `X-Lagoon-Forwarded-Host` if it exists.\nfastcgi_param HTTP_HOST $http_x_lagoon_forwarded_host if_not_empty;\n
Replace /subfolder
with the name of the subfolder you want to use. For example, /blog
.
"},{"location":"applications/drupal/subfolders/#server_prepend_subfolderconf","title":"server_prepend_subfolder.conf
","text":"Create a file called server_prepend_subfolder.conf
in the root of your subfolder Drupal installation:
server_prepend_subfolder.conf# Check for redirects before we do the internal NGINX rewrites.\n# This is done because the internal NGINX rewrites uses `last`,\n# which instructs NGINX to not check for rewrites anymore (and\n# `if` is part of the redirect module).\ninclude /etc/nginx/helpers/010_redirects.conf;\n\n# This is an internal NGINX rewrite, it removes `/subfolder/`\n# from the requests so that NGINX handles the request as it would\n# have been `/` from the beginning.\n# The `last` flag is also important. It will cause NGINX not to\n# execute any more rewrites, because it would redirect forever\n# with the rewrites below.\nrewrite ^/subfolder/(.*) /$1 last;\n\n# Make sure redirects are NOT absolute, to ensure NGINX does not\n# overwrite the host of the URL - which could be something other than\n# what NGINX currently thinks it is serving.\nabsolute_redirect off;\n\n# If a request just has `/subfolder` we 301 redirect to `/subfolder/`\n# (Drupal really likes a trailing slash)\nrewrite ^/subfolder /subfolder/ permanent;\n\n# Any other request we prefix 301 redirect with `/subfolder/`\nrewrite ^\\/(.*) /subfolder/$1 permanent;\n
Replace /subfolder
with the name of the subfolder you want to use. For example, /blog
.
"},{"location":"applications/drupal/subfolders/#nginx-dockerfile_1","title":"NGINX Dockerfile","text":"We also need to modify the NGINX Dockerfile.
Add the following to your NGINX Dockerfile (nginx.dockerfile
or Dockerfile.nginx
):
nginx.dockerfileCOPY location_drupal_append_subfolder.conf /etc/nginx/conf.d/drupal/location_drupal_append_subfolder.conf\nCOPY server_prepend_subfolder.conf /etc/nginx/conf.d/drupal/server_prepend_subfolder.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/*\n
"},{"location":"applications/drupal/services/","title":"Services","text":""},{"location":"applications/drupal/services/#mariadb-is-the-open-source-successor-to-mysql","title":"MariaDB is the open-source successor to MySQL","text":"Learn about MariaDB with Drupal
Documentation on the plain MariaDB image (the MariaDB-Drupal image is built on this).
"},{"location":"applications/drupal/services/#redis-is-a-fast-open-source-in-memory-key-value-data-store-for-use-as-a-database-cache-message-broker-and-queue","title":"Redis is a fast, open-source, in-memory key-value data store for use as a database, cache, message broker, and queue","text":"Learn about Redis with Drupal.
Documentation on the Redis-persistent image.
"},{"location":"applications/drupal/services/#solr-is-an-open-source-search-platform","title":"Solr is an open-source search platform","text":"Learn about Solr with Drupal.
Documentation on the plain Solr image (the Solr-Drupal image is built on this).
"},{"location":"applications/drupal/services/#varnish-is-a-powerful-open-source-http-engine-and-reverse-http-proxy-that-helps-to-speed-up-your-website","title":"Varnish is a powerful, open-source HTTP engine and reverse HTTP proxy that helps to speed up your website","text":"Learn about Varnish with Drupal
Documentation on the plain Varnish image (the Varnish-Drupal image is built on this).
"},{"location":"applications/drupal/services/mariadb/","title":"MariaDB-Drupal","text":"The Lagoon mariadb-drupal
Docker image Dockerfile is a customized mariadb
image to use within Drupal projects in Lagoon. It differs from the mariadb
image only for initial database setup, made by some environment variables:
Environment Variable Default Description MARIADB_DATABASE
drupal Drupal database created at startup. MARIADB_USER
drupal Default user created at startup. MARIADB_PASSWORD
drupal Password of default user created at startup. If the LAGOON_ENVIRONMENT_TYPE
variable is set to production
, performances are set accordingly by using MARIADB_INNODB_BUFFER_POOL_SIZE=1024
and MARIADB_INNODB_LOG_FILE_SIZE=256
.
"},{"location":"applications/drupal/services/mariadb/#additional-mariadb-logging","title":"Additional MariaDB Logging","text":"During the course of development, it may be necessary to enable either query logging or slow query logging. To do so, set the environment variables MARIADB_LOG_SLOW
or MARIADB_LOG_QUERIES
. This can be done in docker-compose.yml
.
"},{"location":"applications/drupal/services/mariadb/#connecting-to-mysql-container-from-the-host","title":"Connecting to MySQL container from the host","text":"If you would like to connect to your MySQL database inside the Docker container with an external tool like Sequel Pro, MySQL Workbench, HeidiSQL, DBeaver, plain old mysql-cli
or anything else, here's how to get the IP and port info.
"},{"location":"applications/drupal/services/mariadb/#get-published-mysql-port-from-the-container","title":"Get published MySQL port from the container","text":"By default, Docker assigns a randomly published port for MySQL during each container start. This is done to prevent port collisions.
To get the published port via docker
:
Run: docker port [container_name]
.
Get port$ docker port drupal_example_mariadb_1\n3306/tcp -> 0.0.0.0:32797\n
Or via docker-compose
inside a Drupal repository:
Run: docker compose port [service_name] [interal_port]
.
Set portsdocker compose port mariab 3306\n0.0.0.0:32797\n
"},{"location":"applications/drupal/services/mariadb/#setting-a-static-port-not-recommended","title":"Setting a static port (not recommended)","text":"During development, if you are using an external database tool, it may become cumbersome to continually check and set the MySQL connection port.
To set a static port, edit your service definition in your docker-compose.yml
.
docker-compose.yml mariadb:\n...\nports:\n- \"33772:3306\" # Exposes port 3306 with a 33772 on the host port. Note by doing this you are responsible for managing port collisions`.\n
Warning
By setting a static port you become responsible for managing port collisions.
"},{"location":"applications/drupal/services/mariadb/#connect-to-mysql","title":"Connect to MySQL","text":"Now you can use these details to connect to whatever database management tool you'd like.
Linux OS X IP/Host IP from container docker.amazee.io
Port Published port from container Published port from container Username drupal
drupal
Password drupal
drupal
Database drupal
drupal
"},{"location":"applications/drupal/services/nginx/","title":"NGINX-Drupal","text":"The Lagoon nginx-drupal
Docker image. Optimized to work with Drupal. Based on Lagoon nginx
image.
"},{"location":"applications/drupal/services/nginx/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. - To keep
drupal.conf
's configuration file as clean and customizable as possible, we added include
directives in the main sections of the file:server
, location /
, location @drupal
and location @php
. - Further information in the section
Drupal.conf
customization.
"},{"location":"applications/drupal/services/nginx/#included-drupal-configuration-drupalconf","title":"Included Drupal configuration (drupal.conf
)","text":"The image includes a full NGINX working configuration for Drupal 7, 8 and 9. It includes some extra functionalities like:
- Support for
humanstxt
Drupal module. - Support for
robotstxt
Drupal module. - Disallow access to
vagrant
directory for local development.
"},{"location":"applications/drupal/services/nginx/#drupalconf-customization","title":"Drupal.conf
customization","text":"The drupal.conf
file is a customized version of the nginx
configuration file, optimized for Drupal. Customers have different ways of customizing it:
- Modifying it (hard to support in case of errors).
- Using built-in customization through
*.conf
files.
The drupal.conf
file is divided into several sections. The sections we've included in our customizations are:
server
location /
location @drupal
location @php
.
For each of this section, there are two includes:
*_prepend.conf
*_append.conf
Here what the location @drupal
section looks like:
drupal.conflocation @drupal {\ninclude /etc/nginx/conf.d/drupal/location_drupal_prepend*.conf;\ninclude /etc/nginx/fastcgi.conf;\nfastcgi_param SCRIPT_NAME /index.php;\nfastcgi_param SCRIPT_FILENAME $realpath_root/index.php;\nfastcgi_pass ${NGINX_FASTCGI_PASS:-php}:9000;\ninclude /etc/nginx/conf.d/drupal/location_drupal_append*.conf;\n}\n
This configuration allows customers to create files called location_drupal_prepend.conf
and location_drupal_append.conf
, where they can put all the configuration they want to insert before and after the other statements.
Those files, once created, MUST exist in the nginx
container, so add them to Dockerfile.nginx
like so:
dockerfile.nginxCOPY location_drupal_prepend.conf /etc/nginx/conf.d/drupal/location_drupal_prepend.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/location_drupal_prepend.conf\n
"},{"location":"applications/drupal/services/nginx/#drupal-core-statistics-module-configuration","title":"Drupal Core Statistics Module Configuration","text":"If you're using the core Statistics module, you may run into an issue that needs a quick configuration change.
With the default NGINX configuration, the request to the tracking endpoint /core/modules/statistics/statistics.php
is denied (404).
This is related to the default NGINX configuration:
drupal.conflocation ~* ^.+\\.php$ {\n try_files /dev/null @drupal;\n}\n
To fix the issue, we instead define a specific location rule and inject this as a location prepend configuration:
drupal.conf## Allow access to to the statistics endpoint.\nlocation ~* ^(/core/modules/statistics/statistics.php) {\n try_files /dev/null @php;\n}\n
And copy this during the NGINX container build:
dockerfile.nginx# Add specific Drupal statistics module NGINX configuration.\nCOPY .lagoon/nginx/location_prepend_allow_statistics.conf /etc/nginx/conf.d/drupal/location_prepend_allow_statistics.conf\n
"},{"location":"applications/drupal/services/php-cli/","title":"PHP-CLI-Drupal","text":"The Lagoon php-cli-drupal
Docker image is optimized to work with Drupal. It is based on the Lagoon php-cli
image, and has all the command line tools needed for the daily maintenance of a Drupal website:
drush
drupal console
drush launcher
(which will fallback to Drush 8 if there is no site installed Drush found)
"},{"location":"applications/drupal/services/php-cli/#supported-versions","title":"Supported versions","text":" - 7.3 (available for compatibility only, no longer officially supported)
- 7.4 (available for compatibility only, no longer officially supported) -
uselagoon/php-7.4-cli-drupal
- 8.0 (available for compatibility only, no longer officially supported) -
uselagoon/php-8.0-cli-drupal
- 8.1 Dockerfile -
uselagoon/php-8.1-cli-drupal
- 8.2 Dockerfile -
uselagoon/php-8.2-cli-drupal
- 8.3 Dockerfile -
uselagoon/php-8.3-cli-drupal
All PHP versions use their own Dockerfiles.
"},{"location":"applications/drupal/services/php-cli/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user.
"},{"location":"applications/drupal/services/redis/","title":"Redis","text":"We recommend using Redis for internal caching. Add the Redis service to docker-compose.yaml
.
docker-compose.yml redis:\nimage: uselagoon/redis-5\nlabels:\nlagoon.type: redis\n<< : *default-user # Uses the defined user from top.\nenvironment:\n<< : *default-environment\n
Also, to configure Redis, add the following to your settings.php
.
"},{"location":"applications/drupal/services/redis/#drupal-7","title":"Drupal 7","text":"settings.php if(getenv('LAGOON')){\n $conf['redis_client_interface'] = 'PhpRedis';\n $conf['redis_client_host'] = 'redis';\n $conf['lock_inc'] = 'sites/all/modules/contrib/redis/redis.lock.inc';\n $conf['path_inc'] = 'sites/all/modules/contrib/redis/redis.path.inc';\n $conf['cache_backends'][] = 'sites/all/modules/contrib/redis/redis.autoload.inc';\n $conf['cache_default_class'] = 'Redis_Cache';\n $conf['cache_class_cache_form'] = 'DrupalDatabaseCache';\n $conf['cache_class_cache_field'] = 'DrupalDatabaseCache';\n }\n
Depending on file system structure, the module paths may need to be updated.
"},{"location":"applications/drupal/services/redis/#drupal-8","title":"Drupal 8","text":"The Drupal 8 config is largely stock. Notably, Redis is disabled while Drupal is being installed.
settings.phpif (getenv('LAGOON')){\n $settings['redis.connection']['interface'] = 'PhpRedis';\n $settings['redis.connection']['host'] = getenv('REDIS_HOST') ?: 'redis';\n $settings['redis.connection']['port'] = getenv('REDIS_SERVICE_PORT') ?: '6379';\n $settings['cache_prefix']['default'] = getenv('LAGOON_PROJECT') . '_' . getenv('LAGOON_GIT_SAFE_BRANCH');\n // Do not set the cache during installations of Drupal.\n if (!drupal_installation_attempted() && extension_loaded('redis')) {\n $settings['cache']['default'] = 'cache.backend.redis';\n // And allows to use it without the Redis module being enabled.\n $class_loader->addPsr4('Drupal\\\\redis\\\\', 'modules/contrib/redis/src');\n $settings['bootstrap_container_definition'] = [\n 'parameters' => [],\n 'services' => [\n 'redis.factory' => [\n 'class' => 'Drupal\\redis\\ClientFactory',\n ],\n 'cache.backend.redis' => [\n 'class' => 'Drupal\\redis\\Cache\\CacheBackendFactory',\n 'arguments' => ['@redis.factory', '@cache_tags_provider.container', '@serialization.phpserialize'],\n ],\n 'cache.container' => [\n 'class' => '\\Drupal\\redis\\Cache\\PhpRedis',\n 'factory' => ['@cache.backend.redis', 'get'],\n 'arguments' => ['container'],\n ],\n 'cache_tags_provider.container' => [\n 'class' => 'Drupal\\redis\\Cache\\RedisCacheTagsChecksum',\n 'arguments' => ['@redis.factory'],\n ],\n 'serialization.phpserialize' => [\n 'class' => 'Drupal\\Component\\Serialization\\PhpSerialize',\n ],\n ],\n ];\n }\n}\n
"},{"location":"applications/drupal/services/redis/#persistent","title":"Persistent","text":"Redis can also be configured as a persistent backend.
docker-compose.ymlredis:\nimage: uselagoon/redis-5-persistent\nlabels:\nlagoon.type: redis-persistent\nenvironment:\n<< : *default-environment\n
"},{"location":"applications/drupal/services/redis/#environment-variables","title":"Environment Variables","text":"Environment variables are meant to store some common information about Redis.
Environment Variable Default Description LOGLEVEL
notice
Redis loglevel DATABASES
1
Number of databases MAXMEMORY
100mb
Maximum memory usage of Redis"},{"location":"applications/drupal/services/redis/#redis-failover","title":"Redis Failover","text":"Here is a snippet to implement a Redis failover in case of the Redis container not being available (for example, during maintenance)
The following is inserted into Drupal's active settings.php
file.
settings.phpif (getenv('LAGOON')) {\n $contrib_path = is_dir('sites/all/modules/contrib') ? 'sites/all/modules/contrib' : 'sites/all/modules';\n $redis = DRUPAL_ROOT . '/sites/all/modules/contrib/redis';\n if (file_exists(\"$redis/redis.module\")) {\n require_once \"$redis/redis.module\";\n $conf['redis_client_host'] = getenv('REDIS_HOST') ?: 'redis';\n $conf['redis_client_port'] = getenv('REDIS_SERVICE_PORT') ?: 6379;\n $conf['cache_prefix'] = getenv('REDIS_CACHE_PREFIX') ?: getenv('LAGOON_PROJECT') . '_' . getenv('LAGOON_GIT_SAFE_BRANCH');\n try {\n // Ensure that there is a connection to redis.\n $client = Redis_Client::getClient();\n $response = $client->ping();\n if (!$response) {\n throw new \\Exception('Redis could be reached but is not responding correctly.');\n }\n $conf['redis_client_interface'] = 'PhpRedis';\n $conf['lock_inc'] = $contrib_path . '/redis/redis.lock.inc';\n $conf['path_inc'] = $contrib_path . '/redis/redis.path.inc';\n $conf['cache_backends'][] = $contrib_path . '/redis/redis.autoload.inc';\n $conf['cache_default_class'] = 'Redis_Cache';\n } catch (\\Exception $e) {\n // Redis is not available for this request we should not configure the\n // redis backend and ensure no cache is used. This will retry next\n // request.\n if (!class_exists('DrupalFakeCache')) {\n $conf['cache_backends'][] = 'includes/cache-install.inc';\n }\n $conf['cache_default_class'] = 'DrupalFakeCache';\n }\n }\n}\n
"},{"location":"applications/drupal/services/solr/","title":"Solr-Drupal","text":""},{"location":"applications/drupal/services/solr/#standard-use","title":"Standard use","text":"For Solr 8 and 9, we ship the default schema files provided by the search_api_solr Drupal module. Add the Solr version you would like to use in your docker-compose.yml
file, following our example.
"},{"location":"applications/drupal/services/solr/#custom-schema","title":"Custom schema","text":"To implement schema customizations for Solr in your project, look to how Lagoon creates our standard images.
- In the
solr
section of your docker-compose.yml
file, replace image: uselagoon/solr:8
with:
docker-compose.yml build:\ncontext: .\ndockerfile: solr.dockerfile\n
- Place your schema files in your code repository. We typically like to use
.lagoon/solr
. - Create a
solr.dockerfile
.
solr.dockerfileFROM uselagoon/solr:8\n\nCOPY .lagoon/solr /solr-conf/conf\n\nCMD solr-recreate drupal /solr-conf && solr-foreground\n
The goal is to have your Solr configuration files exist at /solr-conf/conf
in the image you are building.
"},{"location":"applications/drupal/services/solr/#multiple-cores","title":"Multiple cores","text":"To implement multiple cores, you will also need to ship your own Solr schema as above. The only change needed is to the CMD
of the Dockerfile - repeat the pattern of precreate-core corename /solr-conf/ ;
for each core you require.
solr.dockerfileFROM uselagoon/solr:8-drupal\n\nCMD solr-recreate drupal /solr-conf && solr-recreate more-drupal /solr-conf && solr-foreground\n
"},{"location":"applications/drupal/services/varnish/","title":"Varnish","text":"We suggest using Drupal with a Varnish reverse proxy. Lagoon provides a varnish-drupal
Docker image that has Varnish already configured with a Drupal Varnish config.
This Varnish config does the following:
- It understands Drupal session cookies and automatically disables the Varnish caching for any authenticated request.
- It automatically caches any assets (images, css, js, etc.) for one month, and also sends this header to the browser, so browser cache the assets as well. This happens for authenticated and non-authenticated requests.
- It has support for
BAN
and URIBAN
which is used by the Drupal 8 purge module. - It removes
utm_
and gclid
from the URL parameter to prevent Google Analytics links from creating multiple cache objects. - Many other good things - just check out the drupal.vcl.
"},{"location":"applications/drupal/services/varnish/#usage-with-drupal-8","title":"Usage with Drupal 8","text":"TL;DR: Check out the drupal8-advanced example in our examples repo, it ships with the needed modules and needed Drupal configuration.
Note: many of these examples are on the same drupal-example-simple
repo, but different branches/hashes. Be sure to get the exact branch from the examples list!
"},{"location":"applications/drupal/services/varnish/#install-purge-and-varnish-purge-modules","title":"Install Purge and Varnish Purge modules","text":"In order to fully use Varnish with Drupal 8 cache tags, you need to install the Purge and Varnish Purge modules. They ship with many submodules. We suggest installing at least the following:
purge
purge_drush
purge_tokens
purge_ui
purge_processor_cron
purge_processor_lateruntime
purge_queuer_coretags
varnish_purger
varnish_purge_tags
Grab them all at once:
Install Purge and Varnish Purgecomposer require drupal/purge drupal/varnish_purge\n\ndrush en purge purge_drush purge_tokens purge_ui purge_processor_cron purge_processor_lateruntime purge_queuer_coretags varnish_purger varnish_purge_tags\n
"},{"location":"applications/drupal/services/varnish/#configure-varnish-purge","title":"Configure Varnish Purge","text":" - Visit
Configuration > Development > Performance > Purge
. - Add a purger via
Add purger
. - Select
Varnish Bundled Purger
(not the Varnish Purger
, see the #Behind the Scenes section, for more information.). - Click the dropdown beside the just added purger and click
Configure
. - Give it a nice name,
Lagoon Varnish
sounds good. -
Configure it with:
Configure Varnish Purge TYPE: Tag\n\n REQUEST:\n Hostname: varnish\n (or whatever your Varnish is called in docker-compose.yml)\n Port: 8080\n Path: /\n Request Method: BAN\n Scheme: http\n\n HEADERS:\n Header: Cache-Tags\n Value: [invalidations:separated_pipe]\n
-
Save configuration
.
That's it! If you'd like to test this locally, make sure you read the next section.
"},{"location":"applications/drupal/services/varnish/#configure-drupal-for-varnish","title":"Configure Drupal for Varnish","text":"There are a few other configurations that can be done:
- Uninstall the
Internal Page Cache
Drupal module with drush pmu page_cache
. It can cause some weird double caching situations where only the Varnish cache is cleared, but not the internal cache, and changes appear very slowly to the users. Also, it uses a lot of cache storage on big sites. - Change
$config['system.performance']['cache']['page']['max_age']
in production.settings.php
to 2628000
. This tells Varnish to cache sites for up 1 month, which sounds like a lot, but the Drupal 8 cache tag system is so awesome that it will basically make sure that the Varnish cache is purged whenever something changes.
"},{"location":"applications/drupal/services/varnish/#test-varnish-locally","title":"Test Varnish Locally","text":"Drupal setups on Lagoon locally have Varnish and the Drupal caches disabled as it can be rather hard to develop with all them set. This is done via the following:
- The
VARNISH_BYPASS=true
environment variable in docker-compose.yml
which tells Varnish to basically disable itself. - Drupal is configured to not send any cache headers (via setting the Drupal config
$config['system.performance']['cache']['page']['max_age'] = 0
in development.settings.php
).
To test Varnish locally, change the following in docker-compose.yml
:
- Set
VARNISH_BYPASS
to false
in the Varnish service section. - Set
LAGOON_ENVIRONMENT_TYPE
to production
in the x-environment
section. - Run
docker compose up -d
, which restarts all services with the new environment variables.
Now you should be able to test Varnish!
Here is a short example assuming there is a node with the ID 1
and has the URL drupal-example.docker.amazee.io/node/1
- Run
curl -I drupal-example.docker.amazee.io/node/1
and look for these headers: X-LAGOON
should include varnish
which tells you that the request actually went through Varnish. Age:
will be still 0
as Varnish has probably never seen this site before, and the first request will warm the varnish cache. X-Varnish-Cache
will be MISS
, also telling you that Varnish didn't find a previously cached version of this request.
- Now run
curl -I drupal-example.docker.amazee.io/node/1
again, and the headers should be: Age:
will show you how many seconds ago the request has been cached. In our example it will probably something between 1-30, depending on how fast you are executing the command. X-Varnish-Cache
will be HIT
, telling you that Varnish successfully found a cached version of the request and returned that one to you.
- Change some content at
node/1
in Drupal. - Run
curl -I drupal-example.docker.amazee.io/node/1
, and the headers should the same as very first request: Age:0
X-Varnish-Cache: MISS
"},{"location":"applications/drupal/services/varnish/#varnish-on-drupal-behind-the-scenes","title":"Varnish on Drupal behind the scenes","text":"If you come from other Drupal hosts or have done a Drupal 8 & Varnish tutorial before, you might have realized that there are a couple of changes in the Lagoon Drupal Varnish tutorial. Let's address them:
"},{"location":"applications/drupal/services/varnish/#usage-of-varnish-bundled-purger-instead-of-varnish-purger","title":"Usage of Varnish Bundled Purger
instead of Varnish Purger
","text":"The Varnish Purger
purger sends a BAN
request for each cache-tag that should be invalidated. Drupal has a lot of cache-tags, and this could lead to quite a large amount of requests sent to Varnish. Varnish Bundled Purger
instead sends just one BAN
request for multiple invalidations, separated nicely by pipe (|
), which fits perfectly with the Varnish regular expression system of bans. This causes less requests and a smaller ban list table inside Varnish.
"},{"location":"applications/drupal/services/varnish/#usage-of-purge-late-runtime-processor","title":"Usage of Purge Late runtime processor
","text":"Contradictory to the Varnish module in Drupal 7, the Drupal 8 Purge module has a slightly different approach to purging caches: It adds them to a queue which is then processed by different processors. Purge suggests using the Cron processor
, which means that the Varnish cache is only purged during a cron run. This can lead to old data being cached by Varnish, as your cron is probably not configured to run every minute or so, and can result in confused editors and clients.
Instead, we suggest using the Purge Late runtime processor
, which processes the queue at the end of each Drupal request. This has the advantage that if a cache-tag is added to the purge queue (because an editor edited a Drupal node, for example) the cache-tags for this node are directly purged. Together with the Varnish Bundled Purger
, this means just a single additional request to Varnish at the very end of a Drupal request, which causes no noticeable processing time on the request.
"},{"location":"applications/drupal/services/varnish/#full-support-for-varnish-ban-lurker","title":"Full support for Varnish Ban Lurker","text":"Our Varnish configurations have full support for Ban Lurker
. Ban Lurker helps you to maintain a clean cache and keep Varnish running smoothly. It is basically a small tool that runs through the Varnish ban list and compares them to the cached requests in the Varnish cache. Varnish bans are used to mark an object in the cache for purging. If Ban Lurker finds an item that should be \"banned,\" it removes them from the cache and also removes the ban itself. Now any seldom-accessed objects with very long TTLs which would normally never be banned and just keep taking up cache space are removed and can be refreshed. This keeps the list of bans small and with that, less processing time for Varnish on each request. Check out the official Varnish post on Ban Lurker and some other helpful reading for more information.
"},{"location":"applications/drupal/services/varnish/#troubleshooting","title":"Troubleshooting","text":"Varnish doesn't cache? Or something else not working? Here a couple of ways to debug:
- Run
drush p-debug-en
to enable debug logging of the purge module. This should show you debugging in the Drupal log under admin/reports/dblog
. - Make sure that Drupal sends proper cache headers. To best test this, use the URL that Lagoon generates for bypassing the Varnish cache, (locally in our Drupal example this is http://nginx-drupal-example.docker.amazee.io). Check for the
Cache-Control: max-age=900, public
header, where the 900
is what you configured in $config['system.performance']['cache']['page']['max_age']
. - Make sure that the environment variable
VARNISH_BYPASS
is not set to true
(see docker-compose.yml
and run docker compose up -d varnish
to make sure the environment variable is configured correctly). - If all fails, and before you flip your table (\u256f\u00b0\u25a1\u00b0\uff09\u256f\ufe35 \u253b\u2501\u253b, talk to the Lagoon team, we're happy to help.
"},{"location":"community/discord/","title":"Lagoon Community on Discord","text":"Our official community meeting space is the Lagoon Discord.
We\u2019re starting this community as a place for all Lagoon users to collaborate, solve problems, share ideas, and contribute back to the Lagoon project. We\u2019re working to consolidate our community as it\u2019s currently spread out over Slack and various other places. We also wanted to invite all of our users and customers to join so that everyone can benefit from the community, no matter how they\u2019re using Lagoon.
Please remember that this is not to replace your current support channels - those will remain the same. This is a place to connect with other users as well as the Lagoon maintainers.
We ask that all community members review our Participation and Moderation Guidelines, as well as the Code of Conduct.
"},{"location":"community/discord/#community-hours","title":"Community Hours","text":"Our Community hours are currently on hold as we survey the community to better determine the community's needs. Please fill our the survey here.
If you need a hand with Lagoon, please reach out on Discord or shoot us an email at uselagoon@amazee.io.
"},{"location":"community/moderation/","title":"Lagoon Moderation Guidelines","text":"These guidelines have been adapted from Drupal Diversity & Inclusion\u2019s Moderation Guidelines.
In Lagoon spaces, strive to promote understanding, empathy, and increase personal awareness of all people. This includes people from across the Drupal Community and the greater Technical Community, even those you may personally disagree with.
If kicked from the Discord, the kicked user can send a private message (PM) to the kicker or another Moderator, if desired, for re-admittance. If a disruptive person is engaging in what appears to be intentionally inflammatory, bullying, or harassing behavior provoking hostile responses (or acting in a hostile manner), kicking is faster and easier than trying to placate a disruptive person whose behavior is causing distress to other channel members.
The kick is not a ban. There are times when disruptive or triggering comments and statements are genuine and break the lines of communication between two parties. By speaking with a Moderator, the (potentially) disruptive person can be coached on using more sensitive, inclusive, and diverse-aware language, and on engaging in a more constructive manner.
"},{"location":"community/moderation/#tiered-responses","title":"Tiered Responses","text":" -
Tier One Response
User is welcomed in the channel, asked to read some scroll back, and given a link to participation guidelines.
-
Tier Two Response
User is gently reminded in channel to keep posts on topic, and/or of participation guidelines.
-
Tier Three Response
User is PM\u2019d by available Moderator to explain the problem(s) with their posts and given suggestions of what to do differently.
-
Tier Four Response
If behavior continues, User is kicked for no less than 24 hours from the Discord.
"},{"location":"community/moderation/#non-tiered-response-banning","title":"Non-Tiered Response Banning","text":"Intentionally disruptive individuals get kicked, not tiered. Repeated offenses will result in a ban.
"},{"location":"community/participation/","title":"Lagoon Participation Guidelines","text":"We ask that all members of our community, in any spaces, virtual or physical, adhere to our Code of Conduct.
These guidelines have been adapted from Drupal Diversity & Inclusion\u2019s Participation Guidelines.
- Listen actively, read carefully, and be understanding.
- If joining a conversation, read the backlog. Give other Participants the opportunity to communicate effectively.
- Assume good intent behind other Participants\u2019 statements. The open-source software community is very diverse, with Participants from all over the globe. Be aware of cultural and linguistic quirks.
- There are also many Participants who are new to this space. Assume that they have good intent but have not yet mastered the language or ideas. We want to help them!
- Speak from your own experience, instead of generalizing. Recognize the worth of others\u2019 experience. Try not to speak for others.
- Use \u201cI\u201d instead of \u201cthey,\u201d \u201cwe,\u201d and \u201cyou\u201d.
- All Participants should recognize that other Participants have their own unique experiences.
- Don\u2019t invalidate another Participant\u2019s story with your own spin on their experience. Instead, share your own story and experience.
- Challenge ideas, feelings, concerns, or one another by asking questions. Refrain from personal attacks. Focus on ideas first.
- Avoid verbal challenges, backhanded insults, gender/race/region stereotyping, etc.
- Take part to the fullest of your ability and availability.
- Community growth depends on the inclusion of individual voices. The channel wants you to speak up and speak out. Everyone has a different amount of time to contribute. We value participation here if you can give 5 minutes or 5 hours.
- We do welcome those who quietly come to lurk and learn, or \u201clurk,\u201d but please introduce yourself and say hello!
- Accept that it is not always the goal to agree.
- There are often many different \u201cright\u201d answers to technical issues, even though they may not work for your setup.
- Be conscious of language differences and unintended connotations.
- \u201cText is hard\u201d - be aware that it is difficult to communicate effectively via text.
- Acknowledge individuals\u2019 identities.
- Use stated names and pronouns. Do not challenge a person\u2019s race, sexuality, disability, etc.
- f you are unsure how to address someone, ask them discreetly and respectfully. For example, if you are unsure what pronouns to use, send a private message and ask. Using the correct pronouns will help others.
- Some off-topic conversation is okay.
- Some cross posting of announcements is okay. The following is not permitted:
- Thread hijacking
- Spamming
- Commercial advertising
- Overt self-promotion
- Excessive going off-topic, especially during official meeting times or focused conversations
- Consider announcing more appropriate places or times for in-depth off-topic conversations.
- If you are not sure what\u2019s appropriate, please contact an admin.
- Sharing content from inside Lagoon spaces must only be done with explicit consent. Any sharing must also be carefully considered, and without harassment or intent to harm any Participants.
- This forum should be considered public. Assume that anyone can and may read anything posted here.
- When sharing any Lagoon content, permission from all Participants must be obtained first. This applies whether content is quoted, summarized, or screenshotted. This includes sharing in any public medium: on Twitter, in a blog post, in an article, on a podcast, etc. These spaces are where the discussion and work in progress is taking place. Removing snippets of a conversation takes away context. This can distort and discourage discussion, especially when this is done without the goal of driving the Lagoon project forward.
- As stated above, if you take screenshots and post them to social media or other forums, you must get permission from the person that posted it. When getting permission, include the option of removing identifying information. Permission is still needed even if identifying information is removed. This includes any content from Discord, Github, or any other Lagoon medium.
- If you want to share something, just ask! \u201cHey, is it ok to share this on Twitter? I\u2019m happy to credit you!\u201d
- If it is necessary for a participant to take a screenshot to report harassing behavior to Lagoon moderators, this may be done without obtaining permission. It is not, however, acceptable to take screenshots to publicly or privately shame an individual. Again, this applies only to reporting harassing behavior.
- Address complaints between one another in the space when safe and appropriate.
- When safe, try to clarify and engage in the space where the conflict happened. For example, in the Discord channel.
- Ping admins or Community Manager (Alanna) when conflict is escalating.
- Ask for help.
- If the topic of conflict is off-topic for Lagoon, move the conversation to a more appropriate channel.
Additional considerations for in-person Lagoon spaces
- Follow the event\u2019s Code of Conduct, if there is one. If not, our Code of Conduct applies.
- Do not touch people, their mobility devices, or other assistive equipment without their consent. If someone asks you to stop a certain behavior, stop immediately.
- Report any issues to the event\u2019s staff. If an issue involves Lagoon team members, report to uselagoon@amazee.io.
The Lagoon team reserves the right to terminate anyone\u2019s access to the Lagoon spaces.
"},{"location":"concepts-advanced/","title":"Advanced Lagoon Concepts","text":"This section covers some of the more advanced concepts in Lagoon. If you're new to Lagoon, start with Basic Lagoon Concepts.
If you need help, contact your Lagoon administrator or reach out to the community and maintainers in our Discord.
"},{"location":"concepts-advanced/backups/","title":"Backups","text":"Lagoon makes use of the k8up operator to provide backup functionality for both database data as well as containers' persistent storage volumes. This operator utilizes Restic to catalog these backups, which is typically connected to an AWS S3 bucket to provide secure, off-site storage for the generated backups.
"},{"location":"concepts-advanced/backups/#production-environments","title":"Production Environments","text":""},{"location":"concepts-advanced/backups/#backup-schedules","title":"Backup Schedules","text":"Backups of databases and containers' persistent storage volumes happens nightly within production environments by default.
If a different backup schedule for production backups is required, this can be specified at a project level via setting the \"Backup Schedule\" variables in the project's .lagoon.yml file.
"},{"location":"concepts-advanced/backups/#backup-retention","title":"Backup Retention","text":"Production environment backups will be held according to the following schedule by default:
- Daily: 7
- Weekly: 6
- Monthly: 1
- Hourly: 0
If a different retention period for production backups is required, this can be specified at a project level via setting the \"Backup Retention\" variables in the project's .lagoon.yml file.
"},{"location":"concepts-advanced/backups/#development-environments","title":"Development Environments","text":"Backups of development environments are attempted nightly and are strictly a best effort service.
"},{"location":"concepts-advanced/backups/#retrieving-backups","title":"Retrieving Backups","text":"Backups stored in Restic will be tracked within Lagoon, and can be recovered via the \"Backup\" tab for each environment in the Lagoon UI.
"},{"location":"concepts-advanced/backups/#custom-backup-andor-restore-locations","title":"Custom Backup and/or Restore Locations","text":"Lagoon supports custom backup and restore locations via the use of the \"Custom Backup Settings\" and/or \"Custom Restore Settings\" variables stored in the Lagoon API for each project.
Danger
Proceed with caution: Setting these variables will override backup/restore storage locations that may be configured at a cluster level. Any misconfiguration will cause backup/restore failures.
"},{"location":"concepts-advanced/base-images/","title":"Base Images","text":""},{"location":"concepts-advanced/base-images/#what-is-a-base-image","title":"What is a base image?","text":"A base image is a Docker image that can be and is used by a project deployed on Lagoon. A base image provides a way to ensure that nothing is brought into the codebase/project from upstream that has not been audited. It also allows us to ensure that anything we might need on the deployed environment is available - from lower-level libraries to application-level themes and modules.
Base images save time and resources when you know what system is being deployed to - if shared packages are included in the base image, they don\u2019t have to be deployed to hundreds of sites individually.
"},{"location":"concepts-advanced/base-images/#derived-images","title":"Derived images","text":"A derived image is one that extends a base image. For example, you might need to make several blog sites. You take our Drupal image, customize it to include all of the modules and themes you need for your blog sites, and deploy them all with that blog image. Templates are derived from base images.
All derived images should pull in the composer.json
file (via repositories like Packagist, Satis, or GitHub) so that they are using the most recent versions of the base packages.
Further, the derived image includes a call to the script /build/pre_composer
, which can be used by the base image to run scripts, updates, etc., downstream in the derived images. For instance, it should run by default when any package is updated or installed at the derived image, and the pre_composer
script will then update the base image package.
"},{"location":"concepts-advanced/base-images/#anatomy-of-a-base-image","title":"Anatomy of a base image","text":"Info
This document will talk about Drupal and Laravel base images as examples, as it was originally written for a client who uses those technologies in their Lagoon projects. It will be expanded to cover the contents of other base images, but none of the processes differ, no matter what the content of your base image.
Base images are managed with Composer and hosted in BitBucket, GitHub, or GitLab (whatever your team is using). Each base image has its own repository.
"},{"location":"concepts-advanced/base-images/#metapackages","title":"Metapackages","text":"The metapackage is a Composer package that wraps several other components. These include, for example, the core files for Laravel or Drupal, along with any needed modules or themes. This way, you do not need to include Laravel or Drupal, etc., as a dependency in your project.
Here\u2019s an example from the composer.json
in a Laravel base image:
composer.json\"require\": {\n \"amazeelabs/algm_laravel_baseimage\": \"*\"\n},\n
We only require this metapackage, which points to a GitHub repository.
"},{"location":"concepts-advanced/base-images/#docker-composeyml","title":"docker-compose.yml
","text":"Other pieces of your project are defined in docker-compose.yml
. For example, if you have a Drupal project, you need the Drupal image, but you also need MariaDB, Solr, Redis, and Varnish. We have versions of these services optimized for Drupal, all of which are included in docker-compose.yml
.
"},{"location":"concepts-advanced/base-images/#drupal","title":"Drupal","text":"The Drupal base image contains the following contributed tools and modules, in addition to Drupal core:
- Drupal Console
- Drush
- Configuration Installer
- Redis
- Poll
- Search API
- Search API Solr
- Varnish Purge
- Purge
- Admin Toolbar
- CDN
- Password Policy
- Pathauto
- Ultimate Cron
"},{"location":"concepts-advanced/base-images/#laravel","title":"Laravel","text":""},{"location":"concepts-advanced/base-images/#configuration","title":"Configuration","text":"The base images have provided the default values for the environment variables used by Laravel.
These are values for:
DB_CONNECTION
DB_HOST
DB_PORT
DB_DATABASE
DB_USERNAME
DB_PASSWORD
REDIS_HOST
REDIS_PASSWORD
REDIS_PORT
Ensure that your config files (typically located in /config
) make use of these by default.
"},{"location":"concepts-advanced/base-images/#queues","title":"Queues","text":"If your project makes use of queues, you can make use of the artisan-worker
service. It is a worker container, used for executing artisan queue:work
. This is disabled by default - look at the comments in docker-compose.yml
.
"},{"location":"concepts-advanced/base-images/#understanding-the-process-of-building-a-base-image","title":"Understanding the process of building a base image","text":"There are several parts to the process of building a base image. All of the major steps are represented in the Makefile. The Jenkinsfile contains a more stripped-down view. Taking a look at both files will give you a good understanding of what happens during this process. Most steps can be tested locally (this is important when building new versions of the base image). After you\u2019ve created and tested everything locally and pushed it up, the actual base image is built by Jenkins and pushed to Harbor.
"},{"location":"concepts-advanced/base-images/#makefile-and-build-assumptions","title":"Makefile and build assumptions","text":"If you're planning on running locally, there are some minimum environment variables that need to be present to build at all.
"},{"location":"concepts-advanced/base-images/#base-image-build-variables","title":"Base image build variables","text":"Variables injected into the base image build process and where to find them.
BUILD_NUMBER
- This is injected by Jenkins automatically. GIT_BRANCH
- This is provided by the Jenkins build process itself. Depends on the branch being built at the time (develop, main, etc.). DOCKER_REPO
/DOCKER_HUB
- This is defined inside the Jenkinsfile itself. It points to the Docker project and hub into which the resulting images will be pushed. DOCKER_USERNAME
/DOCKER_PASSWORD
- These are used to actually log into the Docker repository early in the build. These variables are stored inside of the Jenkins credentials. These are used in the Jenkinsfile itself and are not part of the Makefile. This means that if you\u2019re building base images outside of Jenkins (i.e. locally, to test, etc.) you have to run a docker login
manually before running any of the make steps.
In practice, this means that if you're running any of the make
targets on your local machine, you'll want to ensure that these are available in the environment - even if this is just setting them when running make from the command line, as an example:
Setting make targets locallyGIT_BRANCH=example_branch_name DOCKER_HUB=the_docker_hub_the_images_are_pushed_to DOCKER_REPO=your_docker_repo_here BUILD_NUMBER=<some_integer> make images_remove\n
"},{"location":"concepts-advanced/base-images/#makefile-targets","title":"Makefile targets","text":"The most important targets are the following:
images_build
: Given the environment variables, this will build and tag the images for publication. images_publish
: Pushes built images to a Docker repository. images_start
: Will start the images for testing, etc. images_test
: Runs basic tests against images. images_remove
: Removes previously built images, given the build environment variables.
"},{"location":"concepts-advanced/base-images/#example-workflow-for-building-a-new-release-of-a-base-image","title":"Example workflow for building a new release of a base image","text":"There are several steps to the build process. Most of these are shared among the various base images. These mostly correspond to the Makefile target described above.
- Docker Login - The Docker username, password, and URL for Harbor are passed to the Docker client.
- Docker Build - The
make images_build
step is run now, which will: - Ensure that all environment variables are prepared for the build.
- Run a
docker compose build
. This will produce several new Docker images from the current Git branch.
- Images Test - This will run the
make images_test
target, which will differ depending on the images being tested. In most cases this is a very straightforward test to ensure that the images can be started and interacted with in some way (installing Drupal, listing files, etc.) - Docker Push - This step runs the logic (contained in the make target
images_publish
) that will tag the images resulting from the Docker Build in Step 2 and push them to Harbor. This is described in more detail elsewhere in this guide. - Docker Clean Images - Runs the make target
images_remove
, which simply deletes the newly built images from the Docker host now that they are in Harbor.
"},{"location":"concepts-advanced/base-images/#releasing-a-new-version-of-a-base-image","title":"Releasing a new version of a base image","text":"There are many reasons to release a new version of a base image. On Drupal or Laravel, Node.js, etc. images, it may be in order to upgrade or install a module/package for features or security. It may be about the underlying software that comes bundled in the container, such as updating the version of PHP or Node.js. It may be about updating the actual underlying images on which the base images are built.
The images that your project's base images are built on are the managed images maintained by the Lagoon team. We release updates to these underlying images on a monthly (or more fequent) basus. When these are updated, you need to build new versions of your own base images in order to incorporate the changes and upgrades bundled in the upstream images.
In this section we will demonstrate the process of updating and tagging a new release of the Drupal 8 base image. We will add a new module (ClamAV) to the base. We\u2019re demonstrating on Drupal because it has the most complex setup of the base images. The steps that are common to every base image are noted below.
"},{"location":"concepts-advanced/base-images/#step-1-pull-down-the-base-image-locally","title":"Step 1 - Pull down the base image locally","text":"This is just pulling down the Git repository locally. In the case of the Drupal 8 base image. In this example, we're using Bitbucket, so we will run:
Clone Git repo.git clone ssh://git@bitbucket.biscrum.com:7999/webpro/drupal8_base_image.git\n
"},{"location":"concepts-advanced/base-images/#step-2-make-the-changes-to-the-repository","title":"Step 2 - Make the changes to the repository","text":"Info
What is demonstrated here is specific to the Drupal 8 base image. However, any changes (adding files, changing base Docker images, etc.) will be done in this step for all of the base images.
In our example, we are adding the ClamAV module to the Drupal 8 base image. This involves a few steps. The first is requiring the package so that it gets added to our composer.json
file. This is done by running a composer require
.
Here we run:
Install package with Composer require.composer require drupal/clamav\n
When the Composer require process completes, the package should then appear in the composer.json
file.
Here we open the composer.json
file and take a look at the list of required packages, and check that the ClamAV package is listed, and see that it is there:
"},{"location":"concepts-advanced/base-images/#step-22-ensure-that-the-required-drupal-module-is-enabled-in-template-based-derived-images","title":"Step 2.2 - Ensure that the required Drupal module is enabled in template-based derived images","text":"For any modules now added to the base image, we need to ensure that they\u2019re enabled on the template-based derived images. This is done by adding the module to the Lagoon Bundle module located at ./web/modules/lagoon/lagoon_bundle
. Specifically, it requires you to add it as a dependency to the dependencies
section of the lagoon_bundle.info.yml
file. The Lagoon Bundle module is a utility module that exists only to help enforce dependencies across derived images.
Here we open web/modules/contrib/lagoon/lagoon_bundle/lagoon_bundle.info.yml
and add clamav:clamav
as a dependency:
Adding a dependency to this will ensure that whenever the Lagoon Bundle module is enabled on the derived image, its dependencies (in this case, the just-added ClamAV module) will also be enabled. This is enforced by a post-rollout script which enables lagoon_bundle
on the derived images when they are rolled out.
"},{"location":"concepts-advanced/base-images/#step-23-test","title":"Step 2.3 - Test","text":"This will depend on what you\u2019re testing. In the case of adding the ClamAV module, we want to ensure that in the base image, the module is downloaded, and that the Lagoon Bundle module enables ClamAV when it is enabled.
Here we check that the module is downloaded to /app/web/modules/contrib
:
And then we check that when we enable the lagoon_bundle
module, it enables clamav
by running:
Enable module with Drush.drush pm-enable lagoon_bundle -y\n
Warning
You\u2019ll see that there is a JWT error in the container above. You can safely ignore this in the demonstration above - but, for background, you will see this error when there is no Lagoon environment for the site you\u2019re working on.
With our testing done, we can now tag and build the images.
"},{"location":"concepts-advanced/base-images/#step-3-tagging-images","title":"Step 3 - Tagging images","text":"Images are versioned based on their Git tags - these should follow standard semantic versioning (semver) practices. All tags should have the structure vX.Y.Z where X, Y, and Z are integers (to be precise the X.Y.Z are themselves the semantic version - the vX.Y.Z is a tag). This is an assumption that is used to determine the image tags, so it must be adhered to.
In this example we will be tagging a new version of the Drupal 8 base image indicating that we have added ClamAV.
"},{"location":"concepts-advanced/base-images/#here-we-demonstrate-how-to-tag-an-image","title":"Here we demonstrate how to tag an image","text":"We check that we have committed (but not pushed) our changes, just as you would do for any regular commit and push, using git log
.
- Commit your changes if you haven\u2019t yet.
- We then check to see what tag we are on using
git tag
. - Then, tag them using
git tag -a v0.0.9 -m \u201cAdds clamAV to base.\u201d
- git -a, --annotate: Make an unsigned, annotated tag object
- Next, we push our tags with
git push --tags
. - And finally, push all of our changes with
git push
.
Danger
The tags must be pushed explicitly in their own step!
"},{"location":"concepts-advanced/base-images/#how-git-tags-map-to-image-tags","title":"How Git tags map to image tags","text":"Danger
Depending on the build workflow, you will almost certainly push the changes via the develop branch before merging it into the main branch.
An important point to remember here is that the Jenkins base image build process will tag images based on the most recent commit\u2019s tag.
Images are tagged using the following rules, and images will be built for each of these that apply:
- When the main branch is built, it is tagged as
latest
. - When the develop branch is built, it is tagged as
development
. - If the commit being built is tagged then that branch will be built with that commit\u2019s tag.
- This is how we release a new version as we demonstrated above. It can also be used to make ad hoc builds with fairly arbitrary tags - be reasonable with the tag names, it has only been tested with semver tags.
"},{"location":"concepts-advanced/base-images/#step-4-building-the-new-base-images","title":"Step 4 - Building the new base images","text":"Info
Generally you will have a trigger strategy set up here for automatic builds, but as that will differ based on your needs and setup, this explains how to build manually.
- Visit your Lagoon Jenkins instance.
- Select the project you are working on (in this case, AIOBI Drupal 8 Base).
- Click the branch you would like to build.
- Click \u201cBuild Now.\u201d
This will kick off the build process which, if successful, will push up the new images to Harbor.
If the build is not successful, you can click into the build itself and read the logs to understand where it failed.
As shown in the screenshot below from Harbor, the image we\u2019ve just built in Jenkins has been uploaded and tagged in Harbor, where it will now be scanned for any vulnerabilities. Since it was tagged as v0.0.9, an image with that tag is present, and because we built the main branch, the \u201clatest\u201d image has also been built. At this stage, the v0.0.9 and \u201clatest\u201d images are identical.
"},{"location":"concepts-advanced/base-images/#acknowledgement","title":"Acknowledgement","text":"The base image structure draws heavily (and, in fact, is a fork of) Denpal. It is based on the original Drupal Composer Template, but includes everything necessary to run on Lagoon (either the local development environment or on hosted Lagoon).
"},{"location":"concepts-advanced/environment-idling/","title":"Environment Idling (optional)","text":""},{"location":"concepts-advanced/environment-idling/#what-is-the-environment-idler","title":"What is the Environment Idler?","text":"Lagoon can utilize the Aergia controller, (installed in the lagoon-remote
) to automatically idle environments if they have been unused for a defined period of time. This is done in order to reduce the load on the Kubernetes clusters and improve the overall performance of production environments and development environments that are actually in use.
"},{"location":"concepts-advanced/environment-idling/#how-does-an-environment-get-idled","title":"How does an environment get idled?","text":"The environment idler has many different configuration capabilities. Here are the defaults of a standard Lagoon installation (these could be quite different in your Lagoon, contact your Lagoon administrator!)
- Idling is tried every 4 hours.
- Production environments are never idled.
- CLI pods are idled if they don't include a cron job and if there is no remote shell connection active.
- All other services and pods are idled if there was no traffic on the environment in the last 4 hours.
- If there is an active build happening, there will be no idling.
"},{"location":"concepts-advanced/environment-idling/#how-does-an-environment-get-un-idled","title":"How does an environment get un-idled?","text":"Aergia will automatically un-idle an environment as soon as it is visited, therefore just visiting any URL of the environment will start the environment. Likewise, initiating an SSH session to the environment will also restart the services.
The un-idling will take a couple of seconds, as the Kubernetes cluster needs to start all containers again. During this time there will be waiting screen shown to the visitor that their environment is currently started.
"},{"location":"concepts-advanced/environment-idling/#can-i-disable-prevent-the-idler-from-idling-my-environment","title":"Can I disable / prevent the Idler from idling my environment?","text":"The field autoIdle
can be set at the project level (impacts all environments) or for a single environment (target just one environment), as to whether idling is allowed to take place. A value of 1
indicates the project/environment is eligible for idling. If the project is set to 0
, then all environments will never be idled. The default value is 1
(idling is enabled).
Contact your Lagoon administrator if you are unsure how to set these project/environment fields.
"},{"location":"concepts-advanced/environment-types/","title":"Environment Types","text":"Lagoon currently differentiates between two different environment types: production
and development
.
When setting up your project via the Lagoon GraphQL API, you can define a productionEnvironment
. On every deployment Lagoon executes, it checks if the current environment name matches what is defined in productionEnvironment
. If it does, Lagoon will mark this environment as the production
environment. This happens in two locations:
- Within the GraphQL API itself.
- As an environment variable named
LAGOON_ENVIRONMENT_TYPE
in every container.
But that's it. Lagoon itself handles development
and production
environments in exactly the same way (in the end we want as few differences of the environments as possible - that's the beauty of Lagoon).
There are a couple of things that will use this information:
- By default,
development
environments are idled after 4 hours with no hits (don't worry, they wake up automatically). It is also possible for your Lagoon administrator to disable auto-idling on a per-environment basis, just ask! - Our default Drupal
settings.php
files load additional settings files for development.settings.php
and production.settings.php
so you can define settings and configurations different per environment type. - If you try to delete an environment that is defined as the production environment (either via webhooks or REST), Lagoon will politely refuse to delete the production environment, as it tries to prevent you from making a mistake. In order to delete a production environment, you can either change the
productionEnvironment
in the API or use the secret forceDeleteProductionEnvironment: true
POST payload for the REST API. - Sometimes your Lagoon administrator might use the production environment information for some additional things, such as calculating only the hits of the production environments to calculate the price of the hosting.
"},{"location":"concepts-advanced/environment-variables/","title":"Environment Variables","text":"It is common to store API tokens or credentials for applications in environment variables.
Following best practices, those credentials are different per environment. We allow each environment to use a separate set of environment variables defined in environment variables or environment files.
As there can be environment variables defined in either the Dockerfile or during runtime (via API environment variables), we have a hierarchy of environment variables: environment variables defined in lower numbers are stronger.
- Environment variables (defined via Lagoon API) - environment specific.
- Environment variables (defined via Lagoon API) - project-wide.
- Environment variables defined in Dockerfile (
ENV
command). - Environment variables defined in
.lagoon.env.$LAGOON_GIT_BRANCH
or .lagoon.env.$LAGOON_GIT_SAFE_BRANCH
(if the file exists and where $LAGOON_GIT_BRANCH
$LAGOON_GIT_SAFE_BRANCH
are the name and safe name of the branch this Docker image has been built for), use this for overwriting variables for only specific branches. - Environment variables defined in
.lagoon.env
(if it exists), use this for overwriting variables for all branches. - Environment variables defined in
.env
. - Environment variables defined in
.env.defaults
.
.lagoon.env.$LAGOON_GIT_BRANCH
, .lagoon.env.$LAGOON_GIT_SAFE_BRANCH
, .env
, and .env.defaults
are all sourced by the individual containers themselves as part of running their entrypoint scripts. They are not read by Lagoon, but by the containers ENTRYPOINT
scripts, which look for them in the containers working directory. If environment variables don't appear as expected, check if your container has a WORKDIR
setting that points to somewhere else.
"},{"location":"concepts-advanced/environment-variables/#environment-variables-lagoon-api","title":"Environment Variables (Lagoon API)","text":"We suggest using the Lagoon API environment variable system for variables that you don't want to keep in your Git repository (like secrets or API keys), as they could be compromised by somebody having them on their local development environment or on the internet, etc.
The Lagoon API allows you to define project-wide or environment-specific variables. Additionally, they can be defined for a scope-only build-time or runtime. They are all created via the Lagoon GraphQL API. Read more on how to use the GraphQL API in our GraphQL API documentation.
"},{"location":"concepts-advanced/environment-variables/#runtime-environment-variables-lagoon-api","title":"Runtime Environment Variables (Lagoon API)","text":"Runtime environment variables are automatically made available in all containers, but they are only added or updated after an environment has been re-deployed.
This defines a project wide runtime variable (available in all environments) for the project with ID 463
:
Add runtime variablemutation addRuntimeEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:RUNTIME,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"\n}\n) {\nid\n}\n}\n
This defines a environment ID 546
specific runtime variable (available only in that specific environment):
Define environment IDmutation addRuntimeEnv {\naddEnvVariable(\ninput:{\ntype:ENVIRONMENT,\ntypeId:546,\nscope:RUNTIME,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"\n}\n) {\nid\n}\n}\n
"},{"location":"concepts-advanced/environment-variables/#build-time-environment-variables-lagoon-api","title":"Build-time Environment Variables (Lagoon API)","text":"Build-time environment variables are only available during a build and need to be consumed in Dockerfiles via:
Using build-time environment variablesARG MYVARIABLENAME\n
Typically the ARG
will go after the FROM. Read the docker documentation about ARG and FROM.
This defines a project-wide build-time variable (available in all environments) for the project with ID 463
:
Define a project-wide build-time variablemutation addBuildtimeEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:BUILD,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"}\n) {\nid\n}\n}\n
This defines an environment ID 546
specific build-time variable (available only in that specific environment):
Define environment IDmutation addBuildtimeEnv {\naddEnvVariable(input:{type:ENVIRONMENT, typeId:546, scope:BUILD, name:\"MYVARIABLENAME\", value:\"MyVariableValue\"}) {\nid\n}\n}\n
Container registry environment variables are only available during a build and are used when attempting to log in to a private registry. They are used to store the password for the user defined in Specials \u00bb container-registries
. They can be applied at the project or environment level.
This defines a project-wide container registry variable (available in all environments) for the project with ID 463
:
Define project-wide container registry variablemutation addContainerRegistryEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:CONTAINER_REGISTRY,\nname:\"MY_OWN_REGISTRY_PASSWORD\",\nvalue:\"MySecretPassword\"})\n) {\nid\n}\n}\n
This defines a environment ID 546
specific container registry variable (available only in that specific environment):
Define environment IDmutation addContainerRegistryEnv {\naddEnvVariable(\ninput:{\ntype:ENVIRONMENT,\ntypeId:546,\nscope:CONTAINER_REGISTRY,\nname:\"MY_OWN_REGISTRY_PASSWORD\",\nvalue:\"MySecretPassword\"}\n) {\nid\n}\n}\n
"},{"location":"concepts-advanced/environment-variables/#global-environment-variables-lagoon-api","title":"Global Environment Variables (Lagoon API)","text":"Global environment variables are available as both a build-time environment variable so that it may be consumed by builds, and also a runtime variable so that it is available within running containers.
"},{"location":"concepts-advanced/environment-variables/#environment-files-existing-directly-in-the-git-repo","title":"Environment Files (existing directly in the Git Repo)","text":"If you have environment variables that can safely be saved within a Git repository, we suggest adding them directly into the Git repository in an environment file. These variables will also be available within local development environments and are therefore more portable.
The syntax in the environment files is as following:
myenvironment.envMYVARIABLENAME=\"MyVariableValue\"\nMVARIABLENUMBER=4242\nDB_USER=$DB_USERNAME # Redefine DB_USER with the value of DB_USERNAME e.g. if your application expects another variable name for the Lagoon-provided variables.\n
"},{"location":"concepts-advanced/environment-variables/#lagoonenvbranchname","title":".lagoon.env.$BRANCHNAME
","text":"If you want to define environment variables different per environment you can create a .lagoon.env.$BRANCHNAME
e.g. for the main branch .lagoon.env.main
. This helps you keep environment variables apart between environments.
"},{"location":"concepts-advanced/environment-variables/#env-and-envdefaults","title":".env
and .env.defaults
","text":".env
and .env.defaults
will act as the default values for environment variables if none other is defined. For example, as default environment variables for pull request environments (see Workflows).
"},{"location":"concepts-advanced/environment-variables/#special-environment-variables","title":"Special Environment Variables","text":""},{"location":"concepts-advanced/environment-variables/#php_error_reporting","title":"PHP_ERROR_REPORTING
","text":"This variable, if set, will define the logging level you would like PHP to use. If not supplied, it will be set dynamically based on whether this is a production or development environment.
On production environments, this value defaults to E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
.
On development environments, this value defaults to E_ALL & ~E_DEPRECATED & ~E_STRICT
.
"},{"location":"concepts-advanced/environment-variables/#custom-backup-settings","title":"Custom Backup Settings","text":"Lagoon supports custom backup locations and credentials for any project when all four of the following variables are set as BUILD
type variables. The environment variables need to be set at the project level (not per environment), and requires a Lagoon deployment after setting them (for every environment).
Please note that any use of these variables means that all environment and database backups created and managed by Lagoon will be stored using these credentials, meaning that any interruption of these credentials' may lead to failed or inaccessible backups.
Environment variable name Purpose LAGOON_BAAS_CUSTOM_BACKUP_ENDPOINT
Specify the S3 compatible endpoint where any Lagoon initiated backups should be stored. An example for S3 Sydney would be: https://s3.ap-southeast-2.amazonaws.com
. LAGOON_BAAS_CUSTOM_BACKUP_BUCKET
Specify the bucket name where any Lagoon initiated backups should be stored.An example custom setting would be: example-restore-bucket
. LAGOON_BAAS_CUSTOM_BACKUP_ACCESS_KEY
Specify the access key Lagoon should use to access the custom backup bucket. An example custom setting would be: AKIAIOSFODNN7EXAMPLE
. LAGOON_BAAS_CUSTOM_BACKUP_SECRET_KEY
Specify the secret key Lagoon should use to access the custom backup bucket. An example custom setting would be: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
. No public access is needed on the S3 bucket and can be made entirely private.
Lagoon will automatically prune the files in these S3 buckets, so no object retention policy is needed at the bucket level.
"},{"location":"concepts-advanced/environment-variables/#custom-restore-location","title":"Custom Restore Location","text":"Lagoon supports custom restore locations and credentials for any project when all four of the following variables are set as BUILD
type environment variables. The environment variables need to be set at the project level (not per environment), and requires a Lagoon deployment after setting them (for every environment).
Please note that any use of these variables means that all environment and database snapshots restored by Lagoon will be stored using these credentials. This means that any interruption of these credentials' access may lead to failed or inaccessible restored files.
Environment variable name Purpose LAGOON_BAAS_CUSTOM_RESTORE_ENDPOINT
Specify the S3 compatible endpoint where any Lagoon initiated restores should be stored. An example for S3 Sydney would be: https://s3.ap-southeast-2.amazonaws.com
. LAGOON_BAAS_CUSTOM_RESTORE_BUCKET
Specify the bucket name where any Lagoon initiated restores should be stored.An example custom setting would be: example-restore-bucket
. LAGOON_BAAS_CUSTOM_RESTORE_ACCESS_KEY
Specify the access key Lagoon should use to access the custom restore bucket. An example custom setting would be: AKIAIOSFODNN7EXAMPLE
. LAGOON_BAAS_CUSTOM_RESTORE_SECRET_KEY
Specify the secret key Lagoon should use to access the custom restore bucket. An example custom setting would be: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
. The S3 bucket must have public access enabled, as Lagoon will create presigned URLs for the objects inside the bucket as needed.
An example AWS IAM policy that you can create to allow access to just the S3 bucket example-restore-bucket
is:
aws_iam_restore_policy.json{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"s3:GetBucketLocation\",\n\"s3:ListBucket\"\n],\n\"Resource\": [\n\"arn:aws:s3:::example-restore-bucket\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"s3:PutObject\",\n\"s3:GetObject\",\n\"s3:GetObjectVersion\",\n\"s3:GetBucketLocation\",\n\"s3:PutObjectAcl\"\n],\n\"Resource\": [\n\"arn:aws:s3:::example-restore-bucket/*\"\n]\n}\n]\n}\n
For increased security and reduced storage costs you can opt into removing restored backups after a set lifetime (e.g. 7 days). Lagoon caters for this scenario gracefully and will re-create any restored snapshots as needed.
"},{"location":"concepts-advanced/feature-flags/","title":"Feature flags","text":"Some Lagoon features can be controlled by setting feature flags. This is designed to assist users and administrators to roll out new platform features in a controlled manner.
"},{"location":"concepts-advanced/feature-flags/#environment-variables","title":"Environment variables","text":"The following environment variables can be set on an environment or project to toggle feature flags.
Environment Variable Name Active scope Version introduced Version removed Default Value Description LAGOON_FEATURE_FLAG_ROOTLESS_WORKLOAD
global
2.2.0 - disabled
Set to enabled
to set a non-root pod security context on the pods in this environment or project.This flag will eventually be deprecated, at which point non-root workloads will be enforced. LAGOON_FEATURE_FLAG_ISOLATION_NETWORK_POLICY
global
2.2.0 - disabled
Set to enabled
to add a default namespace isolation network policy to each environment on deployment.This flag will eventually be deprecated, at which point the namespace isolation network policy will be enforced.NOTE: enabling and then disabling this feature will not remove any existing network policy from previous deployments. Those must be removed manually."},{"location":"concepts-advanced/feature-flags/#cluster-level-controls","title":"Cluster-level controls","text":"Feature flags may also be controlled at the cluster level. There is support for this in the lagoon-build-deploy
chart. For each feature flag there are two flavours of values which can be set: default
and force
.
default
controls the default policy for environments deployed to the cluster, but can be overridden at the project or environment level by the environment variables documented above. force
also controls the policy for environments deployed to the cluster, but cannot be overridden by the environment variables documented above.
"},{"location":"concepts-advanced/service-types/","title":"Service Types","text":"The below lists all service types that can be defined via lagoon.type
within a docker-compose.yml
file.
Warning
Once a lagoon.type
is defined and the environment is deployed, changing it to a different type is not supported and could result in a broken environment.
"},{"location":"concepts-advanced/service-types/#additional-volumes","title":"Additional Volumes","text":"Some service types allow for additional volumes to be added, for more information on the lagoon.volumes.X.path
label, please see Additional Volumes
If you're provisioning a new project, we recommend avoiding the usage of -persistent
service types, and use additional volumes as required for any persistent data.
"},{"location":"concepts-advanced/service-types/#additional-service-ports","title":"Additional Service Ports","text":"Most services provide a default port, in cases where you want to use the services already defined in your docker-compose.yml
file, you can configure a service to use those ports instead.
To use this feature, you set the lagoon.service.usecomposeports: true
label on the service in your docker-compose.yml
file. For more information on how to use this feature, see Additional Service Ports
"},{"location":"concepts-advanced/service-types/#basic","title":"basic
","text":"Basic container, good to use for most applications that don't have an existing template. No persistent storage. The port can be changed using a label. If an autogenerated route is not required (e.g. for an internal-facing service, set lagoon.autogeneratedroute: false
in the docker-compose.yml)
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3000
3000
Yes No lagoon.service.port
, lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#basic-persistent","title":"basic-persistent
","text":"Like basic
. Will also generate persistent storage, defines mount location via lagoon.persistent
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3000
3000
Yes Yes lagoon.service.port
, lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#basic-single","title":"basic-single
","text":"Like basic-persistent
. This will also generate persistent storage, defines mount location via lagoon.persistent
.
Where this differs from basic-persistent
is that the volume is a ReadWriteOnce
volume type. The downsides to this service type are that it can't be scaled.
This service type does not support additional volumes.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3000
3000
Yes Yes lagoon.service.port
, lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#cli","title":"cli
","text":"Use for any kind of CLI container (like PHP, Node.js, etc). Automatically gets the customer SSH private key that is mounted in /var/run/secrets/lagoon/sshkey/ssh-privatekey
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - No No No lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#cli-persistent","title":"cli-persistent
","text":"Like cli
, expects lagoon.persistent.name
to be given the name of a service that has persistent storage, which will be mounted under defined lagoon.persistent
label. Does NOT generate its own persistent storage, only used to mount another service's persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - No No Yes lagoon.persistent.name
, lagoon.persistent
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#elasticsearch","title":"elasticsearch
","text":"Elasticsearch container, will auto-generate persistent storage under /usr/share/elasticsearch/data
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP on localhost:9200/_cluster/health?local=true
9200 No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#mariadb","title":"mariadb
","text":"A meta-service which will tell Lagoon to automatically decide between mariadb-single
and mariadb-dbaas
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - - - - -"},{"location":"concepts-advanced/service-types/#mariadb-single","title":"mariadb-single
","text":"MariaDB container. Creates cron job for backups running every 24h executing /lagoon/mysql-backup.sh 127.0.0.1
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3306
3306
No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#mariadb-dbaas","title":"mariadb-dbaas
","text":"Uses a shared MariaDB server via the DBaaS Operator.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter Not Needed 3306
No - -"},{"location":"concepts-advanced/service-types/#mongo","title":"mongo
","text":"A meta-service which will tell Lagoon to automatically decide between mongo-single
and mongo-dbaas
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - - - - -"},{"location":"concepts-advanced/service-types/#mongo-single","title":"mongo-single
","text":"MongoDB container, will generate persistent storage of min 1GB mounted at /data/db
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 27017
27017
No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#mongo-dbaas","title":"mongo-dbaas
","text":"Uses a shared MongoDB server via the DBaaS Operator.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter Not Needed 27017
No - -"},{"location":"concepts-advanced/service-types/#nginx","title":"nginx
","text":"NGINX container. No persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter localhost:50000/nginx_status
8080
Yes No lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#nginx-php","title":"nginx-php
","text":"Like nginx
, but additionally a php
container.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter NGINX: localhost:50000/nginx_status
, PHP: /usr/sbin/check_fcgi
8080
Yes No lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#nginx-php-persistent","title":"nginx-php-persistent
","text":"Like nginx-php.
Will generate persistent storage, defines mount location via lagoon.persistent
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter NGINX: localhost:50000/nginx_status
, PHP: /usr/sbin/check_fcgi
http on 8080
Yes Yes lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#node","title":"node
","text":"Node.js container. No persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3000
3000
Yes No lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#node-persistent","title":"node-persistent
","text":"Like node
. Will generate persistent storage, defines mount location via lagoon.persistent
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3000
3000
Yes Yes lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#none","title":"none
","text":"Instructs Lagoon to completely ignore this service.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - - - - -"},{"location":"concepts-advanced/service-types/#opensearch","title":"opensearch
","text":"OpenSearch container, will auto-generate persistent storage under /usr/share/opensearch/data
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP on localhost:9200/_cluster/health?local=true
9200 No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#postgres","title":"postgres
","text":"A meta-service which will tell Lagoon to automatically decide between postgres-single
and postgres-dbaas
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - - - - -"},{"location":"concepts-advanced/service-types/#postgres-single","title":"postgres-single
","text":"Postgres container. Creates cron job for backups running every 24h executing /lagoon/postgres-backup.sh localhost
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 5432
5432
No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#postgres-dbaas","title":"postgres-dbaas
","text":"Uses a shared PostgreSQL server via the DBaaS Operator.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter Not Needed 5432
No - -"},{"location":"concepts-advanced/service-types/#python","title":"python
","text":"Python container. No persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP connection on 8800
8800
Yes No lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#python-persistent","title":"python-persistent
","text":"Python container. With persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP connection on 8800
8800
Yes Yes lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#redis","title":"redis
","text":"Redis container.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 6379
6379
No No -"},{"location":"concepts-advanced/service-types/#redis-persistent","title":"redis-persistent
","text":"Redis container with auto-generated persistent storage mounted under /data
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 6379
6379
No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#solr","title":"solr
","text":"Solr container with auto-generated persistent storage mounted under /var/solr
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 8983
8983
No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#varnish","title":"varnish
","text":"Varnish container.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP request localhost:8080/varnish_status
8080
Yes No lagoon.autogeneratedroute
"},{"location":"concepts-advanced/service-types/#varnish-persistent","title":"varnish-persistent
","text":"Varnish container with auto-generated persistent storage mounted under /var/cache/varnish
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP request localhost:8080/varnish_status
8080
Yes Yes lagoon.autogeneratedroute
, lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#worker","title":"worker
","text":"Use for any kind of worker container (like queue workers, etc.) where there is no exposed service port.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - No No No lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#worker-persistent","title":"worker-persistent
","text":"Like worker
, expects lagoon.persistent.name
to be given the name of a service that has persistent storage, which will be mounted under defined lagoon.persistent
label. Does NOT generate its own persistent storage, only used to mount another service's persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - No No Yes lagoon.persistent.name
, lagoon.persistent
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/workflows/","title":"Workflows","text":"Lagoon tries to support any development workflow possible. It specifically does not enforce any workflows onto teams, so that each development team can define how they would like to develop and deploy their code.
"},{"location":"concepts-advanced/workflows/#fixed-branches","title":"Fixed Branches","text":"The most straightforward workflows are deployment-based on some fixed branches:
You define which branches (like develop
, staging
and main
, which would be ^(develop|staging|main)$
as regular expressions) that Lagoon should deploy and it will do so. Done!
If you would like to test a new feature, merge them into a branch that you have set up locally and push, and Lagoon will deploy the feature and you can test. When all is good, merge the branch into your production branch and push.
"},{"location":"concepts-advanced/workflows/#feature-branches","title":"Feature Branches","text":"A bit more advanced are feature branches. Since Lagoon supports the ability to define the branches you would like to deploy via regular expressions, you can also extend the above regular expression to this: ^feature\\/|^(staging|main)$
. This will instruct Lagoon to deploy all branches that start with feature/
, plus the branches called staging
and main
. Our development workflow could be as following:
- Create a new branch from
main
called feature/myfeature
and push feature/myfeature
. - Lagoon will deploy the branch
feature/myfeature
as a new environment, where you can test your feature independently of any other features. - Merge
feature/myfeature
into the main
branch and it will deploy to your production environment.
If you like, you can also merge feature/myfeature
and any other feature branches into staging
first, in order to test the functionality of multiple features together. After you have tested the features together on staging, you can merge the features into main.
This workflow needs a high level of branch pruning and cleanliness in your Git repository. Since each feature branch will create its own Lagoon environment, you can have very quickly generate a LOT of environments, which all of them will use resources. Be sure to merge or delete unused branches.
Because of this, it could make sense to think about a pull request based workflow.
"},{"location":"concepts-advanced/workflows/#pull-requests","title":"Pull requests","text":"Even more advanced are workflows via pull requests. Such workflows need the support of a Git hosting which supports pull requests (also called merge requests). The idea of pull request-based workflows lies behind that idea that you can test a feature together with a target branch, without actually needing to merge yet, as Lagoon will do the merging for you during the build.
In our example we would configure Lagoon to deploy the branches ^(staging|main)$
and the pull requests to .*
(to deploy all pull requests). Now our workflow would be:
- Create a new branch from
main
called feature/myfeature
and push feature/myfeature
(no deployment will happen now because we have only specific staging and main as our branches to be deployed). - Create a pull request in your Git hosting from
feature/myfeature
into main
. - Lagoon will now merge the
feature/myfeature
branch on top of the main
branch and deploy that resulting code for you. - Now you can test the functionality of the
feature/myfeature
branch just as if it had been merged into main
, so all changes that have happened in main
since you created the feature/myfeature
branch from it will be there, and you don't need to worry that you might have an older version of the main
branch. - If there is a merge conflict, the build will fail, Lagoon will stop and notify you.
- After you have tested your pull request branch, you can go back to your Git hosting and actually merge the code into
main
. This will now trigger a deployment of main
. - When the pull request is merged, it is automatically closed and Lagoon will remove the environment for the pull request automatically.
Some teams might opt to create the pull request against a shared staging
branch and then merge the staging
branch into the main
branch via another pull request. This depends on the kind of Git workflow you're using.
Additionally, in Lagoon you can define that only pull requests with a specific text in the title are deployed. [BUILD]
defined as regular expression will only deploy pull requests that have a title like [BUILD] My Pull Request
, while a pull request with that title My other Pull Request
is not automatically deployed. This helps to keep the amount of environments small and allows for pull requests that don't need an environment yet.
"},{"location":"concepts-advanced/workflows/#automatic-database-sync-for-pull-requests","title":"Automatic Database Sync for Pull requests","text":"Automatic pull request environments are a fantastic thing. But it would also be handy to have the database synced from another environment when those environments are created. Lagoon can handle that!
The following example will sync the staging database on the first rollout of the pull request environment:
.lagoon.ymltasks:\npost-rollout:\n- run:\nname: IF no Drupal installed & Pullrequest = Sync database from staging\ncommand: |\nif [[ -n ${LAGOON_PR_BASE_BRANCH} ]] && tables=$(drush sqlq 'show tables;') && [ -z \"$tables\" ]; then\ndrush -y sql-sync @staging default\nfi\nservice: cli\nshell: bash\n
"},{"location":"concepts-advanced/workflows/#promotion","title":"Promotion","text":"Another way of deploying your code into an environment is the promotion workflow.
The idea behind the promotion workflow comes from this (as an example):
If you merge the branch staging
into the main
branch, and if there are no changes to main
, so main
and staging
have the exact same code in Git, it could still technically be possible that the resulting Docker images are slightly different. This is because it's possible that between the last staging
deployment and the current main
deployment, some upstream Docker images may have changed, or dependencies loaded from the various package managers may have changed. This is a very small chance, but it's there.
For this situation, Lagoon understands the concept of promoting Lagoon images from one environment to another. This basically means that it will take the already built and deployed Docker images from one environment, and will use those exact same Docker images for another environment.
In our example, we want to promote the Docker images from the main
environment to the production
environment:
- First, we need a regular deployed environment with the name
main
. Make sure that the environment has deployed successfully. - Also, make sure that you don't have a branch called
production
in your Git repository. This could lead to weird confusions (like people pushing into this branch, etc). - Now trigger a promotion deployment using the lagoon cli:
Trigger a promotion deploymentlagoon deploy promote --project=\"myproject\" --source=\"main\" --destination=\"production\"\n
This tells Lagoon that you want to promote from the source main
to the destination production
.
Lagoon will now do the following:
- Check out the Git branch
main
in order to load the .lagoon.yml
and docker-compose.yml
files (Lagoon still needs these in order to fully work). - Create all Kubernetes/OpenShift objects for the defined services in
docker-compose.yml
, but with LAGOON_GIT_BRANCH=production
as environment variable. - Copy the newest images from the
main
environment and use them (instead of building Images or tagging them from upstream). - Run all post-rollout tasks like a normal deployment.
You will receive the same notifications of success or failures like any other deployment.
"},{"location":"concepts-basics/","title":"Basic Lagoon Concepts","text":"This section covers some of the basic concepts in Lagoon. If you're already familiar with these, move on to Advanced Lagoon Concepts.
If you need help, contact your Lagoon administrator or reach out to the community and maintainers in our Discord.
"},{"location":"concepts-basics/build-and-deploy-process/","title":"Build and Deploy Process","text":"This document describes what actually happens during a Lagoon build and deployment. It is heavily simplified from what actually happens, but it will help you to understand what is happening under the hood every time that Lagoon deploys new code for you.
Watch the video below for a walk-through of the deployment process.
"},{"location":"concepts-basics/build-and-deploy-process/#1-set-up-openshift-projectkubernetes-namespace-for-environment","title":"1. Set up OpenShift Project/Kubernetes Namespace for Environment","text":"First, Lagoon checks if the OpenShift project/Kubernetes namespace for the given environment exists and is correctly set up. It will make sure that we have the needed service accounts, create secrets, and will configure environment variables into a ConfigMap lagoon-env
which is filled with information like the environment type and name, the Lagoon project name, and so on.
"},{"location":"concepts-basics/build-and-deploy-process/#2-git-checkout-merge","title":"2. Git Checkout & Merge","text":"Next, Lagoon will check out your code from Git. It needs that to be able to read the .lagoon.yml
, docker-compose.yml
and any .env
files, but also to build the Docker images.
Note that Lagoon will only process these actions if the branch/PR matches the branch regex set in Lagoon. Based on how the deployment has been triggered, different things will happen:
"},{"location":"concepts-basics/build-and-deploy-process/#branch-webhook-push","title":"Branch Webhook Push","text":"If the deployment is triggered automatically via a Git webhook and is for a single branch, Lagoon will check out the Git SHA which is included in the webhook payload. This will trigger a deployment for every Git SHA pushed.
"},{"location":"concepts-basics/build-and-deploy-process/#branch-rest-trigger","title":"Branch REST trigger","text":"If you trigger a branch deployment manually via the REST API (via the UI, or GraphQL) and do NOT define a SHA
in the POST payload, Lagoon will just check out the latest commit in that branch and deploy it.
"},{"location":"concepts-basics/build-and-deploy-process/#pull-requests","title":"Pull Requests","text":"If the deployment is a pull request (PR) deployment, Lagoon will load the base and the HEAD branch and SHAs for the pull request and will:
- Check out the base branch (the branch the PR points to).
- Merge the
HEAD
branch (the branch that the PR originates from) on top of the base branch. - More specifically:
- Lagoon will check out and merge particular SHAs which were sent in the webhook. Those SHAs may or may not point to the branch heads. For example, if you make a new push to a GitHub pull request, it can happen that SHA of the base branch will not point to the current base branch HEAD.
If the merge fails, Lagoon will also stop and inform you about this.
"},{"location":"concepts-basics/build-and-deploy-process/#3-build-image","title":"3. Build Image","text":"For each service defined in the docker-compose.yml
Lagoon will check if images need to be built or not. If they need to be built, this will happen now. The order of building is based on the order they are configured in docker-compose.yml
, and some build arguments are injected:
LAGOON_GIT_SHA
LAGOON_GIT_BRANCH
LAGOON_PROJECT
LAGOON_BUILD_TYPE
(either pullrequest
, branch
or promote
) LAGOON_SSH_PRIVATE_KEY
- The SSH private key that is used to clone the source repository. Use RUN /lagoon/entrypoints/05-ssh-key.sh
to convert the build argument into an actual key at /home/.ssh/key
which will be used by SSH and Git automatically. For safety, remove the key again via RUN rm /home/.ssh/key
. LAGOON_GIT_SOURCE_REPOSITORY
- The full Git URL of the source repository.
Also, if this is a pull request build:
LAGOON_PR_HEAD_BRANCH
LAGOON_PR_HEAD_SHA
LAGOON_PR_BASE_BRANCH
LAGOON_PR_BASE_SHA
LAGOON_PR_TITLE
Additionally, for each already built image, its name is also injected. If your docker-compose.yml
is configured to first build the cli
image and then the nginx
image, the name of the nginx
image is injected as NGINX_IMAGE
.
"},{"location":"concepts-basics/build-and-deploy-process/#4-configure-kubernetes-or-openshift-services-and-routes","title":"4. Configure Kubernetes or OpenShift Services and Routes","text":"Next, Lagoon will configure Kubernetes or OpenShift with all services and routes that are defined from the service types, plus possible additional custom routes that you have defined in .lagoon.yml
.
In this step it will expose all defined routes in the LAGOON_ROUTES
as comma separated URLs. It will also define one route as the \"main\" route, in this order:
- If custom routes defined: the first defined custom route in
.lagoon.yml
. - The first auto-generated route from a service defined in
docker-compose.yml
. - None.
The \"main\" route is injected via the LAGOON_ROUTE
environment variable.
"},{"location":"concepts-basics/build-and-deploy-process/#5-push-and-tag-images","title":"5. Push and Tag Images","text":"Now it is time to push the previously built Docker images into the internal Docker image registry.
For services that didn't specify a Dockerfile to be built in docker-compose.yml
and only gave an image, they are also tagged and will cause the internal Docker image registry to know about the images, so that they can be used in containers.
"},{"location":"concepts-basics/build-and-deploy-process/#6-persistent-storage","title":"6. Persistent Storage","text":"Lagoon will now create persistent storage (PVC) for each service that needs and requested persistent storage.
"},{"location":"concepts-basics/build-and-deploy-process/#7-cron-jobs","title":"7. Cron jobs","text":"For each service that requests a cron job (like MariaDB), plus for each custom cron job defined in .lagoon.yml,
Lagoon will now generate the cron job environment variables which are later injected into the Deployment.
"},{"location":"concepts-basics/build-and-deploy-process/#8-run-defined-pre-rollout-tasks","title":"8. Run defined pre-rollout tasks","text":"Now Lagoon will check the .lagoon.yml
file for defined tasks in pre-rollout
and will run them one by one in the defined services. Note that these tasks are executed on the pods currently running (so cannot utilize features or scripts that only exist in the latest commit) and therefore they are also not run on first deployments.
If any of them fail, Lagoon will immediately stop and notify you, and the rollout will not proceed.
"},{"location":"concepts-basics/build-and-deploy-process/#9-deploymentconfigs-statefulsets-daemonsets","title":"9. DeploymentConfigs, Statefulsets, Daemonsets","text":"This is probably the most important step. Based on the defined service type, Lagoon will create the Deployment, Statefulset or Daemonsets for the service. (Note that Deployments are analogous to DeploymentConfigs in OpenShift)
It will include all previously gathered information like the cron jobs, the location of persistent storage, the pushed images and so on.
Creation of these objects will also automatically cause Kubernetes or OpenShift to trigger new deployments of the pods if necessary, like when an environment variable has changed or an image has changed. But if there is no change, there will be no deployment! This means if you only update the PHP code in your application, the Varnish, Solr, MariaDB, Redis and any other service that is defined but does not include your code will not be deployed. This makes everything much much faster.
"},{"location":"concepts-basics/build-and-deploy-process/#10-wait-for-all-rollouts-to-be-done","title":"10. Wait for all rollouts to be done","text":"Now Lagoon waits! It waits for all of the just-triggered deployments of the new pods to be finished, as well as for their health checks to be successful.
If any of the deployments or health checks fail, the deployment will be stopped here, and you will be informed via the defined notification systems (like Slack) that the deployment has failed.
"},{"location":"concepts-basics/build-and-deploy-process/#11-run-defined-post-rollout-tasks","title":"11. Run defined post-rollout tasks","text":"Now Lagoon will check the .lagoon.yml
file for defined tasks in post-rollout
and will run them one by one in the defined services.
If any of them fail, Lagoon will immediately stop and notify you.
"},{"location":"concepts-basics/build-and-deploy-process/#12-success","title":"12. Success","text":"If all went well and nothing threw any errors, Lagoon will mark this build as successful and inform you via defined notifications. \u2705
"},{"location":"concepts-basics/docker-compose-yml/","title":"docker-compose.yml","text":"The docker-compose.yml
file is used by Lagoon to:
- Learn which services/containers should be deployed.
- Define how the images for the containers are built.
- Define additional configurations like persistent volumes.
Docker Compose (the tool) is very strict in validating the content of the YAML file, so we can only do configuration within labels
of a service definition.
Warning
Lagoon only reads the labels, service names, image names and build definitions from a docker-compose.yml
file. Definitions like: ports, environment variables, volumes, networks, links, users, etc. are IGNORED.
This is intentional, as the docker-compose
file is there to define your local environment configuration. Lagoon learns from the lagoon.type
the type of service you are deploying and from that knows about ports, networks and any additional configuration that this service might need.
Here a straightforward example of a docker-compose.yml
file for Drupal:
docker-compose.ymlx-lagoon-project:\n# Lagoon project name (leave `&lagoon-project` when you edit this)\n&lagoon-project drupal-example\nx-volumes:\n&default-volumes\n# Define all volumes you would like to have real-time mounted into the docker containers\nvolumes:\n- .:/app:delegated\nx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# Route that should be used locally, if you are using pygmy, this route *must* end with .docker.amazee.io\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n# Uncomment if you want to have the system behave as it will in production\n#LAGOON_ENVIRONMENT_TYPE: production\n# Uncomment to enable Xdebug and then restart via `docker compose up -d`\n#XDEBUG_ENABLE: \"true\"\nx-user:\n&default-user\n# The default user under which the containers should run. Change this if you are on linux and run with another user than ID `1000`\nuser: '1000'\nservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent # (1)\nlagoon.persistent: /app/web/sites/default/files/\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent # (2)\nlagoon.name: nginx\nlagoon.persistent: /app/web/sites/default/files/\nmariadb:\nimage: uselagoon/mariadb-10.11-drupal\nlabels:\nlagoon.type: mariadb\n
- Note the multi-container pods here.
- Note the multi-container pods here.
"},{"location":"concepts-basics/docker-compose-yml/#basic-settings","title":"Basic settings","text":"x-lagoon-project
:
This is the machine name of your project, define it here. We\u2019ll use \u201cdrupal-example.\u201d
x-volumes
:
This tells Lagoon what to mount into the container. Your web application lives in /app
, but you can add or change this if needed.
x-environment
:
- Here you can set your local development URL. If you are using pygmy, it must end with
.docker.amazee.io
. - If you want to exactly mimic the production environment, uncomment
LAGOON_ENVIRONMENT_TYPE: production
. - If you want to enable Xdebug, uncomment
DEBUG_ENABLE: \"true\"
.
x-user
:
You are unlikely to need to change this, unless you are on Linux and would like to run with a user other than 1000
.
"},{"location":"concepts-basics/docker-compose-yml/#services","title":"services
","text":"This defines all the services you want to deploy. Unfortunately, Docker Compose calls them services, even though they are actually containers. Going forward we'll be calling them services, and throughout this documentation.
The name of the service (nginx
, php
, and mariadb
in the example above) is used by Lagoon as the name of the Kubernetes pod (yet another term - again, we'll be calling them services) that is generated, plus also any additional Kubernetes objects that are created based on the defined lagoon.type
, which could be things like services, routes, persistent storage, etc.
Please note that service names adhere to the RFC 1035 DNS label standard. Service names must:
- contain at most 63 characters
- contain only lowercase alphanumeric characters or '-'
- start with an alphabetic character
- end with an alphanumeric character
Warning
Once you have set the name of a service, do NOT rename it. This will cause all kind of havoc in your containers and break things.
"},{"location":"concepts-basics/docker-compose-yml/#docker-images","title":"Docker Images","text":""},{"location":"concepts-basics/docker-compose-yml/#build","title":"build
","text":"If you want Lagoon to build a Dockerfile for your service during every deployment, you can define it here:
build
context
- The build context path that should be passed on into the
docker build
command.
dockerfile:
- Location and name of the Dockerfile that should be built.
Warning
Lagoon does NOT support the short version of build: <Dockerfile>
and will fail if it finds such a definition.
"},{"location":"concepts-basics/docker-compose-yml/#image","title":"image
","text":"If you don't need to build a Dockerfile and just want to use an existing Dockerfile, define it via image
.
"},{"location":"concepts-basics/docker-compose-yml/#types","title":"Types","text":"Lagoon needs to know what type of service you are deploying in order to configure the correct Kubernetes or OpenShift objects.
This is done via the lagoon.type
label. There are many different types to choose from. Check Service Types to see all of them and their additional configuration possibilities.
"},{"location":"concepts-basics/docker-compose-yml/#skipignore-containers","title":"Skip/Ignore containers","text":"If you'd like Lagoon to ignore a service completely - for example, you need a container only during local development - give it the type none
.
"},{"location":"concepts-basics/docker-compose-yml/#persistent-storage","title":"Persistent Storage","text":"Some containers need persistent storage. Lagoon allows for each container to have a maximum of one persistent storage volume attached to the container. You can configure the container to request its own persistent storage volume (which can then be mounted by other container), or you can tell the container to mount the persistent storage created by another container.
In many cases, Lagoon knows where that persistent storage needs to go. For example, for a MariaDB container, Lagoon knows that the persistent storage should be put into /var/lib/mysql
, and puts it there automatically without any extra configuration to define that. For some situations, though, Lagoon needs your help to know where to put the persistent storage:
lagoon.persistent
- The absolute path where the persistent storage should be mounted (the above example uses /app/web/sites/default/files/
which is where Drupal expects its persistent storage). lagoon.persistent.name
- Tells Lagoon to not create a new persistent storage for that service, but instead mounts the persistent storage of another defined service into this service. lagoon.persistent.size
- The size of persistent storage you require (Lagoon usually gives you minimum 5G of persistent storage, if you need more, define it here). lagoon.persistent.class
- By default Lagoon automatically assigns the right storage class for your service (like SSDs for MySQL, bulk storage for Nginx, etc.). If you need to overwrite this, you can do so here. This is highly dependent on the underlying Kubernetes/OpenShift that Lagoon runs on. Contact your Lagoon administrator for this.
See the Additional Volumes section on how to add more volumes
"},{"location":"concepts-basics/docker-compose-yml/#auto-generated-routes","title":"Auto-generated Routes","text":"The docker-compose.yml file also supports per-service enabling and disabling of autogenerated routes
lagoon.autogeneratedroute: false
label will stop a route from being automatically created for that service. It can be applied to all services with autogenerated routes, but is mostly useful for the basic
and basic-persistent
service types when used to create an additional internal-facing service for a database service or similar. The inverse is also true - it will enable an auto-generated route for a service when the .lagoon.yml file disables them.
"},{"location":"concepts-basics/docker-compose-yml/#additional-volumes","title":"Additional Volumes","text":"In situations where more than one persistent volume is required by a service (or services), Lagoon can support the creation of multiple additional volumes.
To do this, the volume should be created in the docker-compose.yml with a lagoon.type
label - currently only \"persistent\" is supported.
docker-compose.yml volumes snippetvolumes:\nextravol:\nlabels:\nlagoon.type: persistent\n
This volume can then be referenced in each service that requires it, along with the path.
"},{"location":"concepts-basics/docker-compose-yml/#add-additional-volumes-to-an-existing-non-persistent-service-type","title":"Add additional volumes to an existing non -persistent
service type","text":"If you have a basic
or other supported standalone service type and you want to add volumes, you can use the additional volumes to do this without chaning the service type to a -persistent
type.
docker-compose.yml volume usage snippetservices:\nbasic:\nbuild:\ncontext: .\ndockerfile: basic.dockerfile\nlabels:\nlagoon.type: basic\nlagoon.volumes.data.path: /data # basic-persistent provides a default volume, this needs to be defined\nlagoon.volumes.extravol.path: /extra\nvolumes: # these volumes are ignored by lagoon, only the labels above are consumed to handle volume mapping\n- data:/data:delegated\n- extravol:/extra\nvolumes:\ndata:\nlabels:\nlagoon.type: persistent\nextravol:\nlabels:\nlagoon.type: persistent\nlagoon.backup: false\n
"},{"location":"concepts-basics/docker-compose-yml/#add-additional-volume-to-an-existing-persistent-service-type","title":"Add additional volume to an existing -persistent
service type","text":"docker-compose.yml volume usage snippet
services:\nbasic:\nbuild:\ncontext: .\ndockerfile: basic.dockerfile\nlabels:\nlagoon.type: basic-persistent\nlagoon.persistent: /data # basic-persistent provides a default volume, this needs to be defined\nlagoon.volumes.extravol.path: /extra\nvolumes: # these volumes are ignored by lagoon, only the labels above are consumed to handle volume mapping\n- ./data:/data:delegated\n- extravol:/extra\nvolumes:\nextravol:\nlabels:\nlagoon.type: persistent\nlagoon.backup: false\n
Note that the original volume created for this service still exists."},{"location":"concepts-basics/docker-compose-yml/#supported-persistent-volume-flags","title":"Supported persistent volume flags","text":" - The default size is 5Gi - but can be modified with a
lagoon.persistent.size: XXGi
label on the volume. - By default, Lagoon will back up all persistent volumes, but this can be disabled with a
lagoon.backup: false
label on the volume.
docker-compose.yml volumes snippetvolumes:\nextravol:\nlabels:\nlagoon.type: persistent\nlagoon.persistent.size: 10Gi\nlagoon.backup: false\n
"},{"location":"concepts-basics/docker-compose-yml/#default-persistent-volumes","title":"Default persistent volumes","text":" - If a service type provides a default persistent volume (nginx-php-persistent, basic-persistent, node-persistent, python-persistent), it will be created and named as the name of the service (unless the lagoon.persistent.name label is assigned).
- If a volume defined in the volumes block is also named the same as a default volume would be, it will be ignored and only the default volume will be created.
- If a lagoon.volumes.${volume_name}.path is also defined on a service that has a default volume (or a volume linked to it using the lagoon.persistent.name label, it will also be ignored and the value of the lagoon.persistent path will be used.
"},{"location":"concepts-basics/docker-compose-yml/#ignored-volume","title":"Ignored volume","text":" - If a volume defined in the volumes block has a label lagoon.type: none it will not be created.
- If a volume defined in the volumes block has a label lagoon.type of a type (currently only persistent), but it is not consumed by any service using a lagoon.volumes.${volume_name}.path, then the volume will not be created.
"},{"location":"concepts-basics/docker-compose-yml/#maximum-number-of-volumes","title":"Maximum number of volumes","text":" - Currently a hard-coded limit of 6 volumes is in place, this may be made configurable in the future.
"},{"location":"concepts-basics/docker-compose-yml/#supported-service-types","title":"Supported service types","text":"Currently, the only service types that support additional volumes are the following
- basic / basic-persistent
- worker / worker-persistent
- node / node-persistent
- python / python-persistent
- nginx / nginx-php / nginx-php-persistent
- cli / cli-persistent
Adding a volume to any other type will result in an error during a build.
"},{"location":"concepts-basics/docker-compose-yml/#additional-service-ports","title":"Additional Service Ports","text":"If you have a service that has many ports, you can use the lagoon.service.usecomposeports: true
label to inform Lagoon to use the ports defined on the service.
Info
Only TCP based ports will be allowed to have a route attached, but UDP ports can be used for internal communications.
For example, if you have a basic
service that requires ports 8080
and 10009
.
- port 8080 could be a HTTP based port and you want to route to this using a route in
.lagoon.yml
- port 10009 could be used by other services within the environment for internal communications
You would define your service to consume the ports
like so:
docker-compose.yml service port snippetversion: '2'\nservices:\ncustom:\nbuild:\ncontext: internal/testdata/basic/docker\ndockerfile: Dockerfile\nlabels:\nlagoon.type: basic\nlagoon.service.usecomposeports: true\nports:\n- \"8080\"\n- \"10009\"\n
The first port in the list of ports will be the \"default\" port for the service, so standard routes like so will route to the default port. An example .lagoon.yml
is show how this looks the same as any other standard service route.
.lagoon.yml default port routeenvironments:\nmain:\nroutes:\n- custom:\n- example.com\n
Alternatively, if you wanted to also have a route specifically for port 10009, you could define the route like so in your .lagoon.yml
.
.lagoon.yml default and alternative port routeenvironments:\nmain:\nroutes:\n- custom-10009:\n- otherport.example.com\n
Info
You can define both the \"default\" route and a custom port route together, as long as they have different domains used.
"},{"location":"concepts-basics/docker-compose-yml/#multi-container-pods","title":"Multi-Container Pods","text":"Kubernetes and OpenShift don't deploy plain containers. Instead, they deploy pods, with each one or more containers. Usually Lagoon creates a single pod with a container inside for each defined docker-compose
service. For some cases, we need to put two containers inside a single pod, as these containers are so dependent on each other that they should always stay together. An example for such a situation is the PHP and NGINX containers that both contain PHP code of a web application like Drupal.
For these cases, it is possible to tell Lagoon which services should stay together, which is done in the following way (remember that we are calling containers services
because of docker-compose
:
- Define both services with a
lagoon.type
that expects two services (in the example this is nginx-php-persistent
defined on the nginx
and php
services). - Link the second service with the first one, defining the label
lagoon.name
of the second one with the first one. (in the example this is done with defining lagoon.name: nginx
).
This will cause Lagoon to realize that the nginx
and php
containers are combined in a pod that will be called nginx
.
Warning
Once you have set the lagooon.name
of a service, do NOT rename it. This will cause all kind of havoc in your containers and break things.
Lagoon still needs to understand which of the two services is the actual individual service type (nginx
and php
in this case). It does this by searching for service names with the same name that are given by the type, so nginx-php-persistent
expects one service with the name nginx
and one with php
in the docker-compose.yml.
If for any reason you want to use different names for the services, or you need for than one pod with the type nginx-php-persistent
there is an additional label lagoon.deployment.servicetype
which can be used to define the actual service type.
An example:
docker-compose.ymlnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # If this isn't present, Lagoon will use the container name, which in this case is nginx.\nlagoon.deployment.servicetype: nginx\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # We want this service to be part of the NGINX pod in Lagoon.\nlagoon.deployment.servicetype: php\n
In the example above, the services are named nginx
and php
(but you can call them whatever you want). The lagoon.name
tells Lagoon which services go together - all of the services with the same name go together.
In order for Lagoon to realize which one is the nginx
and which one is the php
service, we define it via lagoon.deployment.servicetype: nginx
and lagoon.deployment.servicetype: php
.
"},{"location":"concepts-basics/docker-compose-yml/#helm-templates-kubernetes-only","title":"Helm Templates (Kubernetes only)","text":"Lagoon uses Helm for templating on Kubernetes. To do this, a series of Charts are included with the build-deploy-tool
image.
"},{"location":"concepts-basics/docker-compose-yml/#custom-rollout-monitor-types","title":"Custom Rollout Monitor Types","text":"By default, Lagoon expects that services from custom templates are rolled out via a DeploymentConfig
object within Kubernetes or Openshift. It monitors the rollout based on this object. In some cases, the services that are defined via custom deployment need a different way of monitoring. This can be defined via lagoon.rollout
:
deploymentconfig
- This is the default. Expects a DeploymentConfig
object in the template for the service. statefulset
- Expects a Statefulset
object in the template for the service. daemonset
- Expects a Daemonset
object in the template for the service. false
- Will not monitor any rollouts, and will just be happy if the template applies and does not throw any errors.
You can also overwrite the rollout for just one specific environment. This is done in .lagoon.yml
.
"},{"location":"concepts-basics/docker-compose-yml/#docker-compose-v2-compatibility","title":"Docker Compose v2 compatibility","text":"Bug
Note that while using older versions of Docker Compose V2 locally, you may experience some known issues - these have been resolved in later releases (v2.17.3 onwards).
The resolution for these errors is usually to update (or install a later version of) the version of Docker Compose you are using, either standalone or by upgrading the version of Docker Desktop you're using. See the Docker Desktop release notes for more information
Docker Compose output indicating depends_on errorFailed to solve with frontend dockerfile.v0: failed to create LLB definition: pull access denied, repository does not exist or may require authorization\n\nor\n\nFailed to solve: drupal9-base-cli: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed`\n
- These are resolved in Docker Compose v2.13.0.
- This message means that your build has tried to access a Docker image that hasn't been built yet. As BuildKit builds in parallel, if you have a Docker image that inherits another one (as we do in Drupal with the CLI).
- You can also use the target field inside the build to reconfigure as a multi-stage build.
- If you are already running a newer Docker Compose version, this error may be because you're defaulting to using a docker-container build context with buildx. You should make sure that
docker buildx ls
shows the docker builder as default, not a docker-container based one. Check the docs on Docker buildx here.
Docker Compose output indicating volumes_from errorno such service: container:amazeeio-ssh-agent\n
- This is resolved in Docker Compose v2.17.3.
- This message means that the service that provides SSH access into locally running containers runs outside of your Docker Compose stack and is inaccessible.
- The section can also be removed from your
docker-compose.yml
file if you don't require SSH access from inside your local environment.
"},{"location":"concepts-basics/docker-compose-yml/#buildkit-and-lagoon","title":"BuildKit and Lagoon","text":"BuildKit is a toolkit for converting source code to build artifacts in an efficient, expressive and repeatable manner.
With the release of Lagoon v2.11.0, Lagoon now provides support for more advanced BuildKit-based docker compose builds, and in Lagoon v2.21.0, BuildKit is now enabled by default for all builds. To specifically disable BuildKit for your Project or Environment, add DOCKER_BUILDKIT=0
as a build-time variable to your Lagoon project or environment.
"},{"location":"concepts-basics/docker-compose-yml/#docker-compose-errors-in-lagoon-builds","title":"Docker Compose Errors in Lagoon Builds","text":"See the Lagoon Build Errors page for how to resolve common build errors with Docker Compose.
"},{"location":"concepts-basics/docker-compose-yml/#common-docker-compose-issues","title":"Common Docker Compose Issues","text":"This section outlines some of the more common Docker Compose errors, and how to remedy them. These may present in local development, or as Lagoon Build Errors and Warnings.
"},{"location":"concepts-basics/docker-compose-yml/#dual-mapping-keys","title":"Dual Mapping keys","text":"Docker Compose output indicating mapping key errorERR: yaml: unmarshal errors: line 22: mapping key \"<<\" already defined at line 21\n
Early releases of the Lagoon examples contained a pair of YAML aliases attached to services to provide volumes and user code. Newer releases of Docker Compose will report this as an error. While all examples have now been updated, there may be some older codebases around that need updating.
This error arises from Docker Compose not knowing what it is inserting into the array, so just assuming it may be duplicate.
If your docker-compose.yml
contains one or more of this (or similar) code blocks, you will be affected.
Docker Compose error with dual mapping keys...\n<< : [*default-volumes]\n<< : [*default-user]\n...\n
The corrected version combines both aliases into a single mapping key - you'll need to remedy all occurrances.
Docker Compose correct insertion of multiple alias mapping keys...\n<< : [*default-volumes, *default-user]\n...\n
"},{"location":"concepts-basics/lagoon-yml/","title":".lagoon.yml","text":"The .lagoon.yml
file is the central file to set up your project. It contains configuration in order to do the following:
- Define routes for accessing your sites.
- Define pre-rollout tasks.
- Define post-rollout tasks.
- Set up SSL certificates.
- Add cron jobs for environments.
The .lagoon.yml
file must be placed at the root of your Git repository.
"},{"location":"concepts-basics/lagoon-yml/#general-settings","title":"General Settings","text":""},{"location":"concepts-basics/lagoon-yml/#docker-compose-yaml","title":"docker-compose-yaml
","text":"Tells the build script which Docker Compose YAML file should be used, in order to learn which services and containers should be deployed. This defaults to docker-compose.yml
, but could be used for a specific Lagoon Docker Compose YAML file if needed.
"},{"location":"concepts-basics/lagoon-yml/#environment_variablesgit_sha","title":"environment_variables.git_sha
","text":"This setting allows you to enable injecting the deployed Git SHA into your project as an environment variable. By default this is disabled. Setting the value to true
sets the SHA as the environment variable LAGOON_GIT_SHA
.
"},{"location":"concepts-basics/lagoon-yml/#routes","title":"Routes","text":"Routes are used to direct traffic to services. Each service in an environnment can have routes, in which the domain names are defined manually or automatically. The top level routes
section applies to all routes in all environments.
"},{"location":"concepts-basics/lagoon-yml/#routesautogenerate","title":"routes.autogenerate
","text":"This allows you to configure automatically created routes. Manual routes are defined per environment.
enabled
: Set to false
to disable autogenerated routes. Default is true
. allowPullrequests
: Set to true
to override enabled: false
for pull requests..lagoon.ymlroutes:\nautogenerate:\nenabled: false\nallowPullrequests: true\n
insecure
: Configures HTTP connections. Default is Allow
. Allow
: Route will respond to HTTP and HTTPS. Redirect
: Route will redirect any HTTP request to HTTPS.
-
prefixes
: Configure prefixes for the autogenerated routes of each environment. This is useful for things like language prefix domains, or a multi-domain site using the Drupal domain
module.
.lagoon.yml routes:\nautogenerate:\nprefixes:\n- www\n- de\n- fr\n- it\n
"},{"location":"concepts-basics/lagoon-yml/#path-based-routes","title":"Path Based Routes","text":"Path based routes allows you to define paths on a route to a different backend. This can be used if you have a separate backend within the environment that you want to route traffic to on the same domain as another service within your environment.
Warning
Path based routes can get quite complex and should only be used if you have a need to use them.
Here is an example .lagoon.yml
file that shows how path based routes can be defined. There is support for global autogenerated routes, per environment autogenerated routes, and custom routes.
.lagoon.yml path based routesdocker-compose-yaml: docker-compose.yml\n# if an environment has `autogeneratePathRoutes` defined like `environments.main.autogeneratePathRoutes`\n# then thes global lagoon yaml `routes.autogenerate.pathRoutes` are ignored\nroutes:\nautogenerate:\npathRoutes:\n- fromService: nginx\ntoService: node\npath: /api/v1\nenvironments:\nmain:\n# path routes for autogenerated routes for this environment only\nautogeneratePathRoutes:\n- fromService: nginx\ntoService: node\npath: /api/v1\nroutes:\n- nginx:\n- a.example.com:\npathRoutes:\n- toService: node\npath: /api/v1\n
"},{"location":"concepts-basics/lagoon-yml/#autogenerated-routes","title":"Autogenerated Routes","text":"It is possible to configure global autogenerated routes, these would apply to ALL environments that this .lagoon.yml
file would cover.
Additionally, per environment autogenerated route configurations are supported, the fields are the same, just where they are defined is different.
.lagoon.yml autogenerated path based routesroutes:\nautogenerate:\npathRoutes:\n- fromService: nginx\ntoService: node\npath: /api/v1\nenvironments:\nmain:\n# path routes for autogenerated routes for this environment only\nautogeneratePathRoutes:\n- fromService: nginx\ntoService: node\npath: /api/v1\n
Info
If the per environment path routes are defined on an environment, any global defined ones are ignored.
The supported fields for autogenerated path routes are:
fromService
- the autogenerated route for the service you want to add the path based route to toService
- the backend service you want to route to path
- the path to send to the toService
"},{"location":"concepts-basics/lagoon-yml/#custom-routes","title":"Custom Routes","text":"It is possible to turn on path based routes for a specific route too, the following .lagoon.yml
example shows how.
.lagoon.yml custom route path based routes
environments:\nmain:\nroutes:\n- nginx:\n- a.example.com:\npathRoutes:\n- toService: node\npath: /api/v1\n
The fields are the same, except that you can omit fromService
due to the way that custom routes are defined already associated to a fromService
in their normal configuration."},{"location":"concepts-basics/lagoon-yml/#conditions","title":"Conditions","text":""},{"location":"concepts-basics/lagoon-yml/#autogenerated-route-configurations","title":"Autogenerated Route configurations","text":"If the global path routes for autogenerated routes are defined, but an environment has overrides, the global defined path routes are ignored by that environment.
"},{"location":"concepts-basics/lagoon-yml/#additional-service-ports","title":"Additional Service Ports","text":"If the docker compose label lagoon.service.usecomposeports=true
has been defined on a service, then the service name with the port number as a suffix to any ports beyond the default (first defined port) must be used as the toService
. See Additional Service Ports for more information on this label.
The following docker-compose.yml
has an example of this label and the ports. This would create the default service port named node
referencing port 1234, but also another service node-4321
. If you need to create a path based route to port 4321, you would need to define the toService
as node-4321
.
docker-compose.yml path based routes
services:\nnginx:\nbuild:\ncontext: .\ndockerfile: basic.dockerfile\nlabels:\nlagoon.type: nginx\nlagoon.service.usecomposeports: true\nports:\n- '8080'\nnode:\nbuild:\ncontext: .\ndockerfile: basic.dockerfile\nlabels:\nlagoon.type: basic\nlagoon.service.usecomposeports: true\nports:\n- '1234'\n- '4321'\n
Then you could create a route that would route a.example.com
traffic to the nginx
service. But any traffic destined for a.example.com/api/v1
would go to the node
service on port 4321
.lagoon.yml custom route path based routesenvironments:\nmain:\nroutes:\n- nginx:\n- a.example.com:\npathRoutes:\n- toService: node-4321\npath: /api/v1\n
"},{"location":"concepts-basics/lagoon-yml/#urls","title":"URLs","text":"The path
defined in the pathRoute
will be passed to whichever toService
is defined in all URL queries. This means if you're using the path
defined as /api/v1
for example, then you may need to cater for this in your backend depending on how your backend is built.
"},{"location":"concepts-basics/lagoon-yml/#path-types","title":"Path Types","text":"In Lagoon, currently only Prefix
type is supported on ingress (see Ingress path types).
"},{"location":"concepts-basics/lagoon-yml/#tasks","title":"Tasks","text":"There are different type of tasks you can define, and they differ in when exactly they are executed in a build flow:
"},{"location":"concepts-basics/lagoon-yml/#pre-rollout-tasks-pre_rolloutirun","title":"Pre-Rollout Tasks - pre_rollout.[i].run
","text":"Here you can specify tasks which will run against your project after all images have been successfully built, but before:
- Any running containers are updated with the newly built images.
- Any other changes are made to your existing environment.
This feature enables you to, for example, create a database dump before updating your application. This can make it easier to roll back in case of a problem with the deploy.
Info
The pre-rollout tasks run in the existing pods before they are updated, which means:
- Changes made to your Dockerfile since the last deploy will not be visible when pre-rollout tasks run.
- If there are no existing containers (e.g. on the initial deployment of a new environment), pre-rollout tasks are skipped.
"},{"location":"concepts-basics/lagoon-yml/#post-rollout-tasks-post_rolloutirun","title":"Post-Rollout Tasks - post_rollout.[i].run
","text":"Here you can specify tasks which need to run against your project, after:
- All images have been successfully built.
- All containers are updated with the new images.
- All containers are running have passed their readiness checks.
Common uses for post-rollout tasks include running drush updb
, drush cim
, or clearing various caches.
name
- The name is an arbitrary label for making it easier to identify each task in the logs.
command
- Here you specify what command should run. These are run in the WORKDIR of each container, for Lagoon images this is
/app
. Keep this in mind if you need to cd
into a specific location to run your task.
service
- The service in which to run the task. If following our Drupal example, this will be the CLI container, as it has all your site code, files, and a connection to the database. Typically you do not need to change this.
container
- If the service has multiple containers (e.g.
nginx-php
), you will need to specify which container in the pod to connect to (e.g. the php
container within the nginx
pod).
shell
- In which shell the task should be run. By default
sh
is used, but if the container also has other shells (like bash
, you can define it here). This is useful if you want to run some small if/else bash scripts within the post-rollouts. See the example below to learn how to write a script with multiple lines.
when
- The \"when\" clause allows for the conditional running of tasks. It expects an expression that will evaluate to a true/false value which determines whether the task should be run.
Note: If you would like to temporarily disable pre/post-rollout tasks during a deployment, you can set either of the following environment variables in the API at the project or environment level (see how on Environment Variables).
LAGOON_PREROLLOUT_DISABLED=true
LAGOON_POSTROLLOUT_DISABLED=true
"},{"location":"concepts-basics/lagoon-yml/#example-post-rollout-tasks","title":"Example post-rollout tasks","text":"Here are some useful examples of post-rollout tasks that you may want to use or adapt for your projects.
Run only if Drupal not installed:
.lagoon.yml- run:\n name: IF no Drupal installed\n command: | # (1)\nif tables=$(drush sqlq \"show tables like 'node';\") && [ -z \"$tables\" ]; then\n#### whatever you like\nfi\nservice: cli\n shell: bash\n
- This shows how to create a multi-line command.
Different tasks based on branch name:
.lagoon.yml- run:\nname: Different tasks based on branch name\ncommand: |\n### Runs if current branch is not 'production'\nservice: cli\nwhen: LAGOON_GIT_BRANCH != \"production\"\n
Run shell script:
.lagoon.yml- run:\nname: Run Script\ncommand: './scripts/script.sh'\nservice: cli\n
Target specific container in pod:
.lagoon.yml- run:\nname: show php env variables\ncommand: env\nservice: nginx\ncontainer: php\n
Drupal & Drush 9: Sync database & files from master environment:
.lagoon.yml- run:\n name: Sync DB and Files from master if we are not on master\n command: |\n# Only if we don't have a database yet\nif tables=$(drush sqlq 'show tables;') && [ -z \"$tables\" ]; then\ndrush sql-sync @lagoon.master @self # (1)\ndrush rsync @lagoon.master:%files @self:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n fi\nservice: cli\n when: LAGOON_ENVIRONMENT_TYPE != \"production\"\n
- Make sure to use the correct aliases for your project here.
"},{"location":"concepts-basics/lagoon-yml/#backup-retention","title":"Backup Retention","text":""},{"location":"concepts-basics/lagoon-yml/#backup-retentionproductionmonthly","title":"backup-retention.production.monthly
","text":"Specify the number of monthly backups Lagoon should retain for your project's production environment(s).
The global default is 1
if this value is not specified.
"},{"location":"concepts-basics/lagoon-yml/#backup-retentionproductionweekly","title":"backup-retention.production.weekly
","text":"Specify the number of weekly backups Lagoon should retain for your project's production environment(s).
The global default is 6
if this value is not specified.
"},{"location":"concepts-basics/lagoon-yml/#backup-retentionproductiondaily","title":"backup-retention.production.daily
","text":"Specify the number of daily backups Lagoon should retain for your project's production environment(s).
The global default is 7
if this value is not specified.
"},{"location":"concepts-basics/lagoon-yml/#backup-retentionproductionhourly","title":"backup-retention.production.hourly
","text":"Specify the number of hourly backups Lagoon should retain for your project's production environment(s).
The global default is 0
if this value is not specified.
"},{"location":"concepts-basics/lagoon-yml/#backup-schedule","title":"Backup Schedule","text":""},{"location":"concepts-basics/lagoon-yml/#backup-scheduleproduction","title":"backup-schedule.production
","text":"Specify the backup schedule for this project. Accepts cron-compatible syntax with the notable exception that the Minute
block must be the letter M
. Any other value in the Minute
block will cause the Lagoon build to fail. This allows Lagoon to randomly choose a specific minute for these backups to happen, while users can specify the remainder of the schedule down to the hour.
The global default is M H(22-2) * * *
if this value is not specified. Take note that these backups will use the cluster's local timezone.
"},{"location":"concepts-basics/lagoon-yml/#environments","title":"Environments","text":"Environment names match your deployed branches or pull requests. This allows for each environment to have a different config. In our example it will apply to the main
and staging
environment.
"},{"location":"concepts-basics/lagoon-yml/#environmentsnameroutes","title":"environments.[name].routes
","text":"Manual routes are domain names that are configured per environment to direct traffic to a service. Since all environments get automatically created routes by default, it is typical that manual routes are only setup for the production environment, using the main domain of the project's website like www.example.com
.
Tip
Since Lagoon has no control over the manual routes, you'll need to ensure the DNS records are configured properly at your DNS provider. You can likely set a CNAME
record to point to the automatic route.
The first element after the environment is the target service, nginx
in our example. This is how we identify which service incoming requests will be sent to.
The simplest route is example.com
, as seen in our example .lagoon.yml
- you can see it has no additional configuration. This will assume that you want a Let's Encrypt certificate for your route and no redirect from HTTPS to HTTP.
In the \"www.example.com\"
example below, we see three more options (also notice the :
at the end of the route and that the route is wrapped in \"
, that's important!):
.lagoon.yml- \"www.example.com\":\ntls-acme: true\ninsecure: Redirect\nhstsEnabled: true\n
"},{"location":"concepts-basics/lagoon-yml/#ssl-configuration-tls-acme","title":"SSL Configuration tls-acme
","text":"Warning
If you switch from tls-acme: true
to tls-acme: false
this will remove any previously generated certificates for this route. This could result in unexpected behaviour if you're using an external CDN and do any certificate pinning.
tls-acme
: Configures automatic TLS certificate generation via Let's Encrypt. Default is true
, set to false
to disable automatic certificates. insecure
: Configures HTTP connections. Default is Allow
. Allow
: Route will respond to HTTP and HTTPS. Redirect
: Route will redirect any HTTP request to HTTPS.
hstsEnabled
: Adds the Strict-Transport-Security
header. Default is false
. hstsMaxAge
: Configures the max-age
directive. Default is 31536000
(1 year). hstsPreload
: Sets the preload
directive. Default is false
. hstsIncludeSubdomains
: Sets the includeSubDomains
directive. Default is false
.
Info
If you plan to switch from a SSL certificate signed by a Certificate Authority (CA) to a Let's Encrypt certificate, it's best to get in touch with your Lagoon administrator to oversee the transition.
"},{"location":"concepts-basics/lagoon-yml/#monitoring-a-specific-path","title":"Monitoring a specific path","text":"Info
Lagoon does not provide any monitoring capabilties out of the box, only labels and annotations. Check with your Lagoon administrator if monitoring is supported.
Lagoon will add the label lagoon.sh/primaryIngress=true
to the first route defined in the .lagoon.yml
file for an environment.
If a specific path on a route requires monitoring, define monitoring-path
with the path to use. Lagoon will add this path to the annotation monitor.stakater.com/overridePath
to the route.
.lagoon.yml- \"www.example.com\":\nmonitoring-path: \"/bypass-cache\"\n
Info
The annotation monitor.stakater.com/overridePath
used by monitoring-path references the stakater monitoring controller, this is not used by Lagoon. This annotation will eventually be replaced with a lagoon.sh
scoped annotation in the future.
"},{"location":"concepts-basics/lagoon-yml/#ingress-annotations","title":"Ingress annotations","text":"Warning
Route/Ingress annotations are only supported by projects that deploy into clusters that run nginx-ingress controllers! Check with your Lagoon administrator if this is supported.
annotations
can be a YAML map of annotations supported by the nginx-ingress controller. This is specifically useful for easy redirects and other configurations.
"},{"location":"concepts-basics/lagoon-yml/#restrictions","title":"Restrictions","text":"Some annotations are disallowed or partially restricted in Lagoon. The table below describes these rules.
If your .lagoon.yml
contains one of these annotations it will cause a build failure.
Annotation Notes nginx.ingress.kubernetes.io/auth-snippet
Disallowed nginx.ingress.kubernetes.io/configuration-snippet
Restricted to rewrite
, add_header
, set_real_ip
, and more_set_headers
directives. nginx.ingress.kubernetes.io/modsecurity-snippet
Disallowed nginx.ingress.kubernetes.io/server-snippet
Restricted to rewrite
, add_header
, set_real_ip
, and more_set_headers
directives. nginx.ingress.kubernetes.io/stream-snippet
Disallowed nginx.ingress.kubernetes.io/use-regex
Disallowed"},{"location":"concepts-basics/lagoon-yml/#ingress-annotations-redirects","title":"Ingress annotations redirects","text":"In this example any requests to example.ch
will be redirected to https://www.example.ch
while keeping folders or query parameters intact (example.com/folder?query
-> https://www.example.ch/folder?query
).
.lagoon.yml- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\n
You can of course also redirect to any other URL not hosted on Lagoon, this will direct requests to example.de
to https://www.google.com
.lagoon.yml- \"example.de\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.google.com\n
"},{"location":"concepts-basics/lagoon-yml/#trusted-reverse-proxies","title":"Trusted Reverse Proxies","text":"Warning
Kubernetes will only process a single nginx.ingress.kubernetes.io/server-snippet
annotation. Please ensure that if you use this annotation on a non-production environment route that you also include the add_header X-Robots-Tag \"noindex, nofollow\";
annotation as part of your server-snippet. This is needed to stop robots from crawling development environments as the default server-snippet set to prevent this in development environments in the ingress templates will get overwritten with any server-snippets
set in .lagoon.yml
.
Some configurations involve a reverse proxy (like a CDN) in front of the Kubernetes clusters. In these configurations, the IP of the reverse proxy will appear as the REMOTE_ADDR
HTTP_X_REAL_IP
HTTP_X_FORWARDED_FOR
headers field in your applications. The original IP of the requester can be found in the HTTP_X_ORIGINAL_FORWARDED_FOR
header.
If you want the original IP to appear in the REMOTE_ADDR
HTTP_X_REAL_IP
HTTP_X_FORWARDED_FOR
headers, you need to tell the ingress which reverse proxy IPs you want to trust:
.lagoon.yml- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/server-snippet: |\nset_real_ip_from 1.2.3.4/32;\n
This example would trust the CIDR 1.2.3.4/32
(the IP 1.2.3.4
in this case). Therefore if there is a request sent to the Kubernetes cluster from the IP 1.2.3.4
the X-Forwarded-For
Header is analyzed and its contents injected into REMOTE_ADDR
HTTP_X_REAL_IP
HTTP_X_FORWARDED_FOR
headers.
"},{"location":"concepts-basics/lagoon-yml/#environmentsnametypes","title":"Environments.[name].types
","text":"The Lagoon build process checks the lagoon.type
label from the docker-compose.yml
file in order to learn what type of service should be deployed (read more about them in the documentation of docker-compose.yml
).
Sometimes you might want to override the type just for a single environment, and not for all of them. For example, if you want a standalone MariaDB database (instead of letting the Service Broker/operator provision a shared one) for your non-production environment called develop
:
service-name: service-type
service-name
is the name of the service from docker-compose.yml
you would like to override. service-type
the type of the service you would like to use in your override.
Example for setting up MariaDB_Galera:
.lagoon.ymlenvironments:\ndevelop:\ntypes:\nmariadb: mariadb-single\n
"},{"location":"concepts-basics/lagoon-yml/#environmentsnametemplates","title":"environments.[name].templates
","text":"The Lagoon build process checks the lagoon.template
label from the docker-compose.yml
file in order to check if the service needs a custom template file (read more about them in the documentation of docker-compose.yml
).
Sometimes you might want to override the template just for a single environment, and not for all of them:
service-name: template-file
service-name
is the name of the service from docker-compose.yml
you would like to override. template-file
is the path and name of the template to use for this service in this environment.
"},{"location":"concepts-basics/lagoon-yml/#example-template-override","title":"Example Template Override","text":".lagoon.ymlenvironments:\nmain:\ntemplates:\nmariadb: mariadb.main.deployment.yml\n
"},{"location":"concepts-basics/lagoon-yml/#environmentsnamerollouts","title":"environments.[name].rollouts
","text":"The Lagoon build process checks the lagoon.rollout
label from the docker-compose.yml
file in order to check if the service needs a special rollout type (read more about them in the documentation of docker-compose.yml
)
Sometimes you might want to override the rollout type just for a single environment, especially if you also overwrote the template type for the environment:
service-name: rollout-type
service-name
is the name of the service from docker-compose.yml
you would like to override. rollout-type
is the type of rollout. See documentation of docker-compose.yml
) for possible values.
"},{"location":"concepts-basics/lagoon-yml/#custom-rollout-type-example","title":"Custom Rollout Type Example","text":".lagoon.ymlenvironments:\nmain:\nrollouts:\nmariadb: statefulset\n
"},{"location":"concepts-basics/lagoon-yml/#environmentsnameautogenerateroutes","title":"environments.[name].autogenerateRoutes
","text":"This allows for any environments to get autogenerated routes when route autogeneration is disabled.
.lagoon.ymlroutes:\nautogenerate:\nenabled: false\nenvironments:\ndevelop:\nautogenerateRoutes: true\n
"},{"location":"concepts-basics/lagoon-yml/#environmentsnamecronjobs","title":"environments.[name].cronjobs
","text":"Cron jobs must be defined explicitly for each environment, since it is typically not desirable to run the same ones for all environments. Depending on the defined schedule, cron jobs may run as a Kubernetes native CronJob
or as an in-pod cron job via the crontab of the defined service.
"},{"location":"concepts-basics/lagoon-yml/#cron-job-example","title":"Cron Job Example","text":".lagoon.ymlcronjobs:\n- name: Hourly Drupal Cron\nschedule: \"M * * * *\" # Once per hour, at a random minute.\ncommand: drush cron\nservice: cli\n- name: Nightly Drupal Cron\nschedule: \"M 0 * * *\" # Once per day, at a random minute from 00:00 to 00:59.\ncommand: drush cron\nservice: cli\n
name
: Any name that will identify the purpose and distinguish it from other cron jobs. -
schedule
: The schedule for executing the cron job. Lagoon uses an extended version of the crontab format. If you're not sure about the syntax, use a crontab generator.
- You can specify
M
for the minute, and your cron job will run once per hour at a random minute (the same minute each hour), or M/15
to run it every 15 mins, but with a random offset from the hour (like 6,21,36,51
). It is a good idea to spread out your cron jobs using this feature, rather than have them all fire off on minute 0
. - You can specify
H
for the hour, and your cron job will run once per day at a random hour (the same hour every day), or H(2-4)
to run it once per day within the hours of 2-4.
Timezones:
- The default timezone for cron jobs is UTC.
- Native cron jobs use the timezone of the node, which is UTC.
- In-pod cron jobs use the timezone of the defined service, which can be configured to something other than UTC.
command
: The command to execute. This executes in the WORKDIR
of the service. For Lagoon images, this is /app
.
Warning
Cronjobs may run in-pod, via crontab, which doesn't support multiline commands. If you need a complex or multiline cron command, you must put it in a script that can be used as the command. Consider whether a pre- or post-rollout task would work.
Danger
Cronjobs run in Kubernetes pods, which means they can be interrupted due to pod rescheduling. Therefore when creating a cronjob you must ensure that the command can be safely interrupted and re-run at the next cron interval.
service
: Which service of your project to run the command in. For most projects, this should be the cli
service.
"},{"location":"concepts-basics/lagoon-yml/#polysite","title":"Polysite","text":"In Lagoon, the same Git repository can be added to multiple projects, creating what is called a polysite. This allows you to run the same codebase, but allow for different, isolated, databases and persistent files. In .lagoon.yml
, we currently only support specifying custom routes for a polysite project. The key difference from a standard project is that the environments
becomes the second-level element, and the project name the top level.
To utilize this, you will need to:
- Create two (or more) projects in Lagoon, each configured with the same Git URL and production branch, named per your .lagoon.yml (i.e
poly-project1
and poly-project2
below) - Add the deploy keys from each project to the Git repository.
- Configure the webhook for the repository (if required) - you can then push/deploy. Note that a push to the repository will simultaneously deploy all projects/branches for that Git URL.
"},{"location":"concepts-basics/lagoon-yml/#polysite-example","title":"Polysite Example","text":".lagoon.ymlpoly-project1:\nenvironments:\nmain:\nroutes:\n- nginx:\n- project1.com\npoly-project2:\nenvironments:\nmain:\nroutes:\n- nginx:\n- project2.com\n
"},{"location":"concepts-basics/lagoon-yml/#specials","title":"Specials","text":""},{"location":"concepts-basics/lagoon-yml/#api","title":"api
","text":"Info If you run directly on amazee.io hosted Lagoon you will not need this key set.
With the key api
you can define another URL that should be used by the Lagoon CLI and drush
to connect to the Lagoon GraphQL API. This needs to be a full URL with a scheme, like: http://localhost:3000
This usually does not need to be changed, but there might be situations where your Lagoon administrator tells you to do so.
"},{"location":"concepts-basics/lagoon-yml/#ssh","title":"ssh
","text":"Info If you run directly on amazee.io hosted Lagoon you will not need this key set.
With the key ssh
you can define another SSH endpoint that should be used by the Lagoon CLI and drush
to connect to the Lagoon remote shell service. This needs to be a hostname and a port separated by a colon, like: localhost:2020
This usually does not need to be changed, but there might be situations where your Lagoon administrator tells you to do so.
"},{"location":"concepts-basics/lagoon-yml/#container-registries","title":"container-registries
","text":"The container-registries
block allows you to define your own private container registries to pull custom or private images.
To use a private container registry, you will need a username
, password
, and optionally the url
for your registry. If you don't specify a url
in your YAML, it will default to using Docker Hub. We also recommend adding a description
to your container-registry entries to provide a bit of information about them, some examples are provided.
There are 2 ways to define the username and password used for your registry user.
- Define them as environment variables in the API
- Hardcode them in the
.lagoon.yml
file (we don't recommend this though)
"},{"location":"concepts-basics/lagoon-yml/#environment-variables-method","title":"Environment variables method","text":"Firstly, define the container-registries
in your .lagoon.yml
, you don't need to define the username or password here. If you do use a custom registry, you will still need to provide the url
, for example:
.lagoon.ymlcontainer-registries:\ndocker-hub:\ndescription: \"username and password consumed from environment variables for the default docker.io registry\"\nmy-custom-registry:\ndescription: \"username and password consumed from environment variables for my custom registry\"\nurl: my.own.registry.com\nanother-custom-registry:\ndescription: \"password consumed from environment variables for my other registry\"\nusername: myotheruser\nurl: my.other.registry.com\n
If you do define a username in the .lagoon.yml
you don't need to add the associated variable, but if you do add the variable, the value of the variable will be prefered.
Next, create environment variables in the Lagoon API with the type container_registry
:
lagoon add variable -p <project_name> -N <registry_username_variable_name> -V <username_goes_here> -S container_registry
lagoon add variable -p <project_name> -N <registry_password_variable_name> -V <password_goes_here> -S container_registry
- (see more on Environment Variables)
The name of the variables should be the name of the registry defined in the .lagoon.yml
file, it should be:
- uppercase
- replace
-
with _
- have the prefix
REGISTRY_
- have the suffix of
_USERNAME
or _PASSWORD
.
Some examples of this are:
dockerhub
would become REGISTRY_DOCKERHUB_USERNAME
and REGISTRY_DOCKERHUB_PASSWORD
docker-hub
would become REGISTRY_DOCKER_HUB_USERNAME
and REGISTRY_DOCKER_HUB_PASSWORD
my-custom-registry
would become REGISTRY_MY_CUSTOM_REGISTRY_USERNAME
and REGISTRY_MY_CUSTOM_REGISTRY_PASSWORD
- lowercased versions may still work if there are no
-
in them, for example REGISTRY_dockerhub_USERNAME
, but the uppercased version will always be chosen above others.
Legacy method of defining registry password A previous method that allowed for the password to be defined using an environment variable, with the name of the variable to be defined in the .lagoon.yml
file like so: .lagoon.yml
container-registries:\ndocker-hub:\nusername: dockerhubuser\npassword: MY_DOCKER_HUB_PASSWORD\n
the username needs to be provided in this file too, unless the supported variable for defining the username is provided.
The variable can then ba added to the API like so
lagoon add variable -p <project_name> -N MY_DOCKER_HUB_PASSWORD -V <password_goes_here> -S container_registry
While we will continue to support this method, it may be deprecated in the future, we will ensure that warnings are presented within builds to give time for users to change to the supported method.
If a supported variable password is provided, it will be used instead of the custom named variable.
"},{"location":"concepts-basics/lagoon-yml/#hardcoded-values-method","title":"Hardcoded values method","text":"You can also define the password directly in the .lagoon.yml
file in plain text, however we do not recommend this.
.lagoon.ymlcontainer-registries:\ndocker-hub:\ndescription: \"the default docker.io registry credentials\"\nusername: dockerhubuser\npassword: MySecretPassword\nmy-custom-registry:\ndescription: \"the credentials for my own registry\"\nurl: my.own.registry.com\nusername: mycustomuser\npassword: MyCustomSecretPassword\n
"},{"location":"concepts-basics/lagoon-yml/#consuming-a-custom-or-private-container-registry-image","title":"Consuming a custom or private container registry image","text":"To consume a custom or private container registry image, you need to update the service inside your docker-compose.yml
file to use a build context instead of defining an image:
.docker-compose.ymlservices:\nmariadb:\nbuild:\ncontext: .\ndockerfile: Dockerfile.mariadb\n
Once the docker-compose.yml
file has been updated to use a build, you need to create the Dockerfile.<service>
and then set your private image as the FROM <repo>/<name>:<tag>
.lagoon.ymlFROM dockerhubuser/my-private-database:tag\n
"},{"location":"concepts-basics/lagoon-yml/#example-lagoonyml","title":"Example .lagoon.yml
","text":"This is an example .lagoon.yml
which showcases all possible settings. You will need to adapt it to your project.
.lagoon.ymldocker-compose-yaml: docker-compose.yml\nenvironment_variables:\ngit_sha: 'true'\ntasks:\npre-rollout:\n- run:\nname: drush sql-dump\ncommand: mkdir -p /app/web/sites/default/files/private/ && drush sql-dump --ordered-dump --gzip --result-file=/app/web/sites/default/files/private/pre-deploy-dump.sql.gz\nservice: cli\npost-rollout:\n- run:\nname: drush cim\ncommand: drush -y cim\nservice: cli\nshell: bash\n- run:\nname: drush cr\ncommand: drush -y cr\nservice: cli\nroutes:\nautogenerate:\ninsecure: Redirect\nenvironments:\nmain:\nroutes:\n- nginx:\n- example.com\n- example.net\n- \"www.example.com\":\ntls-acme: true\ninsecure: Redirect\nhstsEnabled: true\n- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\ntypes:\nmariadb: mariadb\ntemplates:\nmariadb: mariadb.main.deployment.yml\nrollouts:\nmariadb: statefulset\ncronjobs:\n- name: drush cron\nschedule: \"M * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\nstaging:\ncronjobs:\n- name: drush cron\nschedule: \"M * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\nfeature/feature-branch:\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\n
"},{"location":"concepts-basics/lagoon-yml/#deprecated","title":"Deprecated","text":"These settings have been deprecated and should be removed from use in your .lagoon.yml
.
routes.autogenerate.insecure
The None
option is equivalent to Redirect
.
environments.[name].monitoring_urls
environments.[name].routes.[service].[route].hsts
environments.[name].routes.[service].[route].insecure
The None
option is equivalent to Redirect
.
"},{"location":"concepts-basics/building-blocks/deploy-targets/","title":"Deploy Targets","text":"A deploy target tells Lagoon where to deploy your project - into which cluster. A project may have one or more deploy targets, for example, one for production and one for testing. Deploy targets have options that allow for automatic deployment of defined branches, as well as pull requests.
Read more about deploy targets.
"},{"location":"concepts-basics/building-blocks/groups/","title":"Groups","text":"Groups are made up of users who have roles. An organization can have one or more groups. Each project can be assigned one or more groups. Groups can be assigned to multiple projects. Groups are created independently of projects, and then assigned to them.
Organizations have a quota to limit the number of groups assigned to it. If you need to change the quota, please contact your Lagoon administrator.
"},{"location":"concepts-basics/building-blocks/notifications/","title":"Notifications","text":"Notifications are how Lagoon informs users about what's going on with their projects. There are several types of notifications:
- Slack
- RocketChat
- Email
- Webhook
- Microsoft Teams
A project can have one or more notifications. Organizations have a notification quota for all of their projects. Notifications are created independently of projects, and can then be assigned to one or more projects.
Learn how to add notifications step-by-step in the Lagoon UI.
Learn how to add notifications notifications via the API.
"},{"location":"concepts-basics/building-blocks/organizations/","title":"Organizations","text":"An organization is an entity which can contain one or more projects, groups, users, and notifications. Organizations help control access to projects, making it easy to create groups, add and remove users, and assign groups to projects.
Organizations add a layer of structure to help imitate life - for example, you may be a project manager who creates an organization to reflect the team working on a specific site. So that organization would contain the project or projects that make up that site, all of the people who need access to work on the site as users in a group called developers, and maybe another group of people who just need access to Lagoon to view the site and any issues, called viewers, each with the appropriate roles.
Organizations have a quota to limit the number of projects, groups, notifications, and environments that can be assigned to it. If you need to change this quota, please contact your Lagoon administrator.
Learn more about how to interact with Organizations.
"},{"location":"concepts-basics/building-blocks/projects/","title":"Projects","text":"A project is an application that lives on Lagoon. An organization may have one or more projects. A project may have one or more users, notifications, and at least one deploy target. Organizations have a quota to limit the amount of projects that can be created.
"},{"location":"concepts-basics/building-blocks/roles/","title":"Roles","text":"Roles determine a user's access to projects. Users are given roles in groups and organizations.
Members of groups can be given the following roles:
- Guest
- Reporter
- Developer
- Maintainer
- Owner
These roles and their permissions are described in more depth here: Role-Based Access Control.
Members of organizations can be given the following roles:
- Org Owner
- Org Viewer
Changing Quotas
If you need to change quotas, please contact your Lagoon administrator.
An organization owner can do everything to do with administering an organization aside from changing quotas. They can add and delete users, groups, projects, deploy targets, and notifcations
An organization viewer is a read-only role that can only view the organization, but cannot make any changes or additions. They can view the projects, groups, users, and notifications within an organization but cannot modify them.
A user who has not been assigned as an owner or viewer cannot see the organization.
"},{"location":"concepts-basics/building-blocks/users/","title":"Users","text":"A user is a Lagoon account that allows you to interact with the Lagoon system. A user may belong to one or more organizations and groups, and each group may have a different role granting various permissions. Organizations, groups, and roles grant users access to projects.
Read more about user roles.
"},{"location":"contributing-to-lagoon/api-debugging/","title":"API Debugging","text":"1 . Ensure the dev
script at services/api/package.json
includes the following:
services/api/package.jsonnode --inspect=0.0.0.0:9229\n
2 . Update docker-compose.yml
to map the dist
folder and expose the 9229
port:
docker-compose.yml api:\nimage: ${IMAGE_REPO:-lagoon}/api\ncommand: yarn run dev\nvolumes:\n- ./services/api/src:/app/services/api/src\n- ./services/api/dist:/app/services/api/dist\ndepends_on:\n- api-db\n- local-api-data-watcher-pusher\n- keycloak\nports:\n- '3000:3000'\n- '9229:9229'\n
3 . Add the following to .vscode/launch.json
:
.vscode/launch.json{\n// Use IntelliSense to learn about possible attributes.\n// Hover to view descriptions of existing attributes.\n// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387.\n\"version\": \"0.2.0\",\n\"configurations\": [\n{\n\"name\": \"Docker: Attach to Node\",\n\"type\": \"node\",\n\"request\": \"attach\",\n\"port\": 9229,\n\"address\": \"localhost\",\n\"outFiles\": [\"${workspaceRoot}/app/services/api/dist/**/*.js\"],\n\"localRoot\": \"${workspaceFolder}/services/api\",\n\"remoteRoot\": \"/app/services/api\",\n\"sourceMaps\": true,\n\"protocol\": \"inspector\"\n}\n]\n}\n
4 . Rebuild/restart the containers:
Restart containersrm build/api && make build/api && docker compose restart api\n
5 . Restart VScode.
"},{"location":"contributing-to-lagoon/developing-lagoon/","title":"Developing Lagoon","text":"Development of Lagoon locally can now be performed on a local Kubernetes cluster, or via Docker Compose (as a fallback).
Note
The full Lagoon stack relies on a range of upstream projects which are currently incompatible with ARM-based architectures, such as the the M1/M2 Apple Silicon-based machines. For this reason, running or developing lagoon-core
or lagoon-remote
locally on these architectures is not currently supported. See https://github.com/uselagoon/lagoon/issues/3189 for more information.
"},{"location":"contributing-to-lagoon/developing-lagoon/#required-command-line-tools","title":"Required command line tools","text":"Some tools are required that are not downloaded/linked by the makefile, some systems may have these installed already.
envsubst
wget
Mac users can install these via brew:
Text Onlybrew install wget gettext\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#docker","title":"Docker","text":"Docker must be installed to build and run Lagoon locally.
"},{"location":"contributing-to-lagoon/developing-lagoon/#install-docker-and-docker-compose","title":"Install Docker and Docker Compose","text":"Please check the official docs for how to install Docker.
Docker Compose is included in Docker for Mac installations. For Linux installations see the directions here.
"},{"location":"contributing-to-lagoon/developing-lagoon/#configure-docker","title":"Configure Docker","text":"You will need to update your insecure registries in Docker. Read the instructions here on how to do that. We suggest adding the entire local IPv4 Private Address Spaces to avoid unnecessary reconfiguration between Kubernetes and Docker Compose. e.g. \"insecure-registries\" : [\"172.16.0.0/12\",\"192.168.0.0/16\"],
"},{"location":"contributing-to-lagoon/developing-lagoon/#allocate-enough-docker-resources","title":"Allocate Enough Docker Resources","text":"Running a Lagoon, Kubernetes, or Docker cluster on your local machine consumes a lot of resources. We recommend that you give your Docker host a minimum of 8 CPU cores and 12GB RAM.
"},{"location":"contributing-to-lagoon/developing-lagoon/#macos-docker-networking","title":"MacOS Docker Networking","text":"Unfortunately Docker for Mac runs Docker inside a lightweight VM. This makes some of the functionality that Linux users enjoy, unusable in MacOS. That functionality is the ability to route to container IP addresses within the docker networks directly. On MacOS this is not possible out of the box.
You can install the following package https://github.com/chipmk/docker-mac-net-connect. What this software does is create a tunnel between the Docker VM and the host and creates routes for the internal docker networks to the host. This allows you to access the Lagoon services in the docker network that is exposed inside of k3d the same way users developing on Linux would.
Text Only# Install via Homebrew\n$ brew install chipmk/tap/docker-mac-net-connect\n# Run the service and register it to launch at boot\n$ sudo brew services start chipmk/tap/docker-mac-net-connect\n# Stop the service\n$ sudo brew services stop chipmk/tap/docker-mac-net-connect\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#build-lagoon-locally","title":"Build Lagoon Locally","text":"Warning
Only consider building Lagoon this way if you intend to develop features or functionality for it, or want to debug internal processes. We will also be providing instruction to install Lagoon without building it (i.e. by using the published releases).
We're using make
(see the Makefile) in order to build the needed Docker images, configure Kubernetes and run tests.
We have provided a number of routines in the Makefile to cover most local development scenarios. Here we will run through a complete process.
"},{"location":"contributing-to-lagoon/developing-lagoon/#build-images","title":"Build images","text":" - Here
-j8
tells make to run 8 tasks in parallel to speed the build up. Adjust as necessary. - We have set
SCAN_IMAGES=false
as a default to not scan the built images for vulnerabilities. If set to true, a scan.txt
file will be created in the project root with the scan output.
Build imagesmake -j8 build\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#deploy-a-local-lagoon-development-stack-without-test-suites","title":"Deploy a local Lagoon development stack without test suites","text":"The make file offers a command that allows you to spin up Lagoon inside of a k3d cluster locally and explore its functionality.
Using the following make command will create a k3d cluster, install Lagoon and all of the necessary components to get you up and running and ready to explore.
Deploy local stackmake k3d/local-stack\n
Warning
This can take some time to complete as it will install a lot of components necessary to make Lagoon work. This includes things like ingress-nginx, harbor, and all the additional services to make exploring Lagoon easy.
At the end of the process, the command will provide some useful information that will get you up and running and able to log in to the UI or using the API with tools like the Lagoon CLI.
"},{"location":"contributing-to-lagoon/developing-lagoon/#run-the-lagoon-test-suite","title":"Run the Lagoon test-suite","text":"If you're developing new functionality in Lagoon and want to make sure the tests complete, you can run the entire test suite using the following options
- Start Lagoon test routine using the defaults in the Makefile (all tests).
Start testsmake k3d/test\n# or use retest if you already have a local stack running\nmake k3d/retest\n
Warning
There are a lot of tests configured to run by default - please consider only testing locally the minimum that you need to ensure functionality. This can be done by specifying or removing tests from the TESTS
variable in the Makefile.
This process will:
- Download the correct versions of the local development tools if not installed -
k3d
, kubectl
, helm
, jq
. - Update the necessary Helm repositories for Lagoon to function.
- Ensure all of the correct images have been built in the previous step.
- Create a local K3D cluster, which provisions an entire running Kubernetes cluster in a local Docker container. This cluster has been configured to talk to a provisioned image registry that we will be pushing the built Lagoon images to. It has also been configured to allow access to the host filesystem for local development.
- Clone Lagoon from https://github.com/uselagoon/lagoon-charts (use the
CHARTS_TREEISH
variable in the Makefile to control which branch if needed). - Install the Harbor Image registry into the K3D cluster and configure its ingress and access properly.
- Docker will push the built images for Lagoon into the Harbor image registry.
- It then uses the Makefile from lagoon-charts to perform the rest of the setup steps.
- A suitable ingress controller is installed - we use the NGINX Ingress Controller.
- A local NFS server provisioner is installed to handle specific volume requests - we use one that handles Read-Write-Many operations (RWX).
- Lagoon Core is then installed, using the locally built images pushed to the cluster-local Image Registry, and using the default configuration, which may exclude some services not needed for local testing. The installation will wait for the API and Keycloak to come online.
- The DBaaS providers are installed - MariaDB, PostgreSQL and MongoDB. This step provisions standalone databases to be used by projects running locally, and emulates the managed services available via cloud providers (e.g. Cloud SQL, RDS or Azure Database).
- Lagoon Remote is then installed, and configured to talk to the Lagoon Core, databases and local storage. The installation will wait for this to complete before continuing.
- To provision the tests, the Lagoon Test chart is then installed, which provisions a local Git server to host the test repositories, and pre-configures the Lagoon API database with the default test users, accounts and configuration. It then performs readiness checks before starting tests.
- Lagoon will run all the tests specified in the TESTS variable in the Makefile. Each test creates its own project & environments, performs the tests, and then removes the environments & projects. The test runs are output to the console log in the
lagoon-test-suite-*
pod, and can be accessed one test per container.
Ideally, all of the tests pass and it's all done!
"},{"location":"contributing-to-lagoon/developing-lagoon/#view-the-test-progress-and-your-local-cluster","title":"View the test progress and your local cluster","text":"The test routine creates a local Kubeconfig file (called kubeconfig.k3d.lagoon
in the root of the project, that can be used with a Kubernetes dashboard, viewer or CLI tool to access the local cluster. We use tools like Lens, Octant, kubectl or Portainer in our workflows. Lagoon Core and the tests build in the lagoon-core
namespace, Remote is installed in the Lagoon
namespace. Each lagoon test environment creates its own namespace to run, so make sure to use the correct context when inspecting.
In order to use kubectl with the local cluster, you will need to use the correct Kubeconfig. This can be done for every command or it can be added to your preferred tool:
kubeconfig.k3d.lagoonKUBECONFIG=./kubeconfig.k3d.lagoon kubectl get pods -n lagoon\n
The Helm charts used to build the local Lagoon are cloned into a local folder and symlinked to lagoon-charts.k3d.lagoon
where you can see the configuration. We'll cover how to make easy modifications later in this documentation.
"},{"location":"contributing-to-lagoon/developing-lagoon/#interact-with-your-local-lagoon-cluster","title":"Interact with your local Lagoon cluster","text":"The Makefile includes a few simple routines that will make interacting with the installed Lagoon simpler:
"},{"location":"contributing-to-lagoon/developing-lagoon/#port-forwarding","title":"Port forwarding","text":"Clusters deployed by this makefile will provide loadbalancers and individual IPs, but if you choose to you can port-forward some services using the following
Create local portsmake k3d/port-forwards\n
This will create local ports to expose the UI (6060), API (7070) and Keycloak (8080). Note that this logs to stdout
, so it should be performed in a secondary terminal/window.
"},{"location":"contributing-to-lagoon/developing-lagoon/#lagoon-credentialsinformation","title":"Lagoon credentials/information","text":"This will retrieve the necessary credentials to interact with the Lagoon.
Retrieve admin credsmake k3d/get-lagoon-details\n
- The JWT is an admin-scoped token for use as a bearer token with your local GraphQL client. See more in our GraphQL documentation.
- There is a token for use with the \"admin\" user in Keycloak, who can access all users, groups, roles, etc.
It is also possible to get the command snippet to add the configuration for the local-stack to your lagoon-cli.
Retrieve admin credsmake k3d/get-lagoon-cli-details\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#rebuild-lagoon-core-and-push-images","title":"Rebuild Lagoon core and push images","text":"This will re-push the images listed in KIND_SERVICES
with the correct tag, and redeploy the lagoon-core chart. This is useful for testing small changes to Lagoon services, but does not support \"live\" development. You will need to rebuild these images locally first, e.g rm build/api && make build/api
.
Re-push imagesmake k3d/dev\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#patch-with-local-nodejs","title":"Patch with local node.js","text":"This will build the typescript services, using your locally installed Node.js (it should be >16.0). It will then:
Build typescript servicesmake k3d/local-dev-patch\n
- Mount the \"dist\" folders from the Lagoon services into the correct lagoon-core pods in Kubernetes
- Redeploy the lagoon-core chart with the services running with
nodemon
watching the code for changes - This will facilitate \"live\" development on Lagoon.
- Note that occasionally the pod in Kubernetes may require redeployment for a change to show. Clean any build artifacts from those services if you're rebuilding different branches with
git clean -dfx
as the dist folders are ignored by Git.
"},{"location":"contributing-to-lagoon/developing-lagoon/#install-simple-logging-support","title":"Install simple Logging support","text":"This will create a standalone OpenDistro for Elasticsearch cluster in your local Docker, and configure Lagoon to dispatch all logs (Lagoon and project) to it, using the configuration in lagoon-logging.
Initiate loggingmake k3d/local-dev-logging\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#re-run-specific-tests","title":"Re run specific tests","text":"This will re-run a suite of tests (defined in the TESTS
variable) against the existing cluster. It will re-push the images needed for tests (tests, local-git, and the data-watcher-pusher). You can specify tests to run by passing the TESTS variable inline.
Re-run tests.make k3d/retest\n# OR\nmake k3d/retest TESTS='[features-kubernetes]'\n
If updating a test configuration, the tests image will need to be rebuilt and pushed, e.g rm build/tests && make build/tests && make k3d/push-images IMAGES='tests' && make k3d/retest TESTS='[api]'
"},{"location":"contributing-to-lagoon/developing-lagoon/#push-images","title":"Push images","text":"This will push all the images up to the image registry. Specifying IMAGES
will tag and push specific images.
Push all imagesmake k3d/push-images\n# OR\nmake k3d/push-images IMAGES='tests local-git'\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#tear-down","title":"Tear down","text":"This will remove the K3D Lagoon cluster from your local Docker.
Remove clustermake k3d/clean\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#ansible","title":"Ansible","text":"The Lagoon test uses Ansible to run the test suite. Each range of tests for a specific function has been split into its own routine. If you are performing development work locally, select which tests to run, and update the $TESTS
variable in the Makefile to reduce the concurrent tests running.
The configuration for these tests is held in three services:
tests
is the Ansible test services themselves. The local testing routine runs each individual test as a separate container within a test-suite pod. These are listed below. local-git
is a Git server hosted in the cluster that holds the source files for the tests. Ansible pulls and pushes to this repository throughout the tests api-data-watcher-pusher
is a set of GraphQL mutations that pre-populates local Lagoon with the necessary Kubernetes configuration, test user accounts and SSH keys, and the necessary groups and notifications. Note that this will wipe local projects and environments on each run.
The individual routines relevant to Kubernetes are:
active-standby-kubernetes
runs tests to check active/standby in Kubernetes. api
runs tests for the API - branch/PR deployment, promotion. bitbucket
, gitlab
and github
run tests for the specific SCM providers. drupal-php74
runs a single-pod MariaDB, MariaDB DBaaS and a Drush-specific test for a Drupal 8/9 project (drupal-php73
doesn't do the Drush test). drupal-postgres
runs a single-pod PostgreSQL and a PostgreSQL DBaaS test for a Drupal 8 project. elasticsearch
runs a simple NGINX proxy to an Elasticsearch single-pod. features-variables
runs tests that utilize variables in Lagoon. features-kubernetes
runs a range of standard Lagoon tests, specific to Kubernetes. features-kubernetes-2
runs more advanced kubernetes-specific tests - covering multi-project and subfolder configurations. nginx
, node
and python
run basic tests against those project types. node-mongodb
runs a single-pod MongoDB test and a MongoDB DBaaS test against a Node.js app.
"},{"location":"contributing-to-lagoon/developing-lagoon/#local-development","title":"Local Development","text":"Most services are written in Node.js. As many of these services share similar Node.js code and Node.js packages, we're using a feature of Yarn, called Yarn workspaces. Yarn workspaces need a package.json
in the project's root directory that defines the workspaces.
The development of the services can happen directly within Docker. Each container for each service is set up in a way that its source code is mounted into the running container (see docker-compose.yml
). Node.js itself is watching the code via nodemon
, and restarts the Node.js process automatically on a change.
"},{"location":"contributing-to-lagoon/developing-lagoon/#lagoon-commons","title":"lagoon-commons","text":"The services not only share many Node.js packages, but also share actual custom code. This code is within node-packages/lagoon-commons
. It will be automatically symlinked by Yarn workspaces. Additionally, the nodemon
of the services is set up in a way that it checks for changes in node-packages
and will restart the node process automatically.
"},{"location":"contributing-to-lagoon/developing-lagoon/#troubleshooting","title":"Troubleshooting","text":""},{"location":"contributing-to-lagoon/developing-lagoon/#i-cant-build-a-docker-image-for-any-nodejs-based-service","title":"I can't build a Docker image for any Node.js based service","text":"Rebuild the images via:
Rebuild images make clean\n make build\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#i-get-errors-about-missing-node_modules-content-when-i-try-to-build-run-a-nodejs-based-image","title":"I get errors about missing node_modules
content when I try to build / run a Node.js based image","text":"Make sure to run yarn
in Lagoon's root directory, since some services have common dependencies managed by yarn
workspaces.
"},{"location":"contributing-to-lagoon/developing-lagoon/#i-get-an-error-resolving-the-nipio-domains","title":"I get an error resolving the nip.io
domains","text":"ErrorError response from daemon: Get https://registry.172.18.0.2.nip.io/v2/: dial tcp: lookup registry.172.18.0.2.nip.io: no such host\n
This can happen if your local resolver filters private IPs from results. You can work around this by editing /etc/resolv.conf
and adding a line like nameserver 8.8.8.8
at the top to use a public resolver that doesn't filter results.
"},{"location":"contributing-to-lagoon/developing-lagoon/#i-want-to-be-able-to-test-email-in-a-demo-environment-using-the-lagoon-built-in-ssmtp-configuration-entrypoints","title":"I want to be able to test email in a demo environment using the lagoon built in ssmtp configuration entrypoints","text":"This k3d cluster installs a mail catching service that is available at mxout.lagoon.svc:25
within the cluster (it also has a web interface make k3d/get-lagoon-details
for details). Some images in lagoon support SSMTP_MAILHUB
variable, which can be added to a project using the lagoon-cli, or the following graphql via the API.
Text OnlyaddOrUpdateEnvVariableByName(\n input: {\n project: \"lagoon-demo\"\n scope: RUNTIME\n name: \"SSMTP_MAILHUB\"\n value: \"mxout.lagoon.svc:25\"\n }\n) {\n id\n}\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#example-workflows","title":"Example workflows","text":"Here are some development scenarios and useful workflows for getting things done.
"},{"location":"contributing-to-lagoon/developing-lagoon/#add-tests","title":"Add tests","text":"An example
- Deploy the lagoon and run the test you're modifying.
Deploy Lagoonmake k3d/test TESTS=[features-variables]\n
- Edit
tests/tests/features-variables.yaml
and add a test case. - Rebuild the
tests
image.
Build testsrm build/tests\nmake -j8 build/tests\n
- Push the new
tests
image into the cluster registry.
Push test imagemake k3d/push-images IMAGES=tests\n
- Rerun the tests.
Re-run testsmake k3d/retest TESTS=[features-variables]\n
"},{"location":"contributing-to-lagoon/documentation/","title":"Contributing to Lagoon documentation","text":"We really value anything that you can offer us!
We've made building and viewing the documentation really straightforward, and the team is always ready to help out with reviews or pointers.
We use mkdocs with the excellent Material theme.
"},{"location":"contributing-to-lagoon/documentation/#viewing-and-updating-docs-locally","title":"Viewing and updating docs locally","text":"From the root of the Lagoon repository (you'll need Docker), run:
Get local docs up and running.docker run --rm -it -p 127.0.0.1:8000:8000 -v ${PWD}:/docs ghcr.io/amazeeio/mkdocs-material\n
This will start a development server on http://127.0.0.1:8000, configured to live-reload on any updates.
The customized Docker image contains all the necessary extensions.
Alternatively, to run the mkdocs
package locally, you'll need to install mkdocs, and then install all of the necessary plugins.
Install mkdocspip3 install -r docs/requirements.txt\nmkdocs serve\n
"},{"location":"contributing-to-lagoon/documentation/#editing-in-the-cloud","title":"Editing in the Cloud","text":"Each documentation page also has an \"edit\" pencil in the top right, that will take you to the correct page in the Git repository.
Feel free to contribute here, too - you can always use the built-in github.dev web-based editor. It's got basic Markdown previews, but none of the mkdocs loveliness.
"},{"location":"contributing-to-lagoon/documentation/#how-we-deploy-documentation","title":"How we deploy documentation","text":"We use the Deploy MkDocs GitHub Action to build all main branch pushes, and trigger a deployment of the gh-pages
branch.
"},{"location":"contributing-to-lagoon/releasing/","title":"Releasing Lagoon","text":"Lagoon has a number of moving parts, making releases quite complicated!
"},{"location":"contributing-to-lagoon/releasing/#lagoon-core-tags-and-testing","title":"Lagoon-core - tags and testing","text":" - Ensure all the identified pull requests have been merged into main branch for:
- uselagoon/lagoon
- uselagoon/build-deploy-tool
- uselagoon/lagoon-ui
- Once you are confident, push the next tag in sequence (minor or patch) to the main branch in the format v2.MINOR.PATCH as per semver. This will trigger a Jenkins build, visible at https://ci.lagoon.sh/blue/organizations/jenkins/lagoon/branches
- Whilst this is building, push lightweight tags to the correct commits on
lagoon-ui
and build-deploy-tool
in the format core-v2.MINOR.PATCH. Note that there are no other tags or releases on build-deploy-tool, but lagoon-ui also has it's own semver releases that are based on it's features. - Once the build has completed successfully in Jenkins, head to https://github.com/uselagoon/lagoon-charts to prepare the charts release
-
In the chart.yaml for the lagoon-core
and lagoon-test
charts, update the following fields:
- version: This is the next \"minor\" release of the chart - we usually use minor for a corresponding lagoon-core release
- appVersion: This is the actual tag of the released lagoon-core
- artifacthub.io/changes: All that's needed are the two lines in the below snippet, modified for the actual appVersion being released.
sample chart.yml snippets
# This is the chart version. This version number should be incremented each\n# time you make changes to the chart and its templates, including the app\n# version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 1.28.0\n# This is the version number of the application being deployed. This version\n# number should be incremented each time you make changes to the application.\n# Versions are not expected to follow Semantic Versioning. They should reflect\n# the version the application is using.\nappVersion: v2.14.2\n# This section is used to collect a changelog for artifacthub.io\n# It should be started afresh for each release\n# Valid supported kinds are added, changed, deprecated, removed, fixed and security\nannotations:\nartifacthub.io/changes: |\n- kind: changed\ndescription: update Lagoon appVersion to v2.14.2\n
Only lagoon-core and lagoon-test charts are updated as a result of a lagoon-core release. Follow the lagoon-remote process if there are any other changes. -
Create a PR for this chart release, and the Github Actions suite will undertake a full suite of tests:
- Lint and test charts - matrix: performs a lint and chart install against the current tested version of Kubernetes
- Lint and test charts - current: performs a lint and chart install against previous/future versions of Kubernetes
- Lagoon tests: runs the full series of ansible tests against the release.
Usually, failures in the lint and test charts are well explained (missing/misconfigured chart settings). If a single Lagoon test failes, it may just need re-running. If multiple failures occur, they will need investigating.
Once those tests have all passed successfully, you can proceed with creating the releases:
"},{"location":"contributing-to-lagoon/releasing/#lagoon-core-releases-and-release-notes","title":"Lagoon-core - releases and release notes","text":" - In uselagoon/lagoon create a release from the tag pushed earlier. Use the \"Generate release notes\" button to create the changelog. Look at previous releases for what we include in the release - and the lagoon-images link will always be the most recent released version. Note that the links to the charts, lagoon-ui and build-deploy-tool can all be filled in now, but the links won't work until the future steps. Mark this as the latest release and Publish the release.
- In uselagoon/build-deploy-tool create a release from the tag pushed earlier. Use the \"Generate release notes\" button to create the changelog - ensuring that the last core-v2.X tag is used, not any other tag. Look at previous releases for what we include in the release - Mark this as the latest release and Publish the release.
- In uselagoon/lagoon-ui create a release from the tag pushed earlier. Use the \"Generate release notes\" button to create the changelog - ensuring that the last core-v2.X tag is used, not any other tag. Look at previous releases for what we include in the release - Mark this as the latest release and Publish the release.
- In uselagoon/lagoon-charts merge the successful PR, this will create the lagoon-core and lagoon-test releases for you. Edit the resulting lagoon-core chart release to note the corresponding lagoon release in the title and text box, as per previous releases.
"},{"location":"contributing-to-lagoon/releasing/#lagoon-remote-releases-and-release-notes","title":"Lagoon-remote - releases and release notes","text":"Lagoon remote has a release cycle separate to Lagoon Core, and as such, can be released anytime that a dependency sub-chart or service is updated.
"},{"location":"contributing-to-lagoon/tests/","title":"Tests","text":"All of our tests are written with Ansible and mostly follow this approach:
- They create a new Git repository.
- Add and commit some files from a list of files (in
tests/files
) into this Git repository. - Push this Git repository to a Git server (either locally or on GitHub).
- Send a trigger to a trigger service (for example a webhook to the webhook handler, which is the same as a real webhook that would be sent).
- Starts to monitor the URL at which the test would expect something to happen (like deploying a Node.js app that has the Git branch as an HTML text).
- Compares the result on the URL with the expected result.
Lagoon is mostly tested in 3 different ways:
"},{"location":"contributing-to-lagoon/tests/#1-locally","title":"1. Locally","text":"During local development, the best way to test is locally. All tests are started via make
. Make will download and build all the required dependencies.
Make testsmake tests\n
This will run all defined tests. If you only want to run a subset of the tests, run make tests-list
to see all existing tests and run them individually.
For example, make tests/node
will run the Node.js Docker images tests.
In order to actually see what is happening inside the microservices, we can use make logs
:
Make logsmake logs\n
Or only for a specific service:
Make logsmake logs service=webhook-handler\n
"},{"location":"contributing-to-lagoon/tests/#2-automated-integration-testing","title":"2. Automated integration testing","text":"In order to test pull requests that are created against Lagoon, we have a fully automatic integration test running on a dedicated Jenkins instance: https://ci.lagoon.sh. It is defined inside the .Jenkinsfile
, and runs automatically for every pull request that is opened.
This will build all images, start a Kubernetes cluster and run a series of tests.
The tests can be found here:
- https://ci.lagoon.sh/blue/organizations/jenkins/lagoon/activity
"},{"location":"docker-images/commons/","title":"Commons","text":"The Lagoon commons
Docker image. Based on the official Alpine images.
This image has no functionality itself, but is instead a base image, intended to be extended and utilized to build other images. All the alpine-based images in Lagoon inherit components from commons.
"},{"location":"docker-images/commons/#included-tooling","title":"Included tooling","text":" docker-sleep
- standardized one-hour sleep fix-permissions
- automatically fixes permissions on a given directory to all group read-write wait-for
- a small script to ensure that services are up and running in the correct order - based off https://github.com/eficode/wait-for entrypoint-readiness
- checks to make sure that long-running entrypoints have completed entrypoints
- a script to source all entrypoints under /lagoon/entrypoints/* in an alphabetical/numerical order
"},{"location":"docker-images/commons/#included-entrypoints","title":"Included entrypoints","text":"The list of default entrypoints in this image is found at https://github.com/uselagoon/lagoon-images/tree/main/images/commons/lagoon/entrypoints. Subsequent downstream images will also contribute entrypoints under /lagoon
that are run in the eventual image.
"},{"location":"docker-images/deprecated-images/","title":"Deprecated Images","text":"From time to time, the Lagoon team may need to mark images as deprecated.
This is conveyed in a \"sh.lagoon.image.deprecated\" . It can be viewed in Docker Desktop, via a docker inspect
command, or in future releases of Lagoon, highlighted in a build.
If the image has a suggested replacement, it will be conveyed in a \"sh.lagoon.image.deprecated.suggested\" label attached the deprecated image.
docker inspect output showing deprecated image$ docker inspect amazeeio/mongo:latest\n...\n{\n...\n \"sh.lagoon.image.deprecated.status\": \"replaced\",\n \"sh.lagoon.image.deprecated.suggested\": \"docker.io/uselagoon/mongo-4\"\n}\n
"},{"location":"docker-images/deprecated-images/#changing-the-image","title":"Changing the image","text":"In all cases, changing to a suggested or updated image will require a change in your codebase. Any reference to the image in a Dockerfile, or in your docker-compose.yml will need to be updated.
"},{"location":"docker-images/deprecated-images/#reasons-for-deprecating","title":"Reasons for deprecating","text":"We have three main reasons for deprecating an image:
"},{"location":"docker-images/deprecated-images/#replaced","title":"Replaced","text":"An image will be marked as \"replaced\" when the image reference needs to be changed. This could be because of a naming change, a repository change, or a versioning change. In these cases a new image will usually be recommended for use instead, and using it should be a fairly easy switch.
Some examples of this are:
- the migration from
amazeeio/{image}
to uselagoon/{image}
- these images should be identical - the versioning of an image from
uselagoon/mongo
to uselagoon/mongo-4
- these images should be identical
"},{"location":"docker-images/deprecated-images/#end-of-life","title":"End of Life","text":"An image will be marked as \"endoflife\" when the version published is no longer actively supported or maintained upstream. In these cases a new image will usually be recommended for use instead, but upgrading to it may require updating some of your application code, so should always be tested thoroughly. Also note that any suggested image may also be marked as endoflife (especially if the upstream moves quickly)
Some examples of this are:
- PHP 8.0 reached EOL in November 2023, and any
uselagoon/php-8.0-{variant}
image will suggest uselagoon/php-8.3-{variant}
as it is the current latest release of PHP. Upgrades here may be straightforward as it's within a major version. - Python 2.7 reached EOL in January 2020, and the
uselagoon/php-2.7
images will suggest uselagoon/python-3.12
as it is the current latest release of Python. Upgrades here will be complex, owing to it being a major version change.
"},{"location":"docker-images/deprecated-images/#discontinued","title":"Discontinued","text":"An image will be marked as \"discontinued when the variant is no longer being published by the Lagoon team (although the upstream may still be supported). In these cases a replacement image may be suggested, but any migration will be involved, and require updating of application code, client libraries, data directories etc, or removal of functionality completely.
- A CKAN variant of Python 2.7 image
uselagoon/python-2.7-ckan
stopped being published in August 2021 and no replacement is suggested. - An AthenaPDF image
uselagoon/athenapdf-service
stopped being published in October 2022 and no replacement image is suggested. - An Elasticsearch 7 image
uselagoon/elasticsearch-7
stopped being published in April 2023 due to licensing concerns, and although images may suggest uselagoon/opensearch-2
- any upgrade here will be extremely involved.
"},{"location":"docker-images/deprecated-images/#amazeeio-image-variants","title":"\"amazeeio/\" image variants","text":"Historically, all Lagoon images were dual published to the uselagoon and amazeeio Docker Hub organizations.
In August 2024, we ceased this dual-publishing model, and have used the deprecated image tooling to suggest the correct replacements.
We encourage anyone still using the amazeeio
variants to switch to the uselagoon
variants as soon as possible.
As well as being easier for us to maintain, the uselagoon versions:
- Are routinely published and updated. No
amazeeio
image will be updated beyond July 2024. - Are published as multi-architecture images by default, so will work natively on Linux, Windows or MacOS machines.
- Are free from any rate-limit restrictions, as the
uselagoon
organization is Docker Sponsored Open Source
"},{"location":"docker-images/mariadb/","title":"MariaDB","text":"MariaDB is the open source successor to MySQL.
The Lagoon MariaDB
image Dockerfile. Based on the official packages mariadb
and mariadb-client
provided by the the upstream Alpine image.
This Dockerfile is intended to be used to set up a standalone MariaDB database server.
- 10.4 (available for compatibility only, no longer officially supported) -
uselagoon/mariadb-10.4
- 10.5 Dockerfile (Alpine 3.14 Support until May 2023) -
uselagoon/mariadb-10.5
- 10.6 Dockerfile (Alpine 3.16 Support until May 2024) -
uselagoon/mariadb-10.6
- 10.11 Dockerfile (Alpine 3.18 Support until May 2025) -
uselagoon/mariadb-10.11
Info
As these images are not built from the upstream MariaDB images, their support follows a different cycle - and will only receive updates as long as the underlying Alpine images receive support - see https://alpinelinux.org/releases/ for more information. In practice, most MariaDB users will only be running these containers locally - the production instances will use the Managed Cloud Databases provided by the DBaaS Operator
"},{"location":"docker-images/mariadb/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of MariaDB containers is port 3306
.
To allow Lagoon to select the best way to run the MariaDB container, use lagoon.type: mariadb
- this allows the DBaaS operator to provision a cloud database if available in the cluster. Use lagoon.type: mariadb-single
to specifically request MariaDB in a container. Persistent storage is always provisioned for MariaDB containers at /var/lib/mysql
.
This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. readiness-probe.sh
script to check when MariaDB container is ready.
"},{"location":"docker-images/mariadb/#docker-composeyml-snippet","title":"docker-compose.yml
snippet","text":"docker-compose.yml mariadb:\nimage: uselagoon/mariadb-10.6-drupal:latest\nlabels:\n# tells Lagoon this is a MariaDB database\nlagoon.type: mariadb\nports:\n# exposes the port 3306 with a random local port, find it with `docker compose port mariadb 3306`\n- \"3306\"\nvolumes:\n# mounts a named volume at the default path for MariaDB\n- db:/var/lib/mysql\n
"},{"location":"docker-images/mariadb/#included-tools","title":"Included tools","text":" mysqltuner.pl
- Perl script useful for database parameter tuning. mysql-backup.sh
- Script for automating the daily MySQL backups on development environment. pwgen
- Utility to generate random and complex passwords.
"},{"location":"docker-images/mariadb/#included-mycnf-configuration-file","title":"Included my.cnf
configuration file","text":"The image ships a default MariaDB configuration file, optimized to work on Lagoon. Some options are configurable via environment variables.
"},{"location":"docker-images/mariadb/#environment-variables","title":"Environment Variables","text":"Environment Variable Default Description MARIADB_DATABASE lagoon Database name created at startup. MARIADB_USER lagoon Default user created at startup. MARIADB_PASSWORD lagoon Password of default user created at startup. MARIADB_ROOT_PASSWORD Lag00n MariaDB root user's password. MARIADB_CHARSET utf8mb4 Set the server charset. MARIADB_COLLATION utf8mb4_bin Set server collation. MARIADB_MAX_ALLOWED_PACKET 64M Set the max_allowed_packet
size. MARIADB_INNODB_BUFFER_POOL_SIZE 256M Set the MariaDB InnoDB buffer pool size. MARIADB_INNODB_BUFFER_POOL_INSTANCES 1 Number of InnoDB buffer pool instances. MARIADB_INNODB_LOG_FILE_SIZE 64M Size of InnoDB log file. MARIADB_LOG_SLOW (not set) Variable to control the save of slow queries. MARIADB_LOG_QUERIES (not set) Variable to control the save of ALL queries. BACKUPS_DIR /var/lib/mysql/backup Default path for databases backups. MARIADB_DATA_DIR /var/lib/mysql Path of the MariaDB data dir, be careful, changing this can occur data loss! MARIADB_COPY_DATA_DIR_SOURCE (not set) Path which the entrypoint script of mariadb will use to copy into the defined MARIADB_DATA_DIR
, this can be used for prepopulating the MariaDB with a database. The scripts expects actual MariaDB data files and not a sql file! Plus it only copies data if the destination does not already have a mysql datadir in it. If the LAGOON_ENVIRONMENT_TYPE
variable is set to production
, performances are set accordingly by using MARIADB_INNODB_BUFFER_POOL_SIZE=1024
and MARIADB_INNODB_LOG_FILE_SIZE=256
.
"},{"location":"docker-images/mongodb/","title":"MongoDB","text":"MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB is a document database, which means it stores data in JSON-like documents.
- from mongodb.com
"},{"location":"docker-images/mongodb/#supported-versions","title":"Supported Versions","text":"4.0 Dockerfile - uselagoon/mongo-4
This Dockerfile is intended to be used to set up a standalone MongoDB database server.
"},{"location":"docker-images/mongodb/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user, and therefore also on Kubernetes or OpenShift.
"},{"location":"docker-images/mysql/","title":"MySQL","text":"MySQL is a widely used, open-source relational database management system (RDBMS).
The Lagoon MySQL
image Dockerfile. Based on the official upstream docker image mysql
(Oracle Linux variant).
This Dockerfile is intended to be used to set up a standalone MySQL database server, intended for use in Local Development
- 8.0 Dockerfile (Extended Support until April 2026) -
uselagoon/mysql-8.0
- 8.4 Dockerfile (Extended Support until April 2032) -
uselagoon/mysql-8.4
Info
These images are not intended as drop-in alernatives to MariaDB images, and as such, may require customization to run in local development environments
"},{"location":"docker-images/mysql/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of MySQL containers is port 3306
.
To allow Lagoon to select the best way to run the MySQL container, use lagoon.type: mariadb
- this allows the DBaaS operator to provision a cloud database if available in the cluster. Use lagoon.type: mariadb-single
to specifically request MySQL in a container. Persistent storage is always provisioned for MySQL containers at /var/lib/mysql
.
This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. readiness-probe.sh
script to check when MySQL container is ready.
"},{"location":"docker-images/mysql/#docker-composeyml-snippet-for-non-drupal-projects","title":"docker-compose.yml
snippet for non-Drupal projects","text":"docker-compose.yml mysql:\nimage: uselagoon/mysql-8.4:latest\nlabels:\n# tells Lagoon this is a MariaDB-compatible database\nlagoon.type: mariadb\nports:\n# exposes the port 3306 with a random local port, find it with `docker compose port mysql 3306`\n- \"3306\"\nvolumes:\n# mounts a named volume at the default path for MySQL\n- db:/var/lib/mysql\n
"},{"location":"docker-images/mysql/#docker-composeyml-snippet-for-drupal-projects","title":"docker-compose.yml
snippet for Drupal projects","text":"docker-compose.yml mariadb:\nimage: uselagoon/mysql-8.4:latest\nlabels:\n# tells Lagoon this is a MariaDB-compatible database\nlagoon.type: mariadb\nports:\n# exposes the port 3306 with a random local port, find it with `docker compose port mariadb 3306`\n- \"3306\"\nenvironment:\n# These override the default credentials to match what Drupal is hardwired to expect in Lagoon\n- MYSQL_DATABASE=drupal\n- MYSQL_USER=drupal\n- MYSQL_PASSWORD=drupal\nvolumes:\n# mounts a named volume at the default path for MariaDB\n- db:/var/lib/mysql\n
"},{"location":"docker-images/mysql/#included-tools","title":"Included tools","text":" mysqltuner.pl
- Perl script useful for database parameter tuning. mysql-backup.sh
- Script for automating the daily MySQL backups on development environment. pwgen
- Utility to generate random and complex passwords.
"},{"location":"docker-images/mysql/#included-mycnf-configuration-file","title":"Included my.cnf
configuration file","text":"The image ships a default MySQL configuration file, optimized to work on Lagoon. Some options are configurable via environment variables.
"},{"location":"docker-images/mysql/#environment-variables","title":"Environment Variables","text":"Environment Variable Default Description MYSQL_DATABASE lagoon Database name created at startup. MYSQL_USER lagoon Default user created at startup. MYSQL_PASSWORD lagoon Password of default user created at startup. MYSQL_ROOT_PASSWORD Lag00n MySQL root user's password. MYSQL_CHARSET utf8mb4 Set the server charset. MYSQL_COLLATION utf8mb4_bin Set server collation. MYSQL_MAX_ALLOWED_PACKET 64M Set the max_allowed_packet
size. MYSQL_INNODB_BUFFER_POOL_SIZE 256M Set the MySQL InnoDB buffer pool size. MYSQL_INNODB_BUFFER_POOL_INSTANCES 1 Number of InnoDB buffer pool instances. MYSQL_INNODB_LOG_FILE_SIZE 64M Size of InnoDB log file. MYSQL_LOG_SLOW (not set) Variable to control the save of slow queries. MYSQL_LOG_QUERIES (not set) Variable to control the save of ALL queries. BACKUPS_DIR /var/lib/mysql/backup Default path for databases backups. MYSQL_DATA_DIR /var/lib/mysql Path of the MySQL data dir, be careful, changing this can occur data loss! MYSQL_COPY_DATA_DIR_SOURCE (not set) Path which the entrypoint script of MySQL will use to copy into the defined MYSQL_DATA_DIR
, this can be used for prepopulating the MySQL with a database. The scripts expects actual MySQL data files and not a sql file! Plus it only copies data if the destination does not already have a MySQL datadir in it. If the LAGOON_ENVIRONMENT_TYPE
variable is set to production
, performances are set accordingly by using MYSQL_INNODB_BUFFER_POOL_SIZE=1024
and MYSQL_INNODB_LOG_FILE_SIZE=256
.
"},{"location":"docker-images/nginx/","title":"NGINX","text":"The Lagoon nginx
image Dockerfile. Based on the official openresty/openresty
images.
This Dockerfile is intended to be used as a base for any web servers within Lagoon.
"},{"location":"docker-images/nginx/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of NGINX containers is port 8080
.
This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. - The files within
/etc/nginx/*
are parsed through envplate
with a container-entrypoint.
"},{"location":"docker-images/nginx/#included-nginx-configuration-static-filesconf","title":"Included NGINX
configuration (static-files.conf
)","text":"Warning
By default NGINX
only serves static files - this can be used for static sites that don't require a database or PHP components: for example, static site generators like Hugo, Jekyll or Gatsby.
If you need PHP, have a look at the php-fpm
image and use nginx
and php-fpm
in tandem.
Build the content during the build process and inject it into the nginx
container.
"},{"location":"docker-images/nginx/#helpers","title":"Helpers","text":""},{"location":"docker-images/nginx/#redirects-mapconf","title":"redirects-map.conf
","text":"In order to create redirects, we have redirects-map.conf
in place. This helps you to redirect marketing domains to sub-sites or do non-www to www redirects. If you have a lot of redirects, we suggest having redirects-map.conf
stored next to your code for easier maintainability.
Note
If you only have a few redirects, there's a handy trick to create the redirects with a RUN
command in your nginx.dockerfile
.
Here's an example showing how to redirect www.example.com
to example.com
and preserve the request:
RedirectRUN echo \"~^www.example.com http://example.com\\$request_uri;\" >> /etc/nginx/redirects-map.conf\n
To get more details about the various types of redirects that can be achieved, see the documentation within the redirects-map.conf
directly.
After you put the redirects-map.conf
in place, you also need to include it in your nginx.dockerfile
in order to get the configuration file into your build.
nginx.dockerfileCOPY redirects-map.conf /etc/nginx/redirects-map.conf\n
"},{"location":"docker-images/nginx/#basic-authentication","title":"Basic Authentication","text":"Basic authentication is enabled automatically when the BASIC_AUTH_USERNAME
and BASIC_AUTH_PASSWORD
environment variables are set.
Warning
Automatic basic auth configuration is provided for convenience. It should not be considered a secure method of protecting your website or private data.
"},{"location":"docker-images/nginx/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description BASIC_AUTH restricted Set to off
to disable basic authentication. BASIC_AUTH_USERNAME (not set) Username for basic authentication. BASIC_AUTH_PASSWORD (not set) Password for basic authentication (unencrypted). FAST_HEALTH_CHECK (not set) Set to true
to redirect GET requests from certain user agents (StatusCake, Pingdom, Site25x7, Uptime, nagios) to the lightweight Lagoon service healthcheck."},{"location":"docker-images/nodejs/","title":"Node.js","text":"The Lagoon Node.js
Docker image. Based on the official Node Alpine images.
"},{"location":"docker-images/nodejs/#supported-versions","title":"Supported Versions","text":"We ship 2 versions of Node.js images: the normal node:version
image and the node:version-builder
.
The builder variant of those images comes with additional tooling that is needed when you build Node.js apps (such as the build libraries, npm and Yarn). For a full list check out their Dockerfile.
- 12 (available for compatibility only, no longer officially supported) -
uselagoon/node-12
- 14 (available for compatibility only, no longer officially supported) -
uselagoon/node-14
- 16 (available for compatibility only, no longer officially supported) -
uselagoon/node-16
- 18 Dockerfile (Security Support until April 2025) -
uselagoon/node-18
- 20 Dockerfile (Security Support until April 2026) -
uselagoon/node-20
- 22 Dockerfile (Security Support until April 2027) -
uselagoon/node-22
Tip
We stop updating EOL Node.js images usually with the Lagoon release that comes after the officially communicated EOL date: https://nodejs.org/en/about/releases/.
"},{"location":"docker-images/nodejs/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of Node.js containers is port 3000
.
Persistent storage is configurable in Lagoon, using the lagoon.type: node-persistent
. See the docs for more info
Use the following labels in your docker-compose.yml
file to configure it:
lagoon.persistent
= use this to define the path in the container to use as persistent storage - e.g. /app/files. lagoon.persistent.size
= this to tell Lagoon how much storage to assign this path. - If you have multiple services that share the same storage, use this
lagoon.persistent.name
= (optional) use this to tell Lagoon to use the storage defined in another named service.
"},{"location":"docker-images/nodejs/#docker-composeyml-snippet","title":"docker-compose.yml
snippet","text":"docker-compose.yml node:\nbuild:\n# this configures a build from a Dockerfile in the root folder\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# tells Lagoon this is a node service, configured with 500MB of persistent storage at /app/files\nlagoon.type: node-persistent\nlagoon.persistent: /app/files\nlagoon.persistent.size: 500Mi\nports:\n# local development only\n# this exposes the port 3000 with a random local port\n# find it with `docker compose port node 3000`\n- \"3000\"\nvolumes:\n# local development only\n# mounts a named volume (files) at the defined path for this service to replicate production\n- files:/app/files\n
"},{"location":"docker-images/opensearch/","title":"OpenSearch","text":"OpenSearch is a community-driven, Apache 2.0-licensed open source search and analytics suite that makes it easy to ingest, search, visualize, and analyze data.
- from https://opensearch.org/
"},{"location":"docker-images/opensearch/#supported-versions","title":"Supported versions","text":" - 2 Dockerfile -
uselagoon/opensearch-2
"},{"location":"docker-images/opensearch/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description OPENSEARCH_JAVA_OPTS -Xms512m -Xmx512m Sets the memory usage of the OpenSearch container. Both values need be the same value or OpenSearch will not start cleanly."},{"location":"docker-images/opensearch/#known-issues","title":"Known issues","text":"On Linux-based systems, the start of the OpenSearch container may fail due to a low vm.max_map_count
setting.
Erroropensearch_1 | ERROR: [1] bootstrap checks failed\nopensearch_1 | [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]\n
Solution to this issue can be found here.
"},{"location":"docker-images/php-cli/","title":"PHP-CLI","text":"The Lagoon php-cli
Docker image. Based on Lagoon php-fpm
image, it has all the needed command line tools for daily operations.
Containers (or pods) started from cli
images are responsible for building code for Composer or Node.js based projects.
The image also contains database cli
s for both MariaDB and PostgreSQL.
Info
This Dockerfile is intended to be used as a base for any cli
needs within Lagoon.
"},{"location":"docker-images/php-cli/#supported-versions","title":"Supported versions","text":" - 7.3 (available for compatibility only, no longer officially supported) -
uselagoon/php-7.3-cli
- 7.4 (available for compatibility only, no longer officially supported) -
uselagoon/php-7.4-cli
- 8.0 (available for compatibility only, no longer officially supported) -
uselagoon/php-8.0-cli
- 8.1 Dockerfile (Security Support until November 2024) -
uselagoon/php-8.1-cli
- 8.2 Dockerfile (Security Support until December 2025) -
uselagoon/php-8.2-cli
- 8.3 Dockerfile (Security Support until December 2026) -
uselagoon/php-8.3-cli
All PHP versions use their own Dockerfiles.
"},{"location":"docker-images/php-cli/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. COMPOSER_ALLOW_SUPERUSER=1
removes warning about use of Composer as root. 80-shell-timeout.sh
script checks if containers are running in a Kubernetes environment and then set a 10 minutes timeout to idle cli
pods. cli
containers use an SSH key injected by Lagoon or defined into SSH_PRIVATE_KEY
environment variable.
"},{"location":"docker-images/php-cli/#included-cli-tools","title":"Included CLI tools","text":"The included CLI tools are:
composer
version 1.9.0 (changeable via COMPOSER_VERSION
and COMPOSER_HASH_SHA256
) node.js
verison 17 (as of Mar 2022) npm
yarn
mariadb-client
postgresql-client
"},{"location":"docker-images/php-cli/#change-nodejs-version","title":"Change Node.js Version","text":"By default this image ships with the nodejs-current
package (v17 as of Mar 2022). If you need another version you can remove the current version and install the one of your choice. For example, to install Node.js 16, modify your dockerfile to include:
Update Node.js versionRUN apk del nodejs-current \\\n&& apk add --no-cache nodejs=~16\n
"},{"location":"docker-images/php-cli/#environment-variables","title":"Environment variables","text":"Some options are configurable via environment variables. The php-fpm environment variables also apply.
Name Default Description MARIADB_MAX_ALLOWED_PACKET 64M Controls the max allowed packet for the MySql client."},{"location":"docker-images/php-fpm/","title":"PHP-FPM","text":"The Lagoon php-fpm
Docker image. Based on the official PHP Alpine images.
PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites.
- from https://php-fpm.org/
FastCGI is a way of having server scripts execute time-consuming code just once instead of every time the script is loaded, reducing overhead.
Info
This Dockerfile is intended to be used as a base for any PHP
needs within Lagoon. This image itself does not create a web server, rather a php-fpm
fastcgi listener. You may need to adapt the php-fpm
pool config.
"},{"location":"docker-images/php-fpm/#supported-versions","title":"Supported versions","text":" - 7.3 (available for compatibility only, no longer officially supported) -
uselagoon/php-7.3-fpm
- 7.4 (available for compatibility only, no longer officially supported) -
uselagoon/php-7.4-fpm
- 8.0 (available for compatibility only, no longer officially supported) -
uselagoon/php-8.0-fpm
- 8.1 Dockerfile (Security Support until November 2024) -
uselagoon/php-8.1-fpm
- 8.2 Dockerfile (Security Support until December 2025) -
uselagoon/php-8.2-fpm
- 8.3 Dockerfile (Security Support until December 2026) -
uselagoon/php-8.3-fpm
All PHP versions use their own Dockerfiles.
Tip
We stop updating End of Life (EOL) PHP images usually with the Lagoon release that comes after the officially communicated EOL date: https://www.php.net/supported-versions.php. Previous published versions will remain available.
"},{"location":"docker-images/php-fpm/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things are already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. - The
/usr/local/etc/php/php.ini
and /usr/local/etc/php-fpm.conf
, plus all files within /usr/local/etc/php-fpm.d/
, are parsed through envplate
with a container-entrypoint. - See the Dockerfile for installed
PHP
extensions. - To install further extensions, extend your Dockerfile from this image. Install extensions according to the docs, under the heading How to install more PHP extensions.
"},{"location":"docker-images/php-fpm/#included-php-config","title":"Included PHP config","text":"The included PHP
config contains sensible values that will make the creation of PHP
pools config easier. Here is a list of some of these. Check /usr/local/etc/php.ini
, /usr/local/etc/php-fpm.conf
for all of them:
Value Details max_execution_time = 900
Changeable via PHP_MAX_EXECUTION_TIME
. realpath_cache_size = 256k
For handling big PHP projects. memory_limit = 400M
For big PHP projects (changeable via PHP_MEMORY_LIMIT
). opcache.memory_consumption = 265
For big PHP projects. opcache.enable_file_override = 1
and opcache.huge_code_pages = 1
For faster PHP. display_errors = Off
and display_startup_errors = Off
For sensible production values (changeable via PHP_DISPLAY_ERRORS
and PHP_DISPLAY_STARTUP_ERRORS
). upload_max_filesize = 2048M
For big file uploads. apc.shm_size = 32m
and apc.enabled = 1
Changeable via PHP_APC_SHM_SIZE
and PHP_APC_ENABLED
. Also, php-fpm
error logging happens in stderr
.
\ud83d\udca1 If you don't like any of these configs, you have three possibilities:
- If they are changeable via environment variables, use environment variables (this is the preferred method, see table of environment variables below).
- Create your own
fpm-pool
config and set via php_admin_value
and php_admin_flag
. - Learn more about them in
this documentation for Running PHP as an Apache module
. This documentation refers to Apache, but it is also the case for php-fpm
).Important:
1. If you want to provide your own php-fpm
pool, overwrite the file /usr/local/etc/php-fpm.d/www.conf
with your own config, or rename this file if you want it to have another name. If you don't do that, the provided pool will be started! 2. PHP values with the PHP_INI_SYSTEM
changeable mode cannot be changed via an fpm-pool
config. They need to be changed either via already provided environment variables or: 3. Provide your own php.ini
or php-fpm.conf
file (this is the least preferred method).
"},{"location":"docker-images/php-fpm/#default-fpm-pool","title":"Default fpm-pool","text":"This image is shipped with an fpm-pool
config (php-fpm.d/www.conf
) that creates an fpm-pool
and listens on port 9000. This is because we try to provide an image which already covers most needs for PHP, so you don't need to create your own. You are welcome to do so if you like, though!
Here a short description of what this file does:
- Listens on port 9000 via IPv4 and IPv6.
- Uses the pm
dynamic
and creates between 2-50 children. - Re-spawns
php-fpm
pool children after 500 requests to prevent memory leaks. - Replies with
pong
when making a fastcgi request to /ping
(good for automated testing to check if the pool started). catch_workers_output = yes
to see PHP errors. clear_env = no
to be able to inject PHP environment variables via regular Docker environment variables.
"},{"location":"docker-images/php-fpm/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description NEWRELIC_ENABLED false Enable NewRelic performance monitoring, needs NEWRELIC_LICENSE
be configured. NEWRELIC_LICENSE (not set) NewRelic license to be used. Important: NEWRELIC_ENABLED
needs to be set totrue
in order for NewRelic to be enabled. NEWRELIC_BROWSER_MONITORING_ENABLED true This enables auto-insertion of the JavaScript fragments for NewRelic browser monitoring. Important: NEWRELIC_ENABLED
needs to be set totrue
in order for NewRelic to be enabled. NEWRELIC_DISTRIBUTED_TRACING_ENABLED false This enables distributed tracing. Important: NEWRELIC_ENABLED
needs to be set totrue
in order for NewRelic to be enabled. PHP_APC_ENABLED 1 Can be set to 0
to disable APC. PHP_APC_SHM_SIZE 32m The size of each shared memory segment given. PHP_DISPLAY_ERRORS Off Configures whether errors are printed or hidden. See php.net. PHP_DISPLAY_STARTUP_ERRORS Off Configures whether startup errors are printed or hidden. See php.net. PHP_ERROR_REPORTING Production E_ALL & ~E_DEPRECATED & ~E_STRICT
Development: E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
The desired logging level you'd like PHP to use. See php.net. PHP_FPM_PM_MAX_CHILDREN 50 The the maximum number of child processes. See php.net. PHP_FPM_PM_MAX_REQUESTS 500 The number of requests each child process should execute before re-spawning. See php.net. PHP_FPM_PM_MAX_SPARE_SERVERS 2 The desired maximum number of idle server processes. See php.net. PHP_FPM_PM_MIN_SPARE_SERVERS 2 The desired minimum number of idle server processes. See php.net. PHP_FPM_PM_PROCESS_IDLE_TIMEOUT 60s The number of seconds after which an idle process will be killed. See php.net. PHP_FPM_PM_START_SERVERS 2 The number of child processes created on startup. See php.net. PHP_MAX_EXECUTION_TIME 900 Maximum execution time of each script, in seconds. See php.net. PHP_MAX_FILE_UPLOADS 20 The maximum number of files allowed to be uploaded simultaneously. See php.net. PHP_MAX_INPUT_VARS 2000 How many input variables will be accepted. See php.net. PHP_MEMORY_LIMIT 400M Maximum amount of memory a script may consume. See php.net. XDEBUG_ENABLE (not set) Set to true
to enable xdebug
extension. BLACKFIRE_ENABLED (not set) Set to true
to enable blackfire
extension. BLACKFIRE_SERVER_ID (not set) Set to Blackfire Server ID provided by Blackfire.io. Needs BLACKFIRE_ENABLED
set to true
. BLACKFIRE_SERVER_TOKEN (not set) Set to Blackfire Server Token provided by Blackfire.io. Needs BLACKFIRE_ENABLED
set to true
. BLACKFIRE_LOG_LEVEL 3 Change the log level of the blackfire agent. Available values: log verbosity level (4: debug, 3: info, 2: warning, 1: error)
See blackfire.io."},{"location":"docker-images/postgres/","title":"PostgreSQL","text":"The Lagoon PostgreSQL Docker image. Based on the official PostgreSQL Alpine images.
"},{"location":"docker-images/postgres/#supported-versions","title":"Supported versions","text":" - 11 (available for compatibility only, no longer officially supported) -
uselagoon/postgres-11
- 12 Dockerfile (Security Support until November 2024) -
uselagoon/postgres-12
- 13 Dockerfile (Security Support until November 2025) -
uselagoon/postgres-13
- 14 Dockerfile (Security Support until November 2026) -
uselagoon/postgres-14
- 15 Dockerfile (Security Support until November 2027) -
uselagoon/postgres-15
- 16 Dockerfile (Security Support until November 2028) -
uselagoon/postgres-16
Tip
We stop updating EOL PostgreSQL images usually with the Lagoon release that comes after the officially communicated EOL date: https://www.postgresql.org/support/versioning
"},{"location":"docker-images/postgres/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of Postgres containers is port 5432
.
To allow Lagoon to select the best way to run the Postgres container, use lagoon.type: postgres
- this allows DBaaS operator to provision a cloud database if available in the cluster. Use lagoon.type: postgres-single
to specifically request Postgres in a container. Persistent storage is always provisioned for postgres containers at /var/lib/postgresql/data.
"},{"location":"docker-images/postgres/#docker-composeyml-snippet","title":"docker-compose.yml
snippet","text":"docker-compose.ymlpostgres:\nimage: uselagoon/postgres-14-drupal:latest\nlabels:\n# tells Lagoon this is a Postgres database\nlagoon.type: postgres\nports:\n# exposes the port 5432 with a random local port\n# find it with `docker compose port postgres 5432`\n- \"5432\"\nvolumes:\n# mounts a named volume at the default path for Postgres\n- db:/var/lib/postgresql/data\n
"},{"location":"docker-images/postgres/#tips-tricks","title":"Tips & Tricks","text":"If you have SQL statements that need to be run immediately after container startup to initialize the database, you can place those .sql
files in the container's docker-entrypoint-initdb.d
directory. Any .sql
files contained in that directory are run automatically at startup, as part of bringing the PostgreSQL container up.
Warning
These scripts are only run if the container is started with an empty database.
"},{"location":"docker-images/python/","title":"Python","text":"The Lagoon python
Docker image. Based on the official Python Alpine images.
"},{"location":"docker-images/python/#supported-versions","title":"Supported Versions","text":" - 2.7 (available for compatibility only, no longer officially supported) -
uselagoon/python-2.7
- 3.7 (available for compatibility only, no longer officially supported) -
uselagoon/python-3.7
- 3.8 Dockerfile (Security Support until October 2024) -
uselagoon/python-3.8
- 3.9 Dockerfile (Security Support until October 2025) -
uselagoon/python-3.9
- 3.10 Dockerfile (Security Support until October 2026) -
uselagoon/python-3.10
- 3.11 Dockerfile (Security Support until October 2027) -
uselagoon/python-3.11
- 3.12 Dockerfile (Security Support until October 2028) -
uselagoon/python-3.12
Tip
We stop updating and publishing EOL Python images usually with the Lagoon release that comes after the officially communicated EOL date: https://devguide.python.org/versions/#versions. Previous published versions will remain available.
"},{"location":"docker-images/python/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of Python containers is port 8800
.
Persistent storage is configurable in Lagoon, using the lagoon.type: python-persistent
. See the docs for more info
Use the following labels in your docker-compose.yml
file to configure it: lagoon.persistent
= use this to define the path in the container to use as persistent storage - e.g. /app/files lagoon.persistent.size
= this to tell Lagoon how much storage to assign this path
If you have multiple services that share the same storage, use this lagoon.persistent.name
= (optional) use this to tell Lagoon to use the storage defined in another named service
"},{"location":"docker-images/python/#docker-composeyml-snippet","title":"docker-compose.yml
snippet","text":"docker-compose.ymlpython:\nbuild:\n# this configures a build from a Dockerfile in the root folder\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# tells Lagoon this is a python service, configured with 500MB of persistent storage at /app/files\nlagoon.type: python-persistent\nlagoon.persistent: /app/files\nlagoon.persistent.size: 500Mi\nports:\n# local development only\n# this exposes the port 8800 with a random local port\n# find it with `docker compose port python 8800`\n- \"8800\"\nvolumes:\n# local development only\n# mounts a named volume (files) at the defined path for this service to replicate production\n- files:/app/files\n
"},{"location":"docker-images/rabbitmq/","title":"RabbitMQ","text":"The Lagoon RabbitMQ Dockerfile with management plugin installed. Based on the official rabbitmq:3-management
image at docker-hub.
This Dockerfile is intended to be used to set up a standalone RabbitMQ queue broker, as well as a base image to set up a cluster with high availability queue support by default (Mirrored queues).
By default, the RabbitMQ broker is started as single node. If you want to start a cluster, you need to use the rabbitmq-cluster
Docker image, based on rabbitmq
image plus the rabbitmq_peer_discovery_k8s
plugin.
"},{"location":"docker-images/rabbitmq/#supported-versions","title":"Supported versions","text":" - 3.10 Dockerfile (Security Support until July 2023) -
uselagoon/rabbitmq
"},{"location":"docker-images/rabbitmq/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. - The file
/etc/rabbitmq/definitions.json
is parsed through envplate
with a container-entrypoint.
"},{"location":"docker-images/rabbitmq/#included-rabbitmq-default-schema-definitionsjson","title":"Included RabbitMQ default schema (definitions.json)","text":" - To enable the support for Mirrored Queues, at least one
policy
must exist. -
In the definitions.json
schema file, minimal entities are defined to make the
container run: virtualhost
(vhost
), username
, and password
to access management
UI, permissions
, and policies
.
By default, a policy called lagoon-ha
is created at startup, but it is not active because it doesn't match any queue's name pattern (see default Environment Variables).
definitions.json\"policies\":[\n{\"vhost\":\"${RABBITMQ_DEFAULT_VHOST}\",\"name\":\"lagoon-ha\",\"pattern\":\"${RABBITMQ_DEFAULT_HA_PATTERN}\", \"definition\":{\"ha-mode\":\"exactly\",\"ha-params\":2,\"ha-sync-mode\":\"automatic\",\"ha-sync-batch-size\":5}}\n]\n
By default, the ha-mode
is set to exactly
which controls the exact number of mirroring nodes for a queue (mirrors). The number of nodes is controller by ha-params
.
For further information and custom configuration, please refer to official RabbitMQ documentation.
"},{"location":"docker-images/rabbitmq/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description RABBITMQ_DEFAULT_USER guest Username for management UI access. RABBITMQ_DEFAULT_PASS guest Password for management UI access. RABBITMQ_DEFAULT_VHOST / RabbitMQ main virtualhost. RABBITMQ_DEFAULT_HA_PATTERN ^$ Regular expression to match for mirrored queues."},{"location":"docker-images/redis/","title":"Redis","text":"Lagoon Redis
image Dockerfile, based on official redis:alpine
image.
This Dockerfile is intended to be used to set up a standalone Redis ephemeral server by default.
"},{"location":"docker-images/redis/#supported-versions","title":"Supported versions","text":" - 5 (available for compatibility only, no longer officially supported) -
uselagoon/redis-5
or uselagoon/redis-5-persistent
- 6 Dockerfile -
uselagoon/redis-6
or uselagoon/redis-6-persistent
- 7 Dockerfile -
uselagoon/redis-7
or uselagoon/redis-7-persistent
"},{"location":"docker-images/redis/#usage","title":"Usage","text":"There are 2 different flavors of Redis Images: Ephemeral and Persistent.
"},{"location":"docker-images/redis/#ephemeral","title":"Ephemeral","text":"The ephemeral image is intended to be used as an in-memory cache for applications and will not retain data across container restarts.
When being used as an in-memory (RAM) cache, the first thing you might want to tune if you have large caches is to adapt the MAXMEMORY
variable. This variable controls the maximum amount of memory (RAM) which redis will use to store cached items.
"},{"location":"docker-images/redis/#persistent","title":"Persistent","text":"The persistent Redis image will persist data across container restarts and can be used for queues or application data that will need persistence.
We don't typically suggest using a persistent Redis for in-memory cache scenarios as this might have unintended side-effects on your application while a Redis container is restarting and loading data from disk.
"},{"location":"docker-images/redis/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
so this image will work with a random user. - The files within
/etc/redis/*
are templated using envplate
via a container-entrypoint.
"},{"location":"docker-images/redis/#included-redisconf-configuration-file","title":"Included redis.conf
configuration file","text":"The image ships a default Redis configuration file, optimized to work on Lagoon.
"},{"location":"docker-images/redis/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description DATABASES -1 Default number of databases created at startup. LOGLEVEL notice Define the level of logs. MAXMEMORY 100mb Maximum amount of memory. MAXMEMORYPOLICY allkeys-lru The policy to use when evicting keys if Redis reaches its maximum memory usage. REDIS_PASSWORD disabled Enables authentication feature."},{"location":"docker-images/redis/#custom-configuration","title":"Custom configuration","text":"By building on the base image you can include custom configuration. See https://github.com/redis/redis/blob/7.2.5/redis.conf for full documentation of the Redis configuration file.
"},{"location":"docker-images/redis/#redis-persistent","title":"Redis-persistent","text":"Based on the Lagoon redis
image, the Lagoon redis-persistent
Docker image is intended for use when the Redis service must be utilized in persistent
mode (ie. with a persistent volume where keys will be saved to disk).
It differs from redis
only with the FLAVOR
environment variable, which will use the respective Redis configuration according to the version of redis in use.
"},{"location":"docker-images/redis/#troubleshooting","title":"Troubleshooting","text":"The Lagoon Redis images all come pre-loaded with the redis-cli
command, which allows for querying the Redis service for information and setting config values dynamically. To use this utility, you can simply SSH into your Redis pod by using the instructions here with redis
as the pod
value then run it from the terminal once you've connected.
"},{"location":"docker-images/redis/#maximum-memory-policy","title":"Maximum Memory Policy","text":"By default, the Lagoon redis
images are set to use the allkeys-lru
policy. This policy will alow ANY keys stored in Redis to be evicted if/when the Redis service hits its maxmemory
limit according to when the key was least recently used.
For typical installations, this is the ideal configuration, as Drupal may not set a TTL
value for each key cached in Redis. If the maxmemory-policy
is set to something like volatile-lru
and Drupal doesn't provide these TTL
tags, this would result in the Redis container filling up, being totally unable to evict ANY keys, and ceasing to accept new cache keys at all.
More information on Redis' maxmemory policies can be found in Redis' official documentation.
Proceed with Caution
Changing this setting can lead to Redis becoming completely full and cause outages as a result.
"},{"location":"docker-images/redis/#tuning-redis-maxmemory-value","title":"Tuning Redis' maxmemory
value","text":"Finding the optimal amount of memory to give Redis can be quite the difficult task. Before attempting to tune your Redis cache's memory size, it is prudent to let it run normally for as long as practical, with at least a day of typical usage being the ideal minimum timeframe.
There are a few high level things you can look at when tuning these memory values:
- The first thing to check is the percentage of memory in use by Redis currently.
- If this percentage is less than
50%
, you might consider lowering the maxmemory
value by 25%. - If this percentage is between
50%
and 75%
, things are running just fine. - If this value is greater than
75%
, then it's worth looking at other variables to see if maxmemory
needs to be increased.
- If you find that your Redis' memory usage percentage is high, the next thing to look at is the number of key evictions.
- A large number of key evictions and a memory usage greater than
95%
is a fairly good indicator that your redis needs a higher maxmemory
setting. - If the number of key evictions doesn't seem high and typical response times are reasonable, this is simply indicative of Redis doing its job and managing its allocated memory as expected.
"},{"location":"docker-images/redis/#example-commands","title":"Example commands","text":"The following commands can be used to view information about the Redis service:
- View all info about the Redis service:
redis-cli info
- View service memory information:
redis-cli info memory
- View service keyspace information:
redis-cli info keyspace
- View service statistics:
redis-cli info stats
It is also possible to set values for the Redis service dynamically without a restart of the Redis service. It is important to note that these dynamically set values will not persist if the pod is restarted (which can happen as a result of a deployment, maintenance, or even just being shuffled from one node to another).
- Set
maxmemory
config value dynamically to 500mb
: config set maxmemory 500mb
- Set
maxmemory-policy
config value dynamically to volatile-lru
: config set maxmemory-policy volatile-lru
"},{"location":"docker-images/ruby/","title":"Ruby","text":"The Lagoon ruby
Docker image. Based on the official Python Alpine images.
"},{"location":"docker-images/ruby/#supported-versions","title":"Supported Versions","text":" - 3.0 (available for compatibility only, no longer officially supported) -
uselagoon/ruby-3.0
- 3.1 Dockerfile (Security Support until March 2025) -
uselagoon/ruby-3.1
- 3.2 Dockerfile (Security Support until March 2026) -
uselagoon/ruby-3.2
- 3.3 Dockerfile (Security Support until March 2027) -
uselagoon/ruby-3.3
Tip
We stop updating and publishing EOL Ruby images usually with the Lagoon release that comes after the officially communicated EOL date: https://www.ruby-lang.org/en/downloads/releases/. Previous versions will remain available.
"},{"location":"docker-images/ruby/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of ruby containers is port 3000
.
Lagoon has no \"pre-defined\" type for Ruby services, they should be configured with the lagoon.type: generic
and a port set with lagoon.port: 3000
"},{"location":"docker-images/ruby/#docker-composeyml-snippet","title":"docker-compose.yml
snippet","text":"docker-compose.ymlruby:\nbuild:\n# this configures a build from a Dockerfile in the root folder\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# tells Lagoon this is a generic service, configured to expose port 3000\nlagoon.type: generic\nlagoon.port: 3000\nports:\n# local development only\n# this exposes the port 3000 with a random local port\n# find it with `docker compose port ruby 3000`\n- \"3000\"\n
"},{"location":"docker-images/solr/","title":"Solr","text":"The Lagoon Solr
image Dockerfile. Based on the official solr:<version>-alpine
images.
This Dockerfile is intended to be used to set up a standalone Solr server with an initial core mycore
.
"},{"location":"docker-images/solr/#supported-versions","title":"Supported Versions","text":" - 5.5 (available for compatibility only, no longer officially supported)
- 6.6 (available for compatibility only, no longer officially supported)
- 7.7 (available for compatibility only, no longer officially supported)
- 7 (available for compatibility only, no longer officially supported) -
uselagoon/solr-7
- 8 Dockerfile -
uselagoon/solr-8
- 9 Dockerfile -
uselagoon/solr-9
"},{"location":"docker-images/solr/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. 10-solr-port.sh
script to fix and check Solr
port. 20-solr-datadir.sh
script to check if Solr
config is compliant for Lagoon. This sets directory paths, and configures the correct lock type.
"},{"location":"docker-images/solr/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description SOLR_JAVA_MEM 512M Default Java HEAP size (ie. SOLR_JAVA_MEM=\"-Xms10g -Xmx10g\"
). SOLR_DATA_DIR /var/solr Path of the solr data dir. Be careful, changing this can cause data loss! SOLR_COPY_DATA_DIR_SOURCE (not set) Path which the entrypoint script of solr will use to copy into the defined SOLR_DATA_DIR
, this can be used for prepopulating the Solr with a core. The scripts expects actual Solr data files! Plus it only copies data if the destination does not already have a solr core in it."},{"location":"docker-images/varnish/","title":"Varnish","text":"The Lagoon Varnish
Docker images. Based on the official Varnish
package
"},{"location":"docker-images/varnish/#supported-versions","title":"Supported versions","text":" - 5 (available for compatibility only, no longer officially supported) -
uselagoon/varnish-5
- 6.0 LTS Dockerfile -
uselagoon/varnish-6
- 7 Dockerfile -
uselagoon/varnish-7
"},{"location":"docker-images/varnish/#included-varnish-modules","title":"Included varnish modules","text":" vbox-dynamic
- Dynamic backends from DNS lookups and service discovery from SRV records. vbox-bodyaccess
- Varnish vmod
that lets you access the request body.
"},{"location":"docker-images/varnish/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user.
"},{"location":"docker-images/varnish/#included-defaultvcl-configuration-file","title":"Included default.vcl
configuration file","text":"The image ships a default vcl
configuration file, optimized to work on Lagoon. Some options are configurable via environments variables (see Environment Variables).
"},{"location":"docker-images/varnish/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description VARNISH_BACKEND_HOST NGINX Default backend host. VARNISH_BACKEND_PORT 8080 Default listening Varnish port. VARNISH_SECRET lagoon_default_secret Varnish secret used to connect to management. LIBVMOD_DYNAMIC_VERSION 5.2 Default version of vmod-dynamic
module. LIBVMOD_BODYACCESS_VERSION 5.0 Default version of vmod-bodyaccess
module. HTTP_RESP_HDR_LEN 8k Maximum length of any HTTP backend response header. HTTP_RESP_SIZE 32k Maximum number of bytes of HTTP backend response we will deal with. NUKE_LIMIT 150 Maximum number of objects we attempt to nuke in order to make space for an object body. CACHE_TYPE malloc Type of varnish cache. CACHE_SIZE 500M Cache size. LISTEN 8080 Default backend server port. MANAGEMENT_LISTEN 6082 Default management listening port."},{"location":"installing-lagoon/add-group/","title":"Add Group","text":"Add group lagoon add group -N groupname\n
"},{"location":"installing-lagoon/add-project/","title":"Adding a Project","text":""},{"location":"installing-lagoon/add-project/#add-the-project-to-lagoon","title":"Add the project to Lagoon","text":" -
Run this command:
Add projectlagoon add project \\\n--git-url <YOUR-GITHUB-REPO-URL> \\\n--deploytarget 1 \\\n--production-environment <YOUR-PROD-ENV> \\\n--branches <THE-BRANCHES-YOU-WANT-TO-DEPLOY> \\\n--project <YOUR-PROJECT-NAME>\n
- The value for
--deploytarget
is the ID of your Kubernetes cluster. - Your production environment should be the name of the branch you want to have as your production environment.
- The branches you want to deploy might look like this:
\u201c^(main|develop)$\u201d
- The name of your project is anything you want - \u201cCompany Website,\u201d \u201cexample,\u201d etc.
-
Go to the Lagoon UI, and you should see your project listed!
"},{"location":"installing-lagoon/add-project/#add-the-deploy-key-to-your-git-repository","title":"Add the deploy key to your Git repository","text":"Lagoon creates a deploy key for each project. You now need to add it as a deploy key in your Git repository to allow Lagoon to download the code.
-
Run the following command to get the deploy key:
Get project-keylagoon get project-key --project <YOUR-PROJECT-NAME>\n
-
Copy the key and save it as a deploy key in your Git repository.
GitHub GitLab Bitbucket
"},{"location":"installing-lagoon/add-project/#add-the-webhooks-endpoint-to-your-git-repository","title":"Add the webhooks endpoint to your Git repository","text":"In order for Lagoon to be able to deploy on code updates, it needs to be connected to your Git repository
-
Add your Lagoon cluster's webhook endpoint to your Git repository
- Payload URL:
<LAGOON-WEBHOOK-INGRESS>
- Content Type: JSON
- Active: Active (allows you to enable/disable as required)
- Events: Select the relevant events, or choose All. Usually push, branch create/delete are required
GitHub GitLab Bitbucket
"},{"location":"installing-lagoon/bulk-storage-provisioner/","title":"Bulk Storage Provisioner","text":""},{"location":"installing-lagoon/bulk-storage-provisioner/#aws-specific-instructions","title":"AWS-specific instructions","text":"Info
The EFS info here is only applicable to AWS installations, but the basic process should be similar for all NFS volumes.
In order to create the necessary Bulk
StorageClass, you will need to have an RWX-capable storage backend.
In this example, we will provide documentation to configure EFS as a NFS server, and configure that for use with Lagoon
"},{"location":"installing-lagoon/bulk-storage-provisioner/#requirements","title":"Requirements","text":" - Provision and configure an EFS, taking note of any security group requirements (https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-mount-cmd-dns-name.html)
- The DNS name for the mount target of the EFS volume - usually
file-system-id.efs.aws-region.amazonaws.com
- Familiarity with the NFS CSI driver for Kubernetes - https://github.com/kubernetes-csi/csi-driver-nfs
"},{"location":"installing-lagoon/bulk-storage-provisioner/#steps","title":"Steps","text":" - Add Helm repository for the NFS CSI driver Add Helm repo
helm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts\n
- Configure the
bulk
StorageClass EFS NFS mount target in a values file. Note that this step also installs a secret into the namespace to handle deleting volumes, as per herecsi-driver-nfs-storageclass.yaml
apiVersion: storage.k8s.io/v1\nkind: StorageClass\nmetadata:\nname: bulk\nprovisioner: nfs.csi.k8s.io\nparameters:\nserver: file-system-id.efs.aws-region.amazonaws.com\nshare: /\ncsi.storage.k8s.io/provisioner-secret-name: \"mount-options\"\ncsi.storage.k8s.io/provisioner-secret-namespace: \"csi-driver-nfs\"\nreclaimPolicy: Delete\nvolumeBindingMode: Immediate\nmountOptions:\n- nfsvers=4.1\n- rsize=1048576\n- wsize=1048576\n- hard\n- timeo=600\n- retrans=2\n- noresvport\n---\napiVersion: v1\nkind: Secret\nmetadata:\nname: mount-options\nnamespace: csi-driver-nfs\nstringData:\nmountOptions: \"nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport\"\n
3. Install the NFS CSI driver Install NFS CSI Driverhelm upgrade --install --create-namespace \\\n--namespace csi-driver-nfs --wait \\\ncsi-driver-nfs csi-driver-nfs/csi-driver-nfs\n
4. Install the StorageClass and secret Install bulk StorageClass and Secretkubectl apply -f csi-driver-nfs-storageclass.yaml\n
"},{"location":"installing-lagoon/create-user/","title":"Create Lagoon user","text":" -
Add user via Lagoon CLI:
Add userlagoon add user --email user@example.com --firstName MyFirstName --lastName MyLastName\n
-
Go to your email and click the password reset link in the email.
- Follow the instructions and log in to Lagoon UI with created password.
- Add the SSH public key of the user via Settings.
"},{"location":"installing-lagoon/deploy-project/","title":"Deploy Your Project","text":" -
Run the following command to deploy your project:
Deploylagoon deploy branch -p <YOUR-PROJECT-NAME> -b <YOUR-BRANCH-NAME>\n
-
Go to the Lagoon UI and take a look at your project - you should now see the environment for this project!
- Look in your cluster at your pods list, and you should see the build pod as it begins to clone Git repositories, set up services, etc.See all pods
kubectl get pods --all-namespaces | grep lagoon-build\n
"},{"location":"installing-lagoon/gitlab/","title":"GitLab","text":"Not needed for *most* installs, but this is configured to integrate Lagoon with GitLab for user and group authentication.
- Create Personal Access token in GitLab for a user with admin access.
- Create system hooks under
your-gitlab.com/admin/hooks
pointing to: webhookhandler.lagoon.example.com
and define a random secret token. - Enable \u201crepository update events\u201d
-
Update lagoon-core-values.yml
:
lagoon-core-values.ymlapi:\nadditionalEnvs:\nGITLAB_API_HOST: <<URL of GitLab example: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << Personal Access token with Access to API >>\nGITLAB_SYSTEM_HOOK_TOKEN: << System Hook Secret Token >>\nwebhook-haondler:\nadditionalEnvs:\nGITLAB_API_HOST: <<URL of GitLab example: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << Personal Access token with Access to API >>\nGITLAB_SYSTEM_HOOK_TOKEN: << System Hook Secret Token >>\nwebhooks2tasks:\nadditionalEnvs:\nGITLAB_API_HOST: <<URL of GitLab example: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << Personal Access token with Access to API >>\nGITLAB_SYSTEM_HOOK_TOKEN: << System Hook Secret Token >>\n
-
Helm update the lagoon-core
helmchart.
- If you've already created users in Keycloak, delete them.
- Run the following command in an API pod:Sync with GitLab
yarn sync:gitlab:all\n
"},{"location":"installing-lagoon/install-harbor/","title":"Install Harbor","text":" -
Add Helm repository:
Add Helm repositoryhelm repo add harbor https://helm.goharbor.io\n
-
Consider the optimal configuration of Harbor for your particular circumstances - see their docs for more recommendations:
- We recommend using S3-compatible storage for image blobs (
imageChartStorage
). - We recommend using a managed database service for the Postgres service (
database.type
). - In high-usage scenarios we recommend using a managed Redis service. (
redis.type
)
-
Create the file harbor-values.yml
inside of your config directory. The proxy-buffering annotations help with large image pushes:
harbor-values.ymlexpose:\ningress:\nannotations:\nkubernetes.io/tls-acme: \"true\"\nnginx.ingress.kubernetes.io/proxy-buffering: \"off\"\nnginx.ingress.kubernetes.io/proxy-request-buffering: \"off\"\nhosts:\ncore: harbor.lagoon.example.com\ntls:\nenabled: true\ncertSource: secret\nsecret:\nsecretName: harbor-harbor-ingress\nexternalURL: https://harbor.lagoon.example.com\nharborAdminPassword: <your Harbor Admin Password>\nchartmuseum:\nenabled: false\nclair:\nenabled: false\nnotary:\nenabled: false\ntrivy:\nenabled: false\njobservice:\njobLogger: stdout\n
-
Install Harbor, checking the requirements for the currently supported Harbor versions:
Install Harborhelm upgrade --install --create-namespace \\\n--namespace harbor --wait \\\n-f harbor-values.yml \\\nharbor harbor/harbor\n
-
Visit Harbor at the URL you set in harbor.yml
.
- Username: admin
- Password:
Get Harbor secretkubectl -n harbor get secret harbor-core -o jsonpath=\"{.data.HARBOR_ADMIN_PASSWORD}\" | base64 --decode\n
-
You will need to add the above Harbor credentials to the Lagoon Remote values.yml
in the next step, as well as harbor-values.yml
.
"},{"location":"installing-lagoon/install-lagoon-remote/","title":"Install Lagoon Remote","text":"Now we will install Lagoon Remote into the Lagoon namespace. The RabbitMQ service is the broker.
-
Create lagoon-remote-values.yml
in your config directory as you did the previous two files, and update the values.
- rabbitMQPassword
Get RabbitMQ passwordkubectl -n lagoon-core get secret lagoon-core-broker -o jsonpath=\"{.data.RABBITMQ_PASSWORD}\" | base64 --decode\n
- rabbitMQHostname
lagoon-remote-values.ymllagoon-core-broker.lagoon-core.svc.local\n
- taskSSHHost
Update SSH Hostkubectl get service lagoon-core-broker-amqp-ext \\\n-o custom-columns=\"NAME:.metadata.name,IP ADDRESS:.status.loadBalancer.ingress[*].ip,HOSTNAME:.status.loadBalancer.ingress[*].hostname\"\n
- harbor-password
Get Harbor secretkubectl -n harbor get secret harbor-harbor-core -o jsonpath=\"{.data.HARBOR_ADMIN_PASSWORD}\" | base64 --decode\n
-
Add the Harbor configuration from the Install Harbor step.
lagoon-remote-values.ymllagoon-build-deploy:\nenabled: true\nextraArgs:\n- \"--enable-harbor=true\"\n- \"--harbor-url=https://harbor.lagoon.example.com\"\n- \"--harbor-api=https://harbor.lagoon.example.com/api/\"\n- \"--harbor-username=admin\"\n- \"--harbor-password=<from harbor-harbor-core secret>\"\nrabbitMQUsername: lagoon\nrabbitMQPassword: <from lagoon-core-broker secret>\nrabbitMQHostname: lagoon-core-broker.lagoon-core.svc.cluster.local\nlagoonTargetName: <name of lagoon remote, can be anything>\ntaskSSHHost: <IP of ssh service loadbalancer>\ntaskSSHPort: \"22\"\ntaskAPIHost: \"api.lagoon.example.com\"\ndbaas-operator:\nenabled: true\nmariadbProviders:\nproduction:\nenvironment: production\nhostname: 172.17.0.1.nip.io\nreadReplicaHostnames:\n- 172.17.0.1.nip.io\npassword: password\nport: '3306'\nuser: root\ndevelopment:\nenvironment: development\nhostname: 172.17.0.1.nip.io\nreadReplicaHostnames:\n- 172.17.0.1.nip.io\npassword: password\nport: '3306'\nuser: root\n
-
Enable ssh-core service account
-
Install Lagoon Remote:
Install Lagoon remotehelm upgrade --install --create-namespace \\\n--namespace lagoon \\\n-f lagoon-remote-values.yml \\\nlagoon-remote lagoon/lagoon-remote\n
"},{"location":"installing-lagoon/lagoon-backups/","title":"Lagoon Backups","text":"Lagoon uses the K8up backup operator: https://k8up.io. Lagoon isn\u2019t tightly integrated with K8up, it\u2019s more that Lagoon can create its resources in a way that K8up can automatically discover and backup.
Lagoon has been extensively tested with K8up 1.x, but is not compatible with 2.x yet. We recommend using the 1.1.0 chart version (App version v1.2.0).
-
Create new AWS User with policies:
example K8up IAM user{\n\"Version\":\"2012-10-17\",\n\"Statement\":[\n{\n\"Sid\":\"VisualEditor0\",\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:ListAllMyBuckets\",\n\"s3:CreateBucket\",\n\"s3:GetBucketLocation\"\n],\n\"Resource\":\"*\"\n},\n{\n\"Sid\":\"VisualEditor1\",\n\"Effect\":\"Allow\",\n\"Action\":\"s3:ListBucket\",\n\"Resource\":\"arn:aws:s3:::baas-*\"\n},\n{\n\"Sid\":\"VisualEditor2\",\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:PutObject\",\n\"s3:GetObject\",\n\"s3:AbortMultipartUpload\",\n\"s3:DeleteObject\",\n\"s3:ListMultipartUploadParts\"\n],\n\"Resource\":\"arn:aws:s3:::baas-*/*\"\n}\n]\n}\n
-
Create k8up-values.yml
(customize for your provider):
k8up-values.ymlk8up:\nenvVars:\n- name: BACKUP_GLOBALS3ENDPOINT\nvalue: 'https://s3.eu-west-1.amazonaws.com'\n- name: BACKUP_GLOBALS3BUCKET\nvalue: ''\n- name: BACKUP_GLOBALKEEPJOBS\nvalue: '1'\n- name: BACKUP_GLOBALSTATSURL\nvalue: 'https://backup.lagoon.example.com'\n- name: BACKUP_GLOBALACCESSKEYID\nvalue: ''\n- name: BACKUP_GLOBALSECRETACCESSKEY\nvalue: ''\n- name: BACKUP_BACKOFFLIMIT\nvalue: '2'\n- name: BACKUP_GLOBALRESTORES3BUCKET\nvalue: ''\n- name: BACKUP_GLOBALRESTORES3ENDPOINT\nvalue: 'https://s3.eu-west-1.amazonaws.com'\n- name: BACKUP_GLOBALRESTORES3ACCESSKEYID\nvalue: ''\n- name: BACKUP_GLOBALRESTORES3SECRETACCESSKEY\nvalue: ''\ntimezone: Europe/Zurich\n
-
Install K8up:
Install K8up Step 1helm repo add appuio https://charts.appuio.ch\n
Install K8up Step 2kubectl apply -f https://github.com/vshn/k8up/releases/download/v1.2.0/k8up-crd.yaml\n
Install K8up Step 3helm upgrade --install --create-namespace \\\n--namespace k8up \\\n-f k8up-values.yaml \\\n--version 1.1.0 \\\nk8up appuio/k8up\n
-
Update lagoon-core-values.yml
:
lagoon-core-values.ymls3BAASAccessKeyID: <<Access Key ID for restore bucket>>\ns3BAASSecretAccessKey: <<Access Key Secret for restore bucket>>\n
-
Redeploy lagoon-core
.
"},{"location":"installing-lagoon/lagoon-cli/","title":"Install the Lagoon CLI","text":" - Check https://github.com/uselagoon/lagoon-cli#install on how to install for your operating system. For macOS and Linux, you can use Homebrew:
brew tap uselagoon/lagoon-cli
brew install lagoon
-
The CLI needs to know how to communicate with Lagoon, so run the following command:
Lagoon config lagoon config add \\\n--graphql https://YOUR-API-URL/graphql \\\n--ui https://YOUR-UI-URL \\\n--hostname YOUR.SSH.IP \\\n--lagoon YOUR-LAGOON-NAME \\\n--port 22\n
-
Access Lagoon by authenticating with your SSH key.
- In the Lagoon UI (the URL is in
values.yml
if you forget), go to Settings. - Add your public SSH key.
-
You need to set the default Lagoon to your Lagoon so that it doesn\u2019t try to use the amazee.io defaults:
Lagoon config lagoon config default --lagoon <YOUR-LAGOON-NAME>\n
-
Now run lagoon login
. Lagoon talks to SSH and authenticates against your public/private key pair, and gets a token for your username.
-
Verify via lagoon whoami
that you are logged in.
Info
We don\u2019t generally recommend using the Lagoon Admin role, but you\u2019ll need to create an admin account at first to get started. Ideally, you\u2019ll immediately create another account to work from which is not an admin.
"},{"location":"installing-lagoon/lagoon-core/","title":"Install Lagoon Core","text":""},{"location":"installing-lagoon/lagoon-core/#install-the-helm-chart","title":"Install the Helm chart","text":" -
Add Lagoon Charts repository to your Helm Repositories:
Add Lagoon Charts repositoryhelm repo add lagoon https://uselagoon.github.io/lagoon-charts/\n
-
Create a directory for the configuration files we will create, and make sure that it\u2019s version controlled. Ensure that you reference this path in commands referencing your values.yml
files.
- Create
values.yml
in the directory you\u2019ve just created. Update the endpoint URLs (change them from api.lagoon.example.com
to your values). Example: https://github.com/uselagoon/lagoon-charts/blob/main/charts/lagoon-core/ci/linter-values.yaml -
Now run helm upgrade --install
command, pointing to values.yml
, like so:
Upgrade Helm with values.ymlhelm upgrade --install --create-namespace --namespace lagoon-core -f values.yml lagoon-core lagoon/lagoon-core`\n
-
Lagoon Core is now installed!
Warning
Sometimes we run into Docker Hub pull limits. We are considering moving our images elsewhere if this continues to be a problem.
"},{"location":"installing-lagoon/lagoon-core/#configure-keycloak","title":"Configure Keycloak","text":"Visit the Keycloak dashboard at the URL you defined in the values.yml
for Keycloak.
- Click \"Administration Console\"
- Username:
admin
- Password: use
lagoon-core-keycloak
secret, key-value KEYCLOAK_ADMIN_PASSWORD
-
Retrieve the secret like so:
Retrieve secretkubectl -n lagoon-core get secret lagoon-core-keycloak -o jsonpath=\"{.data.KEYCLOAK_ADMIN_PASSWORD}\" | base64 --decode\n
-
Click on User on top right.
- Go to Manage Account.
- Add an Email for the admin account you created.
- Save.
- Go to Realm Lagoon -> Realm Settings -> Email
- Configure email server for Keycloak, test connection via \u201cTest connection\u201d button.
- Go to Realm Lagoon -> Realm Settings -> Login
- Enable \u201cForgot Password\u201d
- Save.
"},{"location":"installing-lagoon/lagoon-core/#log-in-to-the-ui","title":"Log in to the UI","text":"You should now be able to visit the Lagoon UI at the URL you defined in the values.yml
for the UI.
- Username:
lagoonadmin
- Secret: use
lagoon-core-keycloak
secret key-value: LAGOON-CORE-KEYCLOAK
- Retrieve the secret:Retrieve secret
kubectl -n lagoon-core get secret lagoon-core-keycloak -o jsonpath=\"{.data.KEYCLOAK_LAGOON_ADMIN_PASSWORD}\" | base64 --decode\n
"},{"location":"installing-lagoon/lagoon-files/","title":"Lagoon Files","text":"Lagoon files are used to store the file output of tasks, such as backups, and can be hosted on any S3-compatible storage.
-
Create new AWS User with policies:
Example files IAM user{\n\"Version\":\"2012-10-17\",\n\"Statement\":[\n{\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:ListBucket\",\n\"s3:GetBucketLocation\",\n\"s3:ListBucketMultipartUploads\"\n],\n\"Resource\":\"arn:aws:s3:::S3_BUCKET_NAME\"\n},\n{\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:PutObject\",\n\"s3:GetObject\",\n\"s3:DeleteObject\",\n\"s3:ListMultipartUploadParts\",\n\"s3:AbortMultipartUpload\"\n],\n\"Resource\":\"arn:aws:s3:::S3_BUCKET_NAME/*\"\n}\n]\n}\n
-
Update lagoon-core-values.yml
:
lagoon-core-values.ymls3FilesAccessKeyID: <<Access Key ID>>\ns3FilesBucket: <<Bucket Name for Lagoon Files>>\ns3FilesHost: <<S3 endpoint like \"https://s3.eu-west-1.amazonaws.com\" >>\ns3FilesSecretAccessKey: <<Access Key Secret>>\ns3FilesRegion: <<S3 Region >>\n
-
If you use ingress-nginx
in front of lagoon-core
, we suggest setting this configuration which will allow for bigger file uploads:
lagoon-core-values.ymlcontroller:\nconfig:\nclient-body-timeout: '600' # max 600 secs fileuploads\nproxy-send-timeout: '1800' # max 30min connections - needed for websockets\nproxy-read-timeout: '1800' # max 30min connections - needed for websockets\nproxy-body-size: 1024m # 1GB file size\nproxy-buffer-size: 64k # bigger buffer\n
"},{"location":"installing-lagoon/lagoon-logging/","title":"Lagoon Logging","text":"Lagoon integrates with OpenSearch to store application, container and router logs. Lagoon Logging collects the application, router and container logs from Lagoon projects, and sends them to the logs concentrator. It needs to be installed onto each lagoon-remote
instance.
In addition, it should be installed in the lagoon-core
cluster to collect logs from the lagoon-core
service. This is configured in the LagoonLogs
section.
Logging Overview: Lucid Chart
See also: Logging.
Read more about Lagoon logging here: https://github.com/uselagoon/lagoon-charts/tree/main/charts/lagoon-logging
-
Create lagoon-logging-values.yaml
:
lagoon-logging-values.yamltls:\ncaCert: |\n<< content of ca.pem from Logs-Concentrator>>\nclientCert: |\n<< content of client.pem from Logs-Concentrator>>\nclientKey: |\n<< content of client-key.pem from Logs-Concentrator>>\nforward:\nusername: <<Username for Lagoon Remote 1>>\npassword: <<Password for Lagoon Remote 1>>\nhost: <<ExternalIP of Logs-Concentrator Service LoadBalancer>>\nhostName: <<Hostname in Server Cert of Logs-Concentrator>>\nhostPort: '24224'\nselfHostname: <<Hostname in Client Cert of Logs-Concentrator>>\nsharedKey: <<Generated ForwardSharedKey of Logs-Concentrator>>\ntlsVerifyHostname: false\nclusterName: <<Short Cluster Identifier>>\nlogsDispatcher:\nserviceMonitor:\nenabled: false\nlogging-operator:\nmonitoring:\nserviceMonitor:\nenabled: false\nlagoonLogs:\nenabled: true\nrabbitMQHost: lagoon-core-broker.lagoon-core.svc.cluster.local\nrabbitMQUser: lagoon\nrabbitMQPassword: <<RabbitMQ Lagoon Password>>\nexcludeNamespaces: {}\n
-
Install lagoon-logging
:
Install lagoon-logginghelm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com\n\nhelm upgrade --install --create-namespace \\\n--namespace lagoon-logging \\\n-f lagoon-logging-values.yaml \\\nlagoon-logging lagoon/lagoon-logging\n
"},{"location":"installing-lagoon/lagoon-logging/#logging-nginx-ingress-controller","title":"Logging NGINX Ingress Controller","text":"If you'd like logs from ingress-nginx
inside lagoon-logging
:
- The ingress controller must be installed in the namespace
ingress-nginx
-
Add the content of this file to ingress-nginx
:
ingress-nginx log-format-upstreamcontroller:\nconfig:\nlog-format-upstream: >-\n{\n\"time\": \"$time_iso8601\",\n\"remote_addr\": \"$remote_addr\",\n\"x-forwarded-for\": \"$http_x_forwarded_for\",\n\"true-client-ip\": \"$http_true_client_ip\",\n\"req_id\": \"$req_id\",\n\"remote_user\": \"$remote_user\",\n\"bytes_sent\": $bytes_sent,\n\"request_time\": $request_time,\n\"status\": \"$status\",\n\"host\": \"$host\",\n\"request_proto\": \"$server_protocol\",\n\"request_uri\": \"$uri\",\n\"request_query\": \"$args\",\n\"request_length\": $request_length,\n\"request_time\": $request_time,\n\"request_method\": \"$request_method\",\n\"http_referer\": \"$http_referer\",\n\"http_user_agent\": \"$http_user_agent\",\n\"namespace\": \"$namespace\",\n\"ingress_name\": \"$ingress_name\",\n\"service_name\": \"$service_name\",\n\"service_port\": \"$service_port\"\n}\n
-
Your logs should start flowing!
"},{"location":"installing-lagoon/logs-concentrator/","title":"Logs-Concentrator","text":"Logs-concentrator collects the logs being sent by Lagoon clusters and augments them with additional metadata before inserting them into Elasticsearch.
- Create certificates according to ReadMe: https://github.com/uselagoon/lagoon-charts/tree/main/charts/lagoon-logs-concentrator
-
Create logs-concentrator-values.yml
:
logs-concentrator-values.ymltls:\ncaCert: |\n<<contents of ca.pem>>\nserverCert: |\n<<contents of server.pem\nserverKey: |\n<<contents of server-key.pem>>\nelasticsearchHost: elasticsearch-opendistro-es-client-service.elasticsearch.svc.cluster.local\nelasticsearchAdminPassword: <<ElasticSearch Admin Password>>\nforwardSharedKey: <<Random 32 Character Password>>\nusers:\n- username: <<Username for Lagoon Remote 1>>\npassword: <<Random Password for Lagoon Remote 1>>\nservice:\ntype: LoadBalancer\nserviceMonitor:\nenabled: false\n
-
Install logs-concentrator:
Install logs-concentratorhelm upgrade --install --create-namespace \\\n--namespace lagoon-logs-concentrator \\\n-f logs-concentrator-values.yaml \\\nlagoon-logs-concentrator lagoon/lagoon-logs-concentrator\n
"},{"location":"installing-lagoon/opendistro/","title":"OpenDistro","text":"To install an OpenDistro cluster, you will need to configure TLS and secrets so that Lagoon can talk to it securely. You're going to have to create a handful of JSON files - put these in the same directory as the values files you've been creating throughout this installation process.
Install OpenDistro Helm, according to https://opendistro.github.io/for-elasticsearch-docs/docs/install/helm/
"},{"location":"installing-lagoon/opendistro/#create-keys-and-certificates","title":"Create Keys and Certificates","text":" -
Generate certificates
Note:
CFSSL is CloudFlare's PKI/TLS swiss army knife. It is both a command line tool and an HTTP API server for signing, verifying, and bundling TLS certificates. It requires Go 1.12+ to build.
- Install CFSSL: https://github.com/cloudflare/cfssl
- Generate CA. You'll need the following file:
ca-csr.json{\n\"CN\": \"ca.elasticsearch.svc.cluster.local\",\n\"hosts\": [\n\"ca.elasticsearch.svc.cluster.local\"\n],\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n},\n\"ca\": {\n\"expiry\": \"87600h\"\n}\n}\n
-
Run the following two commands:
Generate certificatecfssl gencert -initca ca-csr.json | cfssljson -bare ca -\nrm ca.csr\n
You'll get ca-key.pem
, and ca.pem
. This is your CA key and self-signed certificate.
-
Next, we'll generate the node peering certificate. You'll need the following two files:
ca-config.json{\n\"signing\": {\n\"default\": {\n\"expiry\": \"87600h\"\n},\n\"profiles\": {\n\"peer\": {\n\"expiry\": \"87600h\",\n\"usages\": [\n\"signing\",\n\"key encipherment\",\n\"server auth\",\n\"client auth\"\n]\n},\n\"client\": {\n\"expiry\": \"87600h\",\n\"usages\": [\n\"signing\",\n\"key encipherment\",\n\"client auth\"\n]\n}\n}\n}\n}\n
node.json{\n\"hosts\": [\n\"node.elasticsearch.svc.cluster.local\"\n],\n\"CN\": \"node.elasticsearch.svc.cluster.local\",\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n}\n}\n
-
Run the following two commands:
Generate certificate keyscfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer node.json | cfssljson -bare node\nrm node.csr\n
You'll get node.pem
and node-key.pem
. This is the peer certificate that will be used by nodes in the ES cluster.
-
Next, we'll convert the key to the format supported by Java with the following command:
Convert key formatopenssl pkey -in node-key.pem -out node-key.pkcs8\n
-
Now we'll generate the admin certificate. You'll need the following file:
admin.json{\n\"CN\": \"admin.elasticsearch.svc.cluster.local\",\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n}\n}\n
-
Run the following two commands:
Generate admin certificate keyscfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client admin.json | cfssljson -bare admin\nrm admin.csr\n
You'll get admin.pem
and admin-key.pem
. This is the certificate that will be used to perform admin commands on the opendistro-security plugin.
-
Next, we'll convert the key to the format supported by Java with the following command:
Convert key formatopenssl pkey -in admin-key.pem -out admin-key.pkcs8\n
"},{"location":"installing-lagoon/opendistro/#installing-opendistro","title":"Installing OpenDistro","text":"Now that we have our keys and certificates, we can continue with the installation.
-
Generate hashed passwords.
- The
elasticsearch-secrets-values.yaml
needs two hashed passwords. Create them with this command (run it twice, enter a random password, store both the plaintext and hashed passwords).
Generate hashed passwordsdocker run --rm -it docker.io/amazon/opendistro-for-elasticsearch:1.12.0 sh -c \"chmod +x /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh; /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh\"\n
-
Create secrets:
- You'll need to create
elasticsearch-secrets-values.yaml
. See this gist as an example: https://gist.github.com/Schnitzel/43f483dfe0b23ca0dddd939b12bb4b0b
-
Install secrets with the following commands:
Install secretshelm repo add incubator https://charts.helm.sh/incubator`\nhelm upgrade --namespace elasticsearch --create-namespace --install elasticsearch-secrets incubator/raw --values elasticsearch-secrets-values.yaml `\n
-
You'll need to create elasticsearch-values.yaml
. See this gist as an example: (fill all <\\> with values) https://gist.github.com/Schnitzel/1e386654b6abf75bf4d66a544db4aa6a
-
Install Elasticsearch:
Install Elasticsearchhelm upgrade --namespace elasticsearch --create-namespace --install elasticsearch opendistro-es-X.Y.Z.tgz --values elasticsearch-values.yaml\n
-
Configure security inside Elasticsearch with the following:
Configure securitykubectl exec -n elasticsearch -it elasticsearch-opendistro-es-master-0 -- bash\nchmod +x /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh\n/usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh -nhnv -cacert /usr/share/elasticsearch/config/admin-root-ca.pem -cert /usr/share/elasticsearch/config/admin-crt.pem -key /usr/share/elasticsearch/config/admin-key.pem -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/\n
-
Update lagoon-core-values.yaml
with:
lagoon-core-values.yamlelasticsearchURL: http://elasticsearch-opendistro-es-client-service.elasticsearch.svc.cluster.local:9200\nkibanaURL: https://<<Kibana Public URL>>\nlogsDBAdminPassword: \"<<PlainText Elasticsearch Admin Password>>\"\n
-
Rollout Lagoon Core:
Rollout Lagoon Corehelm upgrade --install --create-namespace --namespace lagoon-core -f values.yaml lagoon-core lagoon/lagoon-core\n
-
Sync all Lagoon Groups with Opendistro Elasticsearch
Sync groupskubectl -n lagoon-core exec -it deploy/lagoon-core-api -- sh\nyarn run sync:opendistro-security\n
"},{"location":"installing-lagoon/querying-graphql/","title":"Querying with GraphQL","text":" -
You\u2019ll need an app for sending and receiving GraphQL queries. We recommend GraphiQL.
- If you\u2019re using Homebrew, you can install it with
brew install --cask graphiql
.
-
We need to tell Lagoon Core about the Kubernetes cluster. The GraphQL endpoint is: https://<YOUR-API-URL>/graphql
-
Go to Edit HTTP Headers, and Add Header.
- Header Name:
Authorization
- Value:
Bearer YOUR-TOKEN-HERE
- In your home directory, the Lagoon CLI has created a
.lagoon.yml
file. Copy the token from that file and use it for the value here. - Save.
-
Now you\u2019re ready to run some queries. Run the following test query to ensure everything is working correctly:
Get all projectsquery allProjects {allProjects {name } }\n
-
This should give you the following response:
API Response {\n \"data\": {\n \"allProjects\": []\n }\n }\n
Read more about GraphQL here in our documentation.
-
Once you get the correct response, we need to add a mutation.
-
Run the following query:
Add mutationmutation addKubernetes {\naddKubernetes(input:\n{\nname: \"<TARGET-NAME-FROM-REMOTE-VALUES.yml>\",\nconsoleUrl: \"<URL-OF-K8S-CLUSTER>\",\ntoken: \"xxxxxx\u201d\nrouterPattern: \"${environment}.${project}.lagoon.example.com\"\n}){id}\n}\n
name
: get from lagoon-remote-values.yml
consoleUrl
: API Endpoint of Kubernetes cluster. Get from values.yml
-
token
: get a token for the ssh-core
service account
Get tokenkubectl -n lagoon get secret/lagoon-remote-ssh-core-token -o json | jq -r '.data.token | @base64d'\n
Info
Authorization tokens for GraphQL are very short term so you may need to generate a new one. Run lagoon login
and then cat the .lagoon.yml
file to get the new token, and replace the old token in the HTTP header with the new one.
"},{"location":"installing-lagoon/requirements/","title":"Installing Lagoon Into Existing Kubernetes Cluster","text":""},{"location":"installing-lagoon/requirements/#requirements","title":"Requirements","text":" - Kubernetes 1.23+ (Kubernetes 1.21 is supported, but 1.23 is recommended)
- Familiarity with Helm and Helm Charts, and kubectl.
- Ingress controller, we recommend ingress-nginx, installed into ingress-nginx namespace
- Cert manager (for TLS) - We highly recommend using letsencrypt
- StorageClasses (RWO as default, RWM for persistent types)
Note
We acknowledge that this is a lot of steps, and our roadmap for the immediate future includes reducing the number of steps in this process.
"},{"location":"installing-lagoon/requirements/#specific-requirements-as-of-january-2023","title":"Specific requirements (as of January 2023)","text":""},{"location":"installing-lagoon/requirements/#kubernetes","title":"Kubernetes","text":"Lagoon supports Kubernetes versions 1.21 onwards. We actively test and develop against Kubernetes 1.24, also regularly testing against 1.21,1.22 and 1.25.
The next large round of breaking changes is in Kubernetes 1.25, and we will endeavour to be across these in advance, although this will require a bump in the minimum supported version of Lagoon.
"},{"location":"installing-lagoon/requirements/#ingress-nginx","title":"ingress-nginx","text":"Lagoon is currently configured only for a single ingress-nginx
controller, and therefore defining an IngressClass
was not necessary in the past.
In order to use the recent ingress-nginx
controllers (v4 onwards, required for Kubernetes 1.22), the following configuration should be used, as per the ingress-nginx
docs.
nginx-ingress
should be configured as the default controller - set .controller.ingressClassResource.default: true
in Helm values nginx-ingress
should be configured to watch ingresses without IngressClass
set - set .controller.watchIngressWithoutClass: true
in Helm values
This will configure the controller to create any new ingresses with itself as the IngressClass
, and also to handle any existing ingresses without an IngressClass
set.
Other configurations may be possible, but have not been tested.
"},{"location":"installing-lagoon/requirements/#harbor","title":"Harbor","text":"Versions 2.1 and 2.2+ of Harbor are currently supported. The method of retrieving robot accounts was changed in 2.2, and the Lagoon remote-controller is able to handle these tokens. This means that Harbor has to be configured with the credentials in lagoon-build-deploy
- not lagoon-core
.
We recommend installing a Harbor version greater than 2.6.0 with Helm chart 1.10.0 or greater.
"},{"location":"installing-lagoon/requirements/#k8up-for-backups","title":"k8up for backups","text":"Lagoon has built in configuration for the K8up backup operator. Lagoon can configure prebackup pods, schedules and retentions, and manage backups and restores for K8up. Lagoon currently only supports the 1.x versions of K8up, owing to a namespace change in v2 onwards, but we are working on a fix.
K8up v2:
Lagoon does not currently support K8up v2 onwards due to a namespace change here.
We recommend installing K8up version 1.2.0 with Helm Chart 1.1.0
"},{"location":"installing-lagoon/requirements/#storage-provisioners","title":"Storage provisioners","text":"Lagoon utilizes a default 'standard' StorageClass
for most workloads, and the internal provisioner for most Kubernetes platforms will suffice. This should be configured to be dynamic provisioning and expandable where possible.
Lagoon also requires a StorageClass
called 'bulk' to be available to support persistant pod replicas (across nodes). This StorageClass
should support ReadWriteMany
(RWX) access mode and should be configured to be dynamic provisioning and expandable where possible. See https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes for more information, and the production drivers list for a complete list of compatible drivers.
We have curently only included the instructions a generic Bulk Storage provisioner using NFS Bulk Storage Provisioner. In AWS the production EFS CSI driver is limited to provisioning no more than 1000 PVCs. We are awaiting an upstream possible fix here - but most other providers CSI drivers should also work, as will configurations with an NFS-compatible server and provisioner.
"},{"location":"installing-lagoon/requirements/#how-much-kubernetes-experienceknowledge-is-required","title":"How much Kubernetes experience/knowledge is required?","text":"Lagoon uses some very involved Kubernetes and cloud-native concepts, and while full familiarity may not be necessary to install and configure Lagoon, diagnosing issues and contributing may prove difficult without a good level of familiarity.
As an indicator, comfort with the curriculum for the Certified Kubernetes Administrator would be suggested as a minimum.
"},{"location":"installing-lagoon/update-lagoon/","title":"Updating","text":" -
Download newest charts using Helm.
Download newest chartshelm repo update\n
-
Check with helm diff
for changes (https://github.com/databus23/helm-diff).
Check for changeshelm diff upgrade --install --create-namespace --namespace lagoon-core \\\n-f values.yml lagoon-core lagoon/lagoon-core\n
-
Back up the Lagoon databases prior to any Helm actions. We also suggest scaling the API to a single pod, to aid the database migration scripts running in the initContainers.
-
Run the upgrade using Helm.
Run upgradehelm upgrade --install --create-namespace --namespace lagoon-core \\\n-f values.yaml lagoon-core lagoon/lagoon-core\n
-
(Note that as of Lagoon v2.11.0, this step is no longer required.) If upgrading Lagoon Core, ensure you run the rerun_initdb.sh
script to perform post upgrade migrations.
Run scriptkubectl --namespace lagoon-core exec -it lagoon-core-api-db-0 -- \\\nsh -c /rerun_initdb.sh\n
-
Re-scale the API pods back to their original level.
-
If upgrading Lagoon Core, and you have enabled groups/user syncing for OpenSearch, you may additionally need to run the sync:opendistro-security
script to update the groups in OpenSearch. This command can also be prefixed with a GROUP_REGEX=<group-to-sync
to sync a single group at a time, as syncing the entire group structure may take a long time.
Run scriptkubectl --namespace lagoon-core exec -it deploy/lagoon-core-api -- \\\nsh -c yarn sync:opendistro-security\n
Check https://github.com/uselagoon/lagoon/releases for additional upgrades.
"},{"location":"installing-lagoon/update-lagoon/#database-backups","title":"Database Backups","text":"You may want to back up the databases before upgrading Lagoon Core, the following will create backups you can use to restore from if required. You can delete them afterwards.
"},{"location":"installing-lagoon/update-lagoon/#api-db","title":"API DB","text":"Back up API DBkubectl --namespace lagoon-core exec -it lagoon-core-api-db-0 -- \\\nsh -c 'mysqldump --max-allowed-packet=500M --events \\\n --routines --quick --add-locks --no-autocommit \\\n --single-transaction infrastructure | gzip -9 > \\\n /var/lib/mysql/backup/$(date +%Y-%m-%d_%H%M%S).infrastructure.sql.gz'\n
"},{"location":"installing-lagoon/update-lagoon/#keycloak-db","title":"Keycloak DB","text":"Back up Keycloak DBkubectl --namespace lagoon-core exec -it lagoon-core-keycloak-db-0 -- \\\nsh -c 'mysqldump --max-allowed-packet=500M --events \\\n --routines --quick --add-locks --no-autocommit \\\n --single-transaction keycloak | gzip -9 > \\\n /var/lib/mysql/backup/$(date +%Y-%m-%d_%H%M%S).keycloak.sql.gz'\n
"},{"location":"interacting/graphql-queries/","title":"GraphQL API","text":""},{"location":"interacting/graphql-queries/#running-graphql-queries","title":"Running GraphQL queries","text":"Direct API interactions in Lagoon are done via GraphQL.
In order to authenticate with the API, we need a JWT (JSON Web Token) that allows us to use the GraphQL API as admin. To generate this token, open the terminal of the storage-calculator
pod via your Kubernetes UI, or via kubectl and run the following command:
Generate JWT token../create_jwt.py\n
This will return a long string which is the JWT token. Make a note of this, as we will need it to send queries.
We also need the URL of the API endpoint, which can be found under \"Ingresses\" in your Kubernetes UI or via kubectl on the command line. Make a note of this endpoint URL, which we will also need.
To compose and send GraphQL queries, we recommend GraphiQL.app, a desktop GraphQL client with features such as autocomplete. To continue with the next steps, install and start the app.
Under \"GraphQL Endpoint\", enter the API endpoint URL with /graphql
on the end. Then click on \"Edit HTTP Headers\" and add a new header:
- \"Header name\":
Authorization
- \"Header value\":
Bearer [JWT token]
(make sure that the JWT token has no spaces, as this would not work)
Press ESC to close the HTTP header overlay and now we are ready to send the first GraphQL request!
Enter this in the left panel
Running a queryquery allProjects{\nallProjects {\nname\n}\n}\n
And press the \u25b6\ufe0f button (or press CTRL+ENTER).
If all went well, your first GraphQL response should appear shortly afterwards in the right pane.
"},{"location":"interacting/graphql-queries/#creating-the-first-project","title":"Creating the first project","text":"Let's create the first project for Lagoon to deploy! For this we'll use the queries from the GraphQL query template in create-project.gql
.
For each of the queries (the blocks starting with mutation {
), fill in all of the empty fields marked by TODO comments and run the queries in GraphiQL.app. This will create one of each of the following two objects:
kubernetes
: The Kubernetes (or Openshift) cluster to which Lagoon should deploy. Lagoon is not only capable of deploying to its own Kubernetes cluster, but also to any Kubernetes cluster anywhere in the world. project
: The Lagoon project to be deployed, which is a Git repository with a .lagoon.yml
configuration file committed in the root.
"},{"location":"interacting/graphql-queries/#allowing-access-to-the-project","title":"Allowing access to the project","text":"In Lagoon, each developer authenticates via their SSH key(s). This determines their access to:
- The Lagoon API, where they can see and edit projects they have access to.
- Remote shell access to containers that are running in projects they have access to.
- The Lagoon logging system, where a developer can find request logs, container logs, Lagoon logs and more.
To allow access to the project, we first need to add a new group to the API:
Add group to APImutation {\naddGroup (\ninput: {\n# TODO: Enter the name for your new group.\nname: \"\"\n}\n) {\nid\nname\n}\n}\n
Then we need to add a new user to the API:
Add new user to APImutation {\naddUser(\ninput: {\nemail: \"michael.schmid@example.com\"\nfirstName: \"Michael\"\nlastName: \"Schmid\"\ncomment: \"CTO\"\n}\n) {\n# TODO: Make a note of the user ID that is returned.\nid\n}\n}\n
Then we can add an SSH public key for the user to the API:
Add SSH public key for the user to APImutation {\naddSshKey(\ninput: {\n# TODO: Fill in the name field.\n# This is a non-unique identifier for the SSH key.\nname: \"\"\n# TODO: Fill in the keyValue field.\n# This is the actual SSH public key (without the type at the beginning and without the comment at the end, ex. `AAAAB3NzaC1yc2EAAAADAQ...3QjzIOtdQERGZuMsi0p`).\nkeyValue: \"\"\n# TODO: Fill in the keyType field.\n# Valid values are either SSH_RSA, SSH_ED25519, ECDSA_SHA2_NISTP256/384/521\nkeyType: SSH_RSA\nuser: {\n# TODO: Fill in the userId field.\n# This is the user ID that we noted from the addUser query.\nid:\"0\",\nemail:\"michael.schmid@example.com\"\n}\n}\n) {\nid\n}\n}\n
After we add the key, we need to add the user to a group:
Add user to groupmutation {\naddUserToGroup (\ninput: {\nuser: {\n#TODO: Enter the email address of the user.\nemail: \"\"\n}\ngroup: {\n#TODO: Enter the name of the group you want to add the user to.\nname: \"\"\n}\n#TODO: Enter the role of the user.\nrole: OWNER\n}\n) {\nid\nname\n}\n}\n
After running one or more of these kinds of queries, the user will be granted access to create tokens via SSH, access containers and more.
"},{"location":"interacting/graphql-queries/#adding-notifications-to-the-project","title":"Adding notifications to the project","text":"If you want to know what is going on during a deployment, we suggest configuring notifications for your project, which provide:
- Push notifications
- Build start information
- Build success or failure messages
- And many more!
As notifications can be quite different in terms of the information they need, each notification type has its own mutation.
As with users, we first add the notification:
Add notificationmutation {\naddNotificationSlack(\ninput: {\n# TODO: Fill in the name field.\n# This is your own identifier for the notification.\nname: \"\"\n# TODO: Fill in the channel field.\n# This is the channel for the message to be sent to.\nchannel: \"\"\n# TODO: Fill in the webhook field.\n# This is the URL of the webhook where messages should be sent, this is usually provided by the chat system to you.\nwebhook: \"\"\n}\n) {\nid\n}\n}\n
After the notification is created, we can now assign it to our project:
Assign notification to projectmutation {\naddNotificationToProject(\ninput: {\nnotificationType: SLACK\n# TODO: Fill in the project field.\n# This is the project name.\nproject: \"\"\n# TODO: Fill in the notification field.\n# This is the notification name.\nnotificationName: \"\"\n# TODO: OPTIONAL\n# The kind notification class you're interested in defaults to DEPLOYMENT\ncontentType: DEPLOYMENT/PROBLEM\n# TODO: OPTIONAL\n# Related to contentType PROBLEM, we can set the threshold for the kinds of problems\n# we'd like to be notified about\nnotificationSeverityThreshold \"NONE/UNKNOWN/NEGLIGIBLE/LOW/MEDIUM/HIGH/CRITICAL\n}\n) {\nid\n}\n}\n
Now for every deployment you will receive messages in your defined channel.
"},{"location":"interacting/graphql-queries/#example-graphql-queries","title":"Example GraphQL queries","text":""},{"location":"interacting/graphql-queries/#adding-a-new-kubernetes-target","title":"Adding a new Kubernetes target","text":"Note
In Lagoon, both addKubernetes
and addOpenshift
can be used for both Kubernetes and OpenShift targets - either will work interchangeably.
The cluster to which Lagoon should deploy.
Add Kubernetes targetmutation {\naddKubernetes(\ninput: {\n# TODO: Fill in the name field.\n# This is the unique identifier of the cluster.\nname: \"\"\n# TODO: Fill in consoleUrl field.\n# This is the URL of the Kubernetes cluster\nconsoleUrl: \"\"\n# TODO: Fill in the token field.\n# This is the token of the `lagoon` service account created in this cluster (this is the same token that we also used during installation of Lagoon).\ntoken: \"\"\n}\n) {\nname\nid\n}\n}\n
"},{"location":"interacting/graphql-queries/#adding-a-group-to-a-project","title":"Adding a group to a project","text":"This query will add a group to a project. Users of that group will be able to access the project. They will be able to make changes, based on their role in that group.
Add a group to a projectmutation {\naddGroupsToProject (\ninput: {\nproject: {\n#TODO: Enter the name of the project.\nname: \"\"\n}\ngroups: {\n#TODO: Enter the name of the group that will be added to the project.\nname: \"\"\n}\n}\n) {\nid\n}\n}\n
"},{"location":"interacting/graphql-queries/#adding-a-new-project","title":"Adding a new project","text":"This query adds a new Lagoon project to be deployed, which is a Git repository with a .lagoon.yml
configuration file committed in the root.
If you omit the privateKey
field, a new SSH key for the project will be generated automatically.
If you would like to reuse a key from another project. you will need to supply the key in the addProject
mutation.
Add a new projectmutation {\naddProject(\ninput: {\n# TODO: Fill in the name field.\n# This is the project name.\nname: \"\"\n# TODO: Fill in the private key field (replace newlines with '\\n').\n# This is the private key for a project, which is used to access the Git code.\nprivateKey: \"\"\n# TODO: Fill in the Kubernetes field.\n# This is the ID of the Kubernetes or OpenShift to assign to the project.\nkubernetes: 0\n# TODO: Fill in the name field.\n# This is the project name.\ngitUrl: \"\"\n# TODO: Fill in the branches to be deployed.\nbranches: \"\"\n# TODO: Define the production environment.\nproductionEnvironment: \"\"\n}\n) {\nname\nkubernetes {\nname\nid\n}\ngitUrl\nbranches\npullrequests\n}\n}\n
"},{"location":"interacting/graphql-queries/#list-projects-and-groups","title":"List projects and groups","text":"This is a good query to see an overview of all projects, clusters and groups that exist within our Lagoon.
Get an overview of all projects, clusters, and groupsquery {\nallProjects {\nname\ngitUrl\n}\nallKubernetes {\nname\nid\n}\nallGroups{\nid\nname\nmembers {\n# This will display the users in this group.\nuser {\nid\nfirstName\nlastName\n}\nrole\n}\ngroups {\nid\nname\n}\n}\n}\n
"},{"location":"interacting/graphql-queries/#single-project","title":"Single project","text":"If you want a detailed look at a single project, this query has been proven quite good:
Take a detailed look at one projectquery {\nprojectByName(\n# TODO: Fill in the project name.\nname: \"\"\n) {\nid\nbranches\ngitUrl\npullrequests\nproductionEnvironment\nnotifications(type: SLACK) {\n... on NotificationSlack {\nname\nchannel\nwebhook\nid\n}\n}\nenvironments {\nname\ndeployType\nenvironmentType\n}\nkubernetes {\nid\n}\n}\n}\n
"},{"location":"interacting/graphql-queries/#querying-a-project-by-its-git-url","title":"Querying a project by its Git URL","text":"Don't remember the name of a project, but know the Git URL? Search no longer, there is a GraphQL query for that:
Query project by Git URLquery {\nprojectByGitUrl(gitUrl: \"git@server.com:org/repo.git\") {\nname\n}\n}\n
"},{"location":"interacting/graphql-queries/#updating-objects","title":"Updating objects","text":"The Lagoon GraphQL API can not only display objects and create objects, it also has the capability to update existing objects, using a patch object.
Update the branches to deploy within a project:
Update deploy branches.mutation {\nupdateProject(\ninput: { id: 109, patch: { branches: \"^(prod|stage|dev|update)$\" } }\n) {\nid\n}\n}\n
Update the production environment within a project:
Warning
This requires a redeploy in order for the changes to be reflected in the containers.
Update prod environment mutation {\nupdateProject(\ninput: { id: 109, patch: { productionEnvironment: \"main\" } }\n) {\nid\n}\n}\n
You can also combine multiple changes at once:
Update prod environment and set deploy branches.mutation {\nupdateProject(\ninput: {\nid: 109\npatch: {\nproductionEnvironment: \"main\"\nbranches: \"^(prod|stage|dev|update)$\"\n}\n}\n) {\nid\n}\n}\n
"},{"location":"interacting/graphql-queries/#deleting-environments","title":"Deleting Environments","text":"You can also use the Lagoon GraphQL API to delete an environment. You'll need to know the project name and the environment name in order to run the command.
Delete environment.mutation {\ndeleteEnvironment(\ninput: {\n# TODO: Fill in the name field.\n# This is the environment name.\nname:\"\"\n# TODO: Fill in the project field.\n# This is the project name.\nproject:\"\"\nexecute:true\n}\n)\n}\n
"},{"location":"interacting/graphql-queries/#querying-a-project-to-see-what-groups-and-users-are-assigned","title":"Querying a project to see what groups and users are assigned","text":"Want to see what groups and users have access to a project? Want to know what their roles are? Do I have a query for you! Using the query below you can search for a project and display the groups, users, and roles that are assigned to that project.
Query groups, users, and roles assigned to projectquery search{\nprojectByName(\n#TODO: Enter the name of the project.\nname: \"\"\n) {\nid,\nbranches,\nproductionEnvironment,\npullrequests,\ngitUrl,\nkubernetes {\nid\n},\ngroups{\nid\nname\ngroups {\nid\nname\n}\nmembers {\nrole\nuser {\nid\nemail\n}\n}\n}\n}\n}\n
"},{"location":"interacting/graphql-queries/#maintaining-project-metadata","title":"Maintaining project metadata","text":"Project metadata can be assigned using arbitrary key/value pairs. Projects can then be queried by the associated metadata; for example you may categorize projects by type of software, version number, or any other categorization you may wish to query on later.
"},{"location":"interacting/graphql-queries/#addupdate-metadata-on-a-project","title":"Add/update metadata on a project","text":"Updates to metadata expect a key/value pair. It operates as an UPSERT
, meaning if a key already exists the value will be updated, otherwise inserted.
You may have any number of k/v pairs stored against a project.
Add a key/value pair to metadatamutation {\nupdateProjectMetadata(\ninput: { id: 1, patch: { key: \"type\", value: \"saas\" } }\n) {\nid\nmetadata\n}\n}\n
"},{"location":"interacting/graphql-queries/#query-for-projects-by-metadata","title":"Query for projects by metadata","text":"Queries may be by key
only (e.g return all projects where a specific key exists) or both key
and value
where both key and value must match.
All projects that have the version
tag:
Query by metadataquery projectsByMetadata {\nprojectsByMetadata(metadata: [{key: \"version\"] ) {\nid\nname\n}\n}\n
All projects that have the version
tag, specifically version 8
:
Query by metadataquery projectsByMetadata {\nprojectsByMetadata(metadata: [{key: \"version\", value: \"8\"] ) {\nid\nname\n}\n}\n
"},{"location":"interacting/graphql-queries/#removing-metadata-on-a-project","title":"Removing metadata on a project","text":"Metadata can be removed on a per-key basis. Other metadata key/value pairs will persist.
Remove metadatamutation {\nremoveProjectMetadataByKey (\ninput: { id: 1, key: \"version\" }\n) {\nid\nmetadata\n}\n}\n
"},{"location":"interacting/graphql/","title":"GraphQL","text":""},{"location":"interacting/graphql/#connect-to-graphql-api","title":"Connect to GraphQL API","text":"API interactions in Lagoon are done via GraphQL. In order to authenticate to the API, you need a JWT (JSON Web Token), which will authenticate you against the API via your SSH public key.
To generate this token, use the remote shell via the token
command:
Get tokenssh -p [PORT] -t lagoon@[HOST] token\n
example.com connection string:
Get example.com tokenssh -p 22 -t lagoon@ssh.example.com token\n
This will return a long string, which is the JWT token.
We also need the URL of the API endpoint. Contact your Lagoon administrator for this.
For example.com this is https://api.example.com/graphql
.
Now we need a GraphQL client! Technically this is just HTTP, but we suggest GraphiQL. It has a nice UI that allows you to write GraphQL requests with autocomplete. Download, install and start it. [GraphiQL App]
Enter the API endpoint URL. Then click on \"Edit HTTP Headers\" and add a new Header:
- \"Header name\":
Authorization
- \"Header value\":
Bearer [jwt token]
(make sure that the JWT token has no spaces, that won't work)
Close the HTTP Header overlay (press ESC) and now you are ready to make your first GraphQL Request!
Enter this on the left window:
Get all projectsquery whatIsThere {\nallProjects {\nid\ngitUrl\nname\nbranches\npullrequests\nproductionEnvironment\nenvironments {\nname\nenvironmentType\n}\n}\n}\n
And press the \u25b6\ufe0f button (or press CTRL+ENTER).
If all went well, you should see your first GraphQL response.
"},{"location":"interacting/graphql/#mutations","title":"Mutations","text":"The Lagoon GraphQL API can not only display objects and create objects, but it also has the capability to update existing objects. All of Lagoon's GraphQL uses best practices.
Info
Mutation queries in GraphQL modify the data in the data store, and return a value. They can be used to insert, update, and delete data. Mutations are defined as a part of the schema._
Update the branches to deploy within a project:
Update deploy branchesmutation editProjectBranches {\nupdateProject(input:{id:109, patch:{branches:\"^(prod|stage|dev|update)$\"}}) {\nid\n}\n}\n
Update the production environment within a project:
Warning
This requires a redeploy in order for all changes to be reflected in the containers.
Update production environmentmutation editProjectProductionEnvironment {\nupdateProject(input:{id:109, patch:{productionEnvironment:\"prod\"}}) {\nid\n}\n}\n
You can also combine multiple changes into a single query:
Multiple changesmutation editProjectProductionEnvironmentAndBranches {\nupdateProject(input:{id:109, patch:{productionEnvironment:\"prod\", branches:\"^(prod|stage|dev|update)$\"}}) {\nid\n}\n}\n
"},{"location":"interacting/lagoon-ui/","title":"The Lagoon UI","text":"The Lagoon UI is your first point of call with Lagoon. If you have any issues with access, please contact your Lagoon administrator.
The UI allows you to complete a variety of tasks with your projects and organizations. Learn more about organizations here. and what you can do with organizations in the UI here.
"},{"location":"interacting/organizations/","title":"Working with Organizations in the UI","text":"Here are some step-by-step guides to help walk you through useful organization-related tasks in the Lagoon UI, working with groups, projects, users, and roles.
"},{"location":"interacting/organizations/#log-in-and-find-organizations","title":"Log in and find organizations","text":""},{"location":"interacting/organizations/#view-who-has-access-to-a-project","title":"View who has access to a project","text":""},{"location":"interacting/organizations/#add-user-to-group-with-role","title":"Add User to Group with Role","text":""},{"location":"interacting/organizations/#remove-a-user-from-a-group","title":"Remove a User from a Group","text":""},{"location":"interacting/organizations/#change-a-user-role","title":"Change a User Role","text":""},{"location":"interacting/organizations/#add-an-email-notification-to-a-project","title":"Add an Email Notification to a Project","text":""},{"location":"interacting/organizations/#add-a-group-to-a-project","title":"Add a Group to a Project","text":""},{"location":"interacting/organizations/#add-a-user-with-organization-owner-privileges","title":"Add a User with Organization Owner Privileges","text":""},{"location":"interacting/organizations/#create-a-new-project-add-a-group-and-create-a-production-environment","title":"Create a new Project, add a Group, and create a Production Environment","text":""},{"location":"interacting/rbac/","title":"Role-Based Access Control (RBAC)","text":"Version 1.0 of Lagoon changed how you access your projects! Access to your project is handled via groups, with projects assigned to one or multiple groups. Users are added to groups with a role. Groups can also be nested within sub-groups. This change provides a lot more flexibility and the possibility to recreate real world teams within Lagoon.
"},{"location":"interacting/rbac/#roles","title":"Roles","text":"When assigning a user to a group, you need to provide a group role for that user inside this group. Each one of the 5 current existing group roles gives the user different permissions to the group and projects assigned to the group. Here are the platform-wide roles and the group roles that are currently found in Lagoon:
"},{"location":"interacting/rbac/#platform-wide-roles","title":"Platform-Wide Roles","text":"Platform-wide roles are typically assigned to people that manage Lagoon.
"},{"location":"interacting/rbac/#platform-wide-owner","title":"Platform-Wide Owner","text":"The platform-wide owner has access to everything across all of Lagoon.
"},{"location":"interacting/rbac/#platform-wide-viewer","title":"Platform-Wide Viewer","text":"Similar to the platform-wide owner, except this role can only view.
"},{"location":"interacting/rbac/#platform-wide-organization-owner","title":"Platform-Wide Organization Owner","text":"The platform-wide organization owner role provides permission to create, update, delete, and all other permissions related to changes withing an organization, including existing organizations. It does not grant full platform-wide owner access, this means the ability to access and deploy projects still needs to be granted via a group within an organization.
This role also has the ability to view all the deploytargets (kubernetes clusters) assigned to Lagoon so that they can be assigned to an organization when it is being created.
NOTE
By default this role does not allow the creation of environments or the ability to trigger deployments within a project within an organization. They can add themselves to a group with a role that does grant them this permission.
"},{"location":"interacting/rbac/#organization-roles","title":"Organization Roles","text":""},{"location":"interacting/rbac/#organization-owner","title":"Organization Owner","text":"The organization owner role allows for the creation and deletion of projects, groups, and notifications within their organization.
They can add users to groups, change the roles of users within those groups, and associate projects with groups. This gives the organization owner the ability to clearly see who has access, and quickly add and remove users.
Organization owners now also have the ability to create Slack or other notifications directly, and associate those notifications with a project without requiring help from your Lagoon administrator.
Organization owners also have the ability to add and remove other owners, admins, or viewers to manage their organization.
NOTE
By default this role does not allow organization owners to create environments or trigger deployments within a project. They can add themselves to a group with a role that does grant them this permission. When creating a project, an organization owner can opt to be added as an owner of the project default group.
"},{"location":"interacting/rbac/#organization-admin","title":"Organization Admin","text":"The organization admin role is the same as organization owner, except that this role cannot make changes to the owners, admins, or viewers of the organization.
"},{"location":"interacting/rbac/#organization-viewer","title":"Organization Viewer","text":"The organization view has access to view the projects, group and user access, and notifications within their organization.
"},{"location":"interacting/rbac/#group-roles","title":"Group Roles","text":""},{"location":"interacting/rbac/#owner","title":"Owner","text":"The owner role can do everything within a group and its associated projects. They can add and manage users of a group. Be careful with this role, as it can delete projects and production environments!
IMPORTANT
If a user has this role in a group that is within the scope of an organization, this role's ability to manage that group's users is removed. Only organization owners or admins can manage groups and their users.
"},{"location":"interacting/rbac/#maintainer","title":"Maintainer","text":"The maintainer role can do everything within a group and its associated projects except deleting the project itself or the production environment. They can add and manage users of a group.
"},{"location":"interacting/rbac/#developer","title":"Developer","text":"The developer role has SSH access only to development environments. This role cannot access, update or delete the production environment. They can run a sync task with the production environment as a source, but not as the destination. Cannot manage users of a group.
IMPORTANT
This role does not prevent the deployment of the production environment as a deployment is triggered via a Git push! You need to make sure that your Git server prevents these users from pushing into the branch defined as production environment.
"},{"location":"interacting/rbac/#reporter","title":"Reporter","text":"The reporter role has view access only. They cannot access any environments via SSH or make modifications to them. They can run cache-clear tasks. This role is mostly used for stakeholders to have access to Lagoon UI and logging.
"},{"location":"interacting/rbac/#guest","title":"Guest","text":"The guest role has the same privileges as the reporter role listed above.
Here is a table that lists the roles and the access they have:
"},{"location":"interacting/rbac/#lagoon-100-rbac-permission-matrix","title":"Lagoon 1.0.0 RBAC Permission Matrix","text":"SelfGuestDeveloperMaintainerOwnerOrganization ViewerOrganization OwnerPlatform-Wide OwnerPlatform-Wide Admin Name Resource Scope Attributes addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID Name Resource Scope Attributes getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add Name Resource Scope Attributes addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID userCanSshToEnvironment environment ssh:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add Name Resource Scope Attributes deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID userCanSshToEnvironment environment ssh:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add Name Resource Scope Attributes deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add Name Resource Scope Attributes getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId Name Resource Scope Attributes getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId Name Resource Scope Attributes addOrUpdateEnvironmentStorage environment storage addNotificationSlack notification add updateNotificationSlack notification update deleteNotificationSlack notification delete addKubernetes kubernetes add updateKubernetes kubernetes update deleteKubernetes kubernetes delete getAllOpenshifts openshift viewAll getAllProjects project viewAll addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID allEnvironments environment viewAll getEnvironmentStorageMonthByEnvironmentId environment storage getEnvironmentHoursMonthByEnvironmentId environment storage getEnvironmentHitsMonthByEnvironmentId environment storage addOrUpdateEnvironmentStorage environment storage addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add getAllOrganizations organization viewAll addOrganization add viewAll updateOrganization update viewAll deleteOrganization delete viewAll getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId Name Resource Scope Attributes getEnvironmentStorageMonthByEnvironmentId environment storage getEnvironmentHoursMonthByEnvironmentId environment storage getEnvironmentHitsMonthByEnvironmentId environment storage getAllOpenshifts openshift viewAll addOrUpdateEnvironmentStorage environment storage addNotificationSlack notification add updateNotificationSlack notification update deleteNotificationSlack notification delete addKubernetes kubernetes add updateKubernetes kubernetes update deleteKubernetes kubernetes delete getAllProjects project viewAll addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add getAllOrganizations organization viewAll addOrganization add viewAll updateOrganization update viewAll deleteOrganization delete viewAll getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId"},{"location":"interacting/ssh/","title":"SSH","text":"Lagoon allows you to connect to your running containers via SSH. The containers themselves don't actually have an SSH server installed, but instead you connect via SSH to Lagoon, which then itself creates a remote shell connection via the Kubernetes API for you.
"},{"location":"interacting/ssh/#ensure-you-are-set-up-for-ssh-access","title":"Ensure you are set up for SSH access","text":""},{"location":"interacting/ssh/#generating-an-ssh-key","title":"Generating an SSH Key","text":"It is recommended to generate a separate SSH key for each device as opposed to sharing the same key between multiple computers. Instructions for generating an SSH key on various systems can be found below:
"},{"location":"interacting/ssh/#osx-mac","title":"OSX (Mac)","text":"Mac
"},{"location":"interacting/ssh/#linux-ubuntu","title":"Linux (Ubuntu)","text":"Linux
"},{"location":"interacting/ssh/#windows","title":"Windows","text":"Windows
"},{"location":"interacting/ssh/#ssh-agent","title":"SSH Agent","text":""},{"location":"interacting/ssh/#osx-mac_1","title":"OSX (Mac)","text":"OSX does not have its SSH agent configured to load configured SSH keys at startup, which can cause some headaches. You can find a handy guide to configuring this capability here: https://www.backarapper.com/add-ssh-keys-to-ssh-agent-on-startup-in-macos/
"},{"location":"interacting/ssh/#linux","title":"Linux","text":"Linux distributions vary in how they use the ssh-agent
. You can find a general guide here: https://www.ssh.com/academy/ssh/agent
"},{"location":"interacting/ssh/#windows_1","title":"Windows","text":"SSH key support in Windows has improved markedly as of recently, and is now supported natively. A handy guide to configuring the Windows 10 SSH agent can be found here: https://richardballard.co.uk/ssh-keys-on-windows-10/
"},{"location":"interacting/ssh/#uploading-ssh-keys","title":"Uploading SSH Keys","text":""},{"location":"interacting/ssh/#via-the-ui","title":"Via the UI","text":"You can upload your SSH key(s) through the UI. Log in as you normally would.
In the upper right hand corner, click on Settings:
You will then see a page where you can upload your SSH key(s), and it will show any uploaded keys. Paste your key into the text box, give it a name, and click \"Add.\" That's it! Add additional keys as needed.
"},{"location":"interacting/ssh/#via-command-line","title":"Via Command Line","text":"A general example of using the Lagoon API via GraphQL to add an SSH key to a user can be found here
"},{"location":"interacting/ssh/#ssh-into-a-pod","title":"SSH into a pod","text":"Note
The easiest way to SSH into a pod is to use the Lagoon CLI.
The instructions below only apply if you want to use the regular ssh
client, or other advanced use cases.
"},{"location":"interacting/ssh/#connection","title":"Connection","text":"Connecting is straightforward and follows the following pattern:
SSHssh [PROJECT-ENVIRONMENT-NAME]@[HOST]\n
HOST
- The remote shell SSH endpoint host (for example ssh.example.com
). PROJECT-ENVIRONMENT-NAME
- The environment you want to connect to. This is most commonly in the pattern PROJECTNAME-ENVIRONMENT
.
As an example:
SSH examplessh drupal-example-main@ssh.example.com\n
This will connect you to a cli
pod in the environment main
of the project drupal-example
.
"},{"location":"interacting/ssh/#podservice-container-definition","title":"Pod/Service, Container Definition","text":"By default the remote shell will try to connect you to the first container in the pod of the service type cli
. If you would like to connect to another service you can specify it using a service=[SERVICE-NAME]
argument to the SSH command.
Note
When you run the ssh
client command with just a USER@HOST
argument, it will assume that you want an interactive session and allocate a pty. This give you a regular shell environment where you can enter commands at a prompt, send interrupts using ^C
etc.
However, when you provide an argument to the ssh
client command, it assumes that you want a non-interactive session (e.g. just run a command and return) and will not allocate a pty.
So when providing an argument such as service=[SERVICE-NAME]
, if you want an interactive shell session you need to tell the ssh
client to not \"auto-detect\" if it needs a pty and just allocate one anyway using the -t
flag.
SSH to another service examplessh -t [PROJECT-ENVIRONMENT-NAME]@[HOST] service=[SERVICE-NAME]\n
If your pod/service contains multiple containers, Lagoon will connect you to the first defined container. You can also define the specific container to connect to via:
Define containerssh -t [PROJECT-ENVIRONMENT-NAME]@[HOST] service=[SERVICE-NAME] container=[CONTAINER-NAME]\n
For example, to connect to the php
container within the nginx
pod:
SSH to php containerssh -t drupal-example-main@ssh.example.com service=nginx container=php\n
"},{"location":"interacting/ssh/#copying-files","title":"Copying files","text":"The common case of copying a file into your cli
pod can be achieved with the usual SSH-compatible tools.
"},{"location":"interacting/ssh/#scp","title":"scp","text":"Copy file with scpscp [local_path] [project_name]-[environment_name]@ssh.example.com:[remote_path]\n
"},{"location":"interacting/ssh/#rsync","title":"rsync","text":"Copy files with rsyncrsync --rsh=ssh [local_path] [project_name]-[environment_name]@ssh.example.com:[remote_path]\n
"},{"location":"interacting/ssh/#tar","title":"tar","text":"Bashssh [project_name]-[environment_name]@ssh.example.com tar -zcf - [remote_path] | tar -zxf - -C /tmp/\n
"},{"location":"interacting/ssh/#specifying-non-cli-podservice","title":"Specifying non-CLI pod/service","text":"In the rare case that you need to specify a non-CLI service you can specify the service=...
and/or container=...
arguments in the copy command.
Piping tar
through the ssh
connection is the simplest method, and can be used to copy a file or directory using the usual tar
flags:
Bashssh [project_name]-[environment_name]@ssh.example.com service=solr tar -zcf - [remote_path] | tar -zxf - -C /tmp/\n
You can also use rsync
with a wrapper script to reorder the arguments to ssh
in the manner required by Lagoon's SSH service:
Bash#!/usr/bin/env sh\nsvc=$1 user=$3 host=$4\nshift 4\nexec ssh -l \"$user\" \"$host\" \"$svc\" \"$@\"\n
Put that in an executable shell script rsh.sh
and specify the service=...
in the rsync
command:
rsync to non-CLI podrsync --rsh=\"/path/to/rsh.sh service=cli\" /tmp/foo [project_name]-[environment_name]@ssh.example.com:/tmp/foo\n
The script could also be adjusted to also handle a container=...
argument.
"},{"location":"lagoonizing/","title":"Lagoonizing Your Existing Site","text":"Lagoonizing, or getting your existing site ready for the Lagoon platform, isn't generally difficult (depending on your site and setup), but does have a handful of steps. We've put together a stepo-by-step guide to make this process easier for you.
"},{"location":"lagoonizing/#requirements","title":"Requirements","text":"Make sure your system meets the requirements for working with Lagoon locally.
"},{"location":"lagoonizing/#local-development-environment","title":"Local Development Environment","text":"Set up your local development environment. You can choose between Pygmy and Lando.
"},{"location":"lagoonizing/#command-line-and-git","title":"Command Line and Git","text":"You'll need to interact with Lagoon via the command line, and you'll need Git as well, so make sure they're ready to go.
"},{"location":"lagoonizing/#command-line","title":"Command line","text":"You\u2019ll need to use a command line terminal for some tasks. Whatever you want to use is fine, including your operating system default tool. Here are a few options:
- iTerm2 (Mac)
- PowerShell (Windows)
- Fish (Mac, Windows, Linux)
- Tabby (Mac, Windows, Linux)
"},{"location":"lagoonizing/#install-git","title":"Install Git","text":"If you don\u2019t have one already, you\u2019ll need a Git client of some kind. Command line, GUI, whatever works for you (our examples will use the command line, FYI). Here are a few options:
- Installing Git (Mac, Windows, Linux)
- SourceTree (Mac, Windows)
- GitHub Desktop (Mac, Windows)
- GitKraken (Mac, Windows, Linux - free for public repositories)
"},{"location":"lagoonizing/#what-your-lagoon-administrator-needs","title":"What your Lagoon administrator Needs","text":"The person setting up your Lagoon, usually your Lagoon administrator will need some information, which is detailed here.
"},{"location":"lagoonizing/#configure-webhooks","title":"Configure Webhooks","text":"Next, you'll need to configure webhooks for your Git respository. You can find those instructions here.
"},{"location":"lagoonizing/#docker-composeyml","title":"docker-compose.yml
","text":"The docker-compose.yml
file is used by Lagoon to:
- Learn which services/containers should be deployed.
- Define how the images for the containers are built.
- Define additional configurations like persistent volumes.
You can read more about it in our docker-compose.yml
documentation.
This is the first of two files we\u2019ll create and set up to get your site ready for Lagoon.
Docker-compose
(the tool) is very strict in validating the content of the YAML file, so we can only do configuration within labels of a service definition.
Warning
Lagoon only reads the labels, service names, image names and build definitions from a docker-compose.yml
file. Definitions like: ports, environment variables, volumes, networks, links, users, etc. are IGNORED. This is intentional, as the docker-compose
file is there to define your local environment configuration. Lagoon learns from the lagoon.type
the type of service you are deploying and from that knows about ports, networks and any additional configuration that this service might need.
Let\u2019s walk through setting up some basic services. In this example, we\u2019ll set up NGINX, PHP, and MariaDB, which you\u2019ll need for many systems like Drupal, Laravel, and other content management systems.
Here is a straightforward example of a docker-compose.yml
file for Drupal:
docker-compose.ymlversion: '2.3'\nx-lagoon-project:\n# Lagoon project name (leave `&lagoon-project` when you edit this)\n&lagoon-project drupal-example\nx-volumes:\n&default-volumes\n# Define all volumes you would like to have real-time mounted into the docker containers\nvolumes:\n- .:/app:delegated\nx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# Route that should be used locally, if you are using pygmy, this route *must* end with .docker.amazee.io\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n# Uncomment if you would like to have the system behave like in production\n#LAGOON_ENVIRONMENT_TYPE: production\n# Uncomment to enable xdebug and then restart via `docker compose up -d`\n#XDEBUG_ENABLE: \"true\"\nx-user:\n&default-user\n# The default user under which the containers should run. Change this if you are on linux and run with a user other than id `1000`.\nuser: '1000'\nservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.name: nginx\nlagoon.persistent: /app/web/sites/default/files/\nmariadb:\nimage: uselagoon/mariadb-10.11-drupal\nlabels:\nlagoon.type: mariadb\n
Now let\u2019s break down what each of these options mean.
"},{"location":"lagoonizing/#basic-settings","title":"Basic Settings","text":"x-lagoon-project
: This is the machine name of your project, define it here. We\u2019ll use \u201cdrupal-example.\u201d
x-volumes
: This tells Lagoon what to mount into the container. Your web application lives in /app
, but you can add or change this if needed.
x-environment
:
- Here you can set your local development URL. If you are using Pygmy, it must end with
.docker.amazee.io.
- If you want to exactly mimic the production environment, uncomment
LAGOON_ENVIRONMENT_TYPE: production
. - If you want to enable x-debug, uncomment
DEBUG_ENABLE: \"true\"
.
x-user
: You are unlikely to need to change this, unless you are on Linux and would like to run with a user other than 1000.
"},{"location":"lagoonizing/#services","title":"services
","text":"This defines all the services you want to deploy. Unfortunately, docker-compose
calls them services, even though they are actually defining the containers. Going forward we'll be calling them services, and throughout this documentation.
The name of the service (nginx
, php
, and mariadb
in the example above) is used by Lagoon as the name of the Kubernetes pod (yet another term - again, we'll be calling them services) that is generated, plus any additional Kubernetes objects that are created based on the defined lagoon.type
. This could be things like services, routes, persistent storage, etc.
"},{"location":"lagoonizing/#docker-images","title":"Docker Images","text":"If you want Lagoon to build a Dockerfile for your service during every deployment, you can define it here:
build
context
- The build context path that should be passed on into the Docker
build
command.
dockerfile
: - Location and name of the Dockerfile that should be built.
Warning
Lagoon does NOT support the short version of build: <Dockerfile>
and will fail if it finds such a definition.
image
- If you don't need to build a Dockerfile and just want to use an existing Dockerfile, define it via
image
.
In our example, we\u2019re giving the path of the current directory. NGINX is set to build nginx.dockerfile
, and PHP, php.dockerfile
. MariaDB is using an existing image at uselagoon/mariadb-10.11-drupal
. You can learn more about our Docker images here.
"},{"location":"lagoonizing/#types","title":"Types","text":"Lagoon needs to know what type of service you are deploying in order to configure the correct Kubernetes objects.
This is done via the lagoon.type
label. There are many different types to choose from. Read our public documentation about Service Types to see all of them and their additional configuration possibilities.
You might have noticed that in our example, both the PHP and NGINX services have their type defined as nginx-php-persistent
. That\u2019s because they are what\u2019s called multi-container pods.
"},{"location":"lagoonizing/#multi-container-pods","title":"Multi-Container Pods","text":"Kubernetes doesn\u2019t deploy plain containers. Instead, it deploys pods, with each one or more containers. Usually Lagoon creates a single pod with a container inside for each defined docker-compose
service. For some cases, we need to put two containers inside a single pod, as these containers are so dependent on each other that they should always stay together. An example for such a situation is the PHP and NGINX containers that both contain PHP code of a web application like Drupal, as we\u2019ve done above.
For these cases, it is possible to tell Lagoon which services should stay together. This is done in the following way (remember that we are calling containers services):
- Define both services with a
lagoon.type
that expects two services (in the example this is nginx-php-persistent
defined on the NGINX and PHP services). - Link the second service with the first one, setting the label
lagoon.name
of the second one to match the first one. (in the example this is done by setting lagoon.name: nginx
).
This will cause Lagoon to realize that the nginx
and php
services are combined in a pod that will be called nginx
.
Lagoon still needs to understand which of the two services is the actual individual service type (nginx
and php
in this case). It does this by searching for the service names of the matching service types. nginx-php-persistent
expects one service with the name nginx
and one with php
in the docker-compose.yml
.
If for any reason you want to use different names for the services, or you need more than one pod with the type nginx-php-persistent
, there is an additional label lagoon.deployment.servicetype
, which can be used to define the actual service type.
Here\u2019s an example showing how multi-container pods can be set up in more detail:
docker-compose.ymlnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # If this isn't present, Lagoon will use the container name, which in this case is nginx.\nlagoon.deployment.servicetype: nginx\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # We want this service to be part of the nginx pod in Lagoon.\nlagoon.deployment.servicetype: php\n
There is quite a bit more you can do in docker-compose.yml, but setting up your services is the most important part. Check out our documentation on docker-compose.yml
to learn what else you can do.
"},{"location":"lagoonizing/#lagoonyml","title":".lagoon.yml
","text":"The .lagoon.yml
file is the central file for setting up your project. It contains configuration in order to do the following:
- Define routes for accessing your sites.
- Define pre-rollout tasks.
- Define post-rollout tasks.
- Set up SSL certificates.
- Add cron jobs for environments.
The .lagoon.yml
file must be created and placed at the root of your Git repository.
Here is an example .lagoon.yml
file showing a variety of configuration options for a Drupal site that we\u2019ll go over:
.lagoon.ymldocker-compose-yaml: docker-compose.yml\nenvironment_variables:\ngit_sha: 'true'\ntasks:\npre-rollout:\n- run:\nname: drush sql-dump\ncommand: mkdir -p /app/web/sites/default/files/private/ && drush sql-dump --ordered-dump --gzip --result-file=/app/web/sites/default/files/private/pre-deploy-dump.sql.gz\nservice: cli\npost-rollout:\n- run:\nname: drush cim\ncommand: drush -y cim\nservice: cli\nshell: bash\n- run:\nname: drush cr\ncommand: drush -y cr\nservice: cli\nroutes:\ninsecure: Redirect\nenvironments:\nmain:\nroutes:\n- nginx:\n- example.com\n- example.net\n- \"www.example.com\":\ntls-acme: 'true'\ninsecure: Redirect\nhsts: max-age=31536000\n- \"example.ch\":\nAnnotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\nstaging:\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\n
"},{"location":"lagoonizing/#general-settings","title":"General Settings","text":""},{"location":"lagoonizing/#docker-compose-yaml","title":"docker-compose-yaml
","text":"This file tells the build script which docker-compose
YAML file should be used, in order to learn which services and containers should be deployed. This defaults to docker-compose.yml
, but could be used for a specific Lagoon docker-compose
YAML file if you need something like that.
"},{"location":"lagoonizing/#environment_variablesgit_sha","title":"environment_variables.git_sha
","text":"This setting allows you to enable injecting the deployed Git SHA into your project as an environment variable. By default this is disabled. Setting the value to true
sets the SHA as the environment variable LAGOON_GIT_SHA
.
"},{"location":"lagoonizing/#tasks","title":"Tasks","text":"There are different type of tasks you can define, and they differ when exactly they are executed in a build flow:
"},{"location":"lagoonizing/#pre-rollout-tasks-pre_rolloutirun","title":"Pre-Rollout Tasks - pre_rollout.[i].run
","text":"The tasks defined as pre_rollout
tasks will run against your project after the new images have been built successfully, and before the project gets altered in any way. This feature enables you, for example, to create a database dump before the rollout is running, as in our example above. This will make it easier to roll back in case of an issue with the rollout.
"},{"location":"lagoonizing/#post-rollout-tasks-post_rolloutirun","title":"Post-Rollout Tasks - post_rollout.[i].run
","text":"Here you can specify tasks which need to run against your project, after:
- All images have been successfully built.
- All containers are updated with the new images.
- All running containers have passed their readiness checks.
Common uses for post_rollout
tasks include running drush updb
, drush cim
, or clearing various caches. In the above example, we run drush cim
and drush cr
.
name
- The name is an arbitrary label for making it easier to identify each task in the logs.
command
- Here you specify what command should run. These are run in the
WORKDIR
of each container. For Lagoon images this is /app
, keep this in mind if you need to cd
into a specific location to run your task.
service
- The service in which to run the task. If following our drupal-example, this will be the CLI container, as it has all your site code, files, and a connection to the database. Typically you do not need to change this.
shell
Which shell should be used to run the task. By default sh
is used, but if the container also has other shells (like bash), you can define it here. This is useful if you want to run some small if/else bash scripts within the post-rollouts. (see the example above for how to write a script with multiple lines).
"},{"location":"lagoonizing/#routes","title":"Routes","text":""},{"location":"lagoonizing/#routesautogenerateenabled","title":"routes.autogenerate.enabled
","text":"This allows for the disabling of the automatically created routes altogether. This does NOT disable the custom routes per environment, see below for more on that.
"},{"location":"lagoonizing/#routesautogenerateinsecure","title":"routes.autogenerate.insecure
","text":"This allows you to define the behavior of the automatically created routes. This does NOT configure the custom routes per environment, see below for more on that. This is the option we\u2019re using in the example above, with insecure: Redirect
.
The following options are allowed:
Allow
- Sets up routes for both HTTP and HTTPS (this is the default).
Redirect
- Will redirect any HTTP requests to HTTPS.
None
- A route for HTTP will not be created, and no redirect.
"},{"location":"lagoonizing/#environments","title":"Environments","text":"Environment names match your deployed branches or pull requests. This allows each environment to have a different configuration. In this example, we have the environments main and staging.
"},{"location":"lagoonizing/#environmentsnameroutes","title":"environments.[name].routes
","text":"In the route section, we identify the domain names to which the environment will respond. It is typical to only have an environment with routes specified for your production environment. All environments receive a generated route, but sometimes there is a need for a non-production environment to have its own domain name. You can specify it here, and then add that domain with your DNS provider as a CNAME to the generated route name (these routes publish in deploy messages).
The first element after the environment is the target service, NGINX in our example. This is how we identify which service incoming requests will be sent to.
The simplest route is the example.com
example in our sample .lagoon.yml
above - you can see it has no additional configuration. This will assume that you want a Let's Encrypt certificate for your route and no redirect from HTTPS to HTTP.
"},{"location":"lagoonizing/#annotations","title":"Annotations","text":"Info
Route/Ingress annotations are only supported by projects that deploy into clusters that run nginx-ingress controllers! Check with your Lagoon administrator if this is supported.
Annotations can be a YAML map of annotations supported by the nginx-ingress
controller, this is specifically useful for easy redirects:
In this example any requests to example.ch
will be redirected to https://www.example.ch
with keeping folders or query parameters intact:
(example.com/folder?query -> https://www.example.ch/folder?query)
.lagoon.yml example - \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\n
You can of course also redirect to any other URL not hosted on Lagoon. This will direct requests to example.de
to https://www.google.com
:
.lagoon.yml example - \"example.de\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.google.com\n
"},{"location":"lagoonizing/#ssl-configuration-tls-acme","title":"SSL Configuration - tls-acme
","text":"tls-acme : \u2018true\u2019
- Tells Lagoon to issue a Let's Encrypt certificate for that route. This is the default.
- If you don't want a Let's Encrypt, set this to
tls-acme: \u2018false\u2019
.
insecure
- Can be set to
None
, Allow
or Redirect
. - Allow simply sets up both routes for HTTP and HTTPS (this is the default).
Redirect
will redirect any HTTP requests to HTTPS.
None
- Will mean a route for HTTP will not be created, and no redirect will take place.
Hsts
- Can be set to a value of
max-age=31536000;includeSubDomains;preload
. - Ensure there are no spaces and no other parameters included.
- Only the
max-age
parameter is required. The required max-age parameter indicates the length of time, in seconds, the HSTS policy is in effect for.
Info
If you plan to switch from a SSL certificate signed by a Certificate Authority (CA) to a Let's Encrypt certificate, it's best to get in touch with your Lagoon administrator to oversee the transition.
"},{"location":"lagoonizing/#environmentsnametypes","title":"environments.[name].types
","text":"The Lagoon build process checks the lagoon.type
label from the docker-compose.yml
file in order to learn what type of service should be deployed (read more about them in the documentation of docker-compose.yml).
Sometimes you might want to override the type just for a single environment, and not for all of them.
"},{"location":"lagoonizing/#service-name-service-type","title":"`service-name: service-type","text":" service-name`` is the name of the service from
docker-compose.yml` you would like to override. service-type
the type of the service you would like to use in your override.
For example, if you want a MariaDB-Galera high availability database for your production environment called main - this is what we\u2019re doing in our example file:
.lagoon.yml exampleenvironments:\nmain:\ntypes:\nmariadb: mariadb-galera\n
"},{"location":"lagoonizing/#environmentsnametemplates","title":"environments.[name].templates
","text":"The Lagoon build process checks the lagoon.template
label from the docker-compose.yml
file in order to check if the service needs a custom template file (read more about them in the documentation of docker-compose.yml).
Sometimes you might want to override the template just for a single environment, and not for all of them:
"},{"location":"lagoonizing/#service-name-template-file","title":"service-name: template-file
","text":" service-name
is the name of the service from docker-compose.yml
you would like to override. template-file
is the path and name of the template to use for this service in this environment.
.lagoon.yml exampleenvironments:\nmain:\ntemplates:\nmariadb: mariadb.main.deployment.yml\n
"},{"location":"lagoonizing/#environmentsnamerollouts","title":"environments.[name].rollouts
","text":"The Lagoon build process checks the lagoon.rollout
label from the docker-compose.yml
file in order to check if the service needs a special rollout type (read more about them in the documentation of docker-compose.yml).
Sometimes you might want to override the rollout type just for a single environment, especially if you also overwrote the template type for the environment:
"},{"location":"lagoonizing/#service-name-rollout-type","title":"service-name: rollout-type
","text":" service-name
is the name of the service from docker-compose.yml
you would like to override. rollout-type
is the type of rollout. See the documentation of docker-compose.yml for possible values.
.lagoon.yml exampleenvironments:\nmain:\nrollouts:\nmariadb: statefulset\n
"},{"location":"lagoonizing/#cron-jobs-environmentsnamecronjobs","title":"Cron jobs - environments.[name].cronjobs
","text":"As most of the time it is not desirable to run the same cron jobs across all environments, you must explicitly define which jobs you want to run for each environment. In our example, we\u2019re creating a drush cron job that will run once per hour.
name
- Just a friendly name for identifying what the cron job will do.
schedule
- The schedule for executing the cron job. This follows the standard convention of cron. If you're not sure about the syntax, Crontab Generator can help.
- You can specify
M
for the minute, and your cron job will run once per hour at a random minute (the same minute each hour), or M/15
to run it every 15 mins, but with a random offset from the hour (like 6, 21, 36, 51). - You can specify
H
for the hour, and your cron job will run once per day at a random hour (the same hour every day), or H(2-4)
to run it once per day within the hours of 2-4.
command
- The command to execute. Like the tasks, this executes in the
WORKDIR
of the service. For Lagoon images, this is /app
.
service
- Which service of your project to run the command in. For most projects, this is the CLI service.
There is quite a bit more you can do in .lagoon.yml
. Check out our documentation on .lagoon.yml
to find out.
"},{"location":"lagoonizing/#drupal-specific-setup","title":"Drupal-specific Setup","text":"If you\u2019re moving a Drupal site to Lagoon, there are a few Drupal-specific tasks to complete in order to get everything all set up.
"},{"location":"lagoonizing/#settings-files","title":"Settings Files","text":"The next step is to update your settings files. Lagoon uses a set of environment-specific settings files which use environment variables, so no sensitive information is stored in these files, and they are all safe to commit. We have a variety of different example projects in our example repository - if you\u2019re starting from scratch, we encourage using one of them. If you\u2019re not, just pick a similar one and copy the relevant settings files. Check out the documentation on environment variables for more information on how to use them.
Copy in the settings files from the example repository, and then review it to remove configuration for services that your site isn\u2019t using (for example, not all sites use Solr or Redis). If you need to override configuration for a specific environment type (things like disabling caching on development environments), additional settings files can be set up (there\u2019s even some in the example repository already), and are loaded in the following order:
settings.php all.settings.php\n all.services.yml\n production.settings.php\n production.services.yml\n development.settings.php\n development.services.yml\n settings.local.php\n services.local.yml\n
"},{"location":"lagoonizing/#update-your-gitignore-settings","title":"Update Your .gitignore
Settings","text":"Make sure your .gitignore
will allow you to commit the settings files. Drupal is shipped with sites/*/settings*.php
and sites/*/services*.yml
in .gitignore.
You can remove that, as with Lagoon we don't ever keep sensitive information in the Git repository.
"},{"location":"lagoonizing/#note-about-webroot-in-drupal","title":"Note About Webroot in Drupal","text":"Unfortunately the Drupal community has not decided on a standardized webroot folder name. Some projects put Drupal within /web
, and others within /docroot
or somewhere else. The Lagoon Drupal settings files assume that your Drupal is within /web
, if this is different for your Drupal installation, please adapt the files accordingly.
"},{"location":"lagoonizing/#build-your-images","title":"Build Your Images","text":"First, we need to build the defined images:
build your imagesdocker compose build\n
This may take several minutes and you\u2019ll get a long response, which should look something like this.
This will tell docker-compose
to build the Docker images for all containers that have a build:
definition in docker-compose.yml
. Usually for Drupal this includes cli
, nginx
and php
. We do this because we want to run specific build commands (like composer install
) or inject specific environment variables (like WEBROOT
) into the images.
Usually building is not needed every time you edit your Drupal code (as the code is mounted into the containers from your host), but rebuilding does not hurt. Plus Lagoon will build the exact same Docker images during a deployment, so you check that your build will also work during a deployment by just running docker compose build
again.
"},{"location":"lagoonizing/#start-containers","title":"Start Containers","text":"Now that the images are built, we can start the containers:
start the containersdocker compose up -d\n
You will get a response something like this:
containers started\u279c lagoon-test git:(main) docker compose up -d\nRecreating lagoon-test_cli_1 ... done\nStarting lagoon-test_redis_1 ... done\nStarting lagoon-test_solr_1 ... done\nStarting lagoon-test_mariadb_1 ... done\nRecreating lagoon-test_php_1 ... done\nRecreating lagoon-test_nginx_1 ... done\nRecreating lagoon-test_varnish_1 ... done\n
This will bring up all containers. After the command is done, you can check with docker compose ps
to ensure that they are all fully up and have not crashed. That response should look something like this:
view running containers\u279c lagoon-test git:(main) docker compose ps\nName Command State Ports\n----------------------------------------------------------------------------------------\nlagoon-test_cli_1 /sbin/tini -- /lagoon/entr ... Up 9000/tcp\nlagoon-test_mariadb_1 /sbin/tini -- /lagoon/entr ... Up 0.0.0.0:32768->3306/tcp\nlagoon-test_nginx_1 /sbin/tini -- /lagoon/entr ... Up 8080/tcp\nlagoon-test_php_1 /sbin/tini -- /lagoon/entr ... Up 9000/tcp\nlagoon-test_redis_1 /sbin/tini -- /lagoon/entr ... Up 6379/tcp\nlagoon-test_solr_1 /sbin/tini -- /lagoon/entr ... Up 0.0.0.0:32769->8983/tcp\n
If there is a problem, check the logs with docker compose logs -f [servicename]
.
"},{"location":"lagoonizing/#re-run-composer-install-for-composer-projects-only","title":"Re-Run `composer install`` (for Composer projects only)","text":"If you\u2019re running a Drupal 8+ project, you should be using Composer, and you\u2019ll need to get all dependencies downloaded and installed. Connect into the cli container and run composer install:
re-run composer installdocker compose exec cli bash\n[drupal-example]cli-drupal:/app$ composer install\n
This might sound weird, as there was already a composer install
executed during the build step, so here\u2019s why we do this again:
- In order to be able to edit files on the host and have them immediately available in the container, the default
docker-composer.yml
mounts the whole folder into the containers (this happens with .:/app:delegated
in the volumes
section). This also means that all dependencies installed during the Docker build are overwritten with the files on the host. - Locally, you probably want access to dependencies defined as
require-dev
in composer.json
, while on a production deployment they would just use unnecessary space. So we run composer install --no-dev
in the Dockerfile and composer install
manually.
If everything went well, open the LAGOON_ROUTE
defined in docker-compose.yml
(for example http://drupal.docker.amazee.io
) and you should be greeted by a nice Drupal error. Don't worry - that's okay right now, the most important thing is that it tries to load a Drupal site.
If you get a 500 or similar error, make sure that everything is loaded properly with Composer.
"},{"location":"lagoonizing/#check-status-and-install-drupal","title":"Check Status and Install Drupal","text":"Finally it's time to install Drupal, but just before that we want to make sure everything works. We suggest using Drush for that with drush status
:
run drush statusdocker compose exec cli bash\n[drupal-example]cli-drupal:/app$ drush status\n
The above command should return something like the following:
drush status results[drupal-example]cli-drupal:/app$ drush status\n[notice] Missing database table: key_value\nDrupal version : 8.6.1\nSite URI : http://drupal.docker.amazee.io\nDatabase driver : mysql\nDatabase hostname : mariadb\nDatabase port : 3306\nDatabase username : drupal\nDatabase name : drupal\nPHP binary : /usr/local/bin/php\nPHP config : /usr/local/etc/php/php.ini\nPHP OS : Linux\nDrush script : /app/vendor/drush/drush/drush\nDrush version : 9.4.0\nDrush temp : /tmp\nDrush configs : /home/.drush/drush.yml\n /app/vendor/drush/drush/drush.yml\nDrupal root : /app/web\nSite path : sites/default\n
You may have to tell pygmy about your public key before the next step. If you get an error like Permission denied (publickey)
, check out the documentation here: pygmy - adding ssh keys.
Now it\u2019s time to install Drupal (if instead you would like to import an existing SQL File, please skip to the next step, but we suggest you install a clean Drupal in the beginning to be sure everything works.)
run drush si
[drupal-example]cli-drupal:/app$ drush site-install\n
This should output something like: drush si results[drupal-example]cli-drupal:/app$ drush site-install\nYou are about to DROP all tables in your 'drupal' database. Do you want to continue? (y/n): y\nStarting Drupal installation. This takes a while. Consider using the --notify global option.\nInstallation complete. User name: admin User password: arbZJekcqh\nCongratulations, you installed Drupal!\n
Now you can visit the URL defined in LAGOON_ROUTE
and you should see a fresh and cleanly installed Drupal - Congrats!
"},{"location":"lagoonizing/#import-existing-database-dump","title":"Import existing Database Dump","text":"If you have an already existing Drupal site you probably want to import its database over to your local site. There are many different ways on how to create a database dump, if your current hosting provider has Drush installed, you can use the following:
drush sql-dump[your-existing-site]$ drush sql-dump --result-file=dump.sql\nDatabase dump saved to dump.sql [success]\n
Now you have a dump.sql
file that contains your whole database. Copy this file into your local Git repository and connect to the CLI, you should see the file in there:
here's our dump file
[drupal-example] docker compose exec cli bash\n[drupal-example]cli-drupal:/app$ ls -l dump.sql\n-rw-r--r-- 1 root root 5281 Dec 19 12:46 dump.sql\n
Now you can import the dump after dropping the current database (still connected to the cli): dump existing db and import dump file[drupal-example]cli-drupal:/app$ drush sql-drop\nDo you really want to drop all tables in the database drupal? (y/n): y\n[drupal-example]cli-drupal:/app$ drush sql-cli < dump.sql\n
"},{"location":"lagoonizing/#drupal-files-directory","title":"Drupal files directory","text":"A Drupal site also consists of the files directory. To migrate your files from your existing site, just add the files into the correct folder (probably web/sites/default/files
, sites/default/files
or something similar). Remember what you've set as your webroot - it may not be the same for all projects.
"},{"location":"lagoonizing/#deploy","title":"Deploy","text":"If you\u2019ve done everything in this guide, and your Lagoon administrator has everything set up, you are now ready to deploy your site!
If you are deploying a Drupal site, follow this deployment guide.
For all other deployments, follow this deployment guide.
"},{"location":"logging/kibana-examples/","title":"Kibana Examples","text":"Have you seen the Kibana getting started video and are now ready to work with logs? We are here to help! This page will give you examples of Kibana queries you can use. This is not a Kibana 101 class, but it can help you understand some of what you can do in Kibana.
Ready to get started? Good!
Note
Make sure that you have selected your tenant before starting! You can do that by on the Tenant
icon on the left-hand menu. Once you have selected your tenant, click on the Discover
icon again to get started.
"},{"location":"logging/kibana-examples/#router-logs","title":"Router Logs","text":"Below you'll find examples for two common log requests:
- Viewing the total number of hits/requests to your site.
- Viewing the number of hits/requests from a specific IP address.
"},{"location":"logging/kibana-examples/#total-number-of-hitsrequests-to-your-site","title":"Total Number of hits/requests to your site","text":" - Let's start Kibana up and select
Discovery
(#1 in screen shot below) - Then the router logs for your project(#2).
- From there, we will filter some of this information down a bit. Let's focus on our main production environment.
-
In the search bar (#3), enter:
openshift_project: \"name of your production project\"
- This will show you all the hits to your production environment in the given time frame.
- You can change the time frame in the upper right hand corner (#4).
- Clicking on the arrow next to the entry (#5) will expand it and show you all the information that was captured.
- You can add any of those fields to the window by hovering over them and clicking add on the left hand side (#6).
- You can also further filter your results by using the search bar.
"},{"location":"logging/kibana-examples/#number-of-hitsrequests-from-a-specific-ip-address","title":"Number of hits/requests from a specific IP address","text":"Running the query above will give you a general look at all the traffic to your site, but what if you want to narrow in on a specific IP address? Perhaps you want to see how many times an IP has hit your site and what specific pages they were looking at. This next query should help.
We are going to start off with the same query as above, but we are going to add a couple of things.
- First, add the following fields:
client_ip
and http_request
. - This will show you a list of all IP addresses and the page they requested. Here is what we see for the amazee.io website:
That looks good, but what if we wanted to just show requests from a specific IP address? You can filter for the address by adding it to your search criteria.
- We are going to add:
AND client_ip: \"IP address\"
. - That will filter the results to just show you hits from that specific IP address, and the page they were requesting. Here is what it looks like for our amazee.io website:
"},{"location":"logging/kibana-examples/#container-logs","title":"Container Logs","text":"Container logs will show you all stout
and sterr
messages for your specific container and project. We are going to show an example for getting logs from a specific container and finding specific error numbers in that container.
"},{"location":"logging/kibana-examples/#logs-from-a-container","title":"Logs from a container","text":"Want to see the logs for a specific container (php, nginx, etc)? This section will help! Let's focus on looking at NGINX logs.
- We start by opening up Kibana and selecting Discover (#1 in the screen shot below).
- From there, we select the container logs for our project (#2).
- Let's go to the search bar (#3) and enter:
kubernetes.container_name: \"nginx\"
- This will display all NGINX logs for our project.
- Clicking on the arrow next to an entry (#4) will expand that entry and show you all of the information it gathered.
- Let's add the message field and the level field to the view. You can do that by clicking on \"Add\" on the left hand side (#5).
- You can change the time frame in the upper right hand corner of the screen (#6), in the example below I'm looking at logs for the last 4 hours.
"},{"location":"logging/kibana-examples/#specific-errors-in-logs","title":"Specific errors in logs","text":"Want to see how many 500 Internal Server errors you've had in your NGINX container? You can do that by changing the search query. If you search:
kubernetes.container_name: \"nginx\" AND message: \"500\"
That will only display 500 error messages in the NGINX container. You can search for any error message in any container that you would like!
"},{"location":"logging/kibana-examples/#visualization","title":"Visualization","text":"Kibana will also give you the option to create visualizations or graphs. We are going to create a chart to show number of hits/requests in a month using the same query we used above.
- Click on Visualize on the left hand side of Kibana.
- Click on the blue plus sign.
- For this example, we are going to select a Vertical Bar chart.
- Select the router logs for your project.
- Click on X-Axis under Buckets and select Date Histogram, with the interval set to daily
- Success!! You should now see a nice bar graph showing your daily traffic.
Note
Make sure that you select an appropriate time frame for the data in the upper right hand corner.
Here is an example of a daily hits visualization chart:
Also note that you can save your visualizations (and searches)! That will make it even faster to access them in the future. And because each account has their own Kibana Tenant, no searches or visualizations are shared with another account.
"},{"location":"logging/kibana-examples/#troubleshooting","title":"Troubleshooting","text":""},{"location":"logging/logging/","title":"Logging","text":"Lagoon provides access to the following logs via Kibana:
- Logs from the Kubernetes Routers, including every single HTTP and HTTPS request with:
- Source IP
- URL
- Path
- HTTP verb
- Cookies
- Headers
- User agent
- Project
- Container name
- Response size
- Response time
- Logs from containers:
stdout
and stderr
messages - Container name
- Project
- Lagoon logs:
- Webhooks parsing
- Build logs
- Build errors
- Any other Lagoon related logs
- Application logs:
- For Drupal: install the Lagoon Logs module in order to receive logs from Drupal Watchdog.
- For Laravel: install the Lagoon Logs for Laravel package.
- For other workloads:
- Send logs to
udp://application-logs.lagoon.svc:5140
- Ensure logs are structured as JSON encoded objects.
- Ensure the
type
field contains the name of the Kubernetes namespace ($LAGOON_PROJECT-$LAGOON_ENVIRONMENT
).
To access the logs, please contact your Lagoon administrator to get the URL for the Kibana route.
Each Lagoon user account has their own login and will see the logs only for the projects to which they have access.
Each Lagoon user account also has their own Kibana Tenant, which means no saved searches or visualizations are shared with another account.
If you would like to know more about how to use Kibana: https://www.elastic.co/webinars/getting-started-kibana.
"},{"location":"other-tools/client-libraries/","title":"Lagoon client libraries","text":"If you're interested in developing tooling for the Lagoon ecosystem, there are a few libraries that you may find helpful.
"},{"location":"other-tools/client-libraries/#golang","title":"Golang","text":""},{"location":"other-tools/client-libraries/#machinery","title":"Machinery","text":"The Machinery library is the most actively supported and developed of the tooling libraries for Lagoon. It is a central store of all the basic operations used across all our golang based tool types, primarily -- but not exclusively -- for API interaction.
https://github.com/uselagoon/machinery/
"},{"location":"other-tools/client-libraries/#php","title":"PHP","text":"If you're looking for PHP integration, the php-sdk may give you a good jumping off point for your work.
https://github.com/uselagoon/lagoon-php-sdk
"},{"location":"other-tools/client-libraries/#third-party-libraries","title":"Third Party Libraries","text":""},{"location":"other-tools/client-libraries/#ansible","title":"Ansible","text":"A frequently updated and expanding Ansible library for interacting with Lagoon.
https://github.com/salsadigitalauorg/lagoon_ansible_collection
"},{"location":"other-tools/sail/","title":"Sail:onLagoon","text":"Sail:onLagoon is a Laravel extension that simplifies the process of Lagoonizing Laravel sites that are already using Laravel Sail to generate their docker-compose setup. This extension provides additional features and configurations tailored for Lagoon environments.
Check out Sail:onLagoon on GitHub: https://github.com/uselagoon/sailonlagoon
Here's a quickstart step by step to get you started:
Watch a short video demonstrating how quickly you can get a Laravel site ready for Lagoon:
"},{"location":"releases/2.10.0/","title":"2.10.0","text":""},{"location":"releases/2.10.0/#release-links","title":"Release Links","text":" - lagoon v2.10.0
- lagoon-ui core-v2.10.0
- lagoon-build-deploy core-v2.10.0
- lagoon-core chart 1.12.0
"},{"location":"releases/2.10.0/#upgrades","title":"Upgrades","text":""},{"location":"releases/2.10.0/#upgrade-to-v29x-first","title":"Upgrade to v2.9.x first","text":"You must upgrade to Lagoon v2.9.x before upgrading to v2.10.0. Ensure you read all the linked release notes.
"},{"location":"releases/2.10.0/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.11.0/","title":"2.11.0","text":""},{"location":"releases/2.11.0/#release-links","title":"Release Links","text":" - lagoon v2.11.0
- lagoon-ui core-v2.11.0
- lagoon-build-deploy core-v2.11.0
- lagoon-core chart 1.16.0
"},{"location":"releases/2.11.0/#upgrades","title":"Upgrades","text":""},{"location":"releases/2.11.0/#upgrade-to-v210x-first","title":"Upgrade to v2.10.x first","text":"You must upgrade to Lagoon v2.10.x before upgrading to v2.11.0. Ensure you read all the linked release notes.
"},{"location":"releases/2.11.0/#essential-database-backups","title":"Essential database backups","text":"Ensure you have a local backup of the api-db and keycloak-db before you commence this update, as there are complex migrations taking place in preparation for the v2.12.0 release.
"},{"location":"releases/2.11.0/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.11.0/#storage-calculator-removed-from-core","title":"Storage Calculator removed from core","text":"The storage-calculator service was removed from core in this release, and the service is now included in lagoon-remote.
"},{"location":"releases/2.12.0/","title":"2.12.0","text":""},{"location":"releases/2.12.0/#release-links","title":"Release Links","text":" - lagoon v2.12.0
- lagoon-ui core-v2.12.0
- lagoon-build-deploy core-v2.12.0
- lagoon-core chart 1.23.0
"},{"location":"releases/2.12.0/#upgrades","title":"Upgrades","text":""},{"location":"releases/2.12.0/#essential-database-backups","title":"Essential database backups","text":"Ensure you have a local backup of the api-db and keycloak-db before you commence this update. The update of these databases from MariaDB 10.4 to 10.6 should update seamlessly. In the event it does not go smoothly, the image cannot be rolled back owing to incompatible storage engines. You will need to drop the db and restore the backup to get running again.
"},{"location":"releases/2.12.0/#kubernetes-121-minimum-requirement","title":"Kubernetes 1.21 minimum requirement","text":"The minimum supported version of Kubernetes is 1.21 as of this release.
"},{"location":"releases/2.12.0/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.13.0/","title":"2.13.0","text":""},{"location":"releases/2.13.0/#release-links","title":"Release Links","text":" - lagoon v2.13.0
- lagoon-ui core-v2.13.0
- lagoon-build-deploy core-v2.13.0
- lagoon-core chart 1.25.0
"},{"location":"releases/2.13.0/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.13.0/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.13.0/#monitoring-urls","title":"monitoring-urls","text":"The storage and use of monitoring-urls provided in lagoon.yml has been removed from the API.
"},{"location":"releases/2.14.0/","title":"2.14.0","text":""},{"location":"releases/2.14.0/#upgrades","title":"Upgrades","text":"This tag was never released, and the 2.14.2 release should be installed instead.
"},{"location":"releases/2.14.0/#deprecations","title":"Deprecations","text":"This tag was never released, and the 2.14.2 release should be installed instead.
"},{"location":"releases/2.14.1/","title":"2.14.1","text":""},{"location":"releases/2.14.1/#release-links","title":"Release Links","text":" - lagoon v2.14.2
- lagoon-ui core-v2.14.2
- lagoon-build-deploy core-v2.14.2
- lagoon-core chart 1.28.0
- lagoon-remote chart 0.76.0
"},{"location":"releases/2.14.1/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.14.2 release is recommended to be installed instead.
"},{"location":"releases/2.14.1/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.14.2 release is recommended to be installed instead.
"},{"location":"releases/2.14.1/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.14.2 release is recommended to be installed instead.
"},{"location":"releases/2.14.2/","title":"2.14.2","text":""},{"location":"releases/2.14.2/#release-links","title":"Release Links","text":" - lagoon v2.14.2
- lagoon-ui core-v2.14.2
- lagoon-build-deploy core-v2.14.2
- lagoon-core chart 1.28.0
- lagoon-remote chart 0.76.0
"},{"location":"releases/2.14.2/#release-notes","title":"Release Notes","text":"This release resolved a couple of minor issues discovered after releasing the 2.14.0 and 2.14.1 releases.
"},{"location":"releases/2.14.2/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.14.2/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.15.0/","title":"2.15.0","text":""},{"location":"releases/2.15.0/#release-links","title":"Release Links","text":" - lagoon v2.15.0
- lagoon-ui core-v2.15.0
- lagoon-build-deploy core-v2.15.0
- lagoon-core chart 1.29.0
"},{"location":"releases/2.15.0/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.0/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.0/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.1/","title":"2.15.1","text":""},{"location":"releases/2.15.1/#release-links","title":"Release Links","text":" - lagoon v2.15.1
- lagoon-ui core-v2.15.1
- lagoon-build-deploy core-v2.15.1
- lagoon-core chart 1.31.0
"},{"location":"releases/2.15.1/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.1/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.1/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.2/","title":"2.15.2","text":""},{"location":"releases/2.15.2/#release-links","title":"Release Links","text":" - lagoon v2.15.2
- lagoon-ui core-v2.15.2
- lagoon-build-deploy core-v2.15.2
- lagoon-core chart 1.34.0
"},{"location":"releases/2.15.2/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.2/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.2/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.3/","title":"2.15.3","text":""},{"location":"releases/2.15.3/#release-links","title":"Release Links","text":" - lagoon v2.15.3
- lagoon-ui core-v2.15.3
- lagoon-build-deploy core-v2.15.3
- lagoon-core chart 1.35.0
"},{"location":"releases/2.15.3/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.3/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.3/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.4/","title":"2.15.4","text":""},{"location":"releases/2.15.4/#release-links","title":"Release Links","text":" - lagoon v2.15.4
- lagoon-ui core-v2.15.4
- lagoon-build-deploy core-v2.15.4
- lagoon-core chart 1.36.0
"},{"location":"releases/2.15.4/#release-notes","title":"Release Notes","text":"This release resolved a couple of minor issues discovered after releasing the 2.15.0, 2.15.1, 2.15.2, and 2.15.3 releases.
"},{"location":"releases/2.15.4/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.15.4/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.16.0/","title":"2.16.0","text":""},{"location":"releases/2.16.0/#release-links","title":"Release Links","text":" - lagoon v2.16.0
- lagoon-ui core-v2.16.0
- lagoon-build-deploy core-v2.16.0
- lagoon-core chart 1.37.0
"},{"location":"releases/2.16.0/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.16.0/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.17.0/","title":"2.17.0","text":""},{"location":"releases/2.17.0/#release-links","title":"Release Links","text":" - lagoon v2.17.0
- lagoon-ui core-v2.17.0
- lagoon-build-deploy core-v2.17.0
- lagoon-core chart 1.41.0
- lagoon-remote chart 0.87.0
"},{"location":"releases/2.17.0/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.17.0/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.17.0/#activestandby-task-image","title":"activestandby task image","text":" - This release introduces a new active/standby task image that does not require the use of the dioscuri controller. Dioscuri is deprecated and will eventually be removed from the
lagoon-remote
helm chart. If you use active/standby functionality in your clusters, you should upgrade to lagoon v2.17.0 and update your remote clusters to the version of the lagoon-remote
helm chart the in the 2.17.0 release.
"},{"location":"releases/2.17.0/#api-harbor-support","title":"API Harbor support","text":" - Support for Harbor in the API will be removed in a future release. If you currently have your core installation with Harbor support, you should move to using the integration within lagoon-remote instead. See the documentation here and read the section about Harbor.
- Removed in 2.20.1
"},{"location":"releases/2.17.0/#harbor-21-and-earlier-support","title":"Harbor 2.1 and earlier support","text":" - Support for Harbor 2.1.x (chart version 1.5.x) and older in
lagoon-remote
will be removed in a future release. You should consider upgrading Harbor to a newer version (currently Lagoon supports up to v2.9.x (chart version 1.13.x)), following any recommended upgrade paths from Harbor.
"},{"location":"releases/2.18.0/","title":"2.18.0","text":""},{"location":"releases/2.18.0/#release-links","title":"Release Links","text":" - lagoon v2.18.0
- lagoon-ui core-v2.18.0
- lagoon-build-deploy core-v2.18.0
- lagoon-core chart 1.42.0
- lagoon-remote chart 0.88.0
"},{"location":"releases/2.18.0/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.0/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.0/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.1/","title":"2.18.1","text":""},{"location":"releases/2.18.1/#release-links","title":"Release Links","text":" - lagoon v2.18.1
- lagoon-core chart 1.43.0
"},{"location":"releases/2.18.1/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.1/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.1/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.2/","title":"2.18.2","text":""},{"location":"releases/2.18.2/#release-links","title":"Release Links","text":" - lagoon v2.18.2
- lagoon-core chart 1.44.0
"},{"location":"releases/2.18.2/#release-notes","title":"Release Notes","text":"This release resolved a couple of minor issues discovered after releasing the 2.18.0 and 2.18.1 release.
"},{"location":"releases/2.18.2/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.18.2/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.18.2/#in-built-drupal-tasks","title":"In-built Drupal Tasks","text":" - The standard drupal based tasks that Lagoon ships with (Drush ....) have been flagged as deprecated and should not be used anymore. These will need to be replaced with custom tasks. Example replacement tasks will be provided prior to their removal.
"},{"location":"releases/2.18.2/#setenvironmentservices","title":"setEnvironmentServices","text":" - This release introduces a deprecation of the
setEnvironmentServices
mutation to updated services for an environment, it is being replaced with addOrUpdateEnvironmentService
and deleteEnvironmentService
. This is because the type is being refactored to support additional information, and eventually additional functionality. For now, the actions-handler service will still support the older setEnvironmentServices
for backwards compatibility for a short period to allow older versions of lagoon-remote
to still work, but a new version of lagoon-remote
will be available that will no longer provides the payload that the actions-handler uses.
"},{"location":"releases/2.18.2/#core-registry-variable","title":"Core Registry variable","text":" - The value for
registry
which was previously required by the lagoon-core
chart is no longer required. If you are using this, you will need to add it under the new unauthenticatedRegistry
setting when installing lagoon-remote
in the lagoon-build-deploy
section of your values file. If you aren't using an actual registry and have the example disabled-only-use-harbor-via-deploy-controller.invalid
value, then you do not need to do anything except you can now remove the registry
setting from your core values file.
"},{"location":"releases/2.18.2/#bytesused","title":"bytesUsed","text":" - The environment storage return field named
bytesUsed
is deprecated. The actual value stored is kibibytes
. A new return field called kibUsed
exists and should be used, the returned data is the same and both fields are still returned. bytesUsed
will be removed in a future release, make any adjustments now to use kibUsed
. This will be a breaking change in a future release.
"},{"location":"releases/2.18.2/#addorupdateenvironmentstorage","title":"addOrUpdateEnvironmentStorage","text":" addOrUpdateEnvironmentStorage
is deprecated, addOrUpdateStorageOnEnvironment
is the replacement to use as it supports the updated input value for kibUsed
. addOrUpdateEnvironmentStorage
will be completely removed in a future release.
"},{"location":"releases/2.18.2/#activesystems","title":"activesystems","text":" - The ability to configure projects to use different subsystems for managing deployments/tasks has been removed. Setting any values for the
activeSystems*
fields on the project will have no effect and the fields will be removed in a future release.
"},{"location":"releases/2.19.0/","title":"2.19.0","text":""},{"location":"releases/2.19.0/#release-links","title":"Release Links","text":" - lagoon v2.19.0
- lagoon-ui core-v2.19.0
- lagoon-build-deploy core-v2.19.0
- lagoon-core chart 1.45.0
- lagoon-remote chart 0.89.0
"},{"location":"releases/2.19.0/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.19.0/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.20.0/","title":"2.20.0","text":""},{"location":"releases/2.20.0/#release-links","title":"Release Links","text":" - lagoon v2.20.0
- lagoon-ui core-v2.20.0
- lagoon-build-deploy core-v2.20.0
- lagoon-core chart 1.46.0
- lagoon-remote chart 0.92.0
"},{"location":"releases/2.20.0/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.20.1 release is recommended to be installed instead.
"},{"location":"releases/2.20.0/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.20.1 release is recommended to be installed instead.
"},{"location":"releases/2.20.0/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.20.1 release is recommended to be installed instead.
"},{"location":"releases/2.20.1/","title":"2.20.1","text":""},{"location":"releases/2.20.1/#release-links","title":"Release Links","text":" - lagoon v2.20.1
- lagoon-ui core-v2.20.1
- lagoon-build-deploy core-v2.20.1
- lagoon-core chart 1.47.0
"},{"location":"releases/2.20.1/#release-notes","title":"Release Notes","text":"This release resolved a couple of minor issues discovered after releasing the 2.20.0 release.
"},{"location":"releases/2.20.1/#upgrades","title":"Upgrades","text":"This release contains changes that you may need to be aware of. Read carefully before you upgrade.
"},{"location":"releases/2.20.1/#harbor-21x-and-earlier","title":"Harbor 2.1.x and earlier","text":" - This release removes the support for Harbor from the Lagoon API. If you're still using the Harbor support in the API, you should NOT upgrade until you have configured your
lagoon-remote
installations to use Harbor instead. See the documentation here and read the section about Harbor. - We also recommend that if you're using Harbor version 2.1.x and earlier, that you upgrade this as soon as possible. Follow any instructions that Harbor recommend for upgrading. As of this release,
lagoon-remote
has been tested up to Harbor version 2.10.0 (helm chart version 1.14.0). Lagoon will stop supporting Harbor 2.1.x and earlier in a future release.
"},{"location":"releases/2.20.1/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.20.1/#kubernetes-minimum-supported-version-is-now-125-tested-up-to-130","title":"Kubernetes minimum supported version is now 1.25, tested up to 1.30","text":" - The minimum supported version of Kubernetes is now 1.25, owing to deprecations in some core API functions, and the availability of upstream charts. The v2.20.0 release will not install into an earlier version of Kubernetes, so any Kubernetes upgrades will need to be performed prior to the Lagoon update.
"},{"location":"releases/2.20.1/#deleted-backups","title":"Deleted Backups","text":" - When a backup is deleted via the webhook, it will now actually be removed from the API rather than being flagged as deleted. The
Backup
type field deleted
is deprecated, and will be removed in a future release. Additionally, includeDeleted
if requested when querying backups will not change the result as there will be no deleted backups to include.
"},{"location":"releases/2.20.1/#api-harbor-support","title":"API Harbor support","text":" - In 2.17.0 we announced that Harbor support in the API was deprecated. This release of Lagoon removes all support for Harbor from the API. See upgrade notes above.
"},{"location":"releases/2.20.1/#deleteallremoveall-mutations-removed","title":"DeleteAll/RemoveAll mutations removed","text":" - This release removes all
DeleteAllX
and RemoveAllX
from the API. These were only ever meant for local development and are no longer relevant.
"},{"location":"releases/2.20.1/#error-handling-on-deployment-triggers","title":"Error handling on deployment triggers","text":" - In the past, if triggering a deployment using any of the
DeployEnvironmentX
mutations and an error was encountered, the API would not return an actual error, just a string that contained the error. This was changed in this release to actually return an error now. As this is a change in behaviour, it may impact any users that may have previously been capturing the string error text and parsing it to check for errors.
"},{"location":"releases/2.21.0/","title":"2.21.0","text":""},{"location":"releases/2.21.0/#release-links","title":"Release Links","text":" - lagoon v2.21.0
- lagoon-ui core-v2.21.0
- lagoon-build-deploy core-v2.21.0
- lagoon-core chart 1.48.0
- lagoon-remote chart 0.94.0
"},{"location":"releases/2.21.0/#release-notes","title":"Release Notes","text":"This release is a standard Lagoon release.
"},{"location":"releases/2.21.0/#upgrades","title":"Upgrades","text":""},{"location":"releases/2.21.0/#upgrade-to-v220x-first","title":"Upgrade to v2.20.x first","text":"You must upgrade to Lagoon v2.20.x before upgrading to v2.21.0. Ensure you read all the linked release notes. The upgrade to v2.20.x is to ensure that the functionality used to enable the feature flags in the broker service is present prior to being called as a pre-upgrade job in v2.22.x
"},{"location":"releases/2.21.0/#keycloak-24","title":"Keycloak 24","text":"This release includes an update to Keycloak 24. This should be a seamless experience for all users.
"},{"location":"releases/2.21.0/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.21.0/#organization-notification-graphql-commands","title":"Organization & Notification GraphQL commands","text":"Some of the GraphQL commands used to modify organization user roles have changed. The API schema documents them. Some of the GRaphQL command inputs used to interact with Notifications may have changed. The API schema documents them.
"},{"location":"releases/2.22.0/","title":"2.22.0","text":""},{"location":"releases/2.22.0/#release-links","title":"Release Links","text":" - lagoon v2.22.0
- lagoon-ui core-v2.22.0
- lagoon-build-deploy core-v2.22.0
- lagoon-core chart 1.49.0
- lagoon-remote chart 0.95.0
"},{"location":"releases/2.22.0/#release-notes","title":"Release Notes","text":"This release is a standard Lagoon release. There are changes required for teams managing their own Lagoon installations (core and remote).
"},{"location":"releases/2.22.0/#upgrades","title":"Upgrades","text":"Self-managed Lagoon installs will need to be aware of three changes in lagoon-core and lagoon-remote. Please read the following sections carefully to ensure you update components that apply to your installation correctly.
"},{"location":"releases/2.22.0/#lagoon-custom-resource-definitions-crds","title":"Lagoon Custom Resource Definitions (CRDs)","text":"We introduced a new API version of the Lagoon Build and Task CRDs in https://github.com/uselagoon/lagoon-charts/pull/688. You must upgrade these after installing the latest version of lagoon-remote
. Failure to update the CRDs will result in the remote controller failing to start, or builds and tasks failing.
If you're installing the version defined in the top of these release notes, you can use the following to upgrade the CRDs to the version required.
Text Onlyhelm show crds lagoon/lagoon-build-deploy --version 0.30.2 | kubectl apply -f -\n
Alternatively, see the README in the lagoon-build-deploy chart for further examples on how to update the Lagoon Build and Task CRDs.
"},{"location":"releases/2.22.0/#dockerhost-statefulset","title":"DockerHost StatefulSet","text":"To help with improving or distributing build loads, we converted the docker-host from a Deployment
to a StatefulSet
in https://github.com/uselagoon/lagoon-charts/pull/687. This allows the docker-host to be scaled.
This will provide the ability to load-balance docker build workloads. It will result in a new docker-host cache being created the first time any replica starts up (including on the first deployment), this may result in the first few builds being less-optimized whilst the cache rebuilds. This StatefulSet must only be scaled up or down via helm, and not directly in kubernetes otherwise the load-balancing of the workloads will not be able to be fully utilised.
"},{"location":"releases/2.22.0/#nats-ssh-portal","title":"NATS / SSH Portal","text":"The version of NATS used by Lagoon was updated in https://github.com/uselagoon/lagoon-charts/pull/602. If your installation of Lagoon utilises SSH portals and NATS, you need to be aware of changes to the structure of the NATS values. This upgrade requires minimal config structure changes in your lagoon-core and lagoon-remote values files. There are no changes to the certs or keys, just the naming of the YAML items. See the pullrequest description for more information.
"},{"location":"releases/2.22.0/#deprecations","title":"Deprecations","text":"tbc
"},{"location":"releases/policy/","title":"Policy","text":""},{"location":"releases/policy/#upgrade-policy","title":"Upgrade Policy","text":"Our general policy is that you should upgrade to the latest version of each minor version before you upgrade to the latest version.
You should check all upgrade requirements and deprecation notices for all versions as you upgrade.
An example of this policy is as follows
- Currently installed v2.13.0, planning to upgrade to v2.16.0
- Upgrade to v2.14.2 (the latest 2.14.x release)
- Upgrade to v2.15.4 (the latest 2.15.x release)
- Upgrade to v2.16.0
We may, from time to time, provide additional context to the upgrades listed in these pages.
"},{"location":"releases/policy/#deprecation-policy","title":"Deprecation Policy","text":"As Lagoon continues to evolve, we occasionally need to replace, rename or retire existing processes, tools or configuration. Where this may impact a user's processes or procedures, we intend to outline a timeframe to allow any necessary changes to be made.
Deprecations will be tracked by the release they are announced in, and then updated when the actual deprecation occurs. All deprecations should provide a rough timeline (in months or releases).
We may, from time to time, provide additional context to the deprecations listed in these pages.
"},{"location":"resources/faq/","title":"FAQ","text":""},{"location":"resources/faq/#i-found-a-bug","title":"I found a bug! \ud83d\udc1e","text":"If you've found a bug, please raise a GitHub issue for it, or contact your Lagoon administrator.
"},{"location":"resources/faq/#i-found-a-security-issue","title":"I found a security issue! \ud83d\udc1e","text":"If you've found a security issue, please send your findings to security@amazee.io. Please DO NOT file a GitHub issue for it.
"},{"location":"resources/faq/#im-interested-in-amazeeios-hosting-services-with-lagoon","title":"I'm interested in amazee.io's hosting services with Lagoon","text":"That's great news! You can contact them via email at sales@amazee.io.
"},{"location":"resources/faq/#how-can-i-restore-a-backup","title":"How can I restore a backup?","text":"We have backups available for files and databases, typically taken every 24 hours at most. These backups are stored offsite.
We keep up to 7 daily backups and 4 weekly backups.
If you ever need to recover or restore a backup, feel free to submit a ticket or send us a message via chat and we will be more than happy to help!
"},{"location":"resources/faq/#how-can-i-download-a-database-dump","title":"How can I download a database dump?","text":""},{"location":"resources/faq/#im-getting-an-invalid-ssl-certificate-error","title":"I'm getting an invalid SSL certificate error","text":"The first thing to try is what is listed in our documentation about SSL.
If you follow those steps, and you are still seeing an error, please submit a ticket or send us a message on chat and we can help resolve this for you.
"},{"location":"resources/faq/#im-getting-an-array-error-when-running-a-drush-command","title":"I'm getting an \"Array\" error when running a Drush command","text":"This was a bug that was prevalent in Drush versions 8.1.16 and 8.1.17. There error would look something like this:
BashThe command could not be executed successfully (returned: Array [error]\n(\n[default] => Array\n(\n[default] => Array\n(\n[driver] => mysql\n[prefix] => Array\n(\n[default] =>\n)\n, code: 0)\nError: no database record could be found for source @main [error]\n
Upgrading Drush should fix that for you. We strongly suggest that you use version 8.3 or newer. Once Drush is upgraded the command should work!
"},{"location":"resources/faq/#im-seeing-an-internal-server-error-when-trying-to-access-my-kibana-logs","title":"I'm seeing an Internal Server Error when trying to access my Kibana logs","text":"No need to panic! This usually happens when a tenant has not been selected. To fix this, follow these steps:
- Go to \"Tenants\" on the left-hand menu of Kibana.
- Click on your tenant name.
- You'll see a pop-up window that says: \"Tenant Change\" and the name of your tenant.
- Go back to the \"Discover\" tab and attempt your query again.
You should now be able to see your logs.
"},{"location":"resources/faq/#im-unable-to-ssh-into-any-environment","title":"I'm unable to SSH into any environment","text":"I'm unable to SSH into any environment. I'm getting the following message: Permission denied (publickey)
. When I run drush sa
no aliases are returned.
This typically indicates an issue with Pygmy. You can find our troubleshooting docs for Pygmy here: https://pygmystack.github.io/pygmy/troubleshooting/
"},{"location":"resources/faq/#how-can-i-check-the-status-of-a-build","title":"How can I check the status of a build?","text":""},{"location":"resources/faq/#how-do-i-add-a-cron-job","title":"How do I add a cron job?","text":""},{"location":"resources/faq/#how-do-i-add-a-new-route","title":"How do I add a new route?","text":""},{"location":"resources/faq/#how-do-i-remove-a-route","title":"How do I remove a route?","text":"Lagoon will detect the removal of routes from your .lagoon.yml
during a deployment. Check the deployment logs to confirm that the routes were removed automatically or for instructions on how to remove them.
"},{"location":"resources/faq/#when-i-run-pygmy-status-no-keys-are-loaded","title":"When I run pygmy status
, no keys are loaded","text":"You'll need to load your SSH key into pygmy. Here's how: https://pygmystack.github.io/pygmy/ssh_agent
"},{"location":"resources/faq/#when-i-run-drush-sa-no-aliases-are-returned","title":"When I run drush sa
no aliases are returned","text":"This typically indicates an issue with Pygmy. You can find our troubleshooting docs for Pygmy here: https://pygmystack.github.io/pygmy/troubleshooting
"},{"location":"resources/faq/#my-deployments-fail-with-a-message-saying-drush-needs-a-more-functional-environment","title":"My deployments fail with a message saying: \"drush needs a more functional environment\"","text":"This usually means that there is no database uploaded to the project. Follow our step-by-step guide to add a database to your project.
"},{"location":"resources/faq/#when-i-start-pygmy-i-see-an-address-already-in-use-error","title":"When I start Pygmy I see an \"address already in use\" error?","text":"Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use Error: failed to start containers: amazeeio-haproxy
This is a known error! Most of the time it means that there is already something running on port 80. You can find the culprit by running the following query:
netstat -ltnp | grep -w ':80'\n
That should list everything running on port 80. Kill the process running on port 80. Once port 80 is freed up, Pygmy should start up with no further errors.
"},{"location":"resources/faq/#how-can-i-change-branchespr-environmentsproduction-on-my-project","title":"How can I change branches/PR environments/production on my project?","text":"You can make that change using the Lagoon API! You can find the documentation for this change in our GraphQL documentation.
"},{"location":"resources/faq/#how-do-i-add-a-redirect","title":"How do I add a redirect?","text":""},{"location":"resources/faq/#how-can-i-add-new-users-and-ssh-keys-to-my-projectgroup","title":"How can I add new users (and SSH keys) to my project/group?","text":"This can be done via the Lagoon API. You can find the steps documentation for this change in our GraphQL documentation.
"},{"location":"resources/faq/#can-an-environment-be-completely-deleted-to-roll-out-large-code-changes-to-my-project","title":"Can an environment be completely deleted to roll out large code changes to my project?","text":"Environments are fully built from scratch at each deploy, dropping the old database and files and pushing your code would result in a fresh clean build, Don\u2019t forget to re-sync!
It is possible to delete an environment via GraphQL. You can find the instructions in our GraphQL documentation.
"},{"location":"resources/faq/#how-do-i-get-my-new-environment-variable-to-show-up","title":"How do I get my new environment variable to show up?","text":"Once you've added a runtime environment variable to your production environment via GraphQL, then all you need to do a deploy in order to get your change to show up on your environment.
"},{"location":"resources/faq/#how-do-i-sftp-files-tofrom-my-lagoon-environment","title":"How do I SFTP files to/from my Lagoon environment?","text":"For cloud hosting customers, you can SFTP to your Lagoon environment by using the following information:
- Server Hostname:
ssh.example.com
- Port: 22
- Username: <Project-Environment-Name>
Your username is going to be the name of the environment you are connecting to, most commonly in the pattern PROJECTNAME-ENVIRONMENT
.
You may also be interested in checking out our new Lagoon Sync tool, which you can read about here: https://github.com/uselagoon/lagoon-sync
Authentication also happens automatically via SSH Public & Private Key Authentication.
"},{"location":"resources/faq/#i-dont-want-to-use-lets-encrypt-i-have-an-ssl-certificate-i-would-like-to-install","title":"I don't want to use Let's Encrypt. I have an SSL certificate I would like to install","text":"We can definitely help with that. Once you have your own SSL certificate, feel free to submit a ticket or send us a message via chat and we will be more than happy to help! You will need to send us the following files:
- Certificate key (.key)
- Certificate file (.crt)
- Intermediate certificates (.crt)
Also, you will need to set the tls-acme
option in .lagoon.yml
to false.
"},{"location":"resources/faq/#is-it-possible-to-mount-an-external-volume-efsfusesmbetc-into-lagoon","title":"Is it possible to mount an external volume (EFS/Fuse/SMB/etc) into Lagoon?","text":"Mounting an external volume would need to be handled completely inside of your containers, Lagoon does not provide a provision for this type of connection as part of the platform.
A developer can handle this by installing the necessary packages into the container (via the Dockerfile), and ensuring the volume mount is connected via a pre- or post-rollout task.
"},{"location":"resources/faq/#is-there-a-way-to-stop-a-lagoon-build","title":"Is there a way to stop a Lagoon build?","text":"If you have a build that has been running for a long time, and want to stop it, you will need to reach out to support. Currently, builds can only be stopped by users with admin access to the cluster.
"},{"location":"resources/faq/#we-installed-the-elasticsearchsolr-service-on-our-website-how-can-we-get-access-to-the-ui-port-92008983-from-a-browser","title":"We installed the Elasticsearch\\Solr service on our website. How can we get access to the UI (port 9200/8983) from a browser?","text":"We suggest only exposing web services (NGINX/Varnish/Node.js) in your deployed environments. Locally, you can get the ports mapped for these services by checking docker compose ps
, and then load http://localhost
:<port>
in your browser.
"},{"location":"resources/faq/#i-have-a-question-that-isnt-answered-here","title":"I have a question that isn't answered here","text":"You should contact your Lagoon administrator for any hosting-related enquiries, but you can also reach out to the Lagoon team via Discord or email at uselagoon@amazee.io.
"},{"location":"resources/glossary/","title":"Glossary","text":"Term Definition Access Mode Controls how a persistent volume can be accessed. Active/Standby Active/Standby deployments, also known as blue/green deployments, are a way to seamlessly switch over your production content. Ansible An open-source suite of software tools that enables infrastructure as code. AWS Amazon Web Services Amazon S3 Glacier A secure and inexpensive S3 storage for long-term backup. BitBucket Git hosting owned by Atlassian, which integrates with their tools. Brew Homebrew is a package manager for OSX. CA A Certificate Authority is a trusted entity that issues Secure Sockets Layer (SSL) certificates. CDN Content Delivery Network - distributes content via caching CI Continuous Integration CIDR Classess Inter-Domain Routing - a method of assigning IP addresses CLI Command Line Interface Cluster A unified group of servers or VMs, distributed and managed together, which serves one entity to ensure high availability, load balancing, and scalability. CMS Content Management System Cron job The cron command-line utility is a job scheduler on Unix-like operating systems. Users who set up and maintain software environments use cron to schedule jobs, also known as cron jobs, to run periodically at fixed times, dates, or intervals. Composer A package manager DDEV A Docker-based PHP development environment popular in the Drupal community. DDoS Distributed Denial of Service DNS Domain Name System Docker A container engine using Linux features and automating application deployment. Docker Compose A tool for defining and running Docker applications via YAML files. Drupal Open-source Content Management System Drush A command line shell for Drupal. EC2 Amazon Elastic Compute Cloud Elasticsearch An open-source search engine. It provides a distributed, multi-tenant-capable full-text search engine with a web interface and schema-free JSON documents. Galera A generic synchronous multi-master replication library for transactional databases. Git A free and open-source distributed version control system. Git Hash/SHA A generated string that identifies each commit. Uses the SHA-1 algorithm GitHub A proprietary version control hosting company using Git. A subsidiary of Microsoft, it offers all of the distributed version control and source code management functionality of Git as well as additional features. GitLab A web-based Git repository manager with CI capabilities. Grafana An open-source analytics and monitoring solution. GraphQL An open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. Harbor An open source container image registry that secures images with role-based access control, scans images for vulnerabilities, and signs images as trusted. Helm A package manager for Kubernetes, it helps you manage Kubernetes applications. Helm Charts Helm Charts help you define, install, and upgrade even the most complex Kubernetes application. HTTP HyperText Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. IAM AWS Identity and Access Management (IAM) is a web service that helps you securely control access to AWS resources. IDE An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools, and a debugger. Ingress controller An Ingress controller is a specialized load balancer for Kubernetes (and other containerized) environments. IPTables A command line utility for configuring Linux kernel firewall. Jenkins An open-source automation server. JWT JSON Web Token. k3s A highly available, certified Kubernetes distribution. k3d k3d is a lightweight wrapper to run k3s in Docker. k8s Numeronym for Kubernetes (K + 8 letters + s) k8up K8up is a backup operator that will handle storage and app backups on a k8s/OpenShift cluster. Keycloak An open-source identity and access management system. Kibana An open-source data visualization plugin for Elasticsearch. It provides visualization capabilities on top of the content indexed on an Elasticsearch cluster. KinD Kubernetes in Docker - a tool for running local Kubernetes clusters using Docker container \u201cnodes\u201d. Kind was primarily designed for testing Kubernetes itself, but may be used for local development or CI. kubectl The Kubernetes command-line tool which allows you to run commands against Kubernetes clusters. Kubernetes An open-source system for automating deployment, scaling, and management of containerized applications. Lagoon An open-source application delivery platform for Kubernetes. Lagoonize Configuration changes to allow your app to run on Lagoon. Lando A free, open source, cross-platform, local development environment and DevOps tool built on Docker. Laravel A free, open-source PHP web framework, following the model\u2013view\u2013controller (MVC) architectural pattern and based on Symfony. Let's Encrypt Aa free, automated, and open certificate authority (CA). MariaDB A community-developed, commercially supported fork of the MySQL relational database management system, intended to remain free and open-source software under the GNU General Public License. Master node A single node in the cluster on which a collection of processes which manage the cluster state are running. Microservice The practice of breaking up an application into a series of smaller, more specialized parts, each of which communicate with one another across common interfaces such as APIs and REST interfaces like HTTP MongoDB MongoDB is a cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schema. Multi-Tenant A single instance of software runs on a server and serves multiple tenants - a tenant is a group of users who share common access with privileges to access the software instance. The software is designed to provide each tenant a share of the resources. MVC Model-view-controller - an architectural pattern that separates an application into three main logical components: the model, the view, and the controller. Each of these components are built to handle specific development aspects of an application. MySQL MySQL is an open-source relational database management system. NGINX NGINX is a web server which can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. Node Single EC2 instance (AWS virtual machine) Node.js An open-source, cross-platform, JavaScript runtime environment that executes JavaScript code outside of a browser. Open source A type of computer software in which source code is released under a license in which the copyright holder grants users the rights to study, change, and distribute the software to anyone and for any purpose. Open-source software may be developed in a collaborative public manner. OpenSearch A community-driven, Apache 2.0-licensed open source search and analytics suite that makes it easy to ingest, search, visualize, and analyze data. OpenShift Container application platform that brings Docker and Kubernetes to the enterprise. PHP PHP (Personal Home Page) is a general-purpose programming language originally designed for web development. PhpStorm A development tool (IDE) for PHP and web projects. Pod A group of containers that are deployed together on the same host. The basic unit that Kubernetes works with. PostgreSQL A free and open-source relational database management system emphasizing extensibility and technical standards compliance. Public/Private Key Public-key encryption is a cryptographic system that uses two keys -- a public key known to everyone and a private or secret key known only to the recipient of the message. Puppet An open-source software configuration management and deployment tool. PV PersistentVolume - a piece of storage in the cluster that has been provisioned by an administrator or dynamically provisioned using Storage Classes. PVC Persistent Volume Claim - a request for storage by a user. Pygmy A Lagoon flavored local development system. Python Python is an open-source, interpreted, high-level, general-purpose programming language. RabbitMQ An open-source message-broker software. RBAC Role-Based Access Control RDS Relational Database Service Redis An open source, in-memory data store used as a database, cache, streaming engine, and message broker. Restic An open-source backup program. ROX Kubernetes access mode ReadOnlyMany - the volume can be mounted as read-only by many nodes. Ruby An interpreted, high-level, general-purpose programming language which supports multiple programming paradigms. It was designed with an emphasis on programming productivity and simplicity. In Ruby, everything is an object, including primitive data types. RWO Kubernetes access mode ReadWriteOnce - the volume can be mounted as read-write by a single node. ReadWriteOnce access mode still can allow multiple pods to access the volume when the pods are running on the same node. RWOP Kubernetes access mode ReadWriteOncePod - the volume can be mounted as read-write by a single Pod. Use ReadWriteOncePod access mode if you want to ensure that only one pod across whole cluster can read that PVC or write to it. This is only supported for CSI volumes and Kubernetes version 1.22+. RWX Kubernetes access mode ReadWriteMany - the volume can be mounted as read-write by many nodes. S3 Amazon Simple Storage Service. SBOM Software Bill of Materials. SHA-1 Secure Hash Algorithm 1, a hash function which takes an input and produces a 160-bit hash value known as a message digest \u2013 typically rendered as 40 hexadecimal digits. It was designed by the United States National Security Agency, and is a U.S. Federal Information Processing Standard. Solr An open-source enterprise-search platform, written in Java. SSH Secure Socket Shell, a network protocol that provides administrators with a secure way to access a remote computer. SSL Secure Socket Layer Storage Classes A StorageClass provides a way for Kubernetes administrators to describe the \"classes\" of storage they offer. Different classes might map to quality-of-service levels, or to backup policies, or to arbitrary policies determined by the cluster administrators Symfony Symfony is a PHP web application framework and a set of reusable PHP components/libraries, Drupal 8 and up are based on Symfony. TCP Transmission Control Protocol, a standard that defines how to establish and maintain a network conversation through which application programs can exchange data. TLS Transport Layer Security Trivy A simple and comprehensive vulnerability scanner for containers, suitable for CI. TTL Time to live or hop limit is a mechanism that limits the lifespan or lifetime of data in a computer or network. Varnish A powerful, open-source HTTP engine/reverse HTTP proxy that can speed up a website by caching (or storing) a copy of a webpage the first time a user visits. VM Virtual Machine Webhook A webhook is a way for an app like GitHub, GitLab, Bitbucket, etc, to provide other applications with immediate data and act upon something, like a pull request. YAML YAML Ain't Markup Language - YAML is a human-readable data-serialization language. It is commonly used for configuration files and in applications where data is being stored or transmitted."},{"location":"resources/tutorials-and-webinars/","title":"Tutorials, Webinars, and Videos","text":""},{"location":"resources/tutorials-and-webinars/#intro-to-lagoon-webinar","title":"Intro to Lagoon Webinar","text":"[Slides]
"},{"location":"resources/tutorials-and-webinars/#advance-lando-ing-with-lagoon","title":"Advance Lando-ing with Lagoon","text":""},{"location":"resources/tutorials-and-webinars/#webinar-lagoon-insights","title":"Webinar - Lagoon Insights","text":""},{"location":"resources/tutorials-and-webinars/#lagoon-deployment-demo","title":"Lagoon Deployment Demo","text":""},{"location":"resources/tutorials-and-webinars/#how-to-manage-multiple-drupal-sites-with-lagoon","title":"How to Manage Multiple Drupal Sites with Lagoon","text":"[Slides]
"},{"location":"resources/tutorials-and-webinars/#kubernetes-webinar-101","title":"Kubernetes Webinar 101","text":"[Slides]
"},{"location":"resources/tutorials-and-webinars/#kubernetes-webinar-102","title":"Kubernetes Webinar 102","text":"[Slides]
"},{"location":"resources/tutorials-and-webinars/#server-side-rendering-best-practices-how-we-run-decoupled-websites-with-110-million-hits-per-month","title":"Server-side Rendering Best Practices: How We Run Decoupled Websites with 110 Million Hits per Month","text":""},{"location":"resources/tutorials-and-webinars/#lagoon-opensource-docker-build-deployment-system-with-full-drupal-support","title":"Lagoon: OpenSource Docker Build & Deployment System with Full Drupal Support","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-fix-an-internal-server-error-in-kibana","title":"How do I fix an internal server error in Kibana?","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-add-a-new-route","title":"How do I add a new route?","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-check-the-status-of-a-build","title":"How do I check the status of a build?","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-add-a-redirect-in-lagoon","title":"How do I add a redirect in Lagoon?","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-download-a-database-dump","title":"How do I download a database dump?","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-add-a-cron-job","title":"How do I add a cron job?","text":""},{"location":"resources/tutorials-and-webinars/#deploying-web-applications-on-kubernetes-toby-bellwood-techweek21-talk","title":"Deploying web applications on Kubernetes - Toby Bellwood | Techweek21 Talk","text":""},{"location":"resources/tutorials-and-webinars/#dealing-with-unprecedented-scale-during-covid-19-sean-hamlin-techweek21-talk","title":"Dealing with unprecedented scale during Covid-19 - Sean Hamlin| Techweek21 Talk","text":""},{"location":"resources/tutorials-and-webinars/#silverstripe-from-local-to-live-on-lagoon-thom-toogood-techweek21-talk","title":"Silverstripe from local to live on Lagoon -Thom Toogood | Techweek21 Talk","text":""},{"location":"using-lagoon-advanced/","title":"Using Lagoon - Advanced","text":"This section covers some of the more advanced features and functionality of Lagoon. If you're new to Lagoon, start with Using Lagoon - the Basics.
If you need help, contact your Lagoon administrator or reach out to the community and maintainers in our Discord.
"},{"location":"using-lagoon-advanced/active-standby/","title":"Active/Standby","text":""},{"location":"using-lagoon-advanced/active-standby/#configuration","title":"Configuration","text":"To change an existing project to support active/standby you'll need to configure some project settings with the Lagoon API.
productionEnviromment
should be set to the branch name of the current active environment. standbyProductionEnvironment
should be set to the branch name of the current environment that is in standby.
Update project settingsmutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionEnvironment:\"production-brancha\"\nstandbyProductionEnvironment:\"production-branchb\"\n}\n}){\nstandbyProductionEnvironment\nname\nproductionEnvironment\n}\n}\n
"},{"location":"using-lagoon-advanced/active-standby/#lagoonyml-production_routes","title":".lagoon.yml
- production_routes
","text":"To configure a project for active/standby in the .lagoon.yml
file, you'll need to configure the production_routes
section with any routes you want to attach to the active
environment, and any routes to the standby
environment. During an active/standby switch, these routes will migrate between the two environments.
If you have two production environments, production-brancha
and production-branchb
, with the current active production environment as production-brancha
then:
- Routes under
production_routes.active
will direct you to production-brancha
. - Routes under
production_routes.standby
will direct you to production-branchb
.
During an active/standby switch, the routes will swap:
- Routes under
production_routes.active
will direct you to production-branchb
. - Routes under
production_routes.standby
will direct you to production-brancha
.
.lagoon.ymlproduction_routes:\nactive:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'false'\n- active.example.com:\ntls-acme: 'false'\nstandby:\nroutes:\n- nginx:\n- standby.example.com:\ntls-acme: 'false'\n
Info
Any routes that are under the section environments..routes
will not be moved as part of active/standby. These routes will always be attached to the environment as defined. Ensure that if you do need a specific route to be migrated during an active/standby switch, that you remove them from the environments section and place them under the production_routes
section specific to if it should be an active or standby route. See more about routes in .lagoon.yml
.
"},{"location":"using-lagoon-advanced/active-standby/#triggering-a-switch-event","title":"Triggering a switch event","text":""},{"location":"using-lagoon-advanced/active-standby/#via-the-ui","title":"via the UI","text":"To trigger the switching of environment routes, you can visit the standby environment in the Lagoon UI and click on the button labeled Switch Active/Standby environments
. You will be prompted to confirm your action.
Once confirmed, it will take you to the tasks page where you can view the progress of the switch.
"},{"location":"using-lagoon-advanced/active-standby/#via-the-api","title":"via the API","text":"To trigger an event to switch the environments, run the following GraphQL mutation. This will tell Lagoon to begin the process.
Active Standby Switchmutation ActiveStandby {\nswitchActiveStandby(\ninput:{\nproject:{\nname:\"drupal-example\"\n}\n}\n){\nid\nremoteId\n}\n}\n
A task is created in the current active environment tasks
tab when a switch event is triggered. You can check the status of the switch here.
Using the remoteId
from the switchActiveStandby
mutation, we can also check the status of the task.
Check task statusquery getTask {\ntaskByRemoteId(id: \"<remoteId>\") {\nid\nname\ncreated\nstarted\ncompleted\nstatus\nlogs\n}\n}\n
"},{"location":"using-lagoon-advanced/active-standby/#drush-aliases","title":"drush
aliases","text":"By default, projects will be created with the following aliases that will be available when active/standby is enabled on a project.
lagoon-production
lagoon-standby
The lagoon-production
alias will point to whichever site is defined as productionEnvironment
, and lagoon-standby
will always point to the site that is defined as standbyProductionEnvironment
.
These aliases are configurable by updating the project. Be aware that changing them may require you to update any scripts that rely on them.
Update Drush Aliasesmutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionAlias:\"custom-lagoon-production-alias\"\nstandbyAlias:\"custom-lagoon-standby-alias\"\n}\n}){\nproductionAlias\nname\nstandbyAlias\n}\n}\n
"},{"location":"using-lagoon-advanced/active-standby/#disabling-activestandby","title":"Disabling Active/Standby","text":"You need to decide which of these 2 branches are the one you want to go forward with as being the main environment and then ensure it is set as the active branch (e.g production-branchb
).
- In your
.lagoon.yml
file in this (now active) branch, move the routes from the production_routes.active.routes
section into the environments.production-branchb
section. This will mean that they are then attached to the production-branchb environment
only. - Once you've done this, you can delete the entire production_routes section from the
.lagoon.yml
file and re-deploy the production-branchb environment. - If you no longer need the other branch
production-brancha
, you can delete it. - If you keep the branch in Git, you should also remove the
production_routes
from that branch .lagoon.yml
too, just to prevent any confusion. The branch will remain as production
type unless you delete and redeploy it (wiping all storage and databases, etc). - Once you've got the project in a state where there is only the
production-branchb
production environment, and all the other environments are development
, update the project to remove the standbyProductionEnvironment
from the project so that the active/standby labels on the environments go away.
Turn off Active/Standbymutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionEnvironment:\"production-branchb\"\nstandbyProductionEnvironment:\"\"\n}\n}){\nstandbyProductionEnvironment\nname\nproductionEnvironment\n}\n}\n
"},{"location":"using-lagoon-advanced/active-standby/#notes","title":"Notes","text":"When the active/standby trigger has been executed, the productionEnvironment
and standbyProductionEnvironments
will switch within the Lagoon API. Both environments are still classed as production
environment types. We use the productionEnvironment
to determine which one is labelled as active
. For more information on the differences between environment types, read the documentation for environment types
Get environments via GraphQLquery projectByName {\nprojectByName(name:\"drupal-example\"){\nproductionEnvironment\nstandbyProductionEnvironment\n}\n}\n
Before switching environments:
Results of environment query{\n\"data\": {\n\"projectByName\": {\n\"productionEnvironment\": \"production-brancha\",\n\"standbyProductionEnvironment\": \"production-branchb\"\n}\n}\n}\n
After switching environments:
Results of environment query{\n\"data\": {\n\"projectByName\": {\n\"productionEnvironment\": \"production-branchb\",\n\"standbyProductionEnvironment\": \"production-brancha\"\n}\n}\n}\n
"},{"location":"using-lagoon-advanced/blackfire/","title":"Blackfire","text":""},{"location":"using-lagoon-advanced/blackfire/#blackfire-variables","title":"Blackfire variables","text":"The Lagoon Base Images have support for Blackfire included in the PHP Images (see the PHP images).
In order to use Blackfire in Lagoon, these three environment variables need to be defined:
Environment Variable Default Description BLACKFIRE_ENABLED
(not set) Used to enable blackfire
extension with setting variable to TRUE
or true
BLACKFIRE_SERVER_ID
(not set) Set to Blackfire Server ID provided by Blackfire.io. Needs BLACKFIRE_ENABLED
set to true
BLACKFIRE_SERVER_TOKEN
(not set) Set to Blackfire Server Token provided by Blackfire.io. Needs BLACKFIRE_ENABLED
set to true
"},{"location":"using-lagoon-advanced/blackfire/#local-usage-of-blackfire","title":"Local Usage of Blackfire","text":"For local usage of Blackfire with Lagoon Images, set the above environment variables for the PHP container. Here is an example for a Drupal application:
docker-compose.ymlservices:\n[[snip]]\nphp:\n[[snip]]\nenvironment:\n<< : *default-environment # loads the defined environment variables from the top\nBLACKFIRE_ENABLED: TRUE\nBLACKFIRE_SERVER_ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\nBLACKFIRE_SERVER_TOKEN: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n
After restarting the containers, you should be able to profile via the Blackfire Browser Plugin or the Blackfire CLI.
"},{"location":"using-lagoon-advanced/blackfire/#remote-usage-of-blackfire","title":"Remote Usage of Blackfire","text":"In order to use Blackfire in deployed Lagoon environments the same enviornment variables need to be set, this time via one of the possibilities of adding environment variables to Lagoon. Important: Environment variables set in the docker-compose.yml
for local development are not used by Lagoon in remote environments!
"},{"location":"using-lagoon-advanced/blackfire/#debugging","title":"Debugging","text":"The Blackfire Agent running in the PHP containers outputs logs as normal container logs, which can be seen via docker compose logs
or via the Lagoon Logging Infrastructure for remote environments.
By default the Logs are set to Level 3
(info), via the environment variable BLACKFIRE_LOG_LEVEL
the level can be increased to 4
(debug) to generate more debugging ouput.
"},{"location":"using-lagoon-advanced/custom-tasks/","title":"Custom Tasks","text":"Lagoon allows for the definition of custom tasks at environment, project, and group levels. This is presently accomplished through the GraphQL API and exposed in the UI.
"},{"location":"using-lagoon-advanced/custom-tasks/#defining-a-custom-task","title":"Defining a custom task","text":"When defining a task you need to determine a number of things.
"},{"location":"using-lagoon-advanced/custom-tasks/#which-task-do-you-want-to-run","title":"Which task do you want to run?","text":"In most cases, the custom task you will be running will be something that will be run in a shell on one of the containers in your application.
For instance, in a Node.js application, you may be interested in running a yarn audit
in your node
container. The command, in this case, would simply be yarn audit
.
"},{"location":"using-lagoon-advanced/custom-tasks/#where-will-this-task-be-run","title":"Where will this task be run?","text":"We have to define where this task will be run -- this means two things, first, which project or environment we'll be running the task in, and, second, which service.
Let's say that we'd like for our yarn audit
task to be available to run in any environment in a specific project (let's say the project's ID is 42 for this example). We will therefore specify the project's ID when we create our task definition, as we will describe below.
The second question regards which environment we want to target with our task. When you set up your project, you specify several services in your docker-compose.yml
. We use this service name to determine where the command is actually executed.
"},{"location":"using-lagoon-advanced/custom-tasks/#who-can-run-this-task","title":"Who can run this task?","text":"There are three levels of permissions to the task system corresponding to project roles. Guest, Developer, and Maintainer -- from most restrictive to least restrictive, with each role being able to invoke the tasks defined for the lower role (Developer can see Guest tasks, Maintainers can see all tasks).
"},{"location":"using-lagoon-advanced/custom-tasks/#defining-a-task","title":"Defining a task","text":"Tasks are defined by calling the addAdvancedTaskDefinition
mutation. Importantly, this simply defines the task, it does not invoke it. It simply makes it avaliable to be run in an environment.
Schematically, the call looks like this
Define a new taskmutation addAdvancedTask {\naddAdvancedTaskDefinition(input:{\nname: string,\nconfirmationText: string,\ntype: [COMMAND|IMAGE],\n[project|environment]: int,\ndescription: string,\nservice: string,\ncommand: string,\nadvancedTaskDefinitionArguments: [\n{\nname: \"ENVIROMENT_VARIABLE_NAME\",\ndisplayName: \"Friendly Name For Variable\",\ntype: [STRING | ENVIRONMENT_SOURCE_NAME | ENVIRONMENT_SOURCE_NAME_EXCLUDE_SELF]\n}\n]\n}) {\n... on AdvancedTaskDefinitionImage {\nid\nname\ndescription\nservice\nimage\nconfirmationText\nadvancedTaskDefinitionArguments {\ntype\nrange\nname\ndisplayName\n}\n...\n}\n... on AdvancedTaskDefinitionCommand {\nid\nname\ndescription\nservice\ncommand\nadvancedTaskDefinitionArguments {\ntype\nrange\nname\ndisplayName\n}\n...\n}\n}\n}\n
Fields name
and description
are straightforward. They're simply the name and description of the task - these are used primarily in the UI.
The type
field needs some explanation - for now, only platform admins are able to define IMAGE
type commands - these allow for the running of specifically created task images as tasks, rather than targeting existing services. Most tasks, though, will be COMMAND
types.
The [project|environment]
set of fields will attach the task to either the project
or environment
(depending on the key you use), with the value being the id. In the case we're considering for our yarn audit
we will specify we're targeting a project
with an ID of 42
.
We put the service we'd like to target with our task in the service
field, and command
is the actual command that we'd like to run.
"},{"location":"using-lagoon-advanced/custom-tasks/#arguments-passed-to-tasks","title":"Arguments passed to tasks","text":"In order to give more flexibility to the users invoking the tasks via the Lagoon UI, we support defining task arguments. These arguments are displayed as text boxes or drop downs and are required for the task to be invoked.
Here is an example of how we might set up two arguments.
Define task argumentsadvancedTaskDefinitionArguments: [\n{\nname: \"ENV_VAR_NAME_SOURCE\",\ndisplayName: \"Environment source\",\ntype: ENVIRONMENT_SOURCE_NAME\n},\n{\nname: \"ENV_VAR_NAME_STRING\",\ndisplayName: \"Echo value\",\ntype: STRING\n}\n]\n})\n
This fragment shows both types of arguments the system currently supports. The first, ENV_VAR_NAME_SOURCE
is an example of type ENVIRONMENT_SOURCE_NAME
, which will present the user of the UI a dropdown of the different environments inside of a project. If we don't want to allow the task to be run on the invoking environment (say, if we want to import a database from another environment), we can restrict the environment list by using ENVIRONMENT_SOURCE_NAME_EXCLUDE_SELF
. The second ENV_VAR_NAME_STRING
is of type STRING
and will present the user with a textbox to fill in.
The values that the user selects will be available as environment variables in the COMMAND
type tasks when the task is run.
"},{"location":"using-lagoon-advanced/custom-tasks/#system-wide-tasks","title":"System wide tasks","text":"Only your Lagoon administrator is able to register system wide tasks. These tasks will appear for all environments, subject to the user's permission to invoke them.
Creating a system wide task is almost exactly the same as other task types, with two exceptions.
First, you set the systemWide: true
field in your addAdvancedTaskDefinition
mutation.
Second, you make sure you have not specified groupName
, project
, or environment
- which would defeat the purpose, since these fields are used to target specific contexts.
"},{"location":"using-lagoon-advanced/custom-tasks/#confirmation","title":"Confirmation","text":"When the confirmationText
field has text, it will be displayed with a confirmation modal in the UI before the user is able to run the task.
"},{"location":"using-lagoon-advanced/custom-tasks/#invoking-the-task","title":"Invoking the task","text":"With the task now defined, the task should now show up in the tasks dropdown in the Lagoon UI.
We are also able to invoke it via the GraphQL api by using the invokeTask
mutation.
Invoke taskmutation invokeTask {\ninvokeRegisteredTask(advancedTaskDefinition: int, environment: int) {\nstatus\n}\n}\n
Note that invokeTask
will always invoke a task on a specific environment.
"},{"location":"using-lagoon-advanced/custom-tasks/#example","title":"Example","text":"Let's now setup our yarn audit
example.
Define task mutationmutation runYarnAudit {\naddAdvancedTaskDefinition(input:{\nname:\"Run yarn audit\",\nproject: 42,\ntype:COMMAND,\npermission:DEVELOPER,\ndescription: \"Runs a 'yarn audit'\",\nservice:\"node\",\ncommand: \"yarn audit\"})\n{\nid\n}\n}\n
This, then, will define our task for our project (42). When we run this, we will get the ID of the task definition back (for argument's sake, let's say it's 9
)
This task will now be available to run from the UI for anyone with the DEVELOPER
or MAINTAINER
role.
"},{"location":"using-lagoon-advanced/deploytarget-configs/","title":"DeployTarget Configurations","text":"DeployTarget configurations are a way to define how a project can deploy to multiple clusters. This feature is useful when you have two clusters, one which could be dedicated for running production workloads, and another that is used for running development workloads.
The configuration for these is not limited to just a production/development split though, so projects could perceivably target more than one specific cluster.
The basic idea of a DeployTarget configuration is that it is a way to easily define how a project can deploy across multiple clusters. It uses the existing methods of checking if a environment is valid
"},{"location":"using-lagoon-advanced/deploytarget-configs/#important-information","title":"Important Information","text":"Before going in to how to configure a project to leverage DeployTarget configurations, there are some things you need to know.
-
Environments now have two new fields available to them to identify which DeployTarget(Kubernetes or OpenShift) they have been created on.
kubernetesNamespacePattern
kubernetes
-
Once an environment has been deployed to a specific DeployTarget, it will always deploy to this target, even if the DeployTarget configuration, or project configuration is modified.
- This offers some safety to existing environments by preventing changes to DeployTarget configurations from creating new environments on different clusters.
- This is a new feature that is part of Lagoon, not specifically for DeployTarget configurations.
-
By default, if no DeployTarget configurations are associated to a project, that project will continue to use the existing methods to determine which environments to deploy. These are the following fields used for this.
branches
pullrequests
kubernetesNamespacePattern
kubernetes
-
As soon as any DeployTarget configurations are added to a project, then all future deployments for this project will use these configurations. What is defined in the project is ignored, and overwritten to inform users that DeployTarget configurations are in use.
-
DeployTarget configurations are weighted, which means that a DeployTarget configuration with a larger weight is prioritized over one with lower weight.
1. The order in which they are returned by the query is the order they are used to determine where an environment should be deployed.
-
Active/Standby environments can only be deployed to the same cluster, so your DeployTarget configuration must be able to deploy both those environments to the same target.
-
Projects that leverage the promote
feature of Lagoon must be aware that DeployTarget configurations are ignored for the destination
environment.
- The destination environment will always be deployed to the same target that the
source
environment is on, your DeployTarget configuration MUST be configured correctly for this source
environment. - For safety, it is best to define both the
source
and destination
environment in the same DeployTarget configuration branch regex.
"},{"location":"using-lagoon-advanced/deploytarget-configs/#configuration","title":"Configuration","text":"To configure a project to use DeployTarget configurations, the first step is to add a configuration to a project.
The following GraphQL mutation can be used, this particular example will add a DeployTarget configuration to the project with the project ID 1. It will allow only the branches that match the name main
to be deployed, and pullrequests
is set to false
. This means no other branches will be able to deploy to this particular target, and no pull requests will be deployed to this particular target. The deployTarget
is ID 1, this could be a Kubernetes cluster in a specific region, or designated for a specific type of workload (production or development).
Configure DeployTargetmutation addDeployTargetConfig{\naddDeployTargetConfig(input:{\nproject: 1\nbranches: \"main\"\npullrequests: \"false\"\ndeployTarget: 1\nweight: 1\n}){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n
Info
deployTarget
is an alias the Kubernetes or OpenShift ID in the Lagoon API
It is also possible to configure multiple DeployTarget configurations.
The following GraphQL mutation can be used, this particular example will add a DeployTarget configuration to the same project as above.
It will allow only the branches that regex match with ^feature/|^(dev|test|develop)$
to be deployed, and pullrequests
is set to true
so all pull requests will reach this target.
The targeted cluster in this example is ID 2, which is a completely different Kubernetes cluster to what was defined above for the main
branch.
Configure DeployTargetmutation addDeployTargetConfig{\naddDeployTargetConfig(input:{\nproject: 1\nbranches: \"^feature/|^(dev|test|develop)$\"\npullrequests: \"true\"\ndeployTarget: 2\nweight: 1\n}){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n
Once these have been added to a project, you can return all the DeployTarget configurations for a project using the following query
Get DeployTargetsquery deployTargetConfigsByProjectId{\ndeployTargetConfigsByProjectId(project:1){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n# result:\n{\n\"data\": {\n\"deployTargetConfigsByProjectId\": [\n{\n\"id\": 1,\n\"weight\": 1,\n\"branches\": \"main\",\n\"pullrequests\": \"false\",\n\"deployTargetProjectPattern\": null,\n\"deployTarget\": {\n\"name\": \"production-cluster\",\n\"id\": 1\n},\n\"project\": {\n\"name\": \"my-project\"\n}\n},\n{\n\"id\": 2,\n\"weight\": 1,\n\"branches\": \"^feature/|^(dev|test|develop)$\",\n\"pullrequests\": \"true\",\n\"deployTargetProjectPattern\": null,\n\"deployTarget\": {\n\"name\": \"development-cluster\",\n\"id\": 2\n},\n\"project\": {\n\"name\": \"my-project\"\n}\n}\n]\n}\n}\n
"},{"location":"using-lagoon-advanced/nodejs/","title":"Node.js Graceful Shutdown","text":"Node.js has integrated web server capabilities. Plus, with Express, these can be extended even more.
Unfortunately, Node.js does not handle shutting itself down very nicely out of the box. This causes many issues with containerized systems. The biggest issue is that when a Node.js container is told to shut down, it will immediately kill all active connections, and does not allow them to stop gracefully.
This part explains how you can teach Node.js to behave like a real web server: finishing active requests and then gracefully shutting down.
As an example we use a no-frills Node.js server with Express:
app.jsconst express = require('express');\nconst app = express();\n// Adds a 5 second delay for all requests.\napp.use((req, res, next) => setTimeout(next, 5000));\napp.get('/', function (req, res) {\nres.send(\"Hello World\");\n})\nconst server = app.listen(3000, function () {\nconsole.log('Example app listening on port 3000!');\n})\n
This will just show \"Hello World\" in when the web server is visited at localhost:3000
. Note the 5 second delay in the response in order to simulate a request that takes some computing time.
"},{"location":"using-lagoon-advanced/nodejs/#part-a-allow-requests-to-be-finished","title":"Part A: Allow requests to be finished","text":"If we run the above example and stop the Node.js process while the request is handled (within the 5 seconds), we will see that the Node.js server immediately kills the connection, and our browser will show an error.
To explain to our Node.js server that it should wait for all the requests to be finished before actually stopping itself, we add the following code:
Graceful Shutdownconst startGracefulShutdown = () => {\nconsole.log('Starting shutdown of express...');\nserver.close(function () {\nconsole.log('Express shut down.');\n});\n}\nprocess.on('SIGTERM', startGracefulShutdown);\nprocess.on('SIGINT', startGracefulShutdown);\n
This basically calls server.close()
, which will instruct the Node.js HTTP server to:
- Not accept any more requests.
- Finish all running requests.
It will do this on SIGINT
(when you press CTRL + C
) or on SIGTERM
(the standard signal for a process to terminate).
With this small addition, our Node.js will wait until all requests are finished, and then stop itself.
If we were not running Node.js in a containerized environment, we would probably want to include some additional code that actually kills the Node.js server after a couple of seconds, as it is technically possible that some requests are either taking very long or are never stopped. Because it is running in a containerized system, if the container is not stopped, Docker and Kubernetes will run a SIGKILL
after a couple of seconds (usually 30) which cannot be handled by the process itself, so this is not a concern for us.
"},{"location":"using-lagoon-advanced/nodejs/#part-b-yarn-and-npm-children-spawning-issues","title":"Part B: Yarn and NPM children spawning issues","text":"If we only implemented Part A, we would have a good experience. In the real world, many Node.js systems are built with Yarn or NPM, which provide not only package management systems to Node.js, but also script management.
With these script functionalities, we simplify the start of our application. We can see many package.json
files that look like:
package.json{\n\"name\": \"node\",\n\"version\": \"1.0.0\",\n\"main\": \"index.js\",\n\"license\": \"MIT\",\n\"dependencies\": {\n\"express\": \"^4.15.3\"\n},\n\"scripts\": {\n\"start\": \"node index.js\"\n}\n}\n
and with the defined scripts
section we can run our application just with:
Start applicationyarn start\n
or
Start applicationnpm start\n
This is nice and makes the life of developers easier. So we also end up using the same within Dockerfiles:
.dockerfileCMD [\"yarn\", \"start\"]\n
Unfortunately there is a big problem with this:
If yarn
or npm
get a SIGINT
or SIGTERM
signal, they correctly forward the signal to spawned child process (in this case node index.js
). However, it does not wait for the child processes to stop. Instead, yarn
/npm
immediately stop themselves. This signals to Docker/Kubernetes that the container is finished and Docker/Kubernetes will kill all children processes immediately. There are issues open for Yarn and NPM but unfortunately they are not solved yet.
The solution for the problem is to not use Yarn or NPM to start your application and instead use node
directly:
.dockerfileCMD [\"node\", \"index.js\"]\n
This allows Node.js to properly terminate and Docker/Kubernetes will wait for Node.js to be finished.
"},{"location":"using-lagoon-advanced/private-repositories/","title":"Private Repositories","text":" - Give the deploy key access to the Git repositories in your GitHub/GitLab/BitBucket.
- Add
ARG LAGOON_SSH_PRIVATE_KEY
to your dockerfile
(before the step of the build process that needs the SSH key). - Add
RUN /lagoon/entrypoints/05-ssh-key.sh
to your dockerfile
(before the step of the build process that needs the SSH key).
Set up your private respositoryRUN /lagoon/entrypoints/05-ssh-key.sh && composer install && rm /home/.ssh/key\n
"},{"location":"using-lagoon-advanced/project-default-users-keys/","title":"Project Default Users and SSH Keys","text":"When a Lagoon project is created, by default an associated SSH \"project key\" is generated and the private key made available inside the CLI pods of the project. A service account default-user@project
is also created and given MAINTAINER
access to the project. The SSH \"project key\" is attached to that default-user@project
.
The result of this is that from inside the CLI pod of any environment it is possible to SSH to any other environment within the same project. This access is used for running tasks from the command line such as synchronizing databases between environments (e.g. drush sql-sync
).
There is more information on the MAINTAINER
role available in the RBAC documentation.
"},{"location":"using-lagoon-advanced/project-default-users-keys/#specifying-the-project-key","title":"Specifying the project key","text":"It is possible to specify an SSH private key when creating a project, but this is not recommended as it has security implications.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/","title":"Setting up Xdebug with Lagoon","text":""},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#enable-xdebug-extension-in-the-containers","title":"Enable Xdebug extension in the containers","text":"The Lagoon base images are pre-configured with Xdebug but, for performance reasons, the extension is not loaded by default. To enable the extension, the XDEBUG_ENABLE
environment variable must be set to true
:
-
Locally (Pygmy and Lando)
- If your project is based off the lagoon-examples
docker-compose.yml
file, the environment variable already exists. Uncomment these lines. - Make sure to rebuild and restart the containers after changing any environment variables. - Remotely (dev/prod)
- You can use the Lagoon API to add the environment variable to a running environment.
- Make sure to redeploy the environment after changing this any environment variables.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#activate-xdebug-extension","title":"Activate Xdebug Extension","text":"The default Xdebug configuration requires a \"trigger\" to activate the extension and start a session. You can view the complete documentation for activating the debugger but the most straightforward instructions are below.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#cli","title":"CLI","text":"The php-cli
image is configured to always activate Xdebug when it\u2019s enabled, so there is nothing else that needs to be done. Running any PHP script will start a debugging session.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#web","title":"Web","text":"Install a browser extension to set/unset an activation cookie.
Make sure the activation cookie is set for the website you want to start debugging.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#configure-phpstorm","title":"Configure PHPStorm","text":" - PHPStorm is configured correctly by default.
- Click the \u201cStart Listening for PHP Debug Connections\u201d icon in the toolbar.
- Load a webpage or run a Drush command.
- On first run, PHPStorm should pop up a window asking you to:
- Confirm path mappings.
- Select the correct file locally that was triggered on the server.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#configure-visual-studio-code","title":"Configure Visual Studio Code","text":" - Install the PHP Debug extension by Felix Becker.
- Follow the instructions to create a basic
launch.json
for PHP. -
Add correct path mappings. For a typical Drupal site, an example would be:
launch.json\"pathMappings\": {\n\"/app\": \"${workspaceFolder}\",\n},\n
-
In the Run tab of Visual Studio Code, click the green arrow next to \u201cListen for Xdebug\u201d
- Load a webpage or run a Drush command.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#troubleshooting","title":"Troubleshooting","text":" - Verify that Xdebug extension is loaded. The best way to do this on a Drupal site is to check the PHP status page. You should find a section about Xdebug and all its settings.
- Verify the following settings:
Directive Local Value xdebug.mode debug xdebug.client_host host.docker.internal
or your IP address xdebug.client_port 9003 - Enable Xdebug logging within the running containers. All you need is an environment variable named
XDEBUG_LOG
set to anything to enable logging. Logs will be saved to /tmp/xdebug.log
. If you are using the lagoon-examples then you can uncomment some existing lines. - Verify you have the activation cookie set. You can use the browser tools in Chrome or Firefox to check that a
XDEBUG_SESSION
cookie is set. - Verify that Xdebug is activated and attempting to start a debug session with your computer. You can use the
nc -l 9003
command line tool to open the Xdebug port. If everything is configured in PHP correctly, you should get a Xdebug init response when you load a webpage or run a Drush command. - Verify that the
xdebug.client_host
has been set correctly. For local debugging with Docker for Mac, this value should be host.docker.internal
. For remote debugging this value should be your IP address. If this value was not correctly determined, you can override it by setting the DOCKERHOST
environment variable. - When using Lando locally, in order to debug scripts run from the CLI you must first SSH into the CLI container via
lando ssh
. You won\u2019t be able to debug things by running lando drush
or lando php
.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#mac-specific-troubleshooting","title":"Mac specific troubleshooting","text":" -
Verify that Docker for Mac networking is not broken. On your host machine, run nc -l 9003
, then in a new terminal window, run:
Verify Docker for Mac networkingdocker compose run cli nc -zv host.docker.internal 9003\n
You should see a message like: host.docker.internal (192.168.65.2:9003) open
.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#linux-specific-troubleshooting","title":"Linux specific troubleshooting","text":" -
Ensure the host host.docker.internal
can be reached. If docker
has been installed manually (and not through Docker Desktop), this host will not resolve. You can force this to resolve with an additional snippet in your docker-compose.yml
file (instructions taken from this blog post):
docker-compose.yml alterations for Linux services:\ncli:\nextra_hosts:\nhost.docker.internal: host-gateway\nphp:\nextra_hosts:\nhost.docker.internal: host-gateway\n
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#xdebug-2","title":"Xdebug 2","text":"If you're running older images you may still be using Xdebug version 2. All the information on this page still applies, but some of the configuration names and values have changes:
v3 v2 xdebug.mode xdebug.remote_enabled On xdebug.client_host xdebug.remote_host host.docker.internal
or your IP address xdebug.client_port xdebug.remote_port 9000"},{"location":"using-lagoon-advanced/simplesaml/","title":"SimpleSAML","text":""},{"location":"using-lagoon-advanced/simplesaml/#simplesamlphp","title":"SimpleSAMLphp","text":"This is an example of how to add SimpleSAMLphp to your project and then modify configuration to serve it via NGINX.
"},{"location":"using-lagoon-advanced/simplesaml/#requirements","title":"Requirements","text":"Add SimpleSAMLphp to your project:
Add SimpleSAMLphp to your project via Composercomposer req simplesamlphp/simplesamlphp\n
"},{"location":"using-lagoon-advanced/simplesaml/#modify-configuration-for-simplesamlphp","title":"Modify configuration for SimpleSAMLphp","text":"Copy authsources.php
and config.php
from vendor/simplesamlphp/simplesamlphp/config-templates
to somewhere outside vendor directory, such as conf/simplesamlphp
. You also need saml20-idp-remote.php
from vendor/simplesamlphp/simplesamlphp/metadata-templates
.
In config.php
set following values for Lagoon:
Base URL path where SimpleSAMLphp is accessed:
config.php 'baseurlpath' => 'https://YOUR_DOMAIN.TLD/simplesaml/',\n
Store sessions to database:
config.php 'store.type' => 'sql',\n 'store.sql.dsn' => vsprintf('mysql:host=%s;port=%s;dbname=%s', [\n getenv('MARIADB_HOST'),\n getenv('MARIADB_PORT'),\n getenv('MARIADB_DATABASE'),\n ]),\n
Alter other settings to your liking:
- Check the paths for logs and certs.
- Secure SimpleSAMLphp dashboard.
- Set up level of logging.
- Set
technicalcontact
and timezone
.
Add authsources (IdPs) to authsources.php
, see example:
authsources.php 'default-sp' => [\n 'saml:SP',\n // The entity ID of this SP.\n 'entityID' => 'https://YOUR_DOMAIN.TLD',\n // The entity ID of the IdP this should SP should contact.\n // Can be NULL/unset, in which case the user will be shown a list of available IdPs.\n 'idp' => 'https://YOUR_IDP_DOMAIN.TLD',\n // The URL to the discovery service.\n // Can be NULL/unset, in which case a builtin discovery service will be used.\n 'discoURL' => null,\n 'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',\n 'certificate' => '/app/conf/simplesamlphp/certs/saml.crt',\n 'privatekey' => '/app/conf/simplesamlphp/certs/saml.pem',\n 'redirect.sign' => TRUE,\n 'redirect.validate' => TRUE,\n 'authproc' => [\n 50 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6' => 'eduPersonPrincipalName',\n ],\n 51 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:2.5.4.42' => 'givenName',\n ],\n 52 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:2.5.4.4' => 'sn',\n ],\n 53 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:0.9.2342.19200300.100.1.3' => 'mail',\n ],\n ],\n ],\n
Add IdP metadata to saml20-idp-remote.php
, see example:
saml20-idp-remote.php<?php\n/**\n * SAML 2.0 remote IdP metadata for SimpleSAMLphp.\n *\n * Remember to remove the IdPs you don't use from this file.\n *\n * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-remote\n */\n/**\n * Some IdP.\n */\n$metadata['https://YOUR_IDP_DOMAIN.TLD'] = [\n'entityid' => 'https://YOUR_IDP_DOMAIN.TLD',\n'name' => [\n'en' => 'Some IdP',\n],\n'description' => 'Some IdP',\n...\n];\n
In your build process, copy configuration files to SimpleSAMLphp:
vendor/simplesamlphp/simplesamlphp/config/authsources.php
vendor/simplesamlphp/simplesamlphp/config/config.php
vendor/simplesamlphp/simplesamlphp/metadata/saml20-idp-remote.php
"},{"location":"using-lagoon-advanced/simplesaml/#create-nginx-conf-for-simplesamlphp","title":"Create NGINX conf for SimpleSAMLphp","text":"Create file lagoon/nginx/location_prepend_simplesamlphp.conf
:
location_prepend_simplesamlphp.conflocation ^~ /simplesaml {\nalias /app/vendor/simplesamlphp/simplesamlphp/www;\nlocation ~ ^(?<prefix>/simplesaml)(?<phpfile>.+?\\.php)(?<pathinfo>/.*)?$ {\ninclude fastcgi_params;\nfastcgi_pass ${NGINX_FASTCGI_PASS:-php}:9000;\nfastcgi_param SCRIPT_FILENAME $document_root$phpfile;\n# Must be prepended with the baseurlpath\nfastcgi_param SCRIPT_NAME /simplesaml$phpfile;\nfastcgi_param PATH_INFO $pathinfo if_not_empty;\n}\n}\n
This will route /simplesaml
URLs to SimpleSAMLphp in vendor.
"},{"location":"using-lagoon-advanced/simplesaml/#add-additional-nginx-conf-to-nginx-image","title":"Add additional NGINX conf to NGINX image","text":"Modify nginx.dockerfile
and add location_prepend_simplesamlphp.conf
to the image:
nginx.dockerfileARG CLI_IMAGE\nFROM ${CLI_IMAGE} AS cli\n\nFROM uselagoon/nginx-drupal\n\nCOPY --from=cli /app /app\n\nCOPY lagoon/nginx/location_prepend_simplesamlphp.conf /etc/nginx/conf.d/drupal/location_prepend_simplesamlphp.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/location_prepend_simplesamlphp.conf\n\n# Define where the Drupal Root is located\nENV WEBROOT=public\n
"},{"location":"using-lagoon-advanced/triggering-deployments/","title":"Triggering Deployments","text":""},{"location":"using-lagoon-advanced/triggering-deployments/#trigger-a-new-deployment-using-azure-pipelines","title":"Trigger a new deployment using Azure Pipelines","text":"In order to automatically trigger new deployments using Azure Pipelines follow these instructions:
- Add your deployment SSH private key to Azure as a secure file as
id_rsa_lagoon
. For more information about secure files have a look at the Azure Documentation Site. - Add the following configuration to your
azure-pipelines.yml
:
azure-pipelines.ymlpool:\nvmImage: 'ubuntu-latest'\nstages:\n# .. other stages\n- stage: Deploy\ncondition: and(succeeded(), in(variables['Build.SourceBranch'], 'refs/heads/staging', 'refs/heads/develop'))\njobs:\n- job: DeployLagoon\nsteps:\n- task: DownloadSecureFile@1\nname: lagoonSshKey\ndisplayName: 'Download Lagoon SSH key'\ninputs:\nsecureFile: id_rsa_lagoon\n- script: |\ncurl -L \"https://github.com/uselagoon/lagoon-cli/releases/download/v0.21.3/lagoon-cli-v0.21.3-linux-amd64\" -o ./lagoon\nchmod +x ./lagoon\ndisplayName: 'Download lagoon-cli'\n- script: ./lagoon login -i $(lagoonSshKey.secureFilePath)\ndisplayName: 'Log into Lagoon'\n- script: ./lagoon deploy branch -e $(Build.SourceBranchName) -p my-awesome-project -b $(Build.SourceBranchName) --force\ndisplayName: 'Trigger deployment using lagoon-cli'\n
This will trigger a new deployment whenever changes are made on the develop
or staging
branch. Adjust these values accordingly so they fit your deployment strategy and configuration.
"},{"location":"using-lagoon-advanced/triggering-deployments/#push-without-deploying","title":"Push without deploying","text":"There may be a case where you want to push without a deployment. Make sure your commit message contains \"[skip deploy]
\" or \"[deploy skip]
\" and Lagoon will not trigger a deployment from that commit.
"},{"location":"using-lagoon-advanced/using-harbor/","title":"Harbor","text":"Harbor is used as the default package repository for Lagoon when deploying to Kubernetes infrastructure. Harbor provides a Docker registry and a container security scanning solution provided by Trivy.
Note
When running Lagoon locally, the configuration for Harbor is handled entirely automagically.
If you are running Lagoon locally, you can access that UI at localhost:8084. The username is admin
and the password is admin
.
Note
If you are hosting a site with a provider, they may not allow customer access to the Harbor UI.
Once logged in, the first screen is a list of all repositories your user has access to. Each \"repository\" in Harbor correlates to a project in Lagoon.
Within each Harbor repository, you'll see a list of container images from all environments with a single Lagoon project.
From here, you can drill down into an individual container in order to see its details, including an overview of its security scan results.
"},{"location":"using-lagoon-advanced/using-harbor/security-scanning/","title":"Security Scanning","text":"Harbor comes with a built-in security scanning solution provided by the Trivy service. This service analyzes a specified container image for any installed packages, and collects the version numbers of those installed packages. The Trivy service then searches the National Vulnerability Database for any CVEs (common vulnerabilities and exposures) affecting those package versions. Trivy is also library aware, so it will scan any Composer files or other package library definition files and report any vulnerabilities found within those package versions. These vulnerabilities are then reported within Harbor for each individual container.
An example of a security scan in Harbor, showing applicable vulnerabilities for a scanned container:
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/","title":"Running Harbor Locally","text":"Lagoon supports running Harbor locally, where it makes use of MinIO as a storage backend, which is an AWS S3 compatible local storage solution.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/#settings","title":"Settings","text":"Harbor is composed of multiple containers, which all require different settings in order for them to run successfully.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/#environment-variables","title":"Environment Variables","text":"The following environment variables are required to be set in order for Harbor to properly start:
HARBOR_REGISTRY_STORAGE_AMAZON_BUCKET
- This needs to be set to the name of the AWS bucket which Harbor will save images to.
- Defaults to
harbor-images
when Lagoon is run locally or during CI testing.
HARBOR_REGISTRY_STORAGE_AMAZON_REGION
- This needs to be set to the AWS region in which Harbor's bucket is located.
- Defaults to
us-east-1
when Lagoon is run locally or during CI testing.
REGISTRY_STORAGE_S3_ACCESSKEY
- This needs to be set to the AWS access key Harbor should use to read and write to the AWS bucket.
- Defaults to an empty string when Lagoon is run locally or during CI testing, as MinIO does not require authentication.
REGISTRY_STORAGE_S3_SECRETKEY
- This needs to be set to the AWS secret key Harbor should use to read and write to the AWS bucket.
- Defaults to an empty string when Lagoon is run locally or during CI testing, as MinIO does not require authentication.
The following environment variables can be set if required:
HARBOR_REGISTRY_STORAGE_AMAZON_ENDPOINT
- If this variable is set, the Harbor registry will use its value as the address of the s3 entrypoint.
- Defaults to
https://s3.amazonaws.com
when this variable is not set.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/#container-specific-settings","title":"Container Specific Settings","text":"The following containers make use of configuration files:
- HarborRegistry
- HarborRegistryCtl
- Harbor-Core
- Harbor-Database
- Harbor-Jobservice
- Harbor-Trivy
The following containers do not require configuration files to run:
- Harbor-Nginx
- Harbor-Portal
- Harbor-Redis
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-core/","title":"Harbor-Core","text":"Harbor-Core requires a configuration file to start, which is located at /etc/core/app.conf
within the container. Any changes made to this config file are temporary and will not persist once the pod is restarted.
The configmap from which this config file is generated is stored within Lagoon in the services/harbor-core/harbor-core.yml
file. Any changes made to this configmap will be persisted across container restarts.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-core/#config-file-contents","title":"Config File Contents","text":" _REDIS_URL
- Tells harbor-core and the Chartmuseum service connection info for the Redis server.
- The default value is
harbor-redis:6379,100,
.
_REDIS_URL_REG
- The url which harborregistry should use to connect to the Redis server.
- The default value is
redis://harbor-redis:6379/2
.
ADMIRAL_URL
- Tells harbor-core where to find the admiral service.
- This service is not used with Lagoon's implementation of Harbor.
- The default value is
NA
.
CFG_EXPIRATION
- This value is not used.
- The default value is
5
.
CHART_CACHE_DRIVER
- Tells harbor-core where to store any uploaded charts.
- The default value is
redis
.
CLAIR_ADAPTER_URL
- The URL that harbor-core should use to connect to the harbor-trivy service.
- The default value is
http://harbor-trivy:8080
.
CLAIR_DB
- The database type harborclair should use.
- This value is not used, and is included only for legacy support
- The default value is
postgres
.
CLAIR_DB_HOST
- This value is not used, and is included only for legacy support
- Tells harbor-core where to find the harborclair service.
- The default value is
harbor-database
.
CLAIR_DB_PASSWORD
- The password used to access harborclair's postgres database.
- The default value is
test123
when run locally or during CI testing. - This value is not used, and is included only for legacy support
- This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
CLAIR_DB_PORT
- The port harborclair should use to connect to the harborclair server.
- This value is not used, and is included only for legacy support
- The default value is
5432
.
CLAIR_DB_SSLMODE
- Whether or not harborclair should use SSL to connect to the postgresql server.
- This value is not used, and is included only for legacy support
- The default value is
disable
.
CLAIR_DB_USERNAME
- The user harborclair should use to connect to the postgresql server.
- This value is not used, and is included only for legacy support
- The default value is
postgres
.
CLAIR_HEALTH_CHECK_SERVER_URL
- This value tells harbor-core where it should issue health checks to for the harbor-trivy service.
- The default value is
http://harbor-trivy:8080
CLAIR_URL
- The URL that harbor-core should use to connect to the harbor-trivy service.
- The default value is
http://harbor-trivy:6060
.
CONFIG_PATH
- Where harbor-core should look for its config file.
- The default value is
/etc/core/app.conf
.
CORE_SECRET
- This value is a pre-shared key that must match between the various services connecting to harbor-core.
- The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
CORE_URL
- The URL that harbor-core should publish to other Harbor services in order for them to connect to the harbor-core service.
- The default value is
http://harbor-core:8080
.
DATABASE_TYPE
- The database type Harbor should use.
- The default value is
postgresql
.
HARBOR_ADMIN_PASSWORD
- The password which should be used to access harbor using the
admin
user. - The default value is
admin
when run locally or during CI testing. - This value is retreived from a secret created when Harbor is first set up on a running Lagoon.
HARBOR_NGINX_ENDPOINT
- This environment variable tells harborregistry where its NGINX ingress controller, harbor-nginx, is running in order to construct proper push and pull instructions in the UI, among other things.
- The default value is set to
http://harbor-nginx:8080
when run locally or during CI testing. - Lagoon attempts to obtain and set this variable automagically when run in production. If that process fails, this service will fail to run.
HTTP_PROXY
- The default value is an empty string.
HTTPS_PROXY
- The default value is an empty string.
JOBSERVICE_SECRET
- This value is a pre-shared key that must match between the various services connecting to harbor-jobservice.
- The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
JOBSERVICE_URL
- The URL that harbor-core should use to connect to the harbor-jobservice service.
- The default value is
http://harbor-jobservice:8080
.
LOG_LEVEL
- The default log level of the harbor-core service.
- The default value is
error
.
NO_PROXY
- A list of hosts which should never have their requests proxied.
- The default is
harbor-core,harbor-jobservice,harbor-database,harbor-trivy,harborregistry,harbor-portal,127.0.0.1,localhost,.local,.internal
.
PORTAL_URL
- This value tells the service where to connect to the harbor-portal service.
- The default value is
http://harbor-portal:8080
.
POSTGRESQL_DATABASE
- The postgres database harbor-core should use when connecting to the postgresql server.
- The default value is
registry
.
POSTGRESQL_HOST
- Where harbor-core should connect to the postgresql server.
- The default value is
harbor-database
.
POSTGRESQL_MAX_IDLE_CONNS
- The maximum number of idle connections harbor-core should leave open to the postgresql server.
- The default value is
50
.
POSTGRESQL_MAX_OPEN_CONNS
- The maximum number of open connections harbor-core should have to the postgresql server.
- The default value is
100
.
POSTGRESQL_PASSWORD
- The password Harbor should use to connect to the postgresql server.
- The default value is a randomly generated value.
POSTGRESQL_PORT
- The port harbor-core should use to connect to the postgresql server.
- The default value is
5432
.
POSTGRESQL_USERNAME
- The username harbor-core should use to connect to the postgresql server.
- The default value is
postgres
.
POSTGRESQL_SSLMODE
- Whether or not harbor-core should use SSL to connect to the postgresql server.
- The default value is
disable
.
REGISTRY_HTTP_SECRET
- This value is a pre-shared key that must match between the various services connecting to harborregistry.
- The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retreived from a secret created when Harbor is first set up on a running Lagoon.
REGISTRY_STORAGE_PROVIDER_NAME
- The storage backend that harborregistry should use.
- The default value is
s3
.
REGISTRY_URL
- The URL that harbor-core should use to connect to the harborregistry service..
- The default value is
http://harborregistry:5000
.
REGISTRYCTL_URL
- This value tells the service where to connect to the harborregistryctl service.
- The default value is set to
http://harborregistryctl:8080
.
ROBOT_TOKEN_DURATION
- This values sets how many days each issues robot token should be valid for.
- The default value is set to
999
.
SYNC_REGISTRY
- This value is not used.
- The default value is
false
.
TOKEN_SERVICE_URL
- The URL that the harbor-core service publishes to other services in order to retrieve a JWT token.
- The default value is
http://harbor-core:8080/service/token
.
TRIVY_ADAPTER_URL
- The URL that the harbor-core service should use to connect to the harbor-trivy service.
- The default value is
http://harbor-trivy:8080
.
WITH_CHARTMUSEUM
- Tells harbor-core if the Chartmuseum service is being used.
- This service is not used with Lagoon's implementation of Harbor.
- The default value is
false
.
WITH_CLAIR
- Tells harbor-core if the harborclair service is being used.
- Lagoon does use this service in its implementation of Harbor.
- The default value is
true
.
WITH_NOTARY
- Tells harbor-core if the Notary service is being used.
- This service is not used with Lagoon's implementation of Harbor.
- The default value is
false
.
WITH_TRIVY
- Tells harbor-core if the Trivy service is being used.
- The default value is
true
.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-database/","title":"Harbor-Database","text":"Harbor-Database requires specific environment variables to be set in order to start, which are stored within secrets as described in the services/harbor-database/harbor-core.yml
file.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-database/#config-file-contents","title":"Config File Contents","text":" POSTGRES_DB
- The default database to be set up when initializing the Postgres service.
- The default value is
postgres
.
POSTGRES_PASSWORD
- The root password for the Postgres database.
- The default value is
test123
. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
POSTGRES_USER
- The default user to be set up when initializing the Postgres service.
- The default value is
postgres
.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-jobservice/","title":"Harbor-Jobservice","text":"Harbor-Jobservice requires a configuration file to start, which is located at /etc/jobservice/config.yml
within the container. Any changes made to this config file are temporary and will not persist once the pod is restarted.
The configmap from which this config file is generated is stored within Lagoon in the services/harbor-jobservice/harbor-jobservice.yml
file. Any changes made to this configmap will be persisted across container restarts.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-jobservice/#config-file-contents","title":"Config File Contents","text":" CORE_URL
- This value tells
harbor-jobservice
where harbor-core
can be reached. - The default value is
http://harbor-core:8080
.
CORE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-core
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
HTTP_PROXY
- The default value is an empty string.
HTTPS_PROXY
- The default value is an empty string.
JOBSERVICE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-jobservice
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
LOG_LEVEL
- The logging level this service should use.
- The default value is
error
. - This can also be set to
debug
to enable very verbose logging.
NO_PROXY
- A list of hosts which should never have their requests proxied.
- The default is
harbor-core,harbor-jobservice,harbor-database,harbor-trivy,harborregistry,harbor-portal,127.0.0.1,localhost,.local,.internal
.
REGISTRY_CONTROLLER_URL
- This value tells the service where to connect to the
harborregistryctl
service. - The default value is set to
http://harborregistryctl:8080
SCANNER_LOG_LEVEL
- The logging level the scanning service should use.
- The default value is
error
. - This can also be set to
debug
to enable very verbose logging.
SCANNER_STORE_REDIS_URL
- This value tells
harbor-trivy
how to connect to its Redis store. - The default value is
redis://harbor-redis:6379/4
.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-trivy/","title":"Harbor-Trivy","text":"Harbor-Trivy is configured via specific environment variables and does not use a config file.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-trivy/#environment-variables","title":"Environment Variables","text":" SCANNER_LOG_LEVEL
- The logging level this service should use.
- The default value is
error
. - This can be set to
debug
to enable very verbose logging.
SCANNER_STORE_REDIS_URL
- This value tells harbor-trivy how to connect to its Redis store.
- The default value is
redis://harbor-redis:6379/4
.
SCANNER_JOB_QUEUE_REDIS_URL
- This value tells harbor-trivy how to connect to its Redis store.
- The default value is
redis://harbor-redis:6379/4
.
SCANNER_TRIVY_VULN_TYPE
- This value tells harbor-trivy what types of vulnerabilities it should be searching for.
- The default value is
os,library
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harborregistry/","title":"HarborRegistry","text":"HarborRegistry requires a configuration file to start, which is located at /etc/registry/config.yml
within the container. Any changes made to this config file are temporary and will not persist once the pod is restarted.
This config file is stored within the services/harborregistry/harborregistry.yml
file and loaded into the container as /etc/registry/pre-config.yml
.
A custom container entrypoint, services/harborregistry/entrypoint.sh
, then transposes provided environment variables into this config file and saves the results as /etc/registry/config.yml
.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harborregistry/#config-file-contents","title":"Config File Contents","text":" CORE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-core
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
HARBOR_NGINX_ENDPOINT
- This environment variable tells
harborregistry
where its NGINX ingress controller, harbor-nginx
, is running in order to construct proper push and pull instructions in the UI, among other things. - The default value is set to
http://harbor-nginx:8080
when run locally or during CI testing. - Lagoon attempts to obtain and set this variable automagically when run in production. If that process fails, this service will fail to run.
JOBSERVICE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-jobservice
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
REGISTRY_HTTP_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harborregistry
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
REGISTRY_REDIS_PASSWORD
- This environment variable tells
harborregistryctl
the password that should be used to connect to Redis. - The default value is an empty string.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harborregistryctl/","title":"HarborRegistryCtl","text":"HarborRegistryCtl requires a configuration file to start, which is located at /etc/registryctl/config.yml
within the container. Any changes made to this config file are temporary and will not persist once the pod is restarted.
The configmap from which this config file is generated is stored within Lagoon in the services/harborregistryctl/harborregistry.yml
file. Any changes made to this configmap will be persisted across container restarts.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harborregistryctl/#config-file-contents","title":"Config File Contents","text":" CORE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-core
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
JOBSERVICE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-jobservice
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
REGISTRY_HTTP_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harborregistry
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
REGISTRY_REDIS_PASSWORD
- This environment variable tells
harborregistryctl
the password that should be used to connect to Redis. - The default value is an empty string.
"},{"location":"using-lagoon-the-basics/","title":"Using Lagoon - Overview","text":"This section covers some of the basic features and functionality in Lagoon. If you're familiar with these, move on to Using Lagoon - Advanced.
If you need help, contact your Lagoon administrator or reach out to the community and maintainers in our Discord.
"},{"location":"using-lagoon-the-basics/#requirements","title":"Requirements","text":""},{"location":"using-lagoon-the-basics/#docker","title":"Docker","text":"To run a Lagoon Project, your system must meet the requirements to run Docker. We suggest installing the latest version of Docker for your workstation. You can download Docker here. We also suggest allowing Docker at least 4 CPUs and 4 GB RAM.
"},{"location":"using-lagoon-the-basics/#local-development-environments","title":"Local Development Environments","text":"You can choose from pygmy, Lando, or DDEV - it's up to you!
Learn more about Lagoon and Local Development Environments
"},{"location":"using-lagoon-the-basics/#step-by-step-guides","title":"Step by Step Guides","text":" - General: set up a new project in Lagoon
- General: first deployment
- Drupal: first deployment in Drupal
- Drupal: Lagoonize your Drupal site
- All: build and deployment process of Lagoon
"},{"location":"using-lagoon-the-basics/#overview-of-lagoon-configuration-files","title":"Overview of Lagoon Configuration Files","text":""},{"location":"using-lagoon-the-basics/#lagoonyml","title":".lagoon.yml
","text":"This is the main file that will be used by Lagoon to understand what should be deployed, as well as many other things. See documentation for .lagoon.yml
.
"},{"location":"using-lagoon-the-basics/#docker-composeyml","title":"docker-compose.yml
","text":"This file is used by Docker Compose
to start your local development environment. Lagoon also uses it to understand which of the services should be deployed, which type, and how to build them. This happens via labels
. See documentation for docker-compose.yml
.
"},{"location":"using-lagoon-the-basics/#dockerfiles","title":"Dockerfiles","text":"Some Docker images and containers need additional customizations from the provided images. This usually has two reasons:
- Application code: Containers like NGINX, PHP, Node.js, etc, need the actual programming code within their images. This is done during a Docker build step, which is configured in a Dockerfile. Lagoon has full support for Docker, and therefore also allows you full control over the resulting images via Dockerfile customizations.
- Customization of images: Lagoon also allows you to customize the base images according to your needs. This can be to inject an additional environment variable, change a service configuration, or even install additional tools. We advise caution with installing additional tools to the Docker images, as you will need to maintain any adaptions in the future!
"},{"location":"using-lagoon-the-basics/#supported-services-base-images-by-lagoon","title":"Supported Services & Base Images by Lagoon","text":"Type Versions Dockerfile MariaDB 10.4, 10.5, 10.6, 10.11 mariadb/Dockerfile PostgreSQL 11, 12, 13, 14, 15, 16 postgres/Dockerfile MongoDB 4 mongo/Dockerfile NGINX openresty/1.25 nginx/Dockerfile Node.js 18, 20, 22 node/Dockerfile PHP FPM 8.1, 8.2, 8.3 php/fpm/Dockerfile PHP CLI 8.1, 8.2, 8.3 php/cli/Dockerfile Python 3.8, 3.9, 3.10, 3.11, 3.12 python/Dockerfile Redis 6, 7 redis/Dockerfile Solr 8, 9 solr/Dockerfile Varnish 6, 7 varnish/Dockerfile Opensearch 2 opensearch/Dockerfiles RabbitMQ 3.10 rabbitmq/Dockerfile Ruby 3.1, 3.2, 3.3 ruby/Dockerfile All images are pushed to https://hub.docker.com/u/uselagoon. We suggest always using the latest tag (like uselagoon/nginx:latest
) as they are kept up to date in terms of features and security.
If you choose to use a specific Lagoon version of an image like uselagoon/nginx:20.10.0
or uselagoon/node-10:20.10.0
it is your own responsibility to upgrade the version of the images as soon as a new Lagoon version is released!
"},{"location":"using-lagoon-the-basics/configure-webhooks/","title":"Configure Webhooks","text":"Your Lagoon administrator will also give you the route to the webhook-handler
. You will add this to your repository as an outgoing webhook, and choose which events to send to Lagoon. Typically, you will send all push and pull request events. In Lagoon it is possible to add a regular expression to determine which branches and pull requests actually result in a deploy, and your Lagoon administrator can set that up for you. For example, all branches that start with feature-
could be deployed to Lagoon.
Info for amazee.io customers If you are an amazee.io customer, the route to the webhook-handler is: https://hooks.lagoon.amazeeio.cloud
.
Danger
Managing the following settings will require you to have a high level of access to these repositories, which will be controlled by your organization. If you cannot access these settings, please contact your systems administrator or the appropriate person within your organization.
"},{"location":"using-lagoon-the-basics/configure-webhooks/#github","title":"GitHub","text":" - Proceed to Settings -> Webhooks ->
Add webhook
in your GitHub repository. - The
Payload URL
is the route to the webhook-handler
of your Lagoon instance, provided by your Lagoon administrator. - Set
Content type
to application/json
. - Choose \"
Let me select individual events
.\" - Choose which events will trigger your webhook. We suggest that you send
Push
and Pull request
events, and then filter further in the Lagoon configuration of your project. - Make sure the webhook is set to
Active
. - Click
Add webhook
to save your configuration.
"},{"location":"using-lagoon-the-basics/configure-webhooks/#gitlab","title":"GitLab","text":" - Navigate to Settings -> Integrations in your GitLab repository.
- The
URL
is the route to the webhook-handler
of your Lagoon instance, provided by your Lagoon administrator. - Select the
Trigger
events which will send a notification to Lagoon. We suggest that you send Push events
and Merge request events
, and then filter further in the Lagoon configuration of your project. - Click
Add webhook
to save your configuration.
"},{"location":"using-lagoon-the-basics/configure-webhooks/#bitbucket","title":"Bitbucket","text":" - Navigate to Settings -> Webhooks -> Add new webhook in your repository.
Title
is for your reference. URL
is the route to the webhook-handler
of your Lagoon instance, provided by your Lagoon administrator. -
Choose from a full list of triggers
and select the following:
- Repository
- Push
- Pull Request
- Created
- Updated
- Approved
- Approval removed
- Merged
- Declined
5. Click Save
to save the webhook configurations for Bitbucket.
"},{"location":"using-lagoon-the-basics/first-deployment/","title":"First Deployment","text":"Note
If you are deploying a Drupal Project, skip this and read the Drupal-specific first deployment documentation.
"},{"location":"using-lagoon-the-basics/first-deployment/#1-make-sure-you-are-ready","title":"1. Make sure you are ready","text":"In order to make your first deployment a successful one, please make sure that your project is Lagoonized and that you have set up the project in Lagoon. If not, or you're not sure, or that doesn't sound familiar, don't worry, go back and follow the Step-by-Step Guides which show you how this works, and then come back and deploy!
"},{"location":"using-lagoon-the-basics/first-deployment/#2-push","title":"2. Push","text":"With Lagoon, you create a new deployment by pushing into a branch that is configured to be deployed.
If you don't have any new code to push, don't worry! Run:
Git pushgit commit --allow-empty -m \"go, go! Power Rangers!\"\ngit push\n
This will trigger a push, and your Git hosting will inform Lagoon about this push via the configured webhook.
If all is correct, you should see a notification in your configured chat system. (Contact your Lagoon administrator for this):
This informs you that Lagoon has just started to deploy your code. Depending on the size of the code and amount of containers, this will take a couple of seconds. Just relax. If you want to know what's happening now, check out the Build and Deploy Process of Lagoon.
You can also check your Lagoon UI to see the progress of any deployment. (Contact your Lagoon administrator for this).
"},{"location":"using-lagoon-the-basics/first-deployment/#3-its-done","title":"3. It's done","text":"As soon as Lagoon is done building and deploying it will send a second notification to the chat system, here an example:
It tells you:
- Which project has been deployed.
- Which branch and Git SHA have been deployed.
- A link to the full logs of the build and deployment.
- Links to all routes (URLs) where the environment can be reached.
You can also quickly tell what kind of notification it is by the emoji at the beginning - whether it's just info that the build has started, a success, or fail.
That's it! We hope that wasn't too hard - making devOps accessible is what we are striving for!
"},{"location":"using-lagoon-the-basics/first-deployment/#but-wait-how-about-other-branches-or-the-production-environment","title":"But wait, how about other branches or the production environment?","text":"That's the beauty of Lagoon: it's exactly the same! Just push the name of the branch and that one will be deployed.
"},{"location":"using-lagoon-the-basics/first-deployment/#failure-dont-worry","title":"Failure? Don't worry","text":"Did the deployment fail? Oh no! But we're here to help:
- If you deployed a Drupal site, make sure to read the Drupal-specific first deployment documentation, which explains why this happens.
- Click on the
Logs
link in the error notification, it will tell you where in the deployment process the failure happened. - If you can't figure it out, just ask your Lagoon administrator, they are here to help!
- Reach out to us in your support channel or in the community Discord.
"},{"location":"using-lagoon-the-basics/going-live/","title":"Going Live","text":"Congratulations, you're this close to going live with your website on Lagoon! In order to make this as seamless as possible, we've got this final checklist for you. It leads you through the last few things you should check before taking your site live.
"},{"location":"using-lagoon-the-basics/going-live/#check-your-lagoonyml","title":"Check your .lagoon.yml
","text":""},{"location":"using-lagoon-the-basics/going-live/#routes-ssl","title":"Routes / SSL","text":"Check to be sure that all routes have been set up in your .lagoon.yml
. Be aware that if you don't point the domains towards Lagoon, you should disable Let's Encrypt (LE) certificate creation, as it will lead to issues. Domains not pointing towards Lagoon will be disabled after a while in order to not exceed the Let's Encrypt quotas.
If you use Certificate Authority (CA) signed certificates, you can set tls-acme
to false
, but leave the insecure
flag set to Allow
or Redirect
. In the case of CA certificates, contact your Lagoon administrator with the routes and the SSL certificate that needs to be put in place.
.lagoon.ymlenvironments:\nmain:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'false'\ninsecure: Allow\n- www.example.com:\ntls-acme: 'false'\ninsecure: Allow\n
As soon as the DNS entries point towards your Lagoon installation, you can switch the flags: tls-acme
to true
and insecure
to Redirect
.lagoon.ymlenvironments:\nmain:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'true'\ninsecure: Redirect\n- www.example.com:\ntls-acme: 'true'\ninsecure: Redirect\n
Note
As checking every page of your website might be a bit a tedious job, you can make use of mixed-content-scan. This will crawl the entire site and give you back pages that include assets from a non-HTTPS site.
"},{"location":"using-lagoon-the-basics/going-live/#redirects","title":"Redirects","text":"If you need non-www to www redirects, make sure you have them set up in the redirects-map.conf
- see Documentation.
"},{"location":"using-lagoon-the-basics/going-live/#cron-jobs","title":"Cron jobs","text":"Check if your cron jobs have been set up for your production environment - see .lagoon.yml
.
"},{"location":"using-lagoon-the-basics/going-live/#dns","title":"DNS","text":"To make it as smooth as possible for you to get your site pointing to our servers, we have dedicated load-balancer DNS records. Those technical DNS resource records are used for getting your site linked to the amazee.io infrastructure and serve no other purpose. If you are in doubt of the CNAME record, contact your Lagoon administrator about the exact CNAME you need to set up.
Example on amazee.io : <region-identifier>.amazee.io
Before you switch over your domain to Lagoon, make sure you lower the Time-to-Live (TTL) before you go live. This will ensure that the switch from the old to the new servers will go quickly. We usually advise a TTL of 300-600 seconds prior to the DNS switch. More information about TTL.
Info
This information only relates to amazee.io hosted projects, and will shortly be removed from these docs and added to amazee.io specific ones
"},{"location":"using-lagoon-the-basics/going-live/#recommended-settings-for-fastly","title":"Recommended settings for Fastly:","text":""},{"location":"using-lagoon-the-basics/going-live/#subdomains-cname","title":"Subdomains (CNAME)","text":"The recommended method of pointing your subdomain's (e.g. www.example.com) DNS records at Lagoon is via a CNAME record as shown below:
CNAME
: cdn.amazee.io
"},{"location":"using-lagoon-the-basics/going-live/#root-domains-aaaaa","title":"Root domains (A/AAAA)","text":"Configuring the root domain (e.g. example.com.) can be tricky because the DNS specification does not allow root domains to point to a CNAME. Therefore, the following A and AAAA records should be used. Please ensure you set up individual records for each IP listed below:
A
: 151.101.2.191
A
: 151.101.66.191
A
: 151.101.130.191
A
: 151.101.194.191
AAAA
: 2a04:4e42::703
AAAA
: 2a04:4e42:200::703
AAAA
: 2a04:4e42:400::703
AAAA
: 2a04:4e42:600::703
"},{"location":"using-lagoon-the-basics/going-live/#production-environment","title":"Production environment","text":"Lagoon understands the concept of development and production environments. Development environments automatically send noindex
and nofollow
headers in order to prohibit indexing by search engines.
X-Robots-Tag: noindex, nofollow
During project setup, the production environment should already be defined. If that's omitted, your environment will run in development mode. You can check if the environment is set as production environment in the Lagoon user interface. If the production environment is not set, let your Lagoon administrator know, and they will configure the system accordingly.
"},{"location":"using-lagoon-the-basics/lagoon-build-errors-and-warnings/","title":"Lagoon Build Errors and Warnings","text":"Newer releases of Lagoon have the capability to identify potential issues with the build, and highlight them as warnings without failing. This is also a way for the Lagoon team to inform users of pending deprecations and changes to functionality.
For example, if the Lagoon team makes a change to a setting in lagoon.yml
, and there\u2019s something that users need to change, the warning will mention it, so users will be able to change it before it becomes a breaking change. They should be resolved ASAP wherever possible, as future releases of Lagoon may not be able to handle the errors, but they shouldn't stop your build.
If you aren't sure how to resolve these errors, please reach out to your Lagoon administrator, or ask a question in the Lagoon community.
"},{"location":"using-lagoon-the-basics/lagoon-build-errors-and-warnings/#docker-compose-errors","title":"Docker Compose Errors","text":"Please also see the section on Common Docker Compose Issues, as some of these issues may be covered there
Lagoon Build output indicating env_file error> an env_file is defined in your docker-compose file, but no matching file found\n
Docker Compose expects a referenced env file to be present at build time, but that env file is only present in local development, or has been excluded from the Dockerfile. The Lagoon team is working to hopefully allow Docker Compose to ignore this error, so this warning will remain until we have a resolution.
Lagoon Build output indicating string key error> an invalid string key was detected in your docker-compose file\n
There is an error in your Docker Compose file, most likely relating to a malformed or misused alias or anchor. The error message should help you understand where.
Lagoon Build output indicating yaml validation error> There are yaml validation errors in your docker-compose file that should be corrected\n
There is an error in your Docker Compose file, most likely relating to a malformed or misused alias or anchor. The error message should help you understand where.
"},{"location":"using-lagoon-the-basics/lagoon-build-errors-and-warnings/#deprecated-images","title":"Deprecated Images","text":"Please see the dedicated page on how to handle this warning
"},{"location":"using-lagoon-the-basics/local-development-environments/","title":"Local Development Environments","text":"Even though Lagoon has only a hard dependency on Docker and Docker Compose (which is mostly shipped with Docker) there are some things which are nice for local development that are not included in Docker:
- An HTTP reverse proxy for nice URLs and HTTPS offloading.
- A DNS system so we don't have to remember IP addresses.
- SSH agents to use SSH keys within containers.
- A system that receives and displays mail locally.
Warning You do not need to install Lagoon locally to use it locally! That sounds confusing but follow the documentation. Lagoon is the system that deploys your local development environment to your production environment, it's not the environment itself.
"},{"location":"using-lagoon-the-basics/local-development-environments/#pygmy-ddev-or-lando-the-choice-is-yours","title":"pygmy, DDEV, or Lando - the choice is yours","text":""},{"location":"using-lagoon-the-basics/local-development-environments/#pygmy","title":"pygmy","text":"Lagoon has traditionally worked best with pygmy
, which is a preconfigured system of the above tools and works out of the box with Lagoon. It lives at https://github.com/pygmystack/pygmy
pygmy
is written in Golang, so to install it, run:
Install with HomeBrewbrew tap pygmystack/pygmy && brew install pygmy\n
For detailed usage or installation info on pygmy, see its documentation.
"},{"location":"using-lagoon-the-basics/local-development-environments/#lando","title":"Lando","text":"Lagoon is well-integrated with Lando! For more information, please see the documentation at https://docs.lando.dev/config/lagoon.html to get yourself up and running.
Lando's workflow for Lagoon will be familiar to users of Lando, and will also be the easiest way for Lagoon newcomers to get up and running. Pygmy presents a closer integration with Docker, which will lend itself better to more complex scenarios and use cases but will also require a deeper understanding.
"},{"location":"using-lagoon-the-basics/local-development-environments/#ddev","title":"DDEV","text":"Lagoon is also supported on DDEV! Check out their documentation to get started: https://ddev.readthedocs.io/en/stable/users/providers/lagoon/.
We have previously evaluated adding support for other systems like Docksal and Docker4Drupal, and while we may add support for these in the future, our current focus is on supporting our current tools.
"},{"location":"using-lagoon-the-basics/setup-project/","title":"Set Up a New Project","text":"Note
We are working hard on getting our CLI and GraphQL API set up to allow everyone using Lagoon to set up and configure their projects themselves. Right now, it needs more testing before we can release those features, so hold tight!
Until then, the setup of a new project involves talking to your Lagoon administrator, which is ok, as they are much friendlier than APIs. \ud83d\ude0a
Please have the following information ready for your Lagoon administrator:
- A name you would like the project to be known by
- This name can only contain lowercase characters, numbers and dashes
- Double dashes (
--
) are not allowed within a project name
- SSH public keys, email addresses and the names of everybody that will work on this project. Here are instructions for generating and copying SSH keys for GitHub, GitLab, and Bitbucket.
- The URL of the Git repository where your code is hosted (
git@example.com:test/test.git
). - The name of the Git branch you would like to use for your production environment (see Environment Types for details about the environments).
- Which branches and pull requests you would like to deploy to your additional environments. With Lagoon, you can filter branches and pull requests by name with regular expressions, and your Lagoon administrator can get this set up for you.
We suggest deploying specific important branches (like develop
and main
) and pull requests. But that's all up to you! (see Workflows for some more information)
"},{"location":"using-lagoon-the-basics/setup-project/#1-make-sure-your-project-is-lagoonized","title":"1. Make sure your project is Lagoonized","text":"This means that the .lagoon.yml
and docker-compose.yml
files are available in your Git repository and configured accordingly.
If this is not the case, check out the list of Step-by-Step Guides on how to do so before proceeding.
"},{"location":"using-lagoon-the-basics/setup-project/#2-provide-access-to-your-code","title":"2. Provide access to your code","text":"In order to deploy your code, Lagoon needs access to it. By design and for security, Lagoon only needs read access to your Git repository.
You may need your Lagoon administrator to tell you the SSH public key or the Git account to give read access to.
"},{"location":"using-lagoon-the-basics/setup-project/#3-configure-webhooks","title":"3. Configure Webhooks","text":"Lagoon needs to be informed about a couple of events that are happening to your Git repository. Currently these are pushes and pull requests, but we may add more in the future.
As Lagoon supports many different Git hosts, we have split off those instructions into this documentation: Configure Webhooks.
"},{"location":"using-lagoon-the-basics/setup-project/#4-next-first-deployment","title":"4. Next: First deployment","text":"Congratulations, you are now ready to run your first deployment.
"},{"location":"ja/#lagoon-kubernetes","title":"Lagoon - Kubernetes\u5411\u3051\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30c7\u30ea\u30d0\u30ea\u30fc\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0","text":"Lagoon\u306f\u958b\u767a\u8005\u304c\u7406\u60f3\u3068\u3059\u308b\u3082\u306e\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u305d\u308c\u306f\u958b\u767a\u8005\u304c\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u3067\u307e\u3063\u305f\u304f\u540c\u3058\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3059\u308b\u30b7\u30b9\u30c6\u30e0\u3067\u3059\u3002\u540c\u3058Docker\u30a4\u30e1\u30fc\u30b8\u3001\u540c\u3058\u30b5\u30fc\u30d3\u30b9\u8a2d\u5b9a\u3001\u305d\u3057\u3066\u540c\u3058\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/#_1","title":"\u306f\u3058\u3081\u306b","text":"\u3042\u306a\u305f\u304cLagoon\u3092\u4f7f\u7528\u3057\u3066\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3084\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30db\u30b9\u30c8\u3057\u305f\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Lagoon\u306e\u6a5f\u80fd\u306b\u3064\u3044\u3066\u3088\u308a\u6df1\u304f\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u306f\u3001Lagoon\u306e\u9ad8\u5ea6\u306a\u4f7f\u3044\u65b9\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
Lagoon\u306e\u4ed5\u7d44\u307f\u3092\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u306f\u3001Lagoon\u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u305d\u3057\u3066\u3001\u3088\u308a\u6df1\u3044\u7406\u89e3\u306e\u305f\u3081\u306b\u3001Lagoon\u306e\u9ad8\u5ea6\u306a\u6982\u5ff5\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u3042\u306a\u305f\u304cLagoon\u3092\u958b\u767a\u3057\u305f\u3044(\u6a5f\u80fd\u3092\u8ffd\u52a0\u3001\u30d0\u30b0\u3092\u4fee\u6b63)\u5834\u5408\u306f\u3001Lagoon\u306e\u958b\u767a\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/#tldr-lagoon","title":"TL;DR: Lagoon\u306e\u4ed5\u7d44\u307f","text":" - \u958b\u767a\u8005\u306f\u3001YAML \u30d5\u30a1\u30a4\u30eb\u5185\u3067\u5fc5\u8981\u306a\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3001\u8a2d\u5b9a\u3057\u307e\u3059\u3002
- \u4fee\u6b63\u3057\u305f\u30b3\u30fc\u30c9\u3092 Git \u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
- Lagoon \u306f YAML \u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u3057\u3001\u5fc5\u8981\u306a\u69cb\u6210\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
- Lagoon \u306f\u5fc5\u8981\u306a Docker \u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002
- Lagoon \u306f\u305d\u308c\u3089\u3092 Docker \u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
- Lagoon \u306f Kubernetes \u306b\u5fc5\u8981\u306a\u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
- Lagoon \u306f\u30b3\u30f3\u30c6\u30ca\u306e\u5c55\u958b\u3092\u76e3\u8996\u3057\u307e\u3059\u3002
- \u3059\u3079\u3066\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001Lagoon \u306f\u3055\u307e\u3056\u307e\u306a\u65b9\u6cd5 (Slack\u3001\u30e1\u30fc\u30eb\u3001Web \u30b5\u30a4\u30c8\u306a\u3069) \u3067\u958b\u767a\u8005\u306b\u901a\u77e5\u3057\u307e\u3059\u3002
"},{"location":"ja/#_2","title":"\u30d8\u30eb\u30d7","text":"\u8cea\u554f\u3084\u30a2\u30a4\u30c7\u30a2\u304c\u3042\u308a\u307e\u3057\u305f\u3089\u30b3\u30fc\u30c9\u30e1\u30f3\u30c6\u30ca\u30fc\u3084\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30bf\u306b\u4f1a\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
Lagoon Discord\u306e\u4f1a\u8a71\u3078\u3054\u53c2\u52a0\u304f\u3060\u3055\u3044\uff1ahttps://discord.gg/te5hHe95JE
"},{"location":"ja/#lagoon_1","title":"Lagoon\u306b\u3064\u3044\u3066","text":" - Lagoon \u306f\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3068\u30d3\u30eb\u30c9\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u975e\u5e38\u306b\u8907\u96d1\u3067\u3059\u3002\u8907\u6570\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30bd\u30fc\u30b9\u3001\u8907\u6570\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u3001\u8907\u6570\u306e\u901a\u77e5\u30b7\u30b9\u30c6\u30e0\u304c\u3042\u308a\u307e\u3059\u3002\u5404\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306f1\u30641\u3064\u304c\u7279\u6709\u306e\u3082\u306e\u3067\u3042\u308a\u3001\u6570\u79d2\u304b\u3089\u6570\u6642\u9593\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u67d4\u8edf\u6027\u3068\u5805\u7262\u6027\u3092\u8003\u616e\u3057\u3066\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0 \u30b7\u30b9\u30c6\u30e0\u3092\u4ecb\u3057\u3066\u901a\u4fe1\u3059\u308b\u305f\u3081\u3001\u500b\u3005\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u30b9\u30b1\u30fc\u30eb\u30a2\u30c3\u30d7\u304a\u3088\u3073\u30b9\u30b1\u30fc\u30eb\u30c0\u30a6\u30f3\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u500b\u3005\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30c0\u30a6\u30f3\u30bf\u30a4\u30e0\u3092\u4e57\u308a\u5207\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001\u4ed6\u306e\u90e8\u5206\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u3053\u3068\u306a\u304f\u3001\u672c\u756a\u74b0\u5883\u3067 Lagoon \u306e\u65b0\u3057\u3044\u90e8\u5206\u3092\u8a66\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
- Lagoon \u3067\u306f\u591a\u304f\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5404\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u306f\u305d\u308c\u305e\u308c\u56fa\u6709\u306e\u9577\u6240\u304c\u3042\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u3001\u5404\u30b5\u30fc\u30d3\u30b9\u306b\u6700\u3082\u9069\u3057\u305f\u8a00\u8a9e\u3092\u6c7a\u5b9a\u3059\u308b\u3088\u3046\u52aa\u3081\u3066\u3044\u307e\u3059\u3002\u73fe\u5728\u3001Lagoon \u306e\u591a\u304f\u306f Node.js \u3067\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u6700\u521d\u306bNode.js\u3092\u4f7f\u3044\u59cb\u3081\u305f\u304b\u3089\u3060\u3051\u3067\u306a\u304f\u3001Node.js\u304cwebhooks\u3001\u30bf\u30b9\u30af\u306a\u3069\u306e\u975e\u540c\u671f\u51e6\u7406\u3092\u53ef\u80fd\u306b\u3059\u308b\u304b\u3089\u3067\u3059\u3002\u4e00\u90e8\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3092\u8003\u3048\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u306e\u7d20\u6674\u3089\u3057\u3044\u3068\u3053\u308d\u3067\u3042\u308a\u3001\u4ed6\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3078\u306e\u5f71\u97ff\u3092\u61f8\u5ff5\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u4e00\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5225\u306e\u8a00\u8a9e\u3067\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- Lagoon\u306fDrupal\u7279\u6709\u306e\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u4efb\u610f\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002Drupal\u7528\u306e\u65e2\u5b58\u306eDocker\u30a4\u30e1\u30fc\u30b8\u304c\u3042\u308a\u3001Drush\u306e\u3088\u3046\u306aDrupal\u7279\u6709\u306e\u30c4\u30fc\u30eb\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u304c\u3001Drupal\u7279\u6709\u306e\u90e8\u5206\u306f\u305d\u3053\u3060\u3051\u3067\u3059\u3002
- Lagoon\u306fDevOps\u3067\u3059\u3002\u958b\u767a\u8005\u304c\u5fc5\u8981\u306a\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u304c\u6b63\u3057\u3044\u65b9\u6cd5\u3067\u306a\u3044\u3068\u601d\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3057\u3001\u958b\u767a\u8005\u306b\u3042\u307e\u308a\u306b\u3082\u591a\u304f\u306e\u6a29\u9650\u3092\u4e0e\u3048\u3066\u3044\u308b\u3068\u601d\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u79c1\u305f\u3061\u306f\u30b7\u30b9\u30c6\u30e0\u30a8\u30f3\u30b8\u30cb\u30a2\u3068\u3057\u3066\u3001\u958b\u767a\u8005\u3092\u5f37\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002\u958b\u767a\u8005\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u308c\u3089\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u30c6\u30b9\u30c8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308c\u3070\u3001\u5f7c\u3089\u81ea\u8eab\u304c\u30d0\u30b0\u3084\u30df\u30b9\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- Lagoon\u306fDocker\u3068Kubernetes\u4e0a\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002
- Lagoon\u306f\u5b8c\u5168\u306b\u30ed\u30fc\u30ab\u30eb\u3067\u958b\u767a\u30fb\u30c6\u30b9\u30c8\u304c\u53ef\u80fd\u3067\u3059\u3002
- Lagoon\u306f\u5b8c\u5168\u306b\u7d71\u5408\u30c6\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u79c1\u305f\u3061\u304c \u5168\u30d7\u30ed\u30bb\u30b9\u3092\u30c6\u30b9\u30c8\u3067\u304d\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002Git\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u306e\u53d7\u4fe1\u304b\u3089Docker\u30b3\u30f3\u30c6\u30ca\u3078\u306e\u30c7\u30d7\u30ed\u30a4\u307e\u3067\u3001\u540c\u3058Git\u30cf\u30c3\u30b7\u30e5\u304c\u30af\u30e9\u30b9\u30bf\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002
- \u6700\u3082\u91cd\u8981\u306a\u70b9: \u3053\u308c\u306f\u9032\u884c\u4e2d\u306e\u4f5c\u696d\u3067\u3059\u3002\u307e\u3060\u7d42\u308f\u308a\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002amazee.io\u3067\u306f\u3001\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u3057\u3066\u3001\u53ef\u80fd\u306a\u9650\u308a\u30b3\u30fc\u30c9\u3092\u5171\u6709\u3057\u3001\u5354\u529b\u3057\u3066\u4f5c\u696d\u3092\u9032\u3081\u308b\u5fc5\u8981\u304c\u3042\u308b\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002
\u79c1\u305f\u3061\u306f\u3042\u306a\u305f\u304cLagoon\u306e\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3068\u30b5\u30fc\u30d3\u30b9\u304c\u3069\u306e\u3088\u3046\u306b\u9023\u643a\u3057\u3066\u52d5\u4f5c\u3059\u308b\u304b\u3001\u7406\u89e3\u3057\u3066\u3082\u3089\u3048\u308b\u3053\u3068\u3092\u671b\u3093\u3067\u3044\u307e\u3059\u3002\u3053\u3053\u306b\u30b9\u30ad\u30fc\u30de\u304c\u3042\u308a\u307e\u3059(\u5c11\u3057\u53e4\u304f\u3001\u6700\u8fd1\u8ffd\u52a0\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u3084Kubernetes\u3092\u30ab\u30d0\u30fc\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u66f4\u65b0\u4f5c\u696d\u4e2d\u3067\u3059):Lucid Chart
"},{"location":"ja/#lagoon_2","title":"Lagoon\u306e\u6b74\u53f2","text":"\u8aac\u660e\u3057\u305f\u3088\u3046\u306b\u3001Lagoon\u306f\u7406\u60f3\u3092\u73fe\u5b9f\u306b\u3057\u305f\u3082\u306e\u3067\u3059\u3002amazee.io\u3067\u306f\u3001Drupal\u30928\u5e74\u4ee5\u4e0a\u30db\u30b9\u30c8\u3057\u3066\u304d\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u79c1\u305f\u3061\u306e\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e4\u56de\u76ee\u306e\u5927\u304d\u306a\u6539\u8a02\u3067\u3059\u30023\u56de\u76ee\u306e\u6539\u8a02\u306fPuppet\u3068Ansible\u3092\u4e2d\u5fc3\u306b\u69cb\u7bc9\u3055\u308c\u307e\u3057\u305f\u3002\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u5404\u90e8\u5206\u306f\u5168\u3066\u8a2d\u5b9a\u7ba1\u7406\u3067\u884c\u308f\u308c\u307e\u3057\u305f\u3002\u3053\u308c\u306b\u3088\u308a\u65b0\u3057\u3044\u30b5\u30fc\u30d0\u30fc\u306e\u8a2d\u5b9a\u304c\u975e\u5e38\u306b\u901f\u304f\u3067\u304d\u307e\u3057\u305f\u304c\u3001\u540c\u6642\u306b\u958b\u767a\u8005\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306e\u4f59\u5730\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3057\u305f\u3002\u79c1\u305f\u3061\u306f\u3044\u304f\u3064\u304b\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3092\u5b9f\u88c5\u3057\u307e\u3057\u305f\u304c\u3001\u3059\u3067\u306bDocker\u3092\u672c\u756a\u74b0\u5883\u3067\u4f7f\u7528\u3057\u3066\u3044\u307e\u3057\u305f\u3002\u3057\u304b\u3057\u3001\u79c1\u305f\u3061\u306f\u305d\u306e\u3053\u3068\u306b\u5b8c\u5168\u306b\u6e80\u8db3\u3057\u3066\u3044\u305f\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u79c1\u305f\u3061\u306f\u3001\u65e2\u5b58\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3060\u3051\u3067\u306f\u8db3\u308a\u306a\u3044\u3068\u6c17\u3065\u304d\u307e\u3057\u305f\u3002\u30c7\u30ab\u30c3\u30d7\u30ebDrupal\u306e\u53f0\u982d\u3001\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u3067\u306eNode.js\u306e\u52d5\u4f5c\u8981\u6c42\u3001Elasticsearch\u3078\u306e\u8981\u671b\u3001\u7570\u306a\u308bSolr\u30d0\u30fc\u30b8\u30e7\u30f3\u306a\u3069\u3001\u591a\u304f\u306b\u5bfe\u5fdc\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3057\u305f\u3002
\u540c\u6642\u306b\u3001\u79c1\u305f\u3061\u306f\u9577\u5e74\u306b\u308f\u305f\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u305f\u3081\u306bDocker\u3092\u4f7f\u7528\u3057\u3066\u304d\u307e\u3057\u305f\u3002\u672c\u756a\u74b0\u5883\u3067\u5168\u3066\u3092Docker\u3067\u884c\u3046\u3068\u3044\u3046\u306e\u306f\u5e38\u306b\u8003\u3048\u3066\u3044\u307e\u3057\u305f\u3002\u552f\u4e00\u306e\u554f\u984c\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u3068\u672c\u756a\u74b0\u5883\u3068\u306e\u9023\u643a\u3067\u3057\u305f\u3002\u4ed6\u306b\u3082\u3001\u672c\u756a\u74b0\u5883\u3067Drupal\u3092Docker\u3067\u52d5\u4f5c\u3055\u305b\u308b\u30b7\u30b9\u30c6\u30e0\u304c\u5b58\u5728\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u30ed\u30fc\u30ab\u30eb\u3068\u672c\u756a\u74b0\u5883\u3067\u6b63\u78ba\u306b\u540c\u3058\u30a4\u30e1\u30fc\u30b8\u3068\u30b5\u30fc\u30d3\u30b9\u3092\u30c6\u30b9\u30c8\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3059\u308b\u3082\u306e\u306f\u4f55\u3082\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
Lagoon\u306f2017\u5e74\u306b\u8a95\u751f\u3057\u307e\u3057\u305f\u3002\u305d\u308c\u4ee5\u6765\u3001\u672c\u756a\u74b0\u5883\u3067Docker\u3092\u52d5\u4f5c\u3055\u305b\u308b\u30b7\u30b9\u30c6\u30e0\u306b\u767a\u5c55\u3057\u307e\u3057\u305f\u3002Lagoon\u306f\u3001\u6211\u3005\u306e\u7b2c3\u4e16\u4ee3\u306e\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u3001\u6700\u5148\u7aef\u306e\u5168Docker\u30d9\u30fc\u30b9\u306e\u30b7\u30b9\u30c6\u30e0\u306b\u7f6e\u304d\u63db\u3048\u307e\u3057\u305f\u3002
"},{"location":"ja/#_3","title":"\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9","text":"amazee.io\u3067\u306f\u3001\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u53ef\u80fd\u6027\u3092\u4fe1\u3058\u3066\u3044\u307e\u3059\u3002Drupal\u306e\u3088\u3046\u306a\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304c\u72ec\u5360\u7684\u306a\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u30db\u30b9\u30c8\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306f\u5e38\u306b\u6211\u3005\u306b\u3068\u3063\u3066\u554f\u984c\u3067\u3057\u305f\u3002\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u4f1a\u793e\u306e\u5f37\u3055\u3068\u6210\u529f\u306f\u3001\u5358\u306b\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30b7\u30b9\u30c6\u30e0\u3084\u30b5\u30fc\u30d3\u30b9\u306e\u8a2d\u5b9a\u3060\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u308c\u306f\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u52d5\u304b\u3059\u4eba\u3005\u3068\u77e5\u8b58\u3067\u3059\u3002 \u30d7\u30ed\u30bb\u30b9\u3001\u30b9\u30ad\u30eb\u3001\u4e88\u671f\u3057\u306a\u3044\u72b6\u6cc1\u306b\u5bfe\u5fdc\u3059\u308b\u80fd\u529b\u3001\u305d\u3057\u3066\u6700\u5f8c\u306b\u5fd8\u308c\u3066\u306f\u306a\u3089\u306a\u3044\u306e\u306f\u3001\u5f7c\u3089\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u63d0\u4f9b\u3059\u308b\u30b5\u30dd\u30fc\u30c8\u3067\u3059\u3002
"},{"location":"ja/#_4","title":"\u30e9\u30a4\u30bb\u30f3\u30b9","text":"Lagoon\u306f\u3001Apache 2.0 \u30e9\u30a4\u30bb\u30f3\u30b9
\u306e\u4e0b\u3067\u5229\u7528\u53ef\u80fd\u3067\u3059\u3002
"},{"location":"ja/code-of-conduct/","title":"\u884c\u52d5\u898f\u7bc4","text":""},{"location":"ja/code-of-conduct/#our-pledge","title":"\u79c1\u305f\u3061\u306e\u8a93\u3044","text":"\u30aa\u30fc\u30d7\u30f3\u3067\u6b53\u8fce\u7684\u306a\u74b0\u5883\u3092\u80b2\u3066\u308b\u305f\u3081\u306b\u3001\u79c1\u305f\u3061\u306f\u8ca2\u732e\u8005\u3084\u30e1\u30f3\u30c6\u30ca\u3068\u3057\u3066\u3001\u5e74\u9f62\u3001\u4f53\u578b\u3001\u969c\u5bb3\u3001\u6c11\u65cf\u6027\u3001\u6027\u81ea\u8a8d\u3068\u6027\u8868\u73fe\u3001\u7d4c\u9a13\u306e\u30ec\u30d9\u30eb\u3001\u56fd\u7c4d\u3001\u500b\u4eba\u306e\u5916\u898b\u3001\u4eba\u7a2e\u3001\u5b97\u6559\u3001\u307e\u305f\u306f\u6027\u7684\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u6027\u7684\u6307\u5411\u306b\u95a2\u4fc2\u306a\u304f\u3001\u79c1\u305f\u3061\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3078\u306e\u53c2\u52a0\u3092\u8ab0\u3082\u304c\u30cf\u30e9\u30b9\u30e1\u30f3\u30c8\u306e\u306a\u3044\u7d4c\u9a13\u306b\u3059\u308b\u3053\u3068\u3092\u8a93\u3044\u307e\u3059\u3002
"},{"location":"ja/code-of-conduct/#our-standards","title":"\u79c1\u305f\u3061\u306e\u57fa\u6e96","text":"\u7a4d\u6975\u7684\u306a\u74b0\u5883\u4f5c\u308a\u306b\u8ca2\u732e\u3059\u308b\u884c\u52d5\u306e\u4f8b:
- \u30a6\u30a7\u30eb\u30ab\u30df\u30f3\u30b0\u3067\u5305\u62ec\u7684\u306a\u8a00\u8449\u9063\u3044\u3092\u3059\u308b\u3053\u3068\u3002
- \u7570\u306a\u308b\u8996\u70b9\u3068\u7d4c\u9a13\u3092\u5c0a\u91cd\u3059\u308b\u3053\u3068\u3002
- \u5efa\u8a2d\u7684\u306a\u6279\u8a55\u3092\u7a4f\u3084\u304b\u306b\u53d7\u3051\u5165\u308c\u308b\u3053\u3068\u3002
- \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u305f\u3081\u306b\u6700\u5584\u3092\u5c3d\u304f\u3059\u3053\u3068\u3002
- \u4ed6\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30e1\u30f3\u30d0\u30fc\u306b\u5bfe\u3059\u308b\u5171\u611f\u3092\u793a\u3059\u3053\u3068\u3002
\u53c2\u52a0\u8005\u306b\u3088\u308b\u8a31\u3055\u308c\u306a\u3044\u884c\u52d5\u306e\u4f8b:
- \u6027\u7684\u306a\u8a00\u8449\u3084\u30a4\u30e1\u30fc\u30b8\u306e\u4f7f\u7528\u3001\u304a\u3088\u3073\u6b53\u8fce\u3055\u308c\u306a\u3044\u6027\u7684\u306a\u95a2\u5fc3\u3084\u30a2\u30c9\u30d0\u30f3\u30b9\u3002
- \u30c8\u30ed\u30fc\u30ea\u30f3\u30b0\u3001\u4fae\u8fb1\u7684/\u8511\u8996\u7684\u306a\u30b3\u30e1\u30f3\u30c8\u3001\u304a\u3088\u3073\u500b\u4eba\u307e\u305f\u306f\u653f\u6cbb\u7684\u306a\u653b\u6483\u3002
- \u516c\u5171\u306e\u5834\u307e\u305f\u306f\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u3067\u306e\u30cf\u30e9\u30b9\u30e1\u30f3\u30c8\u3002
- \u660e\u78ba\u306a\u8a31\u53ef\u306a\u3057\u306b\u4ed6\u4eba\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u60c5\u5831(\u7269\u7406\u7684\u307e\u305f\u306f\u96fb\u5b50\u7684\u306a\u4f4f\u6240\u306a\u3069)\u3092\u516c\u958b\u3059\u308b\u3053\u3068\u3002
- \u5408\u7406\u7684\u306b\u4e0d\u9069\u5207\u3068\u8003\u3048\u3089\u308c\u308b\u4ed6\u306e\u884c\u70ba\u3002 \u5c02\u9580\u7684\u306a\u74b0\u5883\u3067\u306f\u4e0d\u9069\u5207\u3068\u8003\u3048\u3089\u308c\u308b\u5834\u5408\u3002
"},{"location":"ja/code-of-conduct/#our-responsibilities","title":"\u79c1\u305f\u3061\u306e\u8cac\u4efb","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7ba1\u7406\u8005\u306f\u3001\u53d7\u3051\u5165\u308c\u3089\u308c\u308b\u884c\u52d5\u306e\u57fa\u6e96\u3092\u660e\u78ba\u306b\u3057\u3001\u4e0d\u53d7\u3051\u5165\u308c\u53ef\u80fd\u306a\u884c\u52d5\u306e\u4e8b\u4f8b\u306b\u5bfe\u3057\u3066\u9069\u5207\u3067\u516c\u6b63\u306a\u662f\u6b63\u63aa\u7f6e\u3092\u3068\u308b\u3053\u3068\u304c\u671f\u5f85\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7ba1\u7406\u8005\u306f\u3001\u3053\u306e\u884c\u52d5\u898f\u7bc4\u306b\u5408\u81f4\u3057\u3066\u3044\u306a\u3044\u30b3\u30e1\u30f3\u30c8\u3001\u30b3\u30df\u30c3\u30c8\u3001\u30b3\u30fc\u30c9\u3001\u30a6\u30a3\u30ad\u306e\u7de8\u96c6\u3001\u554f\u984c\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u8ca2\u732e\u3092\u524a\u9664\u3001\u7de8\u96c6\u3001\u307e\u305f\u306f\u62d2\u5426\u3059\u308b\u6a29\u5229\u3068\u8cac\u4efb\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u4e0d\u9069\u5207\u3001\u8105\u5a01\u7684\u3001\u653b\u6483\u7684\u3001\u307e\u305f\u306f\u6709\u5bb3\u3068\u898b\u306a\u3059\u4ed6\u306e\u884c\u52d5\u3092\u884c\u3063\u305f\u8ca2\u732e\u8005\u3092\u4e00\u6642\u7684\u307e\u305f\u306f\u6c38\u4e45\u306b\u7981\u6b62\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/code-of-conduct/#scope","title":"\u9069\u7528\u7bc4\u56f2","text":"\u3053\u306e\u884c\u52d5\u898f\u7bc4\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b9\u30da\u30fc\u30b9\u5185\u3060\u3051\u3067\u306a\u304f\u3001\u500b\u4eba\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u305d\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u4ee3\u8868\u3057\u3066\u516c\u5171\u306e\u30b9\u30da\u30fc\u30b9\u306b\u3044\u308b\u3068\u304d\u306b\u3082\u9069\u7528\u3055\u308c\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u4ee3\u8868\u3059\u308b\u4f8b\u3068\u3057\u3066\u306f\u3001\u516c\u5f0f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3001\u516c\u5f0f\u306e\u30bd\u30fc\u30b7\u30e3\u30eb\u30e1\u30c7\u30a3\u30a2\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u901a\u3058\u3066\u6295\u7a3f\u3059\u308b\u3053\u3068\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u307e\u305f\u306f\u30aa\u30d5\u30e9\u30a4\u30f3\u306e\u30a4\u30d9\u30f3\u30c8\u3067\u6307\u540d\u3055\u308c\u305f\u4ee3\u8868\u8005\u3068\u3057\u3066\u884c\u52d5\u3059\u308b\u3053\u3068\u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4ee3\u8868\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7ba1\u7406\u8005\u306b\u3088\u3063\u3066\u3055\u3089\u306b\u5b9a\u7fa9\u3055\u308c\u3001\u660e\u78ba\u5316\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/code-of-conduct/#enforcement","title":"\u57f7\u884c","text":"\u8650\u5f85\u7684\u3001\u5acc\u304c\u3089\u305b\u306e\u3042\u308b\u3001\u307e\u305f\u306f\u305d\u308c\u4ee5\u5916\u306e\u4e0d\u53d7\u3051\u5165\u308c\u53ef\u80fd\u306a\u884c\u52d5\u306e\u4e8b\u4f8b\u306f\u3001\u9023\u7d61\u5148\u306b\u5831\u544a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c1\u30fc\u30e0\u306fuselagoon@amazee.io\u306b\u3044\u307e\u3059\u3002\u307e\u305f\u3001CoC\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u5b8c\u4e86\u3057\u305fLagoon\u30c1\u30fc\u30e0\u306e\u30e1\u30f3\u30d0\u30fc\u3067\u3042\u308bAlanna\u307e\u305f\u306fBrandon\u306b\u76f4\u63a5\u9023\u7d61\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c1\u30fc\u30e0\u306f\u3059\u3079\u3066\u306e\u82e6\u60c5\u3092\u30ec\u30d3\u30e5\u30fc\u3057\u3001\u8abf\u67fb\u3057\u3001\u72b6\u6cc1\u306b\u9069\u3057\u305f\u3068\u8003\u3048\u308b\u65b9\u6cd5\u3067\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c1\u30fc\u30e0\u306f\u3001\u4e8b\u8c61\u306e\u5831\u544a\u8005\u306b\u95a2\u3059\u308b\u6a5f\u5bc6\u6027\u3092\u7dad\u6301\u3059\u308b\u7fa9\u52d9\u304c\u3042\u308a\u307e\u3059\u3002\u5177\u4f53\u7684\u306a\u65bd\u884c\u30dd\u30ea\u30b7\u30fc\u306e\u8a73\u7d30\u306f\u3001\u5225\u9014\u6295\u7a3f\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30f3\u30c6\u30ca\u30fc\u304c\u8aa0\u5b9f\u306b\u884c\u52d5\u898f\u7bc4\u306b\u5f93\u308f\u306a\u3044\u5834\u5408\u3001\u307e\u305f\u306f\u305d\u308c\u3092\u5f37\u5236\u3057\u306a\u3044\u5834\u5408\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30ea\u30fc\u30c0\u30fc\u30b7\u30c3\u30d7\u306e\u4ed6\u306e\u30e1\u30f3\u30d0\u30fc\u306b\u3088\u3063\u3066\u4e00\u6642\u7684\u307e\u305f\u306f\u6c38\u4e45\u7684\u306a\u5f71\u97ff\u3092\u53d7\u3051\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/code-of-conduct/#attribution","title":"\u30a2\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3","text":"\u3053\u306e\u884c\u52d5\u898f\u7bc4\u306f\u3001Contributor Covenant\u3001\u30d0\u30fc\u30b8\u30e7\u30f31.4\u304b\u3089\u30a2\u30c0\u30d7\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u3061\u3089\u3067\u3054\u89a7\u3044\u305f\u3060\u3051\u307e\u3059 http://contributor-covenant.org/version/1/4\u3002
"},{"location":"ja/contributing/","title":"\u8ca2\u732e","text":"\u6211\u3005\u306fLagoon\u3078\u306e\u3042\u3089\u3086\u308b\u7a2e\u985e\u306e\u8ca2\u732e\u3092\u5fc3\u304b\u3089\u6b53\u8fce\u3057\u307e\u3059\uff01
"},{"location":"ja/contributing/#what-kind-of-contributions-do-we-need","title":"\u3069\u306e\u3088\u3046\u306a\u8ca2\u732e\u304c\u5fc5\u8981\u3067\u3059\u304b\uff1f","text":"Lagoon\u306f\u3069\u3093\u306a\u7a2e\u985e\u306e\u8ca2\u732e\u3067\u3082\u6069\u6075\u3092\u53d7\u3051\u307e\u3059 - \u30d0\u30b0\u4fee\u6b63\u3001\u65b0\u6a5f\u80fd\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u66f4\u65b0\u3001\u3042\u308b\u3044\u306f\u5358\u7d14\u306a\u30ad\u30e5\u30fc\u306e\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u306a\u3069 - \u3042\u306a\u305f\u304c\u52a9\u3051\u3066\u304f\u308c\u308b\u3053\u3068\u3092\u6211\u3005\u306f\u5b09\u3057\u304f\u601d\u3044\u307e\u3059\u3002
"},{"location":"ja/contributing/#developing-for-lagoon","title":"Lagoon\u306e\u958b\u767a","text":"Lagoon\u3092\u3042\u306a\u305f\u306e\u30ed\u30fc\u30ab\u30eb\u30de\u30b7\u30f3\u4e0a\u3067\u52d5\u304b\u3059\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3001KinD\u3092\u4f7f\u7528\u3057\u305fDeveloping Lagoon\u3068\u3044\u3046\u30bb\u30af\u30b7\u30e7\u30f3\u5168\u4f53\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u307e\u3060\u975e\u5e38\u306bWIP\u3067\u3059\u304c\u3001\u3042\u306a\u305f\u3092\u52a9\u3051\u308b\u305f\u3081\u306e\u591a\u304f\u306eMakefile\u30eb\u30fc\u30c1\u30f3\u304c\u5b58\u5728\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing/#installing-lagoon","title":"Lagoon\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u6211\u3005\u306fLagoon\u3092Helm\u30c1\u30e3\u30fc\u30c8\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5\u3092\u6982\u8aac\u3057\u305f\u5225\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u540d\u3082Installing Lagoon Into Existing Kubernetes Cluster - \u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u53ef\u80fd\u306a\u9650\u308a\u30b9\u30e0\u30fc\u30ba\u306b\u3057\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\uff01
"},{"location":"ja/contributing/#help-us-with-our-examples","title":"\u6211\u3005\u306e\u4f8b\u984c\u3067\u306e\u52a9\u3051","text":"\u73fe\u5728\u3001\u6211\u3005\u306e\u6700\u5927\u306e\u30cb\u30fc\u30ba\u306e\u4e00\u3064\u306f\u3001Lagoon\u304cDrupal\u4ee5\u5916\u306e\u5404\u7a2e\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30de\u30cd\u30b8\u30e1\u30f3\u30c8\u30b7\u30b9\u30c6\u30e0\u306a\u3069\u3068\u3069\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3059\u308b\u304b\u306e\u4f8b\u3092\u307e\u3068\u3081\u308b\u3053\u3068\u3067\u3059\u3002
\u3082\u3057\u3001\u3042\u306a\u305f\u304c\u73fe\u5728\u6211\u3005\u304cDocker Compose\u30b9\u30bf\u30c3\u30af\u3068\u3057\u3066\u6301\u3063\u3066\u3044\u306a\u3044\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9CMS\u307e\u305f\u306f\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u7acb\u3061\u4e0a\u3052\u308b\u3053\u3068\u304c\u3067\u304d\u308c\u3070\u3001PR\u3092\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u65e2\u5b58\u306e\u4f8b\u3092https://github.com/uselagoon/lagoon-ex\u3067\u3054\u89a7\u304f\u3060\u3055\u3044\u3002 \u30d2\u30f3\u30c8\u3001\u30a2\u30c9\u30d0\u30a4\u30b9\u3001\u30b9\u30bf\u30fc\u30bf\u30fc\u306e\u554f\u984c\u306b\u3064\u3044\u3066\u306f\u3001examples\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
\u305f\u3060\u3057\u3001\u53ef\u80fd\u306a\u9650\u308a\u3001\u57fa\u672c\u306eDocker Hub\u30a4\u30e1\u30fc\u30b8https://hub.docker.com/u/uselagoon\u3092\u4f7f\u7528\u3057\u3066\u4f5c\u6210\u3057\u3066\u3044\u305f\u3060\u304d\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002\u9069\u5207\u306a\u30a4\u30e1\u30fc\u30b8\u304c\u306a\u3044\u5834\u5408\u3084\u3001\u5f53\u793e\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001PR(\u53ef\u80fd\u306a\u5834\u5408)\u3092\u6295\u3052\u3066\u3044\u305f\u3060\u304f\u304b\u3001\u554f\u984c\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044(\u4ed6\u306e\u8ab0\u304b\u304c\u5bfe\u5fdc\u3067\u304d\u308b\u3088\u3046\u306b)https://github.com/uselagoon/lagoon-images\u306b\u3066\u3002
\u65e2\u5b58\u306e\u4f8b\u3092\u6539\u5584\u3059\u308b\u305f\u3081\u306b\u79c1\u305f\u3061\u3092\u624b\u4f1d\u3063\u3066\u304f\u3060\u3055\u3044\u3001\u3082\u3057\u3054\u53ef\u80fd\u3067\u3042\u308c\u3070 - \u79c1\u305f\u3061\u306f\u6700\u826f\u306e\u65b9\u6cd5\u3092\u8ffd\u6c42\u3057\u3066\u3044\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3001\u4f55\u304b\u610f\u5473\u306e\u306a\u3044\u3053\u3068\u3092\u3057\u3066\u3044\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f
\u3053\u308c\u3089\u306e\u4f8b\u306e\u3044\u305a\u308c\u304b\u306e\u30c6\u30b9\u30c8\u306b\u8ca2\u732e\u3059\u308b\u4eba\u306b\u306f\u30dc\u30fc\u30ca\u30b9\u30dd\u30a4\u30f3\u30c8\u304c\u3042\u308a\u307e\u3059 \u2013 https://github.com/amazeeio/drupal-example-simple/blob/8.x/TESTING_dockercompose.md\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3044\u304f\u3064\u304b\u306e\u4f8b\u30c6\u30b9\u30c8\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001\u305d\u308c\u3089\u3092\u30ac\u30a4\u30c0\u30f3\u30b9\u306b\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u79c1\u305f\u3061\u304c\u4f7f\u7528\u3057\u3066\u3044\u308b\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001Lando\u306e\u512a\u308c\u305f\u30c1\u30fc\u30e0\u304b\u3089\u306eLeia\u3067\u3059\u3002
\u4ed6\u306e\u4f8b\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u6539\u5584\u3059\u308b\u305f\u3081\u306b\u79c1\u305f\u3061\u3092\u624b\u4f1d\u3063\u3066\u304f\u3060\u3055\u3044 \u2013 \u79c1\u305f\u3061\u306f\u5b8c\u5168\u306a\u3082\u306e\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3001 \u539f\u7a3f\u3001\u6574\u7406\u3001\u5f79\u7acb\u3064\u30ea\u30bd\u30fc\u30b9\u3078\u306e\u30ea\u30f3\u30af\u3001\u660e\u78ba\u306a\u58f0\u660e\u306f\u5168\u3066\u8d85\u7d20\u6674\u3089\u3057\u3044\u3067\u3059\u3002
\u4f55\u304b\u8cea\u554f\u304c\u3042\u308b\u5834\u5408\u306f\u3001Discord\u3067\u79c1\u305f\u3061\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\uff01
"},{"location":"ja/contributing/#i-found-a-security-issue","title":"\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u554f\u984c\u3092\u898b\u3064\u3051\u307e\u3057\u305f \ud83d\udd13","text":"\u79c1\u305f\u3061\u306f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u975e\u5e38\u306b\u91cd\u8996\u3057\u3066\u3044\u307e\u3059\u3002 \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u554f\u984c\u3092\u767a\u898b\u3057\u305f\u308a\u3001\u767a\u898b\u3057\u305f\u3068\u601d\u3063\u305f\u3089\u3001\u662f\u975e\u30e1\u30f3\u30c6\u30ca\u306b\u6ce8\u610f\u3092\u4fc3\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u5371\u967a
\u7d50\u679c\u3092security@amazee.io\u306b\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002 GitHub\u306e\u554f\u984c\u3068\u3057\u3066\u305d\u308c\u3089\u3092\u30d5\u30a1\u30a4\u30eb\u3057\u3066\u306f\u7d76\u5bfe\u306b\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002
\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ec\u30dd\u30fc\u30c8\u306f\u975e\u5e38\u306b\u8a55\u4fa1\u3055\u308c\u3001\u516c\u5171\u306e\u30ab\u30eb\u30de\u3068\u30b9\u30ef\u30c3\u30b0\u304c\u3082\u3089\u3048\u307e\u3059\uff01 \u79c1\u305f\u3061\u306f\u307e\u305f\u3001\u30d0\u30b0\u30d0\u30a6\u30f3\u30c6\u30a3\u30b7\u30b9\u30c6\u30e0\u306e\u4f5c\u696d\u3082\u9032\u3081\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/contributing/#i-found-an-issue","title":"\u554f\u984c\u3092\u898b\u3064\u3051\u307e\u3057\u305f","text":"\u79c1\u305f\u3061\u306f\u5e38\u306b\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u3053\u3068\u306b\u8208\u5473\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001\u554f\u984c\u5831\u544a\u306f\u5927\u6b53\u8fce\u3067\u3059\u3002 \u3042\u306a\u305f\u306e\u554f\u984c\u304c\u3059\u3067\u306b\u554f\u984c\u30ad\u30e5\u30fc\u306b\u5b58\u5728\u3057\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/contributing/#i-have-a-feature-request-or-idea","title":"\u6a5f\u80fd\u306e\u8981\u671b\u3084\u30a2\u30a4\u30c7\u30a2\u304c\u3042\u308a\u307e\u3059","text":"\u7d20\u6575\u3067\u3059\uff01 \u554f\u984c\u3092\u4f5c\u6210\u3057\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u3001\u79c1\u305f\u3061\u306f\u305d\u308c\u3092\u691c\u8a0e\u3059\u308b\u3053\u3068\u3092\u559c\u3073\u307e\u3059\u3002 \u305d\u308c\u304c\u5b9f\u88c5\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 \u3057\u304b\u3057\u3001\u79c1\u305f\u3061\u306f\u5e38\u306bLagoon\u306b\u4f55\u3092\u3082\u305f\u3089\u3059\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u306e\u30a2\u30a4\u30c7\u30a2\u3092\u805e\u304f\u3053\u3068\u306b\u8208\u5473\u304c\u3042\u308a\u307e\u3059\u3002
\u5225\u306e\u826f\u3044\u65b9\u6cd5\u306f\u3001\u3042\u306a\u305f\u306e\u30a2\u30a4\u30c7\u30a2\u306b\u3064\u3044\u3066Discord\u7d4c\u7531\u3067\u79c1\u305f\u3061\u3068\u8a71\u3059\u3053\u3068\u3082\u3067\u3059\u3002 . \u4eca\u65e5\u53c2\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\uff01
"},{"location":"ja/contributing/#i-wrote-some-code","title":"\u79c1\u306f\u3044\u304f\u3064\u304b\u306e\u30b3\u30fc\u30c9\u3092\u66f8\u304d\u307e\u3057\u305f","text":"\u7d20\u6674\u3089\u3057\u3044\uff01\u305d\u308c\u306b\u3064\u3044\u3066\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u304a\u9001\u308a\u304f\u3060\u3055\u3044\u3001\u53ef\u80fd\u306a\u9650\u308a\u30ec\u30d3\u30e5\u30fc\u3057\u3001\u53ef\u80fd\u3067\u3042\u308c\u3070\u30de\u30fc\u30b8\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/","title":"Lagoon\u306f\u5e45\u5e83\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001\u8a00\u8a9e\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059","text":"Lagoon\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b9\u30bf\u30c3\u30af\u3092\u5927\u304d\u304f3\u3064\u306e\u30ec\u30d9\u30eb\u306b\u5206\u985e\u3057\u3066\u3044\u307e\u3059:
"},{"location":"ja/applications/#_1","title":"\u8a00\u8a9e","text":"Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u57fa\u672c\u7684\u306a\u69cb\u6210\u8981\u7d20\u3067\u3042\u308a\u3001\u901a\u5e38\u306fLagoon\u5c02\u7528\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/#_2","title":"\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af","text":"\u3053\u308c\u3089\u306e\u57fa\u672c\u30a4\u30e1\u30fc\u30b8\u3092\u57fa\u306b\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3092\u63d0\u4f9b\u3057\u305f\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u99c6\u52d5\u3057\u305f\u308a\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u30ed\u30b8\u30c3\u30af\u3001\u30c4\u30fc\u30eb\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/#_3","title":"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3","text":"\u901a\u5e38\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u4e0a\u306b\u69cb\u7bc9\u3055\u308c\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u7de8\u96c6\u8005\u3084\u958b\u767a\u8005\u304c\u6700\u7d42\u88fd\u54c1\u3092\u5f62\u4f5c\u308b\u305f\u3081\u306b\u64cd\u4f5c\u3059\u308b\u30ec\u30a4\u30e4\u30fc\u3067\u3059\u3002
Lagoon\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u53c2\u7167\u3059\u308b\u3068\u304d\u3001\u901a\u5e38\u306f3\u3064\u306e\u65b9\u6cd5\u3067\u305d\u308c\u3089\u3092\u53c2\u7167\u3057\u307e\u3059:
"},{"location":"ja/applications/#_4","title":"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8","text":"\u3053\u308c\u3089\u306f\u5b8c\u5168\u306b\u6a5f\u80fd\u3059\u308b\u3001\u30af\u30ed\u30fc\u30f3\u53ef\u80fd\u306a\u30b9\u30bf\u30fc\u30bf\u30fc\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u3059\u3002\u5b9a\u671f\u7684\u306b\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3068\u66f4\u65b0\u304c\u884c\u308f\u308c\u3001\u308f\u305a\u304b\u306a\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3067\u62e1\u5f35\u3057\u3066\u4f7f\u7528\u3067\u304d\u308b\u72b6\u614b\u306b\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/#_5","title":"\u4f8b","text":"\u3053\u308c\u3089\u306f\u5b8c\u5168\u306b\u6a5f\u80fd\u3059\u308b\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u3001\u5b9a\u671f\u7684\u306b\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3068\u66f4\u65b0\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u500b\u5225\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u52d5\u4f5c\u3055\u305b\u308b\u306b\u306f\u3042\u308b\u7a0b\u5ea6\u306e\u52b4\u529b\u304c\u5fc5\u8981\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/#_6","title":"\u30c7\u30e2","text":"\u3053\u308c\u3089\u306f\u5b9f\u8a3c\u306e\u305f\u3081\u306b\u69cb\u7bc9\u3055\u308c\u305f\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u3001\u6982\u5ff5\u691c\u8a3c\u3068\u3057\u3066\u306f\u4f7f\u7528\u53ef\u80fd\u3067\u3059\u304c\u3001\u5b9a\u671f\u7684\u306a\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3084\u66f4\u65b0\u306f\u884c\u308f\u308c\u3066\u3044\u307e\u305b\u3093\u3002
\u3088\u308a\u5b8c\u5168\u306a\u30ea\u30b9\u30c8\u306b\u3064\u3044\u3066\u306f\u3001\u79c1\u305f\u3061\u306eGitHub\u30ea\u30dd\u30b8\u30c8\u30ea:https://www.github.com/lagoon-examples \u3068\u79c1\u305f\u3061\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8 https://lagoon.sh/application/ \u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/laravel/","title":"Laravel\u3092Lagoon\u3067\u5b9f\u884c","text":"Laravel\u3092Lagoon\u3067\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u8907\u6570\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002
- \u65e2\u5b58\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u81ea\u5206\u3067\u300clagoonize\u300d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff08Lagoonizing\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\uff09\u3002
- \u53c2\u8003\u3068\u3057\u3066\u3001\u30b7\u30f3\u30d7\u30eb\u306alagoonize\u3055\u308c\u305fLaravel\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u4f8b\u793a\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u7528\u610f\u3057\u3066\u3044\u307e\u3059\u3002
- \uff08\u63a8\u5968\uff09 \"Sail:onLagoon\"\u3068\u3044\u3046\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u6a19\u6e96\u7684\u306aLaravel Sail\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u53d6\u308a\u3001\u9069\u5207\u306aLagoon\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u81ea\u52d5\u751f\u6210\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/laravel/#_1","title":"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u74b0\u5883\u30ad\u30fc","text":"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ad\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001CLI\u307e\u305f\u306fUI\u3092\u901a\u3058\u3066APP_KEY
\u74b0\u5883\u5909\u6570(environment variable)\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u3053\u308c\u306b\u3088\u308a\u3001\u30ad\u30fc\u3092\u30b3\u30fc\u30c9\u5185\uff08\u4f8b\u3048\u3070.env
\u30d5\u30a1\u30a4\u30eb\uff09\u306b\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u306a\u304f\u306a\u308a\u307e\u3059\u3002
\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ad\u30fc\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001php artisan key:generate --show
\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u5909\u66f4\u305b\u305a\u306b\u3001\u6709\u52b9\u306a\u30ad\u30fc\u3092\u51fa\u529b\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/node/#_1","title":"\u306f\u3058\u3081\u306b","text":"Lagoon\u306f\u3001\u516c\u5f0f\u306eNode Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u305fNode.js\u30a4\u30e1\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002
Lagoon\u4e0a\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u52d5\u304b\u3059\u305f\u3081\u306e\u9069\u5fdc\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306e\u8a73\u3057\u3044\u60c5\u5831\u306f\u3001Node.js Docker\u30a4\u30e1\u30fc\u30b8\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/options/","title":"Lagoon\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u5b9a","text":""},{"location":"ja/applications/options/#lagoonyml","title":"lagoon.yml
","text":"Lagoon\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u304a\u3088\u3073\u74b0\u5883\u30ec\u30d9\u30eb\u306e\u8a2d\u5b9a\u306f\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u306e .lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002
lagoon-yml.md
\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/options/#docker-composeyml","title":"docker-compose.yml
","text":"Lagoon\u306e\u30b5\u30fc\u30d3\u30b9\u30ec\u30d9\u30eb\u306e\u8a2d\u5b9a\u306f\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u306edocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7279\u306b\u3001lagoon.type
\u3068\u95a2\u9023\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u30e9\u30d9\u30eb\u306f\u3001\u500b\u3005\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002
docker-compose-yml.md
\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/options/#_1","title":"\u30b9\u30c8\u30ec\u30fc\u30b8","text":"Lagoon\u306f\u307b\u3068\u3093\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u63d0\u4f9b\u3059\u308b\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002Lagoon\u7d44\u307f\u8fbc\u307f\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u306b\u306f\u3001\u5fc5\u8981\u306aPVC\u3001\u30dc\u30ea\u30e5\u30fc\u30e0\u306a\u3069\u3092\u8ffd\u52a0\u3067\u304d\u308b-persistent
\u30d0\u30ea\u30a2\u30f3\u30c8\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u53cd\u6620\u3059\u308b\u3088\u3046\u306b\u4f8b\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\u3002
"},{"location":"ja/applications/options/#_2","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9","text":"Lagoon\u306f\u4ee5\u4e0b\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059:
- Mariadb - \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5168\u30d0\u30fc\u30b8\u30e7\u30f3
- PostgreSQL - \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5168\u30d0\u30fc\u30b8\u30e7\u30f3
"},{"location":"ja/applications/options/#_3","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30a2\u30ba\u30fb\u30a2\u30fb\u30b5\u30fc\u30d3\u30b9","text":"Lagoon\u306f\u307e\u305f\u3001dbaas-operator\u3092\u5229\u7528\u3057\u3066\u3001\u57fa\u76e4\u3068\u306a\u308b\u30de\u30cd\u30fc\u30b8\u30c9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9\uff08\u4f8b\uff1aRDS\u3001Google Cloud Databases\u3001Azure Database\uff09\u3092\u4f7f\u7528\u3057\u3066\u3053\u308c\u3089\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u81ea\u52d5\u7684\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3059\u308b\u6a5f\u80fd\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u30af\u30e9\u30b9\u30bf\u7528\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u304a\u3088\u3073\u8a2d\u5b9a\u3055\u308c\u308b\u3068\u3001\u81ea\u52d5\u7684\u306b\u884c\u308f\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u304c\u5229\u7528\u3067\u304d\u306a\u3044\u5834\u5408\u306f\u3001\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u3068\u3057\u3066\u30dd\u30c3\u30c9\u304c\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/options/#_4","title":"\u30ad\u30e3\u30c3\u30b7\u30e5","text":"Lagoon\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u3057\u3066Redis\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u672c\u756a\u74b0\u5883\u3067\u306f\u3001\u4e00\u90e8\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3092\u652f\u63f4\u3059\u308b\u305f\u3081\u306b\u3001\u30de\u30cd\u30fc\u30b8\u30c9Redis\u30b5\u30fc\u30d3\u30b9\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/options/#_5","title":"\u691c\u7d22","text":"Lagoon\u306f\u691c\u7d22\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3068\u3057\u3066Elasticsearch\u3001Solr\u3001OpenSearch\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u5916\u90e8\u306e\u691c\u7d22\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3082\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/options/#_6","title":"\u30a4\u30f3\u30b0\u30ec\u30b9/\u30eb\u30fc\u30c8","text":"Lagoon\u306f\u3001\u30a4\u30f3\u30b0\u30ec\u30b9\u8981\u4ef6\u3092\u6301\u3064\u30b5\u30fc\u30d3\u30b9\u306e\u30eb\u30fc\u30c8\u3092\u81ea\u52d5\u751f\u6210\u3057\u307e\u3059\u3002\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u306f\u3001\u5404\u30b5\u30fc\u30d3\u30b9\u3054\u3068\u306b .lagoon.yml
\u306b\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/options/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"Lagoon\u306f\u3001\u30d3\u30eb\u30c9\u6642\u3068\u30e9\u30f3\u30bf\u30a4\u30e0\u6642\u306b\u74b0\u5883\u5909\u6570\u3092\u591a\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u91cd\u8981\u306a\u8a2d\u5b9a(\u4f8b:\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a/\u8a8d\u8a3c\u60c5\u5831)\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u5834\u5408\u3001\u30ed\u30fc\u30ab\u30eb\u3068Lagoon\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u540c\u69d8\u306e\u540d\u524d\u3092\u4ed8\u3051\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002
\u8a73\u7d30\u306f environment-variables.md\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/other/","title":"Lagoon\u3067\u4ed6\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c","text":"Lagoon\u304c\u7279\u5b9a\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001\u8a00\u8a9e\u7528\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u6301\u3063\u3066\u3044\u306a\u304f\u3066\u3082\u3001Lagoon\u3067\u30d3\u30eb\u30c9\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002
commons\u30a4\u30e1\u30fc\u30b8\u3092\u62e1\u5f35\u307e\u305f\u306f\u7d99\u627f\u3059\u308b\u3053\u3068\u3067\u3001Lagoon\u306f\u307b\u307c\u3042\u3089\u3086\u308b\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/other/#hugo","title":"Hugo","text":"\u3053\u306e\u7c21\u5358\u306a\u4f8b\u306f\u3001Hugo\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3092\u30d3\u30eb\u30c9\u3057\u3001NGINX\u30a4\u30e1\u30fc\u30b8\u3067\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u63d0\u4f9b\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002commons\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066Hugo\u3092\u8ffd\u52a0\u3057\u3001\u30b5\u30a4\u30c8\u3092\u30b3\u30d4\u30fc\u3057\u3066\u30d3\u30eb\u30c9\u3057\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3055\u308c\u305fNGINX\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u305fNGINX\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u30b5\u30a4\u30c8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
nginx.dockerfileFROM uselagoon/commons AS builder\n\nRUN apk add hugo git\nWORKDIR /app\nCOPY . /app\nRUN hugo\n\nFROM uselagoon/nginx\n\nCOPY --from=builder /app/public/ /app\nCOPY lagoon/static-files.conf /etc/nginx/conf.d/app.conf\n\nRUN fix-permissions /usr/local/openresty/nginx\n
docker-compose.ymlservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: lagoon/nginx.Dockerfile\nlabels:\nlagoon.type: nginx\n
"},{"location":"ja/applications/php/#_1","title":"\u306f\u3058\u3081\u306b","text":"Lagoon\u306f\u3001Drupal\u3001Laravel\u3001Wordpress\u3001Magento\u3001Symfony\u306a\u3069\u3001\u69d8\u3005\u306aPHP\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002
Lagoon\u3067PHP\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u9069\u5fdc\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306f\u3001PHP-cli Docker\u30a4\u30e1\u30fc\u30b8\u304a\u3088\u3073PHP-FPM Docker\u30a4\u30e1\u30fc\u30b8\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/python/#_1","title":"\u306f\u3058\u3081\u306b","text":"Lagoon\u306f\u3001Python\u30d9\u30fc\u30b9\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3084\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308bPython 3.7\u4ee5\u4e0a\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
Lagoon\u4e0a\u3067Python\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u52d5\u4f5c\u3055\u305b\u308b\u305f\u3081\u306e\u8abf\u6574\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306f\u3001Python Docker\u30a4\u30e1\u30fc\u30b8\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/ruby/","title":"Ruby\u3068Ruby on Rails","text":""},{"location":"ja/applications/ruby/#_1","title":"\u306f\u3058\u3081\u306b","text":"\u79c1\u305f\u3061\u306f\u3001\u516c\u5f0f\u306e Ruby alpine Docker \u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u305f Ruby 3.0 \u4ee5\u4e0a\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002 \u4ee5\u4e0b\u3067\u306f\u3001Rails \u30a2\u30d7\u30ea\u3092 Lagoon \u306b\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u3053\u3053\u3067\u8aac\u660e\u3059\u308b\u8a73\u7d30\u306e\u591a\u304f\u306f\u5b9f\u969b\u306b\u306f\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u4f9d\u5b58\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/applications/ruby/#lagoon-rails","title":"Lagoon \u3067 Rails \u3092\u5b9f\u884c\u3059\u308b","text":""},{"location":"ja/applications/ruby/#_2","title":"\u30ea\u30af\u30a8\u30b9\u30c8\u3078\u306e\u5fdc\u7b54","text":"Lagoon\u306e\u4f8b\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u3042\u308bRuby on Rails\u306e\u4f8b\u304c\u53c2\u8003\u306b\u306a\u308a\u307e\u3059\u3002
docker-compose.yml
\u3067\u306f\u3001\u52d5\u7684\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u4e3b\u8981\u30b5\u30fc\u30d3\u30b9\u3068\u3057\u3066ruby
\u3068\u3044\u3046\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
ruby
\u30b5\u30fc\u30d3\u30b9\u7528\u306b\u6307\u5b9a\u3055\u308c\u305fdockerfile\u3092\u898b\u3066\u307f\u308b\u3068\u3001\u30dd\u30fc\u30c83000\u3092\u516c\u958b\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002nginx
\u30b5\u30fc\u30d3\u30b9\u306f\u3001\u975e\u9759\u7684\u30a2\u30bb\u30c3\u30c8\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u3053\u306e\u30dd\u30fc\u30c8\u306eruby
\u30b5\u30fc\u30d3\u30b9\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059(\u8a73\u7d30\u306fnginx\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044)\u3002
"},{"location":"ja/applications/ruby/#_3","title":"\u30ed\u30ae\u30f3\u30b0","text":"Lagoon\u306e\u30ed\u30ae\u30f3\u30b0\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306b\u3064\u3044\u3066\u306f\u3001\u6b21\u306e\u6587\u66f8\u3067\u8aac\u660e\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u3061\u3089\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\u57fa\u672c\u7684\u306b\u3001\u3053\u306e\u30a4\u30f3\u30d5\u30e9\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u30ed\u30b0\u3092UDP\u30e1\u30c3\u30bb\u30fc\u30b8\u3067udp://application-logs.lagoon.svc:5140
\u306b\u9001\u4fe1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
Rails\u306e\u4f8b\u3067\u306f\u3001logstash-logger
\u3068\u3044\u3046gem\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3001\u305d\u306e\u5f8cconfig/application.rb
\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u521d\u671f\u5316\u3057\u3066\u3044\u307e\u3059\uff1a
config/application.rb if ENV.has_key?('LAGOON_PROJECT') && ENV.has_key?('LAGOON_ENVIRONMENT') then\nlagoon_namespace = ENV['LAGOON_PROJECT'] + \"-\" + ENV['LAGOON_ENVIRONMENT']\nLogStashLogger.configure do |config|\nconfig.customize_event do |event|\nevent[\"type\"] = lagoon_namespace\nend\nend\nconfig.logstash.host = 'application-logs.lagoon.svc'\nconfig.logstash.type = :udp\nconfig.logstash.port = 5140\nend\n
"},{"location":"ja/applications/ruby/#_4","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a","text":"\u3053\u306e\u4f8b\u3067\u306f\u3001\u79c1\u305f\u3061\u306ePostgreSQL\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059(docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044)\u3002Lagoon\u3067\u306eRails\u3092\u7528\u3044\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u306e\u8a2d\u5b9a\u306f\u975e\u5e38\u306b\u7c21\u5358\u3067\u3059\u3002Lagoon \u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u306b\u5fc5\u8981\u306a\u60c5\u5831\u3092\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u63d0\u4f9b\u3057\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001config/database.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u3053\u308c\u3089\u306e\u74b0\u5883\u5909\u6570\u3092\u5229\u7528\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u7c21\u5358\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u3092\u69cb\u6210\u3067\u304d\u307e\u3059\u3002
config/database.ymldefault: &default\nadapter: postgresql\nencoding: unicode\npool: <%= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } %>\nusername: <%= ENV.fetch(\"POSTGRES_USERNAME\") { \"drupal\" } %>\npassword: <%= ENV.fetch(\"POSTGRES_PASSWORD\") { \"drupal\" } %>\nhost: <%= ENV.fetch(\"POSTGRES_HOST\") { \"postgres\" } %>\ndatabase: <%= ENV.fetch(\"'POSTGRES_DATABASE'\") { \"drupal\" } %>\n
"},{"location":"ja/applications/wordpress/","title":"WordPress\u3092Lagoon\u3067\u5b9f\u884c","text":"WordPress\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001Composer\u3092\u4f7f\u7528\u3057\u3066WordPress\u3001\u305d\u306e\u4f9d\u5b58\u95a2\u4fc2\u3001\u304a\u3088\u3073\u30c6\u30fc\u30de\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u306eWordPress\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001https://github.com/roots/bedrock\u306e\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u6a19\u6e96\u5316\u3055\u308c\u305fLagoon\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30d1\u30bf\u30fc\u30f3\u306b\u5408\u308f\u305b\u3066\u62e1\u5f35\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/wordpress/#composer","title":"Composer\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u3053\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001WordPress\u3068\u305d\u306e\u30c6\u30fc\u30de\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u305f\u3081\u306bComposer\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/wordpress/#_1","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9","text":"Lagoon\u306fMariaDB\u3068PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u304c\u3001WordPress\u3067\u306ePostgreSQL\u306e\u30b5\u30dd\u30fc\u30c8\u306f\u9650\u5b9a\u7684\u306a\u306e\u3067\u3001\u4f7f\u7528\u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/applications/wordpress/#nginx","title":"NGINX\u306e\u8a2d\u5b9a","text":"Lagoon\u306b\u306fWordPress\u7528\u306e\u7d44\u307f\u8fbc\u307f\u8a2d\u5b9a\u304c\u3042\u308a\u307e\u305b\u3093 - \u4ee3\u308f\u308a\u306b\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u306f\u521d\u671f\u8a2d\u5b9a\u306enginx.conf\u304c\u4ed8\u5c5e\u3057\u3066\u3044\u307e\u3059\u3002\u6539\u5584\u70b9\u304c\u3042\u308c\u3070\u3001\u305c\u3072\u8ca2\u732e\u3057\u3066\u304f\u3060\u3055\u3044\uff01
"},{"location":"ja/applications/wordpress/#wp-cli","title":"WP-CLI","text":"Lagoon\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001WordPress\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306bwp-cli
\u3092cli\u30a4\u30e1\u30fc\u30b8\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/","title":"\u6982\u8981","text":"Lagoon\u306fDrupal\u30b5\u30a4\u30c8\u3092\u30db\u30b9\u30c8\u3059\u308b\u305f\u3081\u306b\u4f5c\u3089\u308c\u307e\u3057\u305f(\u3044\u3084\u3001\u672c\u5f53\u306b\u3001\u5c11\u306a\u304f\u3068\u3082\u6700\u521d\u306f\u305d\u3046\u3067\u3057\u305f\uff01)
\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Drupal\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3055\u308c\u305f\u69d8\u3005\u306a\u30b5\u30fc\u30d3\u30b9\u306b\u95a2\u3059\u308b\u8a73\u7d30\u60c5\u5831\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/#drupal_integrations-drupal","title":"drupal_integrations
Drupal\u30b9\u30ad\u30e3\u30d5\u30a9\u30fc\u30eb\u30c7\u30a3\u30f3\u30b0\u30d1\u30c3\u30b1\u30fc\u30b8","text":"packagist\u3067\u5229\u7528\u53ef\u80fd\u306adrupal_integrations
\u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u3001Lagoon\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306bDrupal\u306ecore-composer-scaffold\u3092\u62e1\u5f35\u3057\u307e\u3059\u3002\u307e\u305f\u3001Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eDrush\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u8ffd\u52a0\u306eDrush\u30b3\u30de\u30f3\u30c9drush la
\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/#lagoon-logs-drupal","title":"lagoon-logs
Drupal\u30e2\u30b8\u30e5\u30fc\u30eb","text":"drupal.org\u3067\u5229\u7528\u53ef\u80fd\u306alagoon_logs
\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001Lagoon\u4e0a\u306eDrupal\u306b\u5bfe\u3057\u3066\u8a2d\u5b9a\u4e0d\u8981\u306e\u30ed\u30ae\u30f3\u30b0\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/automatic-updates/","title":"\u81ea\u52d5\u66f4\u65b0","text":"Lagoon\u306f\u3001Drupal\u306e\u30b3\u30a2\u90e8\u5206\u3084contrib\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u66f4\u65b0\u65b9\u6cd5\u306e\u4e00\u90e8\u3068\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002Lagoon\u306f\u5909\u66f4\u3067\u304d\u306a\u3044\u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3057\u3001\u5909\u66f4\u3067\u304d\u306a\u3044\u30b3\u30f3\u30c6\u30ca\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30fc\u30c9\u304c\u5b9f\u884c\u6642\u306b\u5909\u66f4\u3055\u308c\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
- \u30b3\u30f3\u30c6\u30ca\u306e\u518d\u8d77\u52d5\u306b\u3088\u308b\u5909\u66f4\u306e\u6d88\u5931: \u30b3\u30f3\u30c6\u30ca\u306fKubernetes\u306b\u3088\u3063\u3066\u81ea\u52d5\u7684\u306b\u7ba1\u7406\u3055\u308c\u3066\u304a\u308a\u3001\u3044\u3064\u3067\u3082\u79fb\u52d5\u3001\u518d\u8d77\u52d5\u3001\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u304c\u767a\u751f\u3059\u308b\u3068\u3001\u6700\u521d\u306b\u69cb\u7bc9\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u304c\u5b9f\u884c\u3055\u308c\u3001\u5b9f\u884c\u6642\u306b\u52a0\u3048\u3089\u308c\u305f\u5909\u66f4\u306f\u3059\u3079\u3066\u5931\u308f\u308c\u307e\u3059\u3002
- \u30bf\u30b9\u30af\u3068Cron\u30b8\u30e7\u30d6\u306e\u554f\u984c: \u30bf\u30b9\u30af\u3084Cron\u30b8\u30e7\u30d6\u306f\u6700\u521d\u306b\u69cb\u7bc9\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u3067\u5b9f\u884c\u3055\u308c\u308b\u305f\u3081\u3001\u66f4\u65b0\u3055\u308c\u305f\u30b3\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002
- \u8aad\u307f\u53d6\u308a\u5c02\u7528\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306b\u3088\u308b\u66f4\u65b0\u306e\u5236\u9650: \u66f4\u65b0\u306b\u306f\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3078\u306e\u66f8\u304d\u8fbc\u307f\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\u304c\u3001\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u5f37\u5236\u3059\u308b\u74b0\u5883\u3092\u69cb\u6210\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002
- \u8907\u6570\u30b3\u30f3\u30c6\u30ca\u66f4\u65b0\u6642\u306e\u4e0d\u4e00\u81f4: \u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3067\u306f\u3001\u305d\u308c\u305e\u308c\u5358\u4e00\u306e\u6a5f\u80fd\u3092\u6301\u3064\u5c0f\u3055\u306a\u30b3\u30f3\u30c6\u30ca\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u3092\u63a8\u5968\u3057\u307e\u3059\u3002\u4e00\u822c\u7684\u306aDrupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30b3\u30fc\u30c9\u306e\u30b3\u30d4\u30fc\u3092\u542b\u3080
cli
\u3001php
\u3001nginx
\u306e\u30b3\u30f3\u30c6\u30ca\u304c3\u3064\u5b58\u5728\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30b3\u30f3\u30c6\u30ca\u306e\u3046\u30611\u3064\u3060\u3051\u3092\u66f4\u65b0\u3059\u308b\u3068\u3001\u30b3\u30fc\u30c9\u306e\u4e0d\u4e00\u81f4\u306b\u3088\u308b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3059\u3002
Lagoon\u3067\u306f\u4ee5\u4e0b\u306e\u66f4\u65b0\u65b9\u6cd5\u304c\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/automatic-updates/#drupal","title":"Drupal \u81ea\u52d5\u66f4\u65b0","text":"Drupal \u81ea\u52d5\u66f4\u65b0\u30e2\u30b8\u30e5\u30fc\u30eb:contrib\u30e2\u30b8\u30e5\u30fc\u30eb\u306e[\u81ea\u52d5\u66f4\u65b0] (https ://www.drupal.org/project/automatic_updates)\u306f\u7121\u52b9\u5316\u3055\u308c\u3066\u304a\u308a\u3001Drupal\u30b3\u30a2\u306b\u79fb\u884c\u3057\u3066\u3082\u7121\u52b9\u5316\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/automatic-updates/#drush","title":"Drush","text":"drush pm-install
\u307e\u305f\u306fdrush pm-update
\u30b3\u30de\u30f3\u30c9\u306f\u3001amazeeio/drupal-integrations\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4e00\u90e8\u3068\u3057\u3066\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/drush-9/#_1","title":"\u30a8\u30a4\u30ea\u30a2\u30b9","text":"\u6b8b\u5ff5\u306a\u304c\u3089\u3001Drush 9\u3067\u306f Drush 8\u306e\u3088\u3046\u306a\u52d5\u7684\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u6ce8\u5165\u6a5f\u80fd\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002Drush\u30c1\u30fc\u30e0\u3068\u5354\u529b\u3057\u3066\u3001\u3053\u306e\u6a5f\u80fd\u3092\u518d\u3073\u5b9f\u88c5\u3067\u304d\u308b\u3088\u3046\u306b\u53d6\u308a\u7d44\u3093\u3067\u3044\u307e\u3059\u3002\u5f53\u9762\u306e\u9593\u3001Drush 9\u3092Lagoon\u3068\u4e00\u7dd2\u306b\u4f7f\u7528\u3059\u308b\u969b\u306e\u56de\u907f\u7b56\u3092\u3054\u7d39\u4ecb\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/drush-9/#_2","title":"\u57fa\u672c\u7684\u306a\u8003\u3048\u65b9","text":"Drush 9\u306f\u65b0\u3057\u3044\u30b3\u30de\u30f3\u30c9drush site:alias-convert
\u3092\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001Drush 8 \u5f62\u5f0f\u306e\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092 Drush 9\u306eYAML\u5f62\u5f0f\u306e\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001Lagoon\u306b\u73fe\u5728\u5b58\u5728\u3059\u308b\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4e00\u5ea6\u3060\u3051\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u3001\u305d\u308c\u3089\u3092/app/drush/sites
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001\u3053\u308c\u3089\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u306f drush sa
\u306e\u3088\u3046\u306a\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u969b\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/drush-9/#_3","title":"\u6e96\u5099","text":"drush site:alias-convert
\u3092\u4f7f\u7528\u3059\u308b\u524d\u306b\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
drush
\u30d5\u30a9\u30eb\u30c0\u5185\u306ealiases.drushrc.php
\u3092lagoon.aliases.drushrc.php
\u306b\u30ea\u30cd\u30fc\u30e0\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/drush-9/#_4","title":"\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u751f\u6210","text":"cli
\u30b3\u30f3\u30c6\u30ca\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001Drush\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u5909\u63db\u3067\u304d\u307e\u3059:
\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u751f\u6210
docker-compose exec cli drush site:alias-convert /app/drush/sites --yes\n
\u751f\u6210\u3055\u308c\u305fYAML\u30d5\u30a1\u30a4\u30eb\u306fGit\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30df\u30c3\u30c8\u3059\u308b\u306e\u304c\u826f\u3044\u7fd2\u6163\u3067\u3059\u3002\u305d\u3046\u3059\u308b\u3053\u3068\u3067\u3001\u4ed6\u306e\u958b\u767a\u8005\u3082\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002"},{"location":"ja/applications/drupal/drush-9/#_5","title":"\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u4f7f\u7528","text":"Drush 9\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306f\u30b0\u30eb\u30fc\u30d7\u540d\u3067\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u304c\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002\u4eca\u56de\u3067\u3042\u308c\u3070\u3001\u305d\u306e\u30b0\u30eb\u30fc\u30d7\u540d\u306flagoon\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u3001\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u4ed8\u304d\u306e\u3059\u3079\u3066\u306e\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002
\u3059\u3079\u3066\u306e\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u8868\u793adrush sa --format=list\n
\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u5229\u7528\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u3088\u3046\u306b\u3057\u307e\u3059:
Drush \u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u4f7f\u7528drush @lagoon.main ssh\n
"},{"location":"ja/applications/drupal/drush-9/#_6","title":"\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u66f4\u65b0","text":"Lagoon\u3067\u65b0\u3057\u3044\u74b0\u5883\u304c\u4f5c\u6210\u3055\u308c\u305f\u5834\u5408\u3001drush site:alias-convert
\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u30d5\u30a1\u30a4\u30eb (.yml) \u3092\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3067lagoon.site.yml
\u304c\u66f4\u65b0\u3055\u308c\u306a\u3044\u5834\u5408\u306f\u3001\u6700\u521d\u306blagoon.site.yml
\u3092\u524a\u9664\u3057\u3066\u304b\u3089\u3001\u3082\u3046\u4e00\u5ea6drush site:alias-convert
\u3092\u5b9f\u884c\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/drush-9/#drush-rsync","title":"\u30ed\u30fc\u30ab\u30eb\u304b\u3089\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u3078\u306eDrush rsync
","text":"\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u304b\u3089\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u540c\u671f\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u8ffd\u52a0\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6e21\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
Drush rsyncdrush rsync @self:%files @lagoon.main:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n
\u3053\u308c\u306f\u3001Lagoon\u306e\u30bf\u30b9\u30afUI\u3092\u4f7f\u7528\u305b\u305a\u306b\u3001\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u9593\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u540c\u671f\u3059\u308b\u5834\u5408\u306b\u3082\u5f53\u3066\u306f\u307e\u308a\u307e\u3059\u3002
\u305f\u3068\u3048\u3070\u3001@lagoon.main
\u304b\u3089@lagoon.dev
\u3078\u30d5\u30a1\u30a4\u30eb\u3092\u540c\u671f\u3057\u305f\u3044\u5834\u5408\u3001\u4e0a\u8a18\u306e\u8ffd\u52a0\u30d1\u30e9\u30e1\u30fc\u30bf\u306a\u3057\u3067\u30ed\u30fc\u30ab\u30eb\u3067drush rsync @lagoon.main @lagoon.dev
\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\"Cannot specify two remote aliases\" (2 \u3064\u306e\u30ea\u30e2\u30fc\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093) \u3068\u3044\u3046\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
\u3053\u308c\u3092\u89e3\u6c7a\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u5b9b\u5148\u306e\u74b0\u5883\u306bSSH\u3067\u63a5\u7d9a drush @lagoon.dev ssh
\u3057\u3001\u4e0a\u8a18\u3068\u540c\u69d8\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066 rsync
\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
Drush rsyncdrush rsync @lagoon.main:%files @self:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n
\u4e0a\u8a18\u306e\u5185\u5bb9\u306f\u3001\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u304b\u3089\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u3078 rsync
\u3092\u4f7f\u3063\u3066\u540c\u671f\u3059\u308b\u5834\u5408\u306b\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002
\u307e\u305f\u3001\u79c1\u305f\u3061\u306fDrush\u306e\u30e1\u30f3\u30c6\u30ca\u3068\u5354\u529b\u3057\u3066\u3001\u3053\u308c\u3092\u81ea\u52d5\u7684\u306b\u6ce8\u5165\u3059\u308b\u65b9\u6cd5\u3092\u6a21\u7d22\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/","title":"Drupal\u306e\u521d\u56de\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8","text":""},{"location":"ja/applications/drupal/first-deployment-of-drupal/#1-make-sure-you-are-all-set","title":"1. \u6e96\u5099\u3092\u6574\u3048\u307e\u3057\u3087\u3046","text":"\u521d\u56de\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u6210\u529f\u3055\u305b\u308b\u305f\u3081\u306b\u306f\u3001Drupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304cLagoon\u5316\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3068\u3001Lagoon\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u3067\u3082\u5fc3\u914d\u306f\u3044\u308a\u307e\u305b\u3093\uff01\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#2-push","title":"2. \u30d7\u30c3\u30b7\u30e5","text":"Lagoon \u3092\u5229\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30c7\u30d7\u30ed\u30a4\u7528\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u306b push \u3059\u308b\u3053\u3068\u3067\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002
\u65b0\u3057\u3044\u30b3\u30fc\u30c9\u3092push\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u5834\u5408\u3067\u3082\u5fc3\u914d\u306f\u3044\u308a\u307e\u305b\u3093\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002
Git\u306bpushgit commit --allow-empty -m \"go, go! Power Rangers!\"\ngit push\n
\u30d7\u30c3\u30b7\u30e5\u304c\u5b9f\u884c\u3055\u308c\u308b\u3068\u3001Git\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u304c\u8a2d\u5b9a\u6e08\u307f\u306eWebhook\u3092\u4ecb\u3057\u3066Lagoon\u306b\u901a\u77e5\u3057\u307e\u3059\u3002
\u3059\u3079\u3066\u6b63\u5e38\u3067\u3042\u308c\u3070\u3001\u8a2d\u5b9a\u6e08\u307f\u306e\u30c1\u30e3\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u306b\u901a\u77e5\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002(\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u306fLagoon\u7ba1\u7406\u8005\u306b\u554f\u3044\u5408\u308f\u305b\u3066\u304f\u3060\u3055\u3044):
\u3053\u306e\u901a\u77e5\u306f\u3001Lagoon\u304c\u30b3\u30fc\u30c9\u306e\u30c7\u30d7\u30ed\u30a4\u3092\u958b\u59cb\u3057\u305f\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u6642\u9593\u306f\u3001\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u306e\u30b5\u30a4\u30ba\u3068\u30b3\u30f3\u30c6\u30ca\u306e\u6570\u306b\u3088\u3063\u3066\u6570\u79d2\u304b\u304b\u308a\u307e\u3059\u3002\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u3002\u73fe\u5728\u306e\u72b6\u6cc1\u3092\u78ba\u8a8d\u3057\u305f\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u30d7\u30ed\u30bb\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u30c7\u30d7\u30ed\u30a4\u306e\u9032\u884c\u72b6\u6cc1\u306f\u3001LagoonUI\u3067\u3082\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002(URL\u304c\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001Lagoon\u7ba1\u7406\u8005\u306b\u554f\u3044\u5408\u308f\u305b\u3066\u304f\u3060\u3055\u3044)
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#3-a-fail","title":"3. \u5931\u6557","text":".lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30c7\u30d7\u30ed\u30a4\u5f8c\u51e6\u7406\u30bf\u30b9\u30af\u306b\u3088\u3063\u3066\u306f\u3001drush updb
\u3084drush cr
\u306a\u3069\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306eDrush\u30bf\u30b9\u30af\u306f\u3001\u74b0\u5883\u5185\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u5b58\u5728\u3059\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u30c7\u30d7\u30ed\u30a4\u76f4\u5f8c\u3067\u306f\u5f53\u7136\u306a\u304c\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u65b9\u6cd5\u3092\u6b21\u306b\u8aac\u660e\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#4-synchronize-local-database-to-the-remote-lagoon-environment","title":"4. \u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30ea\u30e2\u30fc\u30c8\u306eLagoon\u74b0\u5883\u306b\u540c\u671f","text":"Lagoon\u306f\u5b8c\u5168\u306aDrush\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u30ea\u30e2\u30fc\u30c8\u306eLagoon\u74b0\u5883\u3092\u540c\u671f\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u8b66\u544a
\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306e\u524d\u306b\u3001pygmy\u306b\u516c\u958b\u30ad\u30fc\u3092\u767b\u9332\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
Permission denied (publickey)
\u306a\u3069\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u3001\u3053\u3061\u3089\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044:pygmy - ssh\u30ad\u30fc\u306e\u8ffd\u52a0
\u307e\u305a\u306f\u3001Drush \u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046:
\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u53d6\u5f97drush sa\n
\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u73fe\u5728\u30c7\u30d7\u30ed\u30a4\u6e08\u307f\u306e\u74b0\u5883\u304c\u53d6\u5f97\u3055\u308c\u307e\u3059\uff08\u6700\u65b0\u306e\u72b6\u614b\u306f\u3001develop
\u30d6\u30e9\u30f3\u30c1\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u305f\u6642\u70b9\u306e\u3082\u306e\u3068\u4eee\u5b9a\u3057\u307e\u3059\uff09:
\u8fd4\u3055\u308c\u305f\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9[drupal-example]cli-drupal:/app$ drush sa\n@develop\n@self\ndefault\n
\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9(Drush\u3067\u306f\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9@self
\u3067\u8868\u3055\u308c\u307e\u3059)\u3068\u30ea\u30e2\u30fc\u30c8\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9(@develop
)\u3092\u540c\u671f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
Drush sql-syncdrush sql-sync @self @develop\n
\u6b21\u306e\u3088\u3046\u306a\u7d50\u679c\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059:
Drush sql-sync\u306e\u7d50\u679c[drupal-example]cli-drupal:/app$ drush sql-sync @self @develop\nYou will destroy data in ssh.example.com/drupal and replace with data from drupal.\nDo you really want to continue? (y/n): y\nStarting to dump database on Source. [ok]\nDatabase dump saved to /home/drush-backups/drupal/20180227075813/drupal_20180227_075815.sql.gz [success]\nStarting to discover temporary files directory on Destination. [ok]\nYou will delete files in drupal-example-develop@ssh.example.com:/tmp/drupal_20180227_075815.sql.gz and replace with data from /home/drush-backups/drupal/20180227075813/drupal_20180227_075815.sql.gz\nDo you really want to continue? (y/n): y\nCopying dump file from Source to Destination. [ok]\nStarting to import dump file onto Destination database.\n
\u3055\u3066\u3001\u518d\u5ea6\u30c7\u30d7\u30ed\u30a4\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u4eca\u5ea6\u306f\u7a7a\u306e\u30d7\u30c3\u30b7\u30e5\u3067\u3059:
Git pushgit commit --allow-empty -m \"\u884c\u3051\u3001\u884c\u3051\uff01 \u30d1\u30ef\u30fc\u30ec\u30f3\u30b8\u30e3\u30fc\uff01\"\ngit push\n
\u4eca\u5ea6\u306f\u3059\u3079\u3066\u6b63\u5e38\u306b\u52d5\u4f5c\u3059\u308b\u306f\u305a\u3067\u3059:
\u901a\u77e5\u5185\u306e\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001Drupal\u30b5\u30a4\u30c8\u304c\u3059\u3079\u3066\u306e\u6a5f\u80fd\u3092\u5099\u3048\u3066\u30ed\u30fc\u30c9\u3055\u308c\u305f\u72b6\u614b\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u304a\u305d\u3089\u304f\u307e\u3060\u753b\u50cf\u306f\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u305d\u308c\u306f\u30b9\u30c6\u30c3\u30d75\u3067\u51e6\u7406\u3057\u307e\u3059\u3002
\u30c7\u30d7\u30ed\u30a4\u304c\u4f9d\u7136\u3068\u3057\u3066\u5931\u6557\u3059\u308b\u5834\u5408\u306f\u3001\u8a73\u7d30\u60c5\u5831\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u30ed\u30b0\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#5-synchronize-local-files-to-the-remote-lagoon-environment","title":"5. \u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u3092\u30ea\u30e2\u30fc\u30c8\u306eLagoon\u74b0\u5883\u306b\u540c\u671f","text":"\u304a\u305d\u3089\u304f\u4e88\u60f3\u901a\u308a\u3067\u3059\u304c\u3001Drush\u3092\u4f7f\u3063\u3066\u540c\u671f\u3067\u304d\u307e\u3059:
Drush rsyncdrush rsync @self:%files @develop:%files\n
\u6b21\u306e\u3088\u3046\u306a\u8868\u793a\u304c\u51fa\u308b\u306f\u305a\u3067\u3059:
Drush rsync results[drupal-example]cli-drupal:/app$ drush rsync @self:%files @develop:%files\nYou will delete files in drupal-example-develop@ssh.example.com:/app/web/sites/default/files and replace with data from /app/web/sites/default/files/\nDo you really want to continue? (y/n): y\n
\u3057\u304b\u3057\u3001\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u3053\u306e\u3088\u3046\u306b\u6b63\u3057\u304f\u8868\u793a\u3055\u308c\u306a\u3044\u3053\u3068\u3082\u3042\u308b\uff1a
Drush rsync results[drupal-example]cli-drupal:/app$ drush rsync @self:%files @develop:%files\nYou will delete files in drupal-example-develop@ssh.example.com:'/app/web/%files' and replace with data from '/app/web/%files'/\nDo you really want to continue? (y/n):\n
\u3053\u306e\u7406\u7531\u306f\u3001Drupal\u304c\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3092\u89e3\u6c7a\u3067\u304d\u306a\u3044\u305f\u3081\u3067\u3059\u3002\u3053\u308c\u306f\u304a\u305d\u3089\u304f\u3001Drupal\u304c\u5b8c\u5168\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u304b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u5b58\u5728\u3057\u306a\u3044\u3053\u3068\u304c\u539f\u56e0\u3067\u3059\u3002\u56de\u907f\u7b56\u3068\u3057\u3066\u306fdrush rsync @self:sites/default/files @develop:sites/default/files
\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u5b9f\u969b\u306b\u306f\u30ed\u30fc\u30ab\u30eb\u3068\u30ea\u30e2\u30fc\u30c8\u306e Drupal \u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059 (drush status
\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059)
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#6-its-done","title":"6. \u5b8c\u4e86","text":"Lagoon\u304c\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u3092\u5b8c\u4e86\u3059\u308b\u3068\u3001\u30c1\u30e3\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u306b\u6b21\u306e\u3088\u3046\u306a2\u56de\u76ee\u306e\u901a\u77e5\u304c\u9001\u4fe1\u3055\u308c\u307e\u3059\u3002:
\u901a\u77e5\u306f\u6b21\u306e\u3088\u3046\u306a\u5185\u5bb9\u3092\u793a\u3057\u3066\u3044\u307e\u3059:
- \u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8
- \u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u3068Git SHA
- \u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u306e\u30ed\u30b0\u3078\u306e\u30ea\u30f3\u30af
- \u74b0\u5883\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c8(URL)\u3078\u306e\u30ea\u30f3\u30af
\u3053\u308c\u3067\u4f5c\u696d\u306f\u5b8c\u4e86\u3067\u3059! DevOps\u3092\u7c21\u5358\u306b\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u79c1\u305f\u3061\u306e\u76ee\u6a19\u3067\u3059\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#but-wait-how-about-other-branches-or-the-production-environment","title":"\u3057\u304b\u3057\u3001\u4ed6\u306e\u30d6\u30e9\u30f3\u30c1\u3084\u672c\u756a\u74b0\u5883\u306f\u3069\u3046\u306a\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f","text":"Lagoon\u306e\u512a\u308c\u305f\u70b9\u306f\u3001\u307e\u3063\u305f\u304f\u540c\u3058\u65b9\u6cd5\u3067\u51e6\u7406\u3067\u304d\u308b\u3053\u3068\u3067\u3059\u3002\u672c\u756a\u74b0\u5883\u30d6\u30e9\u30f3\u30c1\u3068\u3057\u3066\u5b9a\u7fa9\u3057\u305f\u30d6\u30e9\u30f3\u30c1\u540d\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3068\u3001\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#failure-dont-worry","title":"\u30c7\u30d7\u30ed\u30a4\u306e\u5931\u6557","text":"\u30c7\u30d7\u30ed\u30a4\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u304b\uff1f \u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u30d8\u30eb\u30d7\u3092\u7528\u610f\u3057\u3066\u3044\u307e\u3059:
- \u30a8\u30e9\u30fc\u901a\u77e5\u5185\u306e
logs
\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u30d7\u30ed\u30bb\u30b9\u3067\u3069\u3053\u3067\u5931\u6557\u3057\u305f\u304b\u304c\u308f\u304b\u308a\u307e\u3059\u3002 - \u554f\u984c\u304c\u89e3\u6c7a\u3067\u304d\u306a\u3044\u5834\u5408\u306f\u3001Lagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30b5\u30dd\u30fc\u30c8\u3044\u305f\u3057\u307e\u3059!
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/","title":"Drupal\u3068Fastly\u306e\u7d71\u5408","text":""},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_1","title":"\u524d\u63d0\u6761\u4ef6","text":" - Drupal 7\u4ee5\u964d
- Fastly\u30b5\u30fc\u30d3\u30b9ID
- \u30d1\u30fc\u30b8\u6a29\u9650\u3092\u6301\u3064Fastly API\u30c8\u30fc\u30af\u30f3
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#drupal-7url","title":"Drupal 7\u3067\u306eURL\u30d9\u30fc\u30b9\u306e\u30d1\u30fc\u30b8","text":" - Fastly Drupal\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
- Fastly\u30b5\u30fc\u30d3\u30b9ID\u3068API\u30c8\u30fc\u30af\u30f3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
- \u5fc5\u8981\u306b\u5fdc\u3058\u3066Webhooks\u3092\u8a2d\u5b9a\u3057\u307e\u3059(\u4f8b\u3048\u3070\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30d1\u30fc\u30b8\u304c\u9001\u4fe1\u3055\u308c\u305f\u3068\u304d\u306bSlack\u306b\u901a\u77e5\u3059\u308b\u306a\u3069)\u3002
- Drupal 7\u3067\u306fURL\u30d9\u30fc\u30b9\u306e\u30d1\u30fc\u30b8(\u7c21\u6613\u30d1\u30fc\u30b8)\u306e\u307f\u304c\u53ef\u80fd\u3067\u3059\u3002
settings.php
\u3067Drupal\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8IP\u3092\u5909\u66f4\u3057\u307e\u3059:
Drupal 7\u306e\u305f\u3081\u306esettings.php\u306e\u5909\u66f4$conf['reverse_proxy_header'] = 'HTTP_TRUE_CLIENT_IP';\n
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#drupal-10","title":"Drupal 10\u4ee5\u964d\u3067\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u30d1\u30fc\u30b8","text":"Composer\u3092\u4f7f\u3063\u3066\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u53d6\u5f97\u3057\u307e\u3059:
Fastly Drupal\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u4f9d\u5b58\u95a2\u4fc2\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9composer require drupal/fastly drupal/http_cache_control drupal/purge\n
\u6b21\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
fastly
fastlypurger
http_cache_control
(2.x) purge
purge_ui
(\u6280\u8853\u7684\u306b\u306f\u5fc5\u9808\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u672c\u756a\u74b0\u5883\u3067\u6709\u52b9\u306b\u3059\u308b\u3068\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3059) purge_processor_lateruntime
purge_processor_cron
purge_queuer_coretags
purge_drush
(Drush\u3092\u4f7f\u3063\u305f\u30d1\u30fc\u30b8\u306b\u4fbf\u5229\u3067\u3059\u3002\u3053\u3061\u3089\u306b\u30b3\u30de\u30f3\u30c9\u306e\u30ea\u30b9\u30c8\u304c\u3042\u308a\u307e\u3059)
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#drupalfastly_1","title":"Drupal\u3067Fastly\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8a2d\u5b9a\u3057\u307e\u3059","text":"Fastly\u30b5\u30fc\u30d3\u30b9ID\u3068API\u30c8\u30fc\u30af\u30f3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30b5\u30a4\u30c8ID\u306f\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u5b9f\u884c\u6642\u74b0\u5883\u5909\u6570\u3092\u5229\u7528\u3059\u308b\u304b\u3001/admin/config/services/fastly
\u306b\u3042\u308b\u8a2d\u5b9a\u30d5\u30a9\u30fc\u30e0\u3092\u7de8\u96c6\u3067\u304d\u307e\u3059:
FASTLY_API_TOKEN
FASTLY_API_SERVICE
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_2","title":"\u30d1\u30fc\u30b8\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a","text":" - \u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u30cf\u30c3\u30b7\u30e5\u9577: 4\u6587\u5b57
- \u30d1\u30fc\u30b8\u65b9\u5f0f: \u30bd\u30d5\u30c8\u30d1\u30fc\u30b8\u3092\u4f7f\u7528
\u307b\u3068\u3093\u3069\u306e\u30b5\u30a4\u30c8\u3067\u306f4
\u6587\u5b57\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u3067\u5341\u5206\u3067\u3059\u304c\u3001\u6570\u767e\u4e07\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u6301\u3064\u30b5\u30a4\u30c8\u3067\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u306e\u885d\u7a81\u3092\u6e1b\u3089\u3059\u305f\u3081\u306b5
\u6587\u5b57\u306e\u65b9\u304c\u826f\u3044\u3067\u3057\u3087\u3046\u3002
\u6ce8\u610f:
\u30bd\u30d5\u30c8\u30d1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002Fastly\u5185\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u53e4\u304f\u306a\u3063\u305f\u3068\u30de\u30fc\u30af\u3055\u308c\u3001\u5b8c\u5168\u306b\u524a\u9664\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u306e\u3067\u3001\u30aa\u30ea\u30b8\u30f3\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u308b\u5834\u5408\u306b\u3082\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059(\u53e4\u304f\u306a\u3063\u305f\u3082\u306e\u3092\u63d0\u4f9b\u3059\u308b\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u305f\u5834\u5408)
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_3","title":"\u53e4\u3044\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a","text":"\u30b5\u30a4\u30c8\u306b\u9069\u3057\u305f\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u6700\u5c0f1\u6642\u9593(3600
)\u3001\u6700\u59271\u9031\u9593(604800
)\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8a2d\u5b9a\u304c\u4e00\u822c\u7684\u3067\u3059:
- \u518d\u691c\u8a3c\u6642\u306b\u30b9\u30c6\u30fc\u30eb - \u30aa\u30f3\u3001
14440
\u79d2 - \u30a8\u30e9\u30fc\u6642\u306b\u30b9\u30c6\u30fc\u30eb - \u30aa\u30f3\u3001
604800
\u79d2
\u5fc5\u8981\u306b\u5fdc\u3058\u3066Webhook\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059(\u305f\u3068\u3048\u3070\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30d1\u30fc\u30b8\u304c\u9001\u4fe1\u3055\u308c\u305f\u3068\u304d\u306bSlack\u306b\u901a\u77e5\u3092\u9001\u308b\u306a\u3069)
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#purge","title":"Purge\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u8a2d\u5b9a","text":"\u30d1\u30fc\u30b8\u30da\u30fc\u30b8/admin/config/development/performance/purge
\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002
\u4ee5\u4e0b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3057\u307e\u3059:
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_4","title":"\u30ad\u30e3\u30c3\u30b7\u30e5\u7121\u52b9\u5316","text":" - Drupal Origin: \u30bf\u30b0
- Fastly: E\u3001\u30bf\u30b0\u3001URL
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_5","title":"\u30ad\u30e5\u30fc","text":" - \u30ad\u30e5\u30fc\u30ef\u30fc:\u30b3\u30a2\u30bf\u30b0\u30ad\u30e5\u30fc\u30ef\u30fc\u3001\u30d1\u30fc\u30b8\u30d6\u30ed\u30c3\u30af(\u8907\u6570\u53ef)
- \u30ad\u30e5\u30fc:\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9
- \u30d7\u30ed\u30bb\u30c3\u30b5:\u30b3\u30a2\u30d7\u30ed\u30bb\u30c3\u30b5\u3001\u30ec\u30a4\u30c8\u30e9\u30f3\u30bf\u30a4\u30e0\u30d7\u30ed\u30bb\u30c3\u30b5\u3001\u30d1\u30fc\u30b8\u30d6\u30ed\u30c3\u30af(\u8907\u6570\u53ef)
\u3053\u308c\u306f\u3001Drupal\u306e\u7d44\u307f\u8fbc\u307f\u306e\u30b3\u30a2\u30bf\u30b0\u30ad\u30e5\u30fc\u30ef\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30ad\u30e5\u30fc\u306b\u30bf\u30b0\u3092\u8ffd\u52a0\u3057\u3001\u30ad\u30e5\u30fc\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3055\u308c (\u30c7\u30d5\u30a9\u30eb\u30c8)\u3001\u4ee5\u4e0b\u306e\u30d7\u30ed\u30bb\u30c3\u30b5\u306b\u3088\u3063\u3066\u51e6\u7406\u3055\u308c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
- Cron\u30d7\u30ed\u30bb\u30c3\u30b5
- \u30ec\u30a4\u30c8\u30e9\u30f3\u30bf\u30a4\u30e0\u30d7\u30ed\u30bb\u30c3\u30b5
cron\u30d7\u30ed\u30bb\u30c3\u30b5\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u30b5\u30a4\u30c8\u3067cron\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 (\u7406\u60f3\u7684\u306b\u306f1\u5206\u3054\u3068)\u3002cli
\u30dd\u30c3\u30c9\u3067cron\u3092\u624b\u52d5\u5b9f\u884c\u3057\u3066\u3001purge_processor_cron_cron()
\u304c\u30a8\u30e9\u30fc\u306a\u304f\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
cron\u306e\u958b\u59cb[drupal8]production@cli-drupal:/app$ drush cron -v\n...\n[notice] purge_processor_cron_cron()\u306e\u5b9f\u884c\u3092\u958b\u59cb\u3001node_cron()\u306e\u5b9f\u884c\u306f21.16ms\u304b\u304b\u308a\u307e\u3057\u305f\u3002\n
\u30ec\u30a4\u30a2\u30a6\u30c8\u30d1\u30fc\u30b8\u306f\u3001\u30da\u30fc\u30b8\u30ed\u30fc\u30c9\u3054\u3068\u306bhook_exit()\u3067\u5b9f\u884c\u3055\u308c\u308bLate runtime processor
\u306b\u3088\u3063\u3066\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30d1\u30fc\u30b8\u8981\u6c42\u304c\u30ad\u30e5\u30fc\u306b\u8ffd\u52a0\u3055\u308c\u308b\u3068\u307b\u307c\u540c\u6642\u306b\u51e6\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3059\u3002
\u4e21\u65b9\u306e\u65b9\u5f0f\u3092\u4f75\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30d1\u30fc\u30b8\u304c\u53ef\u80fd\u306a\u9650\u308a\u8fc5\u901f\u306b\u5b9f\u884c\u3055\u308c\u308b\u3053\u3068\u304c\u4fdd\u8a3c\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_6","title":"\u6700\u9069\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30d8\u30c3\u30c0\u30fc\u8a2d\u5b9a","text":"Drupal\u306f\u6a19\u6e96\u8a2d\u5b9a\u3067\u306f\u3001\u30d6\u30e9\u30a6\u30b6\u3068Fastly\u3067\u7570\u306a\u308b\u30ad\u30e3\u30c3\u30b7\u30e5\u6709\u52b9\u671f\u9650\u3092\u8a2d\u5b9a\u3059\u308b\u6a5f\u80fd\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u306e\u305f\u3081\u3001Drupal\u3067\u9577\u3044\u30ad\u30e3\u30c3\u30b7\u30e5\u6709\u52b9\u671f\u9650\u3092\u8a2d\u5b9a\u3057\u3066\u3082\u3001\u30d6\u30e9\u30a6\u30b6\u304c\u65e2\u306b\u30da\u30fc\u30b8\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30e6\u30fc\u30b6\u30fc\u306f\u5909\u66f4\u3092\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093\u3002HTTP Cache Control\u30e2\u30b8\u30e5\u30fc\u30eb\u306e2.x
\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3068\u3001\u3055\u307e\u3056\u307e\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u5bfe\u3057\u3066\u3001\u3088\u308a\u8a73\u7d30\u306a\u6709\u52b9\u671f\u9650\u8a2d\u5b9a\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002
\u307b\u3068\u3093\u3069\u306e\u30b5\u30a4\u30c8\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8a2d\u5b9a\u304c\u59a5\u5f53\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306b\u306a\u308b\u3067\u3057\u3087\u3046\u3002
- \u5171\u6709\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: 1\u30f6\u6708
- \u30d6\u30e9\u30a6\u30b6\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: 10\u5206
- 404 \u30a8\u30e9\u30fc\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: 15\u5206
- 302 \u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: 1\u6642\u9593
- 301 \u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: 1\u6642\u9593
- 5xx \u30a8\u30e9\u30fc\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: \u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u306a\u3044
\u6ce8\u610f:
\u3053\u306e\u8a2d\u5b9a\u306f\u3001\u30b5\u30a4\u30c8\u4e0a\u306e\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u5bfe\u3057\u3066\u9069\u5207\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#ip","title":"\u5b9f\u969b\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8IP","text":"Fastly\u306f\u3001\u5b9f\u969b\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306eIP\u30a2\u30c9\u30ec\u30b9\u3092True-Client-IP
HTTP\u30d8\u30c3\u30c0\u30fc\u3067\u8fd4\u9001\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002settings.php
\u3067\u4ee5\u4e0b\u306e\u5909\u66f4\u3092\u884c\u3046\u3053\u3068\u3067\u3001Drupal\u304c\u3053\u306e\u30d8\u30c3\u30c0\u30fc\u3092\u5c0a\u91cd\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
Drupal < 8.7.0\u7528\u306esettings.php\u306e\u5909\u66f4$settings['reverse_proxy'] = TRUE;\n$settings['reverse_proxy_header'] = 'HTTP_TRUE_CLIENT_IP';\n
\u3057\u304b\u3057\u3001Drupal 8.7.0\u3067\u306f\u3001\u3053\u306e\u6a5f\u80fd\u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u30b9\u30cb\u30da\u30c3\u30c8\u3067\u540c\u69d8\u306e\u52d5\u4f5c\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002
Drupal >= 8.7.0\u7528\u306esettings.php\u306e\u5909\u66f4/**\n * Drupal\u306bTrue-Client-IP HTTP\u30d8\u30c3\u30c0\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u6307\u793a\u3057\u307e\u3059\u3002\n */\nif (isset($_SERVER['HTTP_TRUE_CLIENT_IP'])) {\n $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_TRUE_CLIENT_IP'];\n}\n
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#drush","title":"Drush\u7d71\u5408","text":"settings.php fastly:\n fastly:purge:all (fpall) \u30b5\u30fc\u30d3\u30b9\u5168\u4f53\u3092\u30d1\u30fc\u30b8\n fastly:purge:key (fpkey) \u30ad\u30fc\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30d1\u30fc\u30b8\n fastly:purge:url (fpurl) URL\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30d1\u30fc\u30b8\n## cURL\u3092\u4f7f\u7528\u3057\u3066Fastly\u30ad\u30e3\u30c3\u30b7\u30e5\u30d8\u30c3\u30c0\u30fc\u3092\u8868\u793a\u3059\u308b\n\u4ee5\u4e0b\u306e\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044:(Linux\u3068Mac OSX\u3067\u52d5\u4f5c\u3057\u307e\u3059)\n```bash title=\"cURL function\"\nfunction curlf() { curl -sLIXGET -H 'Fastly-Debug:1' \"$@\" | grep -iE 'X-Cache|Cache-Control|Set-Cookie|X-Varnish|X-Hits|Vary|Fastly-Debug|X-Served|surrogate-control|surrogate-key' }\n
Using cURL$ curlf https://www.example-site-fastly.com\ncache-control: max-age=601, public, s-maxage=2764800\nsurrogate-control: max-age=2764800, public, stale-while-revalidate=3600, stale-if-error=3600\nfastly-debug-path: (D cache-wlg10427-WLG 1612906144) (F cache-wlg10426-WLG 1612906141) (D cache-fra19179-FRA 1612906141) (F cache-fra19122-FRA 1612906141)\nfastly-debug-ttl: (H cache-wlg10427-WLG - - 3) (M cache-fra19179-FRA - - 0)\nfastly-debug-digest: 1118d9fefc8a514ca49d49cb6ece04649e1acf1663398212650bb462ba84c381\nx-served-by: cache-fra19179-FRA, cache-wlg10427-WLG\nx-cache: MISS, HIT\nx-cache-hits: 0, 1\nvary: Cookie, Accept-Encoding\n
\u4e0a\u8a18\u306e\u30d8\u30c3\u30c0\u30fc\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u60c5\u5831\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059:
- HTML\u30da\u30fc\u30b8\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u53ef\u80fd
- \u30d6\u30e9\u30a6\u30b6\u306f\u30da\u30fc\u30b8\u3092601\u79d2\u9593\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u307e\u3059
- Fastly\u306f\u30da\u30fc\u30b8\u309232\u65e5\u9593(
2764800
\u79d2)\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u307e\u3059 - \u968e\u5c64\u578b\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u6709\u52b9(Wellington\u306e\u30a8\u30c3\u30b8PoP\u3001\u30d5\u30e9\u30f3\u30b9\u306e\u30b7\u30fc\u30eb\u30c9PoP)
- HTML\u30da\u30fc\u30b8\u306f\u30a8\u30c3\u30b8PoP\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u30d2\u30c3\u30c8\u3057\u307e\u3057\u305f
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#fastly","title":"Fastly\u306b\u624b\u52d5\u3067\u30d1\u30fc\u30b8\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b","text":"\u7279\u5b9a\u306e\u30da\u30fc\u30b8\u3092\u624b\u52d5\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u304b\u3089\u524a\u9664\u3057\u305f\u3044\u5834\u5408\u3001\u3044\u304f\u3064\u304b\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002
\u5358\u4e00\u306eURL\u3067Fastly\u3092\u30d1\u30fc\u30b8curl -Ssi -XPURGE -H 'Fastly-Soft-Purge:1' -H \"Fastly-Key:$FASTLY_API_TOKEN\" https://www.example.com/subpage\n
\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u3092\u6307\u5b9a\u3057\u3066\u30d1\u30fc\u30b8\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u3067Fastly\u3092\u30d1\u30fc\u30b8curl -XPOST -H 'Fastly-Soft-Purge:1' -H \"Fastly-Key:$FASTLY_API_TOKEN\" https://api.fastly.com/service/$FASTLY_API_SERVICE/purge/<surrogatekey>\n
Fastly CLI\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u3088\u308a\u7c21\u5358\u306b\u30d1\u30fc\u30b8\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/","title":"PHPUnit\u3068PhpStorm","text":"\u6ce8\u610f:
\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u306f\u3001\u4ee5\u4e0b\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059:
- Docker\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b
- docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u6301\u3064\u6a19\u6e96\u7684\u306aAmazee/Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b
- Mac\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b(\u4ed6\u306eOS\u3067\u3082\u52d5\u4f5c\u3059\u308b\u306f\u305a\u3067\u3059\u304c\u3001\u30d5\u30a9\u30eb\u30c0\u69cb\u9020\u3084\u8a2d\u5b9a\u304c\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059)
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_1","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a","text":" /core/phpunit.xml.dist
\u30d5\u30a1\u30a4\u30eb\u3092\u8907\u88fd\u3057\u3001/core/phpunit.xml
\u3068\u3044\u3046\u540d\u524d\u3067\u4fdd\u5b58\u3057\u307e\u3059\u3002 -
/core/phpunit.xml
\u3092\u7de8\u96c6\u3057\u3001\u4ee5\u4e0b\u306e\u5909\u6570\u3092\u8a2d\u5b9a\u3057\u307e\u3059:
- SIMPLETEST_DB:
mysql://drupal:drupal@mariadb:3306/drupal#db
- SIMPLETEST_BASE_URL:
<PROJECT_URL>
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#phpstorm","title":"PhpStorm\u306e\u8a2d\u5b9a","text":""},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#docker","title":"Docker\u306e\u8a2d\u5b9a","text":" - PhpStorm\u3067\u3001\u30d5\u30a1\u30a4\u30eb > \u8a2d\u5b9a > \u30d3\u30eb\u30c9\u3001\u5b9f\u884c\u3001\u30c7\u30d7\u30ed\u30a4 > Docker\u3078\u79fb\u52d5\u3057\u307e\u3059\u3002
+
\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002 Docker for Mac
\u3092\u9078\u629e\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#cli","title":"CLI\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u306e\u8a2d\u5b9a","text":"\u65b0\u3057\u3044CLI\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u3092\u8ffd\u52a0:
- PhpStorm\u3067\u3001\u30d5\u30a1\u30a4\u30eb > \u8a2d\u5b9a > \u8a00\u8a9e & \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af > PHP\u3078\u79fb\u52d5\u3057\u307e\u3059\u3002
...
\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001 +
\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002 - \u6b21\u306b\u3001Docker\u3001vagrant\u306a\u3069\u304b\u3089\u65b0\u3057\u3044CLI\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u3092\u8ffd\u52a0\u3092\u9078\u629e\u3057\u307e\u3059\u3002
- \u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059: * \u30b5\u30fc\u30d0\u30fc:
<DOCKER>
* \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb: ./docker-compose.yml
* \u30b5\u30fc\u30d3\u30b9: cli
* \u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb: \u65e2\u5b58\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a ('docker-compose exec')
- \u30d1\u30b9\u306e\u30de\u30c3\u30d4\u30f3\u30b0:
- \u30ed\u30fc\u30ab\u30eb\u30d1\u30b9:
<ROOT_PATH>
- \u30ea\u30e2\u30fc\u30c8\u30d1\u30b9:
/app
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_2","title":"\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u306e\u8a2d\u5b9a","text":"\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u306e\u8ffd\u52a0:
- PhpStorm\u3067\u3001\u30d5\u30a1\u30a4\u30eb > \u8a2d\u5b9a > \u8a00\u8a9e & \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af > PHP > \u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3078\u79fb\u52d5\u3057\u307e\u3059\u3002
+
\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u3001PHPUnit by Remote Interpreter
\u3092\u9078\u629e\u3057\u307e\u3059\u3002 - \u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059:
- CLI\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf:
<CLI_INTERPRETER>
- \u30d1\u30b9\u30de\u30c3\u30d4\u30f3\u30b0:
<PROJECT_ROOT> -> /app
- PHPUnit:
Use Composer autoloader
- \u30b9\u30af\u30ea\u30d7\u30c8\u3078\u306e\u30d1\u30b9:
/app/vendor/autoload.php
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb:
/app/web/core/phpunit.xml
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_3","title":"\u30e9\u30f3\u30ca\u30fc\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u8a2d\u5b9a/\u69cb\u6210","text":" - \u30e9\u30f3\u30ca\u30fc\u306e\u8a2d\u5b9a:
- PhpStorm\u3067\u3001\u5b9f\u884c > \u8a2d\u5b9a\u306e\u7de8\u96c6... > \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 > PHPUnit\u3078\u79fb\u52d5\u3057\u307e\u3059\u3002
- \u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059:
1. \u30c6\u30b9\u30c8\u30b9\u30b3\u30fc\u30d7: Defined in the configuration file
2. \u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u30fc: <CLI_INTERPRETER>
\u6ce8\u610f:
Mac\u4ee5\u5916\u306eOS\u3067\u306f\u624b\u9806\u304c\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_4","title":"\u6700\u7d42\u30c1\u30a7\u30c3\u30af","text":""},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_5","title":"\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u524d\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u78ba\u8a8d\u304c\u5fc5\u8981\u3067\u3059\u3002","text":" - \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u8d77\u52d5\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059:
$ docker-compose up -d
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u30a8\u30e9\u30fc\u306a\u304f\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059 (\u30b5\u30a4\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u3059\u3079\u3066\u60f3\u5b9a\u901a\u308a\u306b\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044)\u3002\u5fc5\u305a\u3057\u3082\u5fc5\u8981\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304a\u304f\u3068\u5b89\u5fc3\u3067\u3059\u3002
- \u3053\u308c\u3067\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\uff01
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_6","title":"\u5b9f\u884c\u6e96\u5099\u5b8c\u4e86","text":"\u4e0a\u8a18\u306e\u8a2d\u5b9a\u304c\u5b8c\u4e86\u3057\u3066\u3044\u308c\u3070\u3001\u5b9f\u884c\u3057\u305f\u3044\u30c6\u30b9\u30c8\u306b\u79fb\u52d5\u3057\u3001\u7dd1\u8272\u306e\u77e2\u5370\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3060\u3051\u3067\u7c21\u5358\u306b\u5b9f\u884c\u3067\u304d\u307e\u3059\uff01
PhpStorm\u306f\u3001Docker\u3092\u4f7f\u7528\u3057\u3066CLI\u30b3\u30f3\u30c6\u30ca\u306b\u5165\u308a\u3001\u8a2d\u5b9a\u306b\u57fa\u3065\u3044\u3066PHPUnit\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/","title":"\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7:Drupal\u3092Lagoon\u3067\u5b9f\u884c\u3059\u308b\u6e96\u5099","text":""},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#1-lagoon-drupal-setting-files","title":"1. Lagoon Drupal \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"Drupal\u304cLagoon\u3068\u9023\u643a\u3059\u308b\u305f\u3081\u306b\u306f\u3001Drupal\u306bLagoon\u306e\u3053\u3068\u3092\u3001Lagoon\u306bDrupal\u306e\u3053\u3068\u3092\u6559\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u7279\u5b9a\u306eYAML\u3068PHP\u30d5\u30a1\u30a4\u30eb\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002
Drupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u53d6\u308a\u7d44\u3093\u3067\u3044\u308b\u5834\u5408\u306f\u3001\u79c1\u305f\u3061\u306e\u4f8b\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u3042\u308b\u69d8\u3005\u306aDrupal\u30b5\u30f3\u30d7\u30eb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5229\u7528\u3067\u304d\u307e\u3059\u3002\u30cb\u30fc\u30ba\u306b\u5408\u308f\u305b\u3066 Drupal 8\u3001Drupal 9 \u3060\u3051\u3067\u306a\u304f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u7a2e\u985e\u306a\u3069\u30d0\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u3082\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u958b\u59cb\u3059\u308b\u306b\u306f\u3001\u81ea\u5206\u306e\u30cb\u30fc\u30ba\u306b\u5408\u3063\u305f\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\uff01
\u4ee5\u4e0b\u306f\u3001Lagoon\u3068Drupal\u306b\u7279\u5316\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u6982\u8981\u3067\u3059\uff1a
.lagoon.yml
- Lagoon\u304c\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3059\u308b\u5185\u5bb9\u306a\u3069\u3092\u7406\u89e3\u3059\u308b\u305f\u3081\u306e\u30e1\u30a4\u30f3\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002Drupal\u5411\u3051\u306e\u9069\u5207\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7de8\u96c6\u3084\u5909\u66f4\u3092\u884c\u3046\u5834\u5408\u306f\u3001.lagoon.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 docker-compose.yml
\u3001.dockerignore
\u3001\u304a\u3088\u3073 *.dockerfile
(\u307e\u305f\u306f Dockerfile
) - \u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u30ed\u30fc\u30ab\u30eb\u306eDrupal\u958b\u767a\u74b0\u5883\u306e\u5b9f\u884c\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001Docker\u306b\u5bfe\u3057\u3066\u8d77\u52d5\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u306e\u7a2e\u985e\u3084\u30d3\u30eb\u30c9\u65b9\u6cd5\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u9069\u5207\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3068\u3001\u591a\u304f\u306e\u30b3\u30e1\u30f3\u30c8\u884c\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u5185\u5bb9\u304c\u8aad\u307f\u53d6\u308c\u308b\u3088\u3046\u5341\u5206\u306a\u30b3\u30e1\u30f3\u30c8\u304c\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001docker-compose.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002 sites/default/*
- .php
\u3068.yml
\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001Drupal\u304c\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u306e\u4e21\u65b9\u3067Lagoon\u30b3\u30f3\u30c6\u30ca\u3068\u901a\u4fe1\u3059\u308b\u65b9\u6cd5\u3092Drupal\u306b\u6307\u793a\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u958b\u767a\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u3067\u7279\u5b9a\u306e\u8a2d\u5b9a\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9 (\u4e0a\u66f8\u304d) \u3059\u308b\u305f\u3081\u306e\u30b7\u30f3\u30d7\u30eb\u306a\u4ed5\u7d44\u307f\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002\u4ed6\u306eDrupal\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3068\u306f\u7570\u306a\u308a\u3001Lagoon\u306fDrupal\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u4e00\u5207\u5e72\u6e09\u3057\u307e\u305b\u3093\u3002\u305d\u306e\u305f\u3081\u3001\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u81ea\u7531\u306b\u7de8\u96c6\u3067\u304d\u307e\u3059\u3002\u4ed6\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u540c\u69d8\u306b\u3001\u9069\u5207\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3068\u3001\u4e00\u90e8\u30b3\u30e1\u30f3\u30c8\u4ed8\u304d\u306e\u90e8\u5206\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 drush/aliases.drushrc.php
- Drush\u72ec\u81ea\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u3001Drush\u304cLagoon\u306eGraphQL API\u3092\u4f7f\u3063\u3066\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9 (\u30b5\u30a4\u30c8\u306e\u5225\u540d) \u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5\u3092Drush\u306b\u6307\u793a\u3057\u307e\u3059\u3002 drush/drushrc.php
- Drush\u30b3\u30de\u30f3\u30c9\u7528\u306e\u9069\u5207\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#update-your-gitignore-settings","title":".gitignore
\u8a2d\u5b9a\u306e\u66f4\u65b0","text":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30df\u30c3\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u3001.gitignore
\u30d5\u30a1\u30a4\u30eb\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Drupal\u306fsites/*/settings*.php
\u3068sites/*/services*.yml
\u3092.gitignore
\u3067\u30b3\u30df\u30c3\u30c8\u304b\u3089\u9664\u5916\u3059\u308b\u3088\u3046\u306b\u521d\u671f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002Lagoon \u74b0\u5883\u3067\u306f\u6a5f\u5bc6\u60c5\u5831\u306f Git \u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u4fdd\u5b58\u3057\u306a\u3044\u306e\u3067\u3001\u3053\u306e\u9664\u5916\u8a2d\u5b9a\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#note-about-webroot-in-drupal-8","title":"Drupal 8\u306eWEBROOT
\u306b\u95a2\u3059\u308b\u6ce8\u610f\u4e8b\u9805","text":"\u6b8b\u5ff5\u306a\u304c\u3089\u3001Drupal\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u306fWEBROOT
\u30d5\u30a9\u30eb\u30c0\u540d\u306e\u6a19\u6e96\u5316\u304c\u307e\u3060\u6c7a\u307e\u3063\u3066\u3044\u307e\u305b\u3093\u3002Drupal\u3092web
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306b\u914d\u7f6e\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3082\u3042\u308c\u3070\u3001docroot
\u3084\u5225\u306e\u5834\u6240\u306b\u5165\u308c\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3082\u3042\u308a\u307e\u3059\u3002Lagoon\u306eDrupal\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u3001Drupal\u304cweb
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306b\u914d\u7f6e\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u3082\u3057\u3042\u306a\u305f\u306eDrupal\u306e\u69cb\u6210\u304c\u7570\u306a\u308b\u5834\u5408\u306f\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u305d\u308c\u306b\u5408\u308f\u305b\u3066\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#note-about-composerjson","title":"composer.json
\u306b\u95a2\u3059\u308b\u6ce8\u610f\u4e8b\u9805","text":"Composer \u3092\u4f7f\u3063\u3066 Drupal \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u5834\u5408\u3001composer.json
\u3092\u78ba\u8a8d\u3057\u3001name
\u304cdrupal/drupal
\u3067\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u540d\u524d\u306f Drush \u3084\u305d\u306e\u4ed6\u306e Drupal \u95a2\u9023\u30c4\u30fc\u30eb\u3068\u7af6\u5408\u3057\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001myproject/drupal
\u306a\u3069\u3001\u5225\u306e\u540d\u524d\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#2-customize-docker-composeyml","title":"2. docker-compose.yml
\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba","text":"lagoon-project
\u3068LAGOON_ROUTE
\u306e\u5024\u3092\u5fd8\u308c\u305a\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3001\u30b5\u30a4\u30c8\u540d\u3068\u30a2\u30af\u30bb\u30b9\u3057\u305f\u3044URL\u306b\u66f8\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u4ee5\u4e0b\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059:
docker-compose.ymlx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# Route that should be used locally. If you are using pygmy, this route *must* end with .docker.amazee.io.\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#3-build-images","title":"3. \u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9","text":"\u307e\u305a\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9docker-compose build\n
\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001docker-compose.yml
\u5185\u3067build:
\u306e\u5b9a\u7fa9\u304c\u3042\u308b\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u3088\u3046\u306bdocker-compose
\u306b\u6307\u793a\u3057\u307e\u3059\u3002\u901a\u5e38\u3001Drupal\u3067\u306fcli
\u3001nginx
\u3001php
\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u8a72\u5f53\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u7279\u5b9a\u306e\u30d3\u30eb\u30c9\u30b3\u30de\u30f3\u30c9(composer install
\u306a\u3069)\u3092\u5b9f\u884c\u3057\u305f\u308a\u3001\u7279\u5b9a\u306e\u74b0\u5883\u5909\u6570(WEBROOT
\u306a\u3069)\u3092\u30a4\u30e1\u30fc\u30b8\u306b\u6ce8\u5165\u3059\u308b\u305f\u3081\u3067\u3059\u3002
\u901a\u5e38\u3001Drupal \u30b3\u30fc\u30c9\u3092\u7de8\u96c6\u3059\u308b\u305f\u3073\u306b\u30d3\u30eb\u30c9\u3092\u884c\u3046\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093 (\u30b3\u30fc\u30c9\u306f\u30db\u30b9\u30c8\u304b\u3089\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u308b\u305f\u3081)\u3002\u3068\u306f\u3044\u3048\u3001\u30d3\u30eb\u30c9\u3092\u3057\u3066\u3082\u4f55\u3089\u304b\u306e\u554f\u984c\u304c\u751f\u3058\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3055\u3089\u306b\u3001Lagoon \u306f\u30c7\u30d7\u30ed\u30a4\u4e2d\u306b\u307e\u3063\u305f\u304f\u540c\u3058 Docker \u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u306e\u3067\u3001docker-compose build
\u30b3\u30de\u30f3\u30c9\u3092\u3082\u3046\u4e00\u5ea6\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u3001\u30c7\u30d7\u30ed\u30a4\u6642\u306b\u3082\u30d3\u30eb\u30c9\u304c\u6b63\u5e38\u306b\u52d5\u4f5c\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#4-start-containers","title":"4. \u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5","text":"\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u305f\u306e\u3067\u3001\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3067\u304d\u307e\u3059:
\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5docker-compose up -d\n
\u3053\u308c\u306b\u3088\u308a\u3001\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002\u30b3\u30de\u30f3\u30c9\u304c\u5b8c\u4e86\u3057\u305f\u5f8c\u3001docker-compose ps
\u3067\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u5b8c\u5168\u306b\u7acb\u3061\u4e0a\u304c\u3063\u3066\u3044\u308b\u304b\u3001\u30af\u30e9\u30c3\u30b7\u30e5\u3057\u3066\u3044\u306a\u3044\u304b\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u554f\u984c\u304c\u3042\u308b\u5834\u5408\u306f\u3001docker-compose logs -f [servicename]
\u3067\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#5-rerun-composer-install","title":"5. composer install
\u3092\u518d\u5b9f\u884c\u3057\u307e\u3059\uff08composer\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u307f\uff09","text":"\u30ed\u30fc\u30ab\u30eb\u306e\u958b\u767a\u74b0\u5883\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u3044\u3068\u601d\u3046\u3067\u3057\u3087\u3046\u3002\u305d\u306e\u305f\u3081\u3001cli
\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3057\u3066composer install
\u3092\u5b9f\u884c\u3057\u307e\u3059:
CLI\u3067composer install\u3092\u5b9f\u884cdocker-compose exec cli bash\ncomposer install\n
\u5c11\u3057\u5947\u5999\u306b\u611f\u3058\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u30d3\u30eb\u30c9\u624b\u9806\u3067\u3059\u3067\u306bcomposer install
\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u8aac\u660e\u3092\u52a0\u3048\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3059:
- \u30db\u30b9\u30c8\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3057\u3066\u3001\u3059\u3050\u306b\u30b3\u30f3\u30c6\u30ca\u3067\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e
docker-composer.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u3059\u3079\u3066\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u30b3\u30f3\u30c6\u30ca\u5185\u306b\u30de\u30a6\u30f3\u30c8\u3057\u3066\u3044\u307e\u3059 (\u30dc\u30ea\u30e5\u30fc\u30e0\u30bb\u30af\u30b7\u30e7\u30f3\u306e.:/app:delegated
\u304c\u3053\u308c\u306b\u8a72\u5f53\u3057\u307e\u3059)\u3002\u3064\u307e\u308a\u3001Docker\u30d3\u30eb\u30c9\u6642\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u306f\u3001\u30db\u30b9\u30c8\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u4e0a\u66f8\u304d\u3055\u308c\u307e\u3059\u3002 - \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u306b\u304a\u3044\u3066\u306f\u3001
composer.json
\u3067require-dev
\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u4f9d\u5b58\u95a2\u4fc2\u3082\u5b58\u5728\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308b\u3067\u3057\u3087\u3046\u3002\u4e00\u65b9\u3001\u672c\u756a\u74b0\u5883\u3067\u306f\u3001\u305d\u3046\u3057\u305f\u4f9d\u5b58\u95a2\u4fc2\u306f\u305f\u3060\u7121\u99c4\u306a\u5bb9\u91cf\u3092\u6d88\u8cbb\u3059\u308b\u3060\u3051\u3067\u3059\u3002\u305d\u306e\u305f\u3081\u3001Dockerfile\u5185\u3067\u306f composer install --no-dev
\u3092\u5b9f\u884c\u3057\u3001\u624b\u52d5\u3067composer install
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u3059\u3079\u3066\u554f\u984c\u306a\u304f\u52d5\u4f5c\u3057\u3066\u3044\u308b\u5834\u5408\u3001docker-compose.yml
(\u4f8b\u3048\u3070 http://drupal.docker.amazee.io
)\u3067\u5b9a\u7fa9\u3055\u308c\u305fLAGOON_ROUTE
\u3092\u958b\u304f\u3068\u3001Drupal\u30a8\u30e9\u30fc\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u4eca\u306e\u6bb5\u968e\u3067\u306f\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u91cd\u8981\u306a\u306e\u306f\u3001Drupal\u30b5\u30a4\u30c8\u304c\u8aad\u307f\u8fbc\u307e\u308c\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u3053\u3068\u3067\u3059\u3002
500\u30a8\u30e9\u30fc\u3084\u540c\u69d8\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001Composer\u306b\u3088\u3063\u3066\u3059\u3079\u3066\u304c\u6b63\u3057\u304f\u8aad\u307f\u8fbc\u307e\u308c\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#6-check-status-and-install-drupal","title":"6. \u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u78ba\u8a8d\u3068Drupal\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u3044\u3088\u3044\u3088Drupal\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u304c\u3001\u305d\u306e\u524d\u306b\u3059\u3079\u3066\u304c\u6a5f\u80fd\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u306bDrush\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059:
Drush statusdocker-compose exec cli bash\ndrush status\n
\u3053\u308c\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u7d50\u679c\u304c\u8fd4\u3055\u308c\u308b\u306f\u305a\u3067\u3059:
Drush status result[drupal-example]cli-drupal:/app$ drush status\n[notice] Missing database table: key_value\nDrupal version : 8.6.1\nSite URI : http://drupal.docker.amazee.io\nDatabase driver : mysql\nDatabase hostname : mariadb\nDatabase port : 3306\nDatabase username : drupal\nDatabase name : drupal\nPHP binary : /usr/local/bin/php\nPHP config : /usr/local/etc/php/php.ini\nPHP OS : Linux\nDrush script : /app/vendor/drush/drush/drush\nDrush version : 9.4.0\nDrush temp : /tmp\nDrush configs : /home/.dr ush/drush.yml\n /app/vendor/drush/drush/drush.yml\nDrupal root : /app/web\nSite path : sites/default\n
\u8b66\u544a
\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u524d\u306b\u3001pygmy\u306b\u516c\u958b\u9375\u306b\u3064\u3044\u3066\u4f1d\u3048\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
Permission denied (publickey)
\u306e\u3088\u3046\u306a\u30a8\u30e9\u30fc\u304c\u51fa\u305f\u5834\u5408\u306f\u3001\u3053\u3061\u3089\u304b\u3089SSH\u30ad\u30fc\u306e\u8ffd\u52a0\u65b9\u6cd5\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u304f\u3060\u3055\u3044: pygmy - ssh\u30ad\u30fc\u306e\u8ffd\u52a0
\u6b21\u306bDrupal\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059(\u65e2\u5b58\u306eSQL\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u30b9\u30c6\u30c3\u30d77\u3078\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305f\u3060\u3057\u3001\u3059\u3079\u3066\u304c\u6a5f\u80fd\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001\u6700\u521d\u304b\u3089\u30af\u30ea\u30fc\u30f3\u306aDrupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002))\u3002
Drupal\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebdrush site-install\n
\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u51fa\u529b\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059:
drush site-install[drupal-example]cli-drupal:/app$ drush site-install\nYou are about to DROP all tables in your 'drupal' database. Do you want to continue? (y/n): y\nStarting Drupal installation. This takes a while. Consider using the --notify global option.\nInstallation complete. User name: admin User password: a7kZJekcqh\nCongratulations, you installed Drupal!\n
LAGOON_ROUTE
\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308bURL\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u65b0\u3057\u304f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305fDrupal\u30b5\u30a4\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u304a\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307e\u3059\uff01
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#7-import-existing-database-dump","title":"7. \u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b","text":"\u65e2\u306b\u65e2\u5b58\u306eDrupal\u30b5\u30a4\u30c8\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30ed\u30fc\u30ab\u30eb\u30b5\u30a4\u30c8\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u3044\u3068\u601d\u3046\u3067\u3057\u3087\u3046\u3002
\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u306f\u591a\u6570\u3042\u308a\u307e\u3059\u3002\u73fe\u5728\u306e\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306bDrush\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059:
Drush sql-dumpdrush sql-dump --result-file=dump.sql\n\n\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u306fdump.sql\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f\n
\u3053\u308c\u3067\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5168\u4f53\u3092\u542b\u3080dump.sql
\u30d5\u30a1\u30a4\u30eb\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002
\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30d4\u30fc\u3057\u3001cli
\u306b\u63a5\u7d9a\u3059\u308b\u3068\u3001\u305d\u306e\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059:
dump.sql\u306e\u8868\u793a[drupal-example]cli-drupal:/app$ ls -l dump.sql\n-rw-r--r-- 1 root root 5281 Dec 19 12:46 dump.sql\n
\u73fe\u5728\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u524a\u9664\u3057\u3001\u30c0\u30f3\u30d7\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002
dump.sql\u306e\u30a4\u30f3\u30dd\u30fc\u30c8drush sql-drop\n\ndrush sql-cli < dump.sql\n
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eURL\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u3059\u3079\u3066\u304c\u6b63\u5e38\u306b\u52d5\u4f5c\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3067\u3001Drupal\u30b5\u30a4\u30c8\u304c\u6b63\u5e38\u306b\u6a5f\u80fd\u3057\u3066\u3044\u308b\u306f\u305a\u3067\u3059\uff01
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#8-drupal-files-directory","title":"8. Drupal\u30d5\u30a1\u30a4\u30eb \u30c7\u30a3\u30ec\u30af\u30c8\u30ea","text":"Drupal\u30b5\u30a4\u30c8\u306b\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3082\u5fc5\u8981\u3067\u3059\u3002\u3053\u306e\u30d5\u30a9\u30eb\u30c0\u5168\u4f53\u306fDocker\u30b3\u30f3\u30c6\u30ca\u5185\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u308b\u305f\u3081\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u6b63\u3057\u3044\u30d5\u30a9\u30eb\u30c0\u306b\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044 (\u304a\u305d\u3089\u304fweb/sites/default/files
\u3001sites/default/files
\u307e\u305f\u306f\u540c\u69d8\u306e\u30d5\u30a9\u30eb\u30c0\u3067\u3059)\u3002\u8a2d\u5b9a\u3057\u305fWEBROOT
\u3092\u899a\u3048\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044 - \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3054\u3068\u306b\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#done","title":"9. \u5b8c\u4e86","text":"\u30ed\u30fc\u30ab\u30eb\u8a2d\u5b9a\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002Lagoon \u30c1\u30fc\u30e0\u306f\u3001\u7686\u69d8\u306e\u697d\u3057\u3044 Drupaling \u3092\u5fdc\u63f4\u3057\u3066\u3044\u307e\u3059\uff01
"},{"location":"ja/applications/drupal/subfolders/","title":"\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0","text":"\u4f8b\u3048\u3070\u3001www.example.com
\u306f\u3042\u308bDrupal\u30b5\u30a4\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u63d0\u4f9b\u3057\u3001www.example.com/blog
\u306f\u5225\u306eDrupal\u3067\u69cb\u7bc9\u3055\u308c\u305f\u30d6\u30ed\u30b0\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002
\u3053\u306e\u5834\u5408\u3001\u4e21\u65b9\u306eDrupal\u3092\u5358\u4e00\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u7ba1\u7406\u3057\u3001\u307e\u3068\u3081\u3066\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u5168\u3066\u306e\u30c1\u30fc\u30e0\u306b\u9069\u3057\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u306a\u304f\u3001\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f\u5225\u3005\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f7f\u7528\u3057\u305f\u65b9\u304c\u826f\u3044\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/subfolders/#_2","title":"\u30eb\u30fc\u30c8\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5909\u66f4","text":"\u30eb\u30fc\u30c8\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3(\u3053\u306e\u4f8b\u3067\u306fwww.example.com
\u306eDrupal\u30b5\u30a4\u30c8)\u306f\u3001NGINX\u3092\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3078\u306e\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306eNGINX\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u3044\u304f\u3064\u304b\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059:
"},{"location":"ja/applications/drupal/subfolders/#location_prependconf","title":"location_prepend.conf
","text":"Drupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u30eb\u30fc\u30c8\u306blocation_prepend.conf
\u3068\u3044\u3046\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059:
location_prepend.confresolver 8.8.8.8 valid=30s;\n\nlocation ~ ^/subfolder {\n # $http_x_forwarded_proto\u304c\u7a7a\u306e\u5834\u5408 (\u4e0a\u6d41\u306e\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u304b\u3089\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408)\n # \u73fe\u5728\u306e\u30b9\u30ad\u30fc\u30e0\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\n set_if_empty $http_x_forwarded_proto $scheme;\n\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;\n proxy_set_header X-Lagoon-Forwarded-Host $ \u30db\u30b9\u30c8;\n # \u5143\u306e\u30db\u30b9\u30c8\u3092\u4e0b\u6d41\u304c\u77e5\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\n proxy_set_header X-REVERSEPROXY $hostname;\n proxy_set_header FORWARDED \"\";\n # Drupal 8\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u305f\u3081\u3001FORWARDED\u30d8\u30c3\u30c0\u30fc\u3092\u524a\u9664\u3057\u307e\u3059\u3002\n proxy_set_header Proxy \"\";\n # Drupal 8\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u305f\u3081\u3001Proxy\u30d8\u30c3\u30c0\u30fc\u3092\u524a\u9664\u3057\u307e\u3059\u3002\n proxy_ssl_server_name on;\n\n # NGINX\u3067DNS\u89e3\u6c7a\u3092\u6b63\u3057\u304f\u52d5\u4f5c\u3055\u305b\u308b\u306b\u306f\u3001\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n set $subfolder_drupal_host \"https://nginx-lagoonproject-${LAGOON_GIT_SAFE_BRANCH}.clustername.com:443\";\n # LAGOON_GIT_SAFE_BRANCH\u5909\u6570\u306fdocker\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u6642\u306b\u7f6e\u63db\u3055\u308c\u307e\u3059\u3002\n proxy_pass $subfolder_drupal_host;\n proxy_set_header Host $proxy_host;\n # $proxy_host\u306f\u3001NGINX\u304cproxy_pass\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6(\u30b9\u30ad\u30fc\u30e0\u3068\u30dd\u30fc\u30c8\u3092\u9664\u304f\u30db\u30b9\u30c8\u540d)\u3092\u5143\u306b\u81ea\u52d5\u751f\u6210\u3055\u308c\u307e\u3059\u3002\n\n expires off; # \u30d7\u30ed\u30ad\u30b7\u304b\u3089\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30d8\u30c3\u30c0\u30fc\u3092\u5c0a\u91cd\u3057\u3001\u4e0a\u66f8\u304d\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\n
\u4ee5\u4e0b\u306e\u6587\u5b57\u5217\u3092\u7f6e\u63db\u3057\u3066\u304f\u3060\u3055\u3044:
/subfolder
\uff1a\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u4f8b\u3048\u3070\u3001/blog
\u3002 nginx
\uff1a\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u53c2\u7167\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 lagoonproject
\uff1a\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eLagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/subfolders/#n-ginx-dockerfile","title":"N GINX Dockerfile","text":"\u4ee5\u4e0b\u306e\u5185\u5bb9\u3092NGINX Dockerfile(nginx.dockerfile
\u307e\u305f\u306fDockerfile.nginx
)\u306b\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044:
nginx.dockerfileCOPY location_prepend.conf /etc/nginx/conf.d/drupal/location_prepend.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/*\n
"},{"location":"ja/applications/drupal/subfolders/#_3","title":"\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5909\u66f4","text":"\u30eb\u30fc\u30c8\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u540c\u69d8\u306b\u3001\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3(\u3053\u306e\u4f8b\u3067\u306f\u3001www.example.com/blog
\u306eDrupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb)\u306b\u5bfe\u3057\u3066\u3082\u3001\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u3067\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059:
"},{"location":"ja/applications/drupal/subfolders/#location_drupal_append_subfolderconf","title":"location_drupal_append_subfolder.conf
","text":"\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306eDrupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3001location_drupal_append_subfolder.conf
\u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059:
location_drupal_append_subfolder.conf# Drupal\u306f\u3001`subfolder`\u3067\u59cb\u307e\u308b\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u304c\u4ed8\u3044\u305f\u30b9\u30af\u30ea\u30d7\u30c8\u540d\u3092\u6ce8\u5165\u3059\u308b\u3068\u3001\n# \u3059\u3079\u3066\u306eURL\u306b`subfolder`\u3092\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u3057\u3066\u4ed8\u52a0\u3057\u3066\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002\nfastcgi_param SCRIPT_NAME /subfolder/index.php;\n\n# \u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u7d4c\u7531\u3067\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30aa\u30ea\u30b8\u30ca\u30eb\u306eHOST URL\u3092\n# PHP\u306b\u6ce8\u5165\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Drupal\u306f\u73fe\u5728\u306eHOST\u3067\u306f\u306a\u304f\u3001\n# \u30aa\u30ea\u30b8\u30ca\u30eb\u306eHOST URL\u3092\u7528\u3044\u3066\u3059\u3079\u3066\u306e URL \u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002\n\n# \u6700\u521d\u306b\u3001HOST\u3092\u901a\u5e38\u306e\u30db\u30b9\u30c8\u5909\u6570\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\nfastcgi_param HTTP_HOST $http\n``` _host;\n# \u305d\u308c\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u306f\u3001`X-Lagoon-Forwarded-Host`\u3067\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002\nfastcgi_param HTTP_HOST $http_x_lagoon_forwarded_host if_not_empty;\n
\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30fc\u540d\u3067 /subfolder
\u3092\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001/blog
\u306e\u3088\u3046\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/subfolders/#server_prepend_subfolderconf","title":"server_prepend_subfolder.conf
","text":"\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30fc\u3067\u306eDrupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3001server_prepend_subfolder.conf
\u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044:
server_prepend_subfolder.conf# \u5185\u90e8NGINX\u30ea\u30e9\u30a4\u30c8\u306f`last`\u30d5\u30e9\u30b0\u3092\u4f7f\u3046\u305f\u3081\u3001\n# \u30ea\u30e9\u30a4\u30c8\u306e\u524d\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u6709\u7121\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\n# `last`\u30d5\u30d5\u30e9\u30b0\u306fNGINX\u306b\u5bfe\u3057\u3066\u3001\u3053\u308c\u4ee5\u964d\u306e\u30ea\u30e9\u30a4\u30c8\u51e6\u7406\u3092\u884c\u308f\u306a\u3044\u3088\u3046\u6307\u793a\u3057\u307e\u3059\u3002\n# (\u307e\u305f\u3001`if`\u306f\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4e00\u90e8\u3067\u3059\u3002)\ninclude /etc/nginx/helpers/010_redirects.conf;\n\n# \u3053\u306e\u30ea\u30e9\u30a4\u30c8\u306f\u30ea\u30af\u30a8\u30b9\u30c8URL\u304b\u3089`/subfolder/`\u3092\u524a\u9664\u3057\u3001\n# \u3042\u305f\u304b\u3082\u6700\u521d\u304b\u3089`/`\u3067\u3042\u3063\u305f\u304b\u306e\u3088\u3046\u306bNGINX\u304c\n# \u51e6\u7406\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002\n# `last`\u30d5\u30e9\u30b0\u3082\u91cd\u8981\u3067\u3059\u3002\n# \u3053\u308c\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u306e\u30ea\u30e9\u30a4\u30c8\u304c\u6c38\u7d9a\u7684\u306b\u7e70\u308a\u8fd4\u3055\u308c\u308b\u306e\u3092\u9632\u304e\u307e\u3059\u3002\nrewrite ^/subfolder/(.*) /$1 last;\n\n# NGINX\u306b\u3088\u3063\u3066\u73fe\u5728\u51e6\u7406\u3055\u308c\u3066\u3044\u308b\u30db\u30b9\u30c8\u60c5\u5831\u304c\u4e0a\u66f8\u304d\u3055\u308c\u306a\u3044\u3088\u3046\u3001\n# \u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u7d76\u5bfe\u30d1\u30b9\u3092\u4f7f\u7528\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002\nabsolute_redirect off;\n\n# `/subfolder`\u3060\u3051\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u5834\u5408\u3001301\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3067\n# `/subfolder`(Drupal\u306f\u672b\u5c3e\u306e\u30b9\u30e9\u30c3\u30b7\u30e5\u3092\u597d\u307f\u307e\u3059)\u306b\u8ee2\u9001\u3057\u307e\u3059\u3002\nrewrite ^/subfolder /subfolder/ permanent;\n\n# \u305d\u306e\u4ed6\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5bfe\u3057\u3066\u306f\u3001301\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u30d1\u30b9\u306b`/subfolder/`\u3092\u5148\u982d\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002\nrewrite ^\\/(.*) /subfolder/$1 permanent;\n
/subfolder
\u306f\u3001\u4f7f\u7528\u3059\u308b\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u540d\u524d\u3068\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001\u30d6\u30ed\u30b0\u7528\u306e\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30fc\u3067\u3042\u308c\u3070 /blog
\u3068\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/subfolders/#nginx-dockerfile","title":"NGINX Dockerfile","text":"NGINX Dockerfile\u3082\u7de8\u96c6\u304c\u5fc5\u8981\u3067\u3059\u3002
NGINX Dockerfile(\u901a\u5e38\u306fnginx.dockerfile
\u307e\u305f\u306f Dockerfile.nginx
)\u306b\u4ee5\u4e0b\u306e\u5185\u5bb9\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044:
nginx.dockerfileCOPY location_drupal_append_subfolder.conf /etc/nginx/conf.d/drupal/location_drupal_append_subfolder.conf\nCOPY server_prepend_subfolder.conf /etc/nginx/conf.d/drupal/server_prepend_subfolder.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/*\n
"},{"location":"ja/applications/drupal/services/","title":"\u6982\u8981","text":""},{"location":"ja/applications/drupal/services/#mariadbmysql","title":"MariaDB\u306f\u3001\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306eMySQL\u306e\u5f8c\u7d99\u8005\u3067\u3059","text":"Drupal\u3068MariaDB\u306b\u3064\u3044\u3066\u5b66\u3076
\u6a19\u6e96\u7684\u306aMariaDB\u30a4\u30e1\u30fc\u30b8\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3(\u3053\u306eMariaDB-Drupal\u30a4\u30e1\u30fc\u30b8\u306f\u3053\u308c\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059)
"},{"location":"ja/applications/drupal/services/#redis","title":"Redis\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u30d6\u30ed\u30fc\u30ab\u30fc\u3001\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u3001\u9ad8\u901f\u3067\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30a4\u30f3\u30e1\u30e2\u30ea\u30fb\u30ad\u30fc\u30d0\u30ea\u30e5\u30fc\u30fb\u30c7\u30fc\u30bf\u30b9\u30c8\u30a2\u3067\u3059","text":"Drupal\u3068Redis\u306b\u3064\u3044\u3066\u5b66\u3076
Redis-persistent\u30a4\u30e1\u30fc\u30b8\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3
"},{"location":"ja/applications/drupal/services/#solr","title":"Solr\u306f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u691c\u7d22\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059","text":"Drupal\u3068Solr\u306b\u3064\u3044\u3066\u5b66\u3076
\u6a19\u6e96\u7684\u306aSolr\u30a4\u30e1\u30fc\u30b8\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 (\u3053\u306eSolr-Drupal\u30a4\u30e1\u30fc\u30b8\u306f\u3053\u308c\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059)
"},{"location":"ja/applications/drupal/services/#varnishhttphttp","title":"Varnish\u306f\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306e\u5f37\u529b\u306a\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306eHTTP\u30a8\u30f3\u30b8\u30f3\u304a\u3088\u3073\u30ea\u30d0\u30fc\u30b9HTTP\u30d7\u30ed\u30ad\u30b7\u3067\u3059","text":"Drupal\u3068Varnish\u306b\u3064\u3044\u3066\u5b66\u3076
\u6a19\u6e96\u7684\u306aVarnish\u30a4\u30e1\u30fc\u30b8\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 (\u3053\u306eVarnish-Drupal\u30a4\u30e1\u30fc\u30b8\u306f\u3053\u308c\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059)
"},{"location":"ja/applications/drupal/services/mariadb/","title":"MariaDB","text":"Lagoon\u306e mariadb-drupal
Docker\u30a4\u30e1\u30fc\u30b8 Dockerfile \u306f\u3001Lagoon\u306eDrupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3055\u308c\u305f mariadb
\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002 mariadb
\u30a4\u30e1\u30fc\u30b8\u3068\u7570\u306a\u308b\u306e\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u74b0\u5883\u5909\u6570\u306b\u3088\u3063\u3066\u884c\u308f\u308c\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u521d\u671f\u8a2d\u5b9a\u3060\u3051\u3067\u3059:
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e MARIADB_DATABASE
drupal \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308bDrupal\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 MARIADB_USER
drupal \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc MARIADB_PASSWORD
drupal \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 LAGOON_ENVIRONMENT_TYPE
\u5909\u6570\u304c production
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306f MARIADB_INNODB_BUFFER_POOL_SIZE=1024
\u304a\u3088\u3073 MARIADB_INNODB_LOG_FILE_SIZE=256
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u6700\u9069\u5316\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/mariadb/#mariadb_1","title":"MariaDB \u30ed\u30b0\u306e\u8ffd\u52a0\u8a2d\u5b9a","text":"\u958b\u767a\u306e\u904e\u7a0b\u3067\u3001\u30af\u30a8\u30ea\u30ed\u30b0\u307e\u305f\u306f\u30b9\u30ed\u30fc\u30af\u30a8\u30ea\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u305d\u3046\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u74b0\u5883\u5909\u6570 MARIADB_LOG_SLOW
\u307e\u305f\u306f MARIADB_LOG_QUERIES
\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306fdocker-compose.yml
\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059.
"},{"location":"ja/applications/drupal/services/mariadb/#mysql","title":"\u30db\u30b9\u30c8\u304b\u3089MySQL\u30b3\u30f3\u30c6\u30ca\u3078\u306e\u63a5\u7d9a","text":"Sequel Pro\u3001MySQL Workbench\u3001HeidiSQL\u3001DBeaver\u3001\u6a19\u6e96\u7684\u306amysql-cli
\u306a\u3069\u306e\u5916\u90e8\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066\u3001Docker\u30b3\u30f3\u30c6\u30ca\u5185\u306eMySQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3057\u305f\u3044\u5834\u5408\u3001IP\u30a2\u30c9\u30ec\u30b9\u3068\u30dd\u30fc\u30c8\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5\u3092\u4ee5\u4e0b\u306b\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/mariadb/#mysql_1","title":"\u30b3\u30f3\u30c6\u30ca\u304b\u3089\u516c\u958b\u3055\u308c\u305f MySQL \u30dd\u30fc\u30c8\u3092\u53d6\u5f97\u3059\u308b","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Docker\u306f\u5404\u30b3\u30f3\u30c6\u30ca\u8d77\u52d5\u6642\u306bMySQL\u306e\u516c\u958b\u30dd\u30fc\u30c8\u3092\u30e9\u30f3\u30c0\u30e0\u306b\u5272\u308a\u5f53\u3066\u307e\u3059\u3002\u3053\u308c\u306f\u30dd\u30fc\u30c8\u306e\u885d\u7a81\u3092\u9632\u3050\u305f\u3081\u306b\u884c\u308f\u308c\u307e\u3059\u3002
docker
\u3092\u4f7f\u3063\u3066\u516c\u958b\u30dd\u30fc\u30c8\u3092\u53d6\u5f97\u3059\u308b\u306b\u306f:
docker port [container_name]
\u3092\u5b9f\u884c
\u30dd\u30fc\u30c8\u3092\u53d6\u5f97\u3059\u308b$ docker port drupal_example_mariadb_1\n3306/tcp -> 0.0.0.0:32797\n
\u307e\u305f\u306f\u3001Drupal\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306edocker-compose
\u3092\u4f7f\u7528\u3057\u3066:
docker-compose port [service_name] [internal_port]
\u3092\u5b9f\u884c
\u30dd\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308bdocker-compose port mariadb 3306\n0.0.0.0:32797\n
"},{"location":"ja/applications/drupal/services/mariadb/#_1","title":"\u9759\u7684\u30dd\u30fc\u30c8\u306e\u8a2d\u5b9a(\u975e\u63a8\u5968)","text":"\u958b\u767a\u4e2d\u306b\u5916\u90e8\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001MySQL\u63a5\u7d9a\u30dd\u30fc\u30c8\u3092\u5e38\u306b\u78ba\u8a8d\u3057\u8a2d\u5b9a\u3059\u308b\u306e\u306f\u9762\u5012\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
\u9759\u7684\u30dd\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001docker-compose.yml
\u306e\u30b5\u30fc\u30d3\u30b9\u5b9a\u7fa9\u3092\u7de8\u96c6\u3057\u307e\u3059\u3002
docker-compose.yml mariadb:\n...\nports:\n- \"33772:3306\" # \u30dd\u30fc\u30c83306\u3092\u30db\u30b9\u30c8\u30dd\u30fc\u30c8\u306e33772\u3092\u6307\u5b9a\u3057\u3066\u516c\u958b\u3057\u307e\u3059\u3002\u3053\u308c\u3092\u884c\u3046\u3053\u3068\u3067\u3001\u30dd\u30fc\u30c8\u306e\u885d\u7a81\u3092\u7ba1\u7406\u3059\u308b\u8cac\u4efb\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u3002\n
\u8b66\u544a
\u9759\u7684\u30dd\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u30dd\u30fc\u30c8\u306e\u885d\u7a81\u3092\u7ba1\u7406\u3059\u308b\u8cac\u4efb\u304c\u751f\u3058\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/mariadb/#mysql_2","title":"MySQL\u3078\u306e\u63a5\u7d9a","text":"\u3053\u308c\u3089\u306e\u8a73\u7d30\u3092\u4f7f\u7528\u3057\u3066\u3001\u304a\u597d\u307f\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30c4\u30fc\u30eb\u306b\u63a5\u7d9a\u3067\u304d\u307e\u3059\u3002
Linux OS X IP/\u30db\u30b9\u30c8 \u30b3\u30f3\u30c6\u30ca\u304b\u3089\u306eIP docker.amazee.io
\u30dd\u30fc\u30c8 \u30b3\u30f3\u30c6\u30ca\u304b\u3089\u516c\u958b\u3055\u308c\u305f\u30dd\u30fc\u30c8 \u30b3\u30f3\u30c6\u30ca\u304b\u3089\u516c\u958b\u3055\u308c\u305f\u30dd\u30fc\u30c8 \u30e6\u30fc\u30b6\u30fc\u540d drupal
drupal
\u30d1\u30b9\u30ef\u30fc\u30c9 drupal
drupal
\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 drupal
drupal
"},{"location":"ja/applications/drupal/services/nginx/","title":"NGINX","text":"Lagoon\u306enginx-drupal
Docker\u30a4\u30e1\u30fc\u30b8\u3002Drupal\u3068\u9023\u643a\u3059\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002Lagoon\u306enginx
\u30a4\u30e1\u30fc\u30b8\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/nginx/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u3001Lagoon\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 drupal.conf
\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u3067\u304d\u308b\u3060\u3051\u30b7\u30f3\u30d7\u30eb\u3067\u3001\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3084\u3059\u3044\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30e1\u30a4\u30f3\u30bb\u30af\u30b7\u30e7\u30f3(server
\u3001location /
\u3001location @drupal
\u3001location @php
)\u306binclude
\u6307\u793a\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f\u3002 Drupal.conf
\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u3055\u3089\u306a\u308b\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/nginx/#drupal-drupalconf","title":"\u542b\u307e\u308c\u308bDrupal\u8a2d\u5b9a - drupal.conf
","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Drupal 7, 8, 9\u306e\u5b8c\u5168\u306aNGINX\u52d5\u4f5c\u8a2d\u5b9a\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8ffd\u52a0\u6a5f\u80fd\u3082\u542b\u307e\u308c\u3066\u3044\u307e\u3059:
humanstxt
Drupal\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30b5\u30dd\u30fc\u30c8 robotstxt
Drupal\u30e2\u30b8\u30e5\u30fc\u30eb - \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u7528\u306e
vagrant
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u7981\u6b62\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/nginx/#drupalconf-customization","title":"Drupal.conf
\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba","text":"drupal.conf
\u30d5\u30a1\u30a4\u30eb\u306f\u3001nginx
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092Drupal\u7528\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u305f\u3082\u306e\u3067\u3059\u3002\u9867\u5ba2\u306b\u3088\u3063\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u65b9\u6cd5\u306f\u69d8\u3005\u3067\u3059:
- \u4fee\u6b63\u304c\u56f0\u96e3 (\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u96e3\u3057\u3044 )
*.conf
\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u305f\u7d44\u307f\u8fbc\u307f\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba
drupal.conf
\u30d5\u30a1\u30a4\u30eb\u306f\u3044\u304f\u3064\u304b\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u5206\u304b\u308c\u3066\u3044\u307e\u3059\u3002\u79c1\u305f\u3061\u304c\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306b\u542b\u3081\u305f\u30bb\u30af\u30b7\u30e7\u30f3\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059:
server
location /
location @drupal
location @php
.
\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u306f\u3001\u305d\u308c\u305e\u308c2\u3064\u306e\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u304c\u3042\u308a\u307e\u3059:
*_prepend.conf
*_append.conf
location @drupal
\u30bb\u30af\u30b7\u30e7\u30f3\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:
drupal.conflocation @drupal {\ninclude /etc/nginx/conf.d/drupal/location_drupal_prepend*.conf;\ninclude /etc/nginx/fastcgi.conf;\nfastcgi_param SCRIPT_NAME /index.php;\nfastcgi_param SCRIPT_FILENAME $realpath_root/index.php;\nfastcgi_pass ${NGINX_FASTCGI_PASS:-php}:9000;\ninclude /etc/nginx/conf.d/drupal/location_drupal_append*.conf;\n}\n
\u3053\u306e\u8a2d\u5b9a\u306f\u3001\u304a\u5ba2\u3055\u307e\u304clocation_drupal_prepend.conf
\u304a\u3088\u3073location_drupal_append.conf
\u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u4ed6\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u524d\u306b\u633f\u5165\u3057\u305f\u3044\u8a2d\u5b9a\u3068\u3001\u5f8c\u306b\u633f\u5165\u3057\u305f\u3044\u8a2d\u5b9a\u3092\u3059\u3079\u3066\u8a18\u8ff0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u4e00\u5ea6\u4f5c\u6210\u3055\u308c\u308b\u3068\u3001nginx
\u30b3\u30f3\u30c6\u30ca\u5185\u306b\u5fc5\u305a\u5b58\u5728\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u306e\u3067\u3001Dockerfile.nginx
\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8ffd\u52a0\u3057\u307e\u3059:
dockerfile.nginxCOPY location_drupal_prepend.conf /etc/nginx/conf.d/drupal/location_drupal_prepend.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/location_drupal_prepend.conf\n
"},{"location":"ja/applications/drupal/services/nginx/#drupal-core-statistics-module-configuration","title":"Drupal Core Statistics\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u8a2d\u5b9a","text":"\u30b3\u30a2\u306eStatistics\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u7c21\u5358\u306a\u8a2d\u5b9a\u5909\u66f4\u304c\u5fc5\u8981\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
\u30c7\u30d5\u30a9\u30eb\u30c8\u306eNGINX\u8a2d\u5b9a\u3067\u306f\u3001\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8/core/modules/statistics/statistics.php
\u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u62d2\u5426\u3055\u308c\u307e\u3059(404)
\u3053\u308c\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306eNGINX\u8a2d\u5b9a\u306b\u95a2\u9023\u3057\u3066\u3044\u307e\u3059:
drupal.conflocation ~* ^.+\\.php$ {\n try_files /dev/null @drupal;\n}\n
\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3001\u7279\u5b9a\u306e\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u30eb\u30fc\u30eb\u3092\u5b9a\u7fa9\u3057\u3001\u3053\u308c\u3092\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d7\u30ea\u30da\u30f3\u30c9\u8a2d\u5b9a\u3068\u3057\u3066\u6ce8\u5165\u3057\u307e\u3059:
drupal.conf## Allow access to to the statistics endpoint.\nlocation ~* ^(/core/modules/statistics/statistics.php) {\n try_files /dev/null @php;\n}\n
NGINX\u30b3\u30f3\u30c6\u30ca\u306e\u30d3\u30eb\u30c9\u6642\u306b\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002
dockerfile.nginx# Drupal Statistics\u30e2\u30b8\u30e5\u30fc\u30eb\u306eNGINX\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3059\u308b\nCOPY .lagoon/nginx/location_prepend_allow_statistics.conf /etc/nginx/conf.d/drupal/location_prepend_allow_statistics.conf\n
"},{"location":"ja/applications/drupal/services/php-cli/","title":"PHP-cli","text":"Lagoon\u306ephp-cli-drupal
Docker\u30a4\u30e1\u30fc\u30b8\u306fDrupal\u3068\u9023\u643a\u3059\u308b\u305f\u3081\u306b\u6700\u9069\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306fLagoon\u306ephp-cli
\u30a4\u30e1\u30fc\u30b8\u3092\u57fa\u306b\u4f5c\u3089\u308c\u3066\u304a\u308a\u3001Drupal\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u65e5\u3005\u306e\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u306b\u5fc5\u8981\u306a\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u5168\u3066\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
drush
drupal console
drush launcher
(Drush\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u30b5\u30a4\u30c8\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001Drush 8\u306b\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u3057\u307e\u3059)
"},{"location":"ja/applications/drupal/services/php-cli/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 7.3 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306b\u5229\u7528\u53ef\u80fd\u3067\u3059\u304c\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86) -
uselagoon/php-7.3-cli-drupal
- 7.4 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306b\u5229\u7528\u53ef\u80fd\u3067\u3059\u304c\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86) -
uselagoon/php-7.4-cli-drupal
- 8.0 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306b\u5229\u7528\u53ef\u80fd\u3067\u3059\u304c\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86) -
uselagoon/php-8.0-cli-drupal
- 8.1 Dockerfile -
uselagoon/php-8.1-cli-drupal
- 8.2 Dockerfile -
uselagoon/php-8.2-cli-drupal
- 8.3 Dockerfile -
uselagoon/php-8.3-cli-drupal
\u5168\u3066\u306ePHP\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u305d\u308c\u305e\u308c\u306eDockerfiles\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/php-cli/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/redis/","title":"Redis","text":"\u5185\u90e8\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\u306b\u306f\u3001Redis\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002Redis\u30b5\u30fc\u30d3\u30b9\u3092 docker-compose.yaml
\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
docker-compose.yml redis:\nimage: uselagoon/redis-5\nlabels:\nlagoon.type: redis\n<< : *default-user # \u5b9a\u7fa9\u6e08\u307f\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\nenvironment:\n<< : *default-environment\n
\u307e\u305f\u3001Redis\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u3092settings.php
\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/redis/#drupal-7","title":"Drupal 7","text":"settings.php if(getenv('LAGOON')){\n $conf['redis_client_interface'] = 'PhpRedis';\n $conf['redis_client_host'] = 'redis';\n $conf['lock_inc'] = 'sites/all/modules/contrib/redis/redis.lock.inc';\n $conf['path_inc'] = 'sites/all/modules/contrib/redis/redis.path.inc';\n $conf['cache_backends'][] = 'sites/all/modules/contrib/redis/redis.autoload.inc';\n $conf['cache_default_class'] = 'Redis_Cache';\n $conf['cache_class_cache_form'] = 'DrupalDatabaseCache';\n $conf['cache_class_cache_field'] = 'DrupalDatabaseCache';\n }\n
\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u9020\u306b\u3088\u3063\u3066\u306f\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30d1\u30b9\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/applications/drupal/services/redis/#drupal-8","title":"Drupal 8","text":"Drupal 8 \u306e\u8a2d\u5b9a\u306f\u307b\u3068\u3093\u3069\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u306e\u307e\u307e\u3067\u3059\u304c\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6642\u306b Redis \u306f\u7121\u52b9\u5316\u3055\u308c\u307e\u3059\u3002
settings.phpif (getenv('LAGOON')){\n $settings['redis.connection']['interface'] = 'PhpRedis';\n $settings['redis.connection']['host'] = getenv('REDIS_HOST') ?: 'redis';\n $settings['redis.connection']['port'] = getenv('REDIS_SERVICE_PORT') ?: '6379';\n $settings['cache_prefix']['default'] = getenv('LAGOON_PROJECT') . '_' . getenv('LAGOON_GIT_SAFE_BRANCH');\n // Drupal\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u4e2d\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u8a2d\u5b9a\u3057\u306a\u3044\u3002\n if (!drupal_installation_attempted() && extension_loaded('redis')) {\n $settings['cache']['default'] = 'cache.backend.redis';\n // \u305d\u3057\u3066\u3001Redis\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u306a\u304f\u3066\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\n $class_loader->addPsr4('Drupal\\\\redis\\\\', 'modules/contrib/redis/src');\n $settings['bootstrap_container_definition'] = [\n 'parameters' => [],\n 'services' => [\n 'redis.factory' => [\n 'class' => 'Drupal\\redis\\ClientFactory',\n ],\n 'cache.backend.redis' => [\n 'class' => 'Drupal\\redis\\Cache\\CacheBackendFactory',\n 'arguments' => ['@redis.factory', '@cache_tags_provider.container', '@serialization.phpserialize'],\n ],\n 'cache.container' => [\n 'class' => '\\Drupal\\redis\\Cache\\PhpRedis',\n 'factory' => ['@cache.backend.redis', 'get'],\n 'arguments' => ['container'],\n ],\n 'cache_tags_provider.container' => [\n 'class' => 'Drupal\\redis\\Cache\\RedisCacheTagsChecksum',\n 'arguments' => ['@redis.factory'],\n ],\n 'serialization.phpserialize' => [\n 'class' => 'Drupal\\Component\\Serialization\\PhpSerialize',\n ],\n ],\n ];\n }\n}\n
"},{"location":"ja/applications/drupal/services/redis/#_1","title":"\u6c38\u7d9a\u6027","text":"Redis\u306f\u3001\u6c38\u7d9a\u7684\u306a\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
docker-compose.ymlredis:\nimage: uselagoon/redis-5-persistent\nlabels:\nlagoon.type: redis-persistent\nenvironment:\n<< : *default-environment\n
"},{"location":"ja/applications/drupal/services/redis/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u74b0\u5883\u5909\u6570\u306f\u3001Redis\u306b\u95a2\u3059\u308b\u4e00\u822c\u7684\u306a\u60c5\u5831\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e LOGLEVEL
notice
Redis\u306e\u30ed\u30b0\u30ec\u30d9\u30eb DATABASES
1
\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u6570 MAXMEMORY
100mb
Redis\u306e\u6700\u5927\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf"},{"location":"ja/applications/drupal/services/redis/#redis_1","title":"Redis\u306e\u30d5\u30a7\u30a4\u30eb\u30aa\u30fc\u30d0\u30fc","text":"Redis\u30b3\u30f3\u30c6\u30ca\u304c\u5229\u7528\u3067\u304d\u306a\u3044\u5834\u5408(\u4f8b\u3048\u3070\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u4e2d\u306a\u3069)\u306bRedis\u306e\u30d5\u30a7\u30a4\u30eb\u30aa\u30fc\u30d0\u30fc\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u30b9\u30cb\u30da\u30c3\u30c8\u3092\u4ee5\u4e0b\u306b\u793a\u3057\u307e\u3059\u3002
\u4ee5\u4e0b\u3092Drupal\u306e\u30a2\u30af\u30c6\u30a3\u30d6\u306asettings.php
\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
settings.phpif (getenv('LAGOON')) {\n $contrib_path = is_dir('sites/all/modules/contrib') ? 'sites/all/modules/contrib' : 'sites/all/modules';\n $redis = DRUPAL_ROOT . '/sites/all/modules/contrib/redis';\n if (file_exists(\"$redis/redis.module\")) {\n require_once \"$redis/redis.module\";\n $conf['redis_client_host'] = getenv('REDIS_HOST') ?: 'redis';\n $conf['redis_client_port'] = getenv('REDIS_SERVICE_PORT') ?: 6379;\n $conf['cache_prefix'] = getenv('REDIS_CACHE_PREFIX') ?: getenv('LAGOON_PROJECT') . '_' . getenv('LAGOON_GIT_SAFE_BRANCH');\n try {\n // Redis\u306b\u63a5\u7d9a\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\n $client = Redis_Client::getClient();\n $response = $client->ping();\n if (!$response) {\n throw new \\Exception('Redis\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3057\u305f\u304c\u3001\u6b63\u3057\u304f\u5fdc\u7b54\u3057\u3066\u3044\u307e\u305b\u3093\u3002');\n }\n $conf['redis_client_interface'] = 'PhpRedis';\n $conf['lock_inc'] = $contrib_path . '/redis/redis.lock.inc';\n $conf['path_inc'] = $contrib_path . '/redis/redis.path.inc';\n $conf['cache_backends'][] = $contrib_path . '/redis/redis.autoload.inc';\n $conf['cache_default_class'] = 'Redis_Cache';\n } catch (\\Exception $e) {\n // Redis \u3053\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u306f\u5229\u7528\u3067\u304d\u306a\u3044\u305f\u3081\u3001Redis\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u8a2d\u5b9a\u3092\u884c\u308f\u305a\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u4f7f\u7528\u3055\u308c\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u6b21\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u518d\u8a66\u884c\u3055\u308c\u307e\u3059\u3002\n // 'DrupalFakeCache'\u30af\u30e9\u30b9\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\n if (!class_exists('DrupalFakeCache')) {\n $conf['cache_backends'][] = 'includes/cache-install.inc';\n }\n $conf['cache_default_class'] = 'DrupalFakeCache';\n }\n }\n}\n
"},{"location":"ja/applications/drupal/services/solr/","title":"Solr","text":""},{"location":"ja/applications/drupal/services/solr/#_1","title":"\u6a19\u6e96\u7684\u306a\u4f7f\u3044\u65b9","text":"Solr 5.5\u30016.6\u3001\u304a\u3088\u3073 7.7\u3067\u306f\u3001search_api_solr Drupal\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b9\u30ad\u30fc\u30de\u30d5\u30a1\u30a4\u30eb\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002\u4f7f\u7528\u3059\u308bSolr\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4f8b\u306e\u3088\u3046\u306bdocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/services/solr/#_2","title":"\u30ab\u30b9\u30bf\u30e0\u30b9\u30ad\u30fc\u30de","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067Solr\u306e\u30b9\u30ad\u30fc\u30de\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3092\u5b9f\u88c5\u3059\u308b\u306b\u306f\u3001Lagoon\u304c\u3069\u306e\u3088\u3046\u306b\u6a19\u6e96\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u4f5c\u6210\u3059\u308b\u304b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306e solr
\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u3001 image: uselagoon/solr:8
\u3092\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059:
docker-compose.yml build:\ncontext: .\ndockerfile: solr.dockerfile\n
- \u30b9\u30ad\u30fc\u30de\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30fc\u30c9\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002\u901a\u5e38\u3001
.lagoon/solr
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 solr.dockerfile
\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
solr.dockerfileFROM uselagoon/solr:8\n\nCOPY .lagoon/solr /solr-conf/conf\n\nCMD solr-recreate drupal /solr-conf && solr-foreground\n
\u76ee\u6a19\u306f\u3001\u30d3\u30eb\u30c9\u3059\u308b\u30a4\u30e1\u30fc\u30b8\u306e/solr-conf/conf
Solr\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3059\u308b\u3053\u3068\u3067\u3059\u3002
"},{"location":"ja/applications/drupal/services/solr/#_3","title":"\u30de\u30eb\u30c1\u30b3\u30a2","text":"\u8907\u6570\u306e\u30b3\u30a2\u3092\u5b9f\u88c5\u3059\u308b\u306b\u306f\u3001\u4e0a\u8a18\u306e\u3088\u3046\u306b\u72ec\u81ea\u306eSolr\u30b9\u30ad\u30fc\u30de\u3092\u7528\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5fc5\u8981\u306a\u5909\u66f4\u306fDockerfile\u306eCMD
\u3060\u3051\u3067\u3001\u5fc5\u8981\u306a\u30b3\u30a2\u3054\u3068\u306bprecreate-core corename /solr-conf/ ;
\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002
solr.dockerfileFROM uselagoon/solr:8-drupal\n\nCMD solr-recreate drupal /solr-conf && solr-recreate more-drupal /solr-conf && solr-foreground\n
"},{"location":"ja/applications/drupal/services/varnish/","title":"Varnish","text":"Drupal\u3092Varnish\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3068\u4e00\u7dd2\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002Lagoon\u306fVarnish\u304c\u3059\u3067\u306b\u8a2d\u5b9a\u6e08\u307f\u306eDrupal Varnish config\u3067varnish-drupal
Docker\u30a4\u30e1\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002
\u3053\u306eVarnish config\u306f\u4ee5\u4e0b\u306e\u3053\u3068\u3092\u884c\u3044\u307e\u3059:
- Drupal\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u30af\u30c3\u30ad\u30fc\u3092\u7406\u89e3\u3057\u3001\u8a8d\u8a3c\u3055\u308c\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5bfe\u3057\u3066Varnish\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u81ea\u52d5\u7684\u306b\u7121\u52b9\u306b\u3057\u307e\u3059\u3002
- \u3053\u306e\u6a5f\u80fd\u306f\u3001\u30a2\u30bb\u30c3\u30c8(\u753b\u50cf\u3001CSS\u3001JS\u306a\u3069)\u3092\u81ea\u52d5\u7684\u306b 1 \u304b\u6708\u9593\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3001\u30d6\u30e9\u30a6\u30b6\u306b\u3082\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u305b\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u8a8d\u8a3c\u3055\u308c\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u3082\u8a8d\u8a3c\u3055\u308c\u3066\u3044\u306a\u3044\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u3082\u884c\u308f\u308c\u307e\u3059\u3002
- Drupal 8\u306e\u30d1\u30fc\u30b8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u4f7f\u7528\u3055\u308c\u308b
BAN
\u304a\u3088\u3073URIBAN
\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 - Google Analytics\u306e\u30ea\u30f3\u30af\u304c\u8907\u6570\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u306e\u3092\u9632\u3050\u305f\u3081\u306b\u3001URL\u30d1\u30e9\u30e1\u30fc\u30bf\u304b\u3089
utm_
\u3068gclid
\u3092\u524a\u9664\u3057\u307e\u3059\u3002 - \u4ed6\u306b\u3082\u826f\u3044\u3053\u3068\u304c\u305f\u304f\u3055\u3093\u3042\u308a\u307e\u3059 - drupal.vcl\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/services/varnish/#drupal-8","title":"Drupal 8\u3068\u306e\u4f7f\u7528","text":"\u8981\u7d04: examples repo\u306edrupal8-advanced example\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5fc5\u8981\u306a\u30e2\u30b8\u30e5\u30fc\u30eb\u3068Drupal\u306e\u8a2d\u5b9a\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u6ce8\u610f:\u3053\u308c\u3089\u306e\u4f8b\u306e\u591a\u304f\u306f\u3001\u540c\u3058drupal-example-simple
\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306e\u7570\u306a\u308b\u30d6\u30e9\u30f3\u30c1/\u30cf\u30c3\u30b7\u30e5\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u5fc5\u305a\u3001\u30b5\u30f3\u30d7\u30eb\u30ea\u30b9\u30c8\u304b\u3089\u6b63\u78ba\u306a\u30d6\u30e9\u30f3\u30c1\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044!
"},{"location":"ja/applications/drupal/services/varnish/#purgevarnish-purge","title":"Purge\u3068Varnish Purge\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"Drupal 8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u3067Varnish\u3092\u5b8c\u5168\u306b\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001Purge\u3068Varnish Purge\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u591a\u304f\u306e\u30b5\u30d6\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u5c11\u306a\u304f\u3068\u3082\u4ee5\u4e0b\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\uff1a
purge
purge_drush
purge_tokens
purge_ui
purge_processor_cron
purge_processor_lateruntime
purge_queuer_coretags
varnish_purger
varnish_purge_tags
\u4e00\u5ea6\u306b\u3059\u3079\u3066\u3092\u53d6\u5f97\u3057\u307e\u3059:
Purge\u3068Varnish Purge\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebcomposer require drupal/purge drupal/varnish_purge\n\ndrush en purge purge_drush purge_tokens purge_ui purge_processor_cron purge_processor_lateruntime purge_queuer_coretags varnish_purger varnish_purge_tags\n
"},{"location":"ja/applications/drupal/services/varnish/#varnish-purge","title":"Varnish Purge\u306e\u8a2d\u5b9a","text":" Configuration > Development > Performance > Purge
\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002 Add purger
\u304b\u3089\u30d1\u30fc\u30b8\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002 Varnish Bundled Purger
\u3092\u9078\u629e\u3057\u307e\u3059(Varnish Purger
\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002#Behind the Scenes\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044) - \u8ffd\u52a0\u3057\u305f\u3070\u304b\u308a\u306e\u30d1\u30fc\u30b8\u306e\u6a2a\u306b\u3042\u308b\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001
Configure
\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002 - \u308f\u304b\u308a\u3084\u3059\u3044\u540d\u524d\u3092\u3064\u3051\u3066\u4e0b\u3055\u3044\u3002
Lagoon Varnish
\u304c\u826f\u3044\u3067\u3057\u3087\u3046\u3002 -
\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059:
Varnish Purge\u306e\u8a2d\u5b9a TYPE: \u30bf\u30b0\n\n REQUEST:\n \u30db\u30b9\u30c8\u540d: varnish\n (\u307e\u305f\u306fdocker-compose.yml\u3067Varnish\u304c\u547c\u3070\u308c\u3066\u3044\u308b\u540d\u524d)\n \u30dd\u30fc\u30c8: 8080\n \u30d1\u30b9: /\n \u30ea\u30af\u30a8\u30b9\u30c8\u65b9\u6cd5: BAN\n \u30b9\u30ad\u30fc\u30e0: http\n\n HEADERS:\n \u30d8\u30c3\u30c0\u30fc: Cache-Tags\n \u5024: [invalidations:separated_pipe]\n
-
Save configuration
\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002
\u4ee5\u4e0a\u3067\u8a2d\u5b9a\u306f\u5b8c\u4e86\u3067\u3059\uff01\u30ed\u30fc\u30ab\u30eb\u3067\u30c6\u30b9\u30c8\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u8aad\u3093\u3067\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/services/varnish/#varnishdrupal","title":"Varnish\u7528\u306eDrupal\u306e\u8a2d\u5b9a","text":"\u4ed6\u306b\u3082\u3044\u304f\u3064\u304b\u306e\u8a2d\u5b9a\u304c\u53ef\u80fd\u3067\u3059:
drush pmu page_cache
\u3092\u4f7f\u7528\u3057\u3066Internal Page Cache
Drupal\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30a2\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u5947\u5999\u306a\u4e8c\u91cd\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001Varnish \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u307f\u304c\u30af\u30ea\u30a2\u3055\u308c\u3001\u5185\u90e8\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u30af\u30ea\u30a2\u3055\u308c\u306a\u3044\u305f\u3081\u3001\u5909\u66f4\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u975e\u5e38\u306b\u9045\u304f\u53cd\u6620\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u5927\u304d\u306a\u30b5\u30a4\u30c8\u3067\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5927\u91cf\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 production.settings.php
\u5185\u306e$config['system.performance']['cache']['page']['max_age']
\u30922628000
\u306b\u5909\u66f4\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Varnish \u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u30b5\u30a4\u30c8\u3092\u6700\u5927 1 \u30f6\u6708\u9593\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u4e00\u898b\u9577\u3044\u3088\u3046\u306b\u601d\u308f\u308c\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001Drupal 8 \u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u30b7\u30b9\u30c6\u30e0\u306f\u975e\u5e38\u306b\u512a\u79c0\u3067\u3001\u4f55\u3089\u304b\u306e\u5909\u66f4\u304c\u884c\u308f\u308c\u308b\u3068\u3001Varnish \u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u81ea\u52d5\u7684\u306b\u66f4\u65b0\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/varnish/#varnish_1","title":"\u30ed\u30fc\u30ab\u30eb\u3067\u306e Varnish \u30c6\u30b9\u30c8","text":"Lagoon\u306e\u30ed\u30fc\u30ab\u30eb\u3067\u306eDrupal\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3067\u306f\u3001\u958b\u767a\u4f5c\u696d\u306e\u59a8\u3052\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001Varnish\u3068Drupal\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u304c\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7121\u52b9\u5316\u65b9\u6cd5\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059:
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u5185\u306e\u74b0\u5883\u5909\u6570VARNISH_BYPASS=true
\u306b\u3088\u308a\u3001Varnish\u306b\u4e8b\u5b9f\u4e0a\u7121\u52b9\u5316\u3092\u6307\u793a\u3057\u3066\u3044\u307e\u3059\u3002 - Drupal \u304c\u30ad\u30e3\u30c3\u30b7\u30e5\u30d8\u30c3\u30c0\u30fc\u3092\u9001\u4fe1\u3057\u306a\u3044\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059(\u958b\u767a\u74b0\u5883\u3088\u3046\u306e
development.settings.php
\u30d5\u30a1\u30a4\u30eb\u5185\u306eDrupal\u8a2d\u5b9a$config['system.performance']['cache']['page']['max_age'] = 0
\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059)
Varnish\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u30c6\u30b9\u30c8\u3059\u308b\u306b\u306f\u3001docker-compose.yml
\u3067\u4ee5\u4e0b\u306e\u5909\u66f4\u3092\u884c\u3044\u307e\u3059:
- Varnish\u30b5\u30fc\u30d3\u30b9\u30bb\u30af\u30b7\u30e7\u30f3\u3067
VARNISH_BYPASS
\u3092false
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 x-environment
\u30bb\u30af\u30b7\u30e7\u30f3\u3067LAGOON_ENVIRONMENT_TYPE
\u3092production
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 docker-compose up -d
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u65b0\u3057\u3044\u74b0\u5883\u5909\u6570\u3068\u3068\u3082\u306b\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u518d\u8d77\u52d5\u3057\u307e\u3059\u3002
\u3053\u308c\u3067\u3001Varnish\u3092\u30c6\u30b9\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u306f\u305a\u3067\u3059\uff01
\u6b21\u306b\u3001ID\u304c1
\u3067URL\u304cdrupal-example.docker.amazee.io/node/1
\u3068\u306a\u308b\u30ce\u30fc\u30c9\u3092\u60f3\u5b9a\u3057\u305f\u77ed\u3044\u4f8b\u3067\u3059\u3002
curl -I drupal-example.docker.amazee.io/node/1
\u3092\u5b9f\u884c\u3057\u3001\u30d8\u30c3\u30c0\u30fc\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044: X-LAGOON
\u306b\u306f varnish
\u304c\u542b\u307e\u308c\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5b9f\u969b\u306bVarnish\u3092\u901a\u3057\u3066\u51e6\u7406\u3055\u308c\u305f\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002 - Varnish\u306f\u304a\u305d\u3089\u304f\u3053\u306e\u30b5\u30a4\u30c8\u3092\u898b\u305f\u3053\u3068\u304c\u306a\u304f\u3001\u6700\u521d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306fVarnish\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30a6\u30a9\u30fc\u30e0\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u3001
Age:
\u306f0\u306e\u307e\u307e\u3067\u3059\u3002 X-Varnish-Cache
\u306f MISS
\u306b\u306a\u3063\u3066\u3044\u308c\u3070\u3001Varnish\u304c\u3053\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u6e08\u307f\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u898b\u3064\u3051\u3089\u308c\u306a\u304b\u3063\u305f\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002
curl -I drupal-example.docker.amazee.io/node/1
\u3092\u518d\u5ea6\u5b9f\u884c\u3059\u308b\u3068\u3001\u30d8\u30c3\u30c0\u30fc\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059: Age:
\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u3066\u304b\u3089\u4f55\u79d2\u7d4c\u3063\u305f\u304b\u3092\u793a\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u901f\u5ea6\u306b\u3088\u308a\u307e\u3059\u304c\u3001\u304a\u305d\u3089\u304f1-30\u306e\u9593\u306e\u5024\u306b\u306a\u308b\u3067\u3057\u3087\u3046\u3002 X-Varnish-Cache
\u306f HIT
\u3068\u306a\u308a\u3001Varnish\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u6b63\u5e38\u306b\u53d6\u5f97\u3057\u3066\u3001\u305d\u308c\u3092\u8fd4\u3057\u305f\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002
- Drupal\u306e
node/1
\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u5185\u5bb9\u3092\u5909\u66f4\u3057\u307e\u3059\u3002 curl -I drupal-example.docker.amazee.io/node/1
\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30d8\u30c3\u30c0\u30fc\u306f\u6700\u521d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u540c\u3058\u306b\u306a\u308b\u306f\u305a\u3067\u3059: Age:0
X-Varnish-Cache: MISS
"},{"location":"ja/applications/drupal/services/varnish/#drupalvarnish","title":"Drupal\u3068Varnish\u306e\u821e\u53f0\u88cf","text":"Drupal \u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u3092\u5229\u7528\u3057\u3066\u3044\u305f\u7d4c\u9a13\u304c\u3042\u308b\u65b9\u3084\u3001Drupal 8 \u3068 Varnish \u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u4ee5\u524d\u306b\u884c\u3063\u305f\u3053\u3068\u304c\u3042\u308b\u65b9\u306f\u3001Lagoon \u306e Drupal Varnish \u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u5909\u66f4\u70b9\u304c\u3042\u308b\u3053\u3068\u306b\u6c17\u3065\u3044\u305f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u4ee5\u4e0b\u3067\u305d\u308c\u3089\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059:
"},{"location":"ja/applications/drupal/services/varnish/#varnish-purgervarnish-bundled-purger","title":"Varnish Purger
\u306e\u4ee3\u308f\u308a\u306bVarnish Bundled Purger
\u3092\u4f7f\u7528\u3059\u308b","text":"Varnish Purger
\u306f\u3001\u7121\u52b9\u5316\u3059\u308b\u5fc5\u8981\u306e\u3042\u308b\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u3054\u3068\u306bBAN
\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002Drupal\u306b\u306f\u591a\u304f\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u304c\u5b58\u5728\u3059\u308b\u305f\u3081\u3001Varnish\u306b\u5927\u91cf\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u9001\u4fe1\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u306b\u5bfe\u3057\u3066\u3001Varnish Bundled Purger
\u306f\u3001\u8907\u6570\u306e\u7121\u52b9\u5316\u3092\u30d1\u30a4\u30d7(|
)\u3067\u533a\u5207\u3063\u3066\u30011\u3064\u306eBAN
\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u307f\u9001\u4fe1\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001Varnish\u306e\u30d0\u30f3\u6b63\u898f\u8868\u73fe\u30b7\u30b9\u30c6\u30e0\u3068\u9069\u5408\u3057\u3066\u304a\u308a\u3001\u7d50\u679c\u3068\u3057\u3066\u5c11\u306a\u3044\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u3001Varnish\u5185\u306e\u30d0\u30f3\u30ea\u30b9\u30c8\u30c6\u30fc\u30d6\u30eb\u3082\u5c0f\u3055\u304f\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/varnish/#purge-late-runtime-processor","title":"Purge Late runtime processor
\u306e\u4f7f\u3044\u65b9","text":"Drupal 7\u306eVarnish\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u306f\u7570\u306a\u308a\u3001Drupal 8\u306ePurge\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u524a\u9664\u65b9\u6cd5\u304c\u5c11\u3057\u7570\u306a\u308a\u307e\u3059\u3002Purge\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u524a\u9664\u5bfe\u8c61\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30ad\u30e5\u30fc\u306b\u8ffd\u52a0\u3057\u3001\u305d\u306e\u5f8c\u3055\u307e\u3056\u307e\u306a\u51e6\u7406\u8005\u304c\u30ad\u30e5\u30fc\u3092\u51e6\u7406\u3057\u307e\u3059\u3002Purge\u30e2\u30b8\u30e5\u30fc\u30eb\u306fCron processor
\u3092\u4f7f\u3046\u3053\u3068\u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u3053\u308c\u306f Varnish \u30ad\u30e3\u30c3\u30b7\u30e5\u304ccron\u30b8\u30e7\u30d6\u306e\u5b9f\u884c\u6642\u306e\u307f\u524a\u9664\u3055\u308c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u901a\u5e38\u306ecron\u306f\u304a\u305d\u3089\u304f1\u5206\u3054\u3068\u306a\u3069\u975e\u5e38\u306b\u983b\u7e41\u306b\u306f\u5b9f\u884c\u3055\u308c\u306a\u3044\u305f\u3081\u3001\u53e4\u3044\u30c7\u30fc\u30bf\u304cVarnish\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u6b8b\u3063\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u7de8\u96c6\u8005\u3084\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u6df7\u4e71\u3059\u308b\u4e8b\u614b\u3092\u5f15\u304d\u8d77\u3053\u3059\u304a\u305d\u308c\u304c\u3042\u308a\u307e\u3059\u3002
\u4ee3\u308f\u308a\u306b\u3001\u79c1\u305f\u3061\u306fPurge Late runtime processor
\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u5404Drupal\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u7d42\u4e86\u6642\u306b\u30ad\u30e5\u30fc\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\u3053\u306e\u5229\u70b9\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u304c\u30d1\u30fc\u30b8\u30ad\u30e5\u30fc\u306b\u8ffd\u52a0\u3055\u308c\u305f\u5834\u5408 (\u7de8\u96c6\u8005\u304c Drupal \u30ce\u30fc\u30c9\u3092\u7de8\u96c6\u3057\u305f\u5834\u5408\u306a\u3069)\u3001\u305d\u306e\u30ce\u30fc\u30c9\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u304c\u76f4\u63a5\u30d1\u30fc\u30b8\u3055\u308c\u308b\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u3068Varnish Bundled Purger
\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001Drupal\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6700\u5f8c\u3060\u3051\u306bVarnish\u306b\u5bfe\u3059\u308b\u5358\u4e00\u306e\u8ffd\u52a0\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u884c\u308f\u308c\u308b\u305f\u3081\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u51e6\u7406\u6642\u9593\u306b\u76ee\u7acb\u3063\u305f\u5f71\u97ff\u306f\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/applications/drupal/services/varnish/#varnish-ban-lurker","title":"Varnish Ban Lurker\u306e\u5b8c\u5168\u306a\u30b5\u30dd\u30fc\u30c8","text":"Varnish\u306e\u8a2d\u5b9a\u3067\u306f\u3001Ban Lurker
\u304c\u5b8c\u5168\u306b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002Ban Lurker \u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u3068 Varnish \u306e\u30b9\u30e0\u30fc\u30ba\u306a\u52d5\u4f5c\u3092\u7dad\u6301\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u30c4\u30fc\u30eb\u3067\u3059\u3002Ban Lurker\u306f\u3001Varnish\u306e\u7981\u6b62\u30ea\u30b9\u30c8\u306b\u3042\u308b\u9805\u76ee\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u5185\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u6bd4\u8f03\u3059\u308b\u5c0f\u3055\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002Varnish\u306e\u7981\u6b62\u6a5f\u80fd\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u5185\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u524a\u9664\u5bfe\u8c61\u3068\u3057\u3066\u30de\u30fc\u30af\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Ban Lurker\u306f\u524a\u9664\u3059\u3079\u304d\u9805\u76ee\u3092\u898b\u3064\u3051\u308b\u3068\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u304b\u3089\u524a\u9664\u3057\u3001\u7981\u6b62\u81ea\u4f53\u3082\u89e3\u9664\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u901a\u5e38\u306f\u7981\u6b62\u3055\u308c\u305a\u306b\u305a\u3063\u3068\u30ad\u30e3\u30c3\u30b7\u30e5\u5bb9\u91cf\u3092\u5360\u6709\u3057\u7d9a\u3051\u308b\u3001\u30a2\u30af\u30bb\u30b9\u983b\u5ea6\u304c\u4f4e\u304f\u6709\u52b9\u671f\u9650\u304c\u975e\u5e38\u306b\u9577\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u524a\u9664\u3055\u308c\u3001\u66f4\u65b0\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u7981\u6b62\u30ea\u30b9\u30c8\u304c\u5c0f\u3055\u304f\u306a\u308a\u3001Varnish\u306e\u5404\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5bfe\u3059\u308b\u51e6\u7406\u6642\u9593\u3082\u77ed\u7e2e\u3055\u308c\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001Ban Lurker\u306eVarnish\u306e\u516c\u5f0f\u8a18\u4e8b\u3084\u3001\u305d\u306e\u4ed6\u306e\u53c2\u8003\u306b\u306a\u308b\u8a18\u4e8b\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/services/varnish/#_1","title":"\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":"Varnish\u304c\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3066\u3044\u306a\u3044\uff1f \u305d\u308c\u3068\u3082\u4f55\u304b\u4ed6\u306e\u554f\u984c\u304c\uff1f \u4ee5\u4e0b\u306b\u30c7\u30d0\u30c3\u30b0\u306e\u65b9\u6cd5\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059:
- purge\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30c7\u30d0\u30c3\u30b0\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001
drush p-debug-en
\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u306f\u3001Drupal\u30ed\u30b0admin/reports/dblog
\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002 - Drupal\u304c\u9069\u5207\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30d8\u30c3\u30c0\u30fc\u3092\u9001\u4fe1\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u6700\u9069\u306a\u30c6\u30b9\u30c8\u65b9\u6cd5\u3068\u3057\u3066\u306f\u3001Lagoon\u304c\u751f\u6210\u3059\u308bVarnish\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30d0\u30a4\u30d1\u30b9\u3059\u308b\u305f\u3081\u306eURL\u3092\u4f7f\u7528\u3057\u307e\u3059(\u30ed\u30fc\u30ab\u30eb\u306eDrupal\u306e\u4f8b\u3067\u306f\u3001http://nginx-drupal-example.docker.amazee.io\u306b\u306a\u308a\u307e\u3059)\u3002
Cache-Control: max-age=900, public
\u30d8\u30c3\u30c0\u30fc\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3001900
\u304c$config['system.performance']['cache']['page']['max_age']
\u3067\u8a2d\u5b9a\u3057\u305f\u3082\u306e\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 - \u74b0\u5883\u5909\u6570
VARNISH_BYPASS
\u304ctrue
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044(docker-compose.yml
\u3092\u78ba\u8a8d\u3057\u3001docker-compose up -d varnish
\u3092\u5b9f\u884c\u3057\u3066\u74b0\u5883\u5909\u6570\u304c\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044)\u3002 - \u3059\u3079\u3066\u304c\u4e0a\u624b\u304f\u3044\u304b\u306a\u3044\u5834\u5408\u3001\u30c6\u30fc\u30d6\u30eb\u3092\u3072\u3063\u304f\u308a\u8fd4\u3059\u524d\u306b (\u256f\u00b0\u25a1\u00b0)\u256f\ufe35 \u253b\u2501\u253b\u3001Lagoon\u30c1\u30fc\u30e0\u306b\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002\u559c\u3093\u3067\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\u3002
"},{"location":"ja/community/discord/","title":"Discord\u4e0a\u306eLagoon\u30b3\u30df\u30e5\u30cb\u30c6\u30a3","text":"\u79c1\u305f\u3061\u306e\u516c\u5f0f\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u4f1a\u8b70\u30b9\u30da\u30fc\u30b9\u306f\u3001Lagoon\u306eDiscord\u3067\u3059\u3002
\u79c1\u305f\u3061\u306f\u3001\u3053\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u5168\u3066\u306eLagoon\u30e6\u30fc\u30b6\u30fc\u304c\u5354\u529b\u3057\u3001\u554f\u984c\u3092\u89e3\u6c7a\u3057\u3001\u30a2\u30a4\u30c7\u30a2\u3092\u5171\u6709\u3057\u3001Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ca2\u732e\u3059\u308b\u5834\u3068\u3057\u3066\u8a2d\u7acb\u3057\u307e\u3057\u305f\u3002\u73fe\u5728\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306fSlack\u3084\u305d\u306e\u4ed6\u306e\u5834\u6240\u306b\u5206\u6563\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u4e00\u5143\u5316\u3059\u308b\u305f\u3081\u306b\u52aa\u529b\u3057\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u5168\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u3084\u9867\u5ba2\u304c\u53c2\u52a0\u3057\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304b\u3089\u5f97\u3089\u308c\u308b\u5229\u76ca\u3092\u5168\u3066\u306e\u4eba\u304c\u4eab\u53d7\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002
\u3053\u306e\u5834\u6240\u306f\u3001\u73fe\u5728\u306e\u30b5\u30dd\u30fc\u30c8\u30c1\u30e3\u30cd\u30eb\u3092\u7f6e\u304d\u63db\u3048\u308b\u3082\u306e\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u5fd8\u308c\u306a\u3044\u3067\u304f\u3060\u3055\u3044 - \u305d\u308c\u3089\u306f\u305d\u306e\u307e\u307e\u7dad\u6301\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u4ed6\u306e\u30e6\u30fc\u30b6\u30fc\u3084Lagoon\u306e\u30e1\u30f3\u30c6\u30ca\u3068\u7e4b\u304c\u308b\u5834\u6240\u3067\u3059\u3002
\u79c1\u305f\u3061\u306f\u5168\u3066\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30e1\u30f3\u30d0\u30fc\u306b\u3001\u79c1\u305f\u3061\u306e\u53c2\u52a0\u3068\u30e2\u30c7\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3001\u304a\u3088\u3073\u884c\u52d5\u898f\u7bc4\u3092\u78ba\u8a8d\u3057\u3066\u3044\u305f\u3060\u304f\u3053\u3068\u3092\u304a\u9858\u3044\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/community/discord/#_1","title":"\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u6642\u9593","text":"\u73fe\u5728\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30cb\u30fc\u30ba\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u8abf\u67fb\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u6642\u9593\u306f\u4e00\u6642\u505c\u6b62\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u3061\u3089\u3067\u30a2\u30f3\u30b1\u30fc\u30c8\u306b\u3054\u8a18\u5165\u304f\u3060\u3055\u3044\u3002
Lagoon\u306b\u95a2\u3057\u3066\u4f55\u304b\u624b\u52a9\u3051\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001Discord\u3067\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002 \u307e\u305f\u306f\u3001uselagoon@amazee.io\u307e\u3067\u30e1\u30fc\u30eb\u3092\u304a\u9001\u308a\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/community/moderation/","title":"Lagoon\u30e2\u30c7\u30ec\u30fc\u30b7\u30e7\u30f3\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3","text":"\u3053\u308c\u3089\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u306f\u3001Drupal Diversity & Inclusion\u306e\u30e2\u30c7\u30ec\u30fc\u30b7\u30e7\u30f3\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u6539\u5909\u3055\u308c\u3066\u3044\u307e\u3059\u3002
Lagoon\u306e\u7a7a\u9593\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u4eba\u3005\u306b\u5bfe\u3059\u308b\u7406\u89e3\u3001\u5171\u611f\u3001\u500b\u4eba\u7684\u306a\u8a8d\u8b58\u306e\u5411\u4e0a\u3092\u4fc3\u9032\u3059\u308b\u3088\u3046\u52aa\u3081\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306b\u306f\u3001\u3042\u306a\u305f\u304c\u500b\u4eba\u7684\u306b\u610f\u898b\u304c\u5408\u308f\u306a\u3044\u304b\u3082\u3057\u308c\u306a\u3044Drupal\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3084\u5e83\u7bc4\u306a\u6280\u8853\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u4eba\u3005\u3082\u542b\u307e\u308c\u307e\u3059\u3002
Discord\u304b\u3089\u30ad\u30c3\u30af\u3055\u308c\u305f\u5834\u5408\u3001\u30ad\u30c3\u30af\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u306f\u3001\u518d\u5165\u5834\u3092\u5e0c\u671b\u3059\u308b\u5834\u5408\u3001\u30ad\u30c3\u30ab\u30fc\u307e\u305f\u306f\u5225\u306e\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc\u306b\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8(PM)\u3092\u9001\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3082\u3057\u3001\u6575\u610f\u3042\u308b\u53cd\u5fdc\u3092\u5f15\u304d\u8d77\u3053\u3059\u3088\u3046\u306a\u610f\u56f3\u7684\u306b\u717d\u52d5\u7684\u3001\u3044\u3058\u3081\u3001\u307e\u305f\u306f\u5acc\u304c\u3089\u305b\u884c\u70ba\u306b\u5f93\u4e8b\u3057\u3066\u3044\u308b\u3068\u898b\u3048\u308b\u6df7\u4e71\u3092\u62db\u304f\u4eba\u304c\u3044\u305f\u5834\u5408\u3001\u4ed6\u306e\u30c1\u30e3\u30cd\u30eb\u30e1\u30f3\u30d0\u30fc\u306b\u3068\u3063\u3066\u30b9\u30c8\u30ec\u30b9\u3068\u306a\u308b\u884c\u70ba\u3092\u307b\u3050\u3059\u3088\u308a\u3082\u3001\u30ad\u30c3\u30af\u3059\u308b\u65b9\u304c\u65e9\u304f\u3066\u7c21\u5358\u3067\u3059\u3002
\u30ad\u30c3\u30af\u306f\u7981\u6b62\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u6df7\u4e71\u3092\u62db\u304f\u53ef\u80fd\u6027\u306e\u3042\u308b\u30b3\u30e1\u30f3\u30c8\u3084\u767a\u8a00\u304c\u771f\u5263\u3067\u3001\u4e8c\u8005\u9593\u306e\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u65ad\u7d76\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc\u3068\u8a71\u3059\u3053\u3068\u306b\u3088\u308a\u3001(\u6f5c\u5728\u7684\u306b)\u6df7\u4e71\u3092\u62db\u304f\u4eba\u306f\u3001\u3088\u308a\u914d\u616e\u6df1\u304f\u3001\u5305\u62ec\u7684\u3067\u3001\u591a\u69d8\u6027\u3092\u610f\u8b58\u3057\u305f\u8a00\u8449\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u6307\u5c0e\u3055\u308c\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305d\u3057\u3066\u3001\u3088\u308a\u5efa\u8a2d\u7684\u306a\u65b9\u6cd5\u3067\u95a2\u4e0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/community/moderation/#_1","title":"\u6bb5\u968e\u7684\u306a\u5bfe\u5fdc","text":" -
\u6bb5\u968e\u4e00\u306e\u5bfe\u5fdc
\u30e6\u30fc\u30b6\u30fc\u306f\u30c1\u30e3\u30f3\u30cd\u30eb\u306b\u6b53\u8fce\u3055\u308c\u3001\u30b9\u30af\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u306e\u8aad\u307f\u65b9\u3092\u8aac\u660e\u3055\u308c\u3001\u53c2\u52a0\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3078\u306e\u30ea\u30f3\u30af\u304c\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002
-
\u6bb5\u968e\u4e8c\u306e\u5bfe\u5fdc
\u30e6\u30fc\u30b6\u30fc\u306b\u306f\u3001\u6295\u7a3f\u3092\u30c8\u30d4\u30c3\u30af\u306b\u6cbf\u3063\u305f\u3082\u306e\u306b\u4fdd\u3064\u3088\u3046\u306b\u3001\u307e\u305f\u306f\u53c2\u52a0\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3092\u5b88\u308b\u3088\u3046\u306b\u3001\u30c1\u30e3\u30f3\u30cd\u30eb\u5185\u3067\u512a\u3057\u304f\u601d\u3044\u51fa\u3055\u305b\u307e\u3059\u3002
-
\u6bb5\u968e\u4e09\u306e\u5bfe\u5fdc
\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc\u304b\u3089\u30e6\u30fc\u30b6\u30fc\u306bPM\u304c\u9001\u3089\u308c\u3001\u305d\u306e\u6295\u7a3f\u306b\u554f\u984c\u304c\u3042\u3063\u305f\u7406\u7531\u3068\u3001\u4f55\u3092\u3069\u3046\u9055\u3046\u65b9\u6cd5\u3067\u884c\u3046\u3079\u304d\u304b\u306b\u3064\u3044\u3066\u8aac\u660e\u3055\u308c\u307e\u3059\u3002
-
\u6bb5\u968e\u56db\u306e\u5bfe\u5fdc
\u884c\u52d5\u304c\u7d9a\u304f\u5834\u5408\u3001\u30e6\u30fc\u30b6\u30fc\u306fDiscord\u304b\u3089\u5c11\u306a\u304f\u3068\u308224\u6642\u9593\u306f\u8ffd\u653e\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/community/moderation/#_2","title":"\u6bb5\u968e\u7684\u3067\u306a\u3044\u5bfe\u5fdc:\u7981\u6b62","text":"\u610f\u56f3\u7684\u306b\u6df7\u4e71\u3092\u5f15\u304d\u8d77\u3053\u3059\u500b\u4eba\u306f\u3001\u6bb5\u968e\u7684\u3067\u306f\u306a\u304f\u3001\u8ffd\u653e\u3055\u308c\u307e\u3059\u3002\u7e70\u308a\u8fd4\u3057\u9055\u53cd\u3059\u308b\u3068\u7981\u6b62\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/community/participation/","title":"Lagoon\u53c2\u52a0\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3","text":"\u79c1\u305f\u3061\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u3059\u3079\u3066\u306e\u30e1\u30f3\u30d0\u30fc\u304c\u3001\u4eee\u60f3\u7684\u306a\u30b9\u30da\u30fc\u30b9\u3067\u3082\u7269\u7406\u7684\u306a\u30b9\u30da\u30fc\u30b9\u3067\u3082\u3001\u79c1\u305f\u3061\u306e\u884c\u52d5\u898f\u7bc4\u3092\u9075\u5b88\u3059\u308b\u3053\u3068\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u306f\u3001Drupal Diversity & Inclusion\u306e\u53c2\u52a0\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3092\u53c2\u8003\u306b\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002
- \u7a4d\u6975\u7684\u306b\u805e\u304d\u3001\u6ce8\u610f\u6df1\u304f\u8aad\u307f\u3001\u7406\u89e3\u3059\u308b\u3053\u3068\u3002
- \u4f1a\u8a71\u306b\u53c2\u52a0\u3059\u308b\u5834\u5408\u306f\u3001\u30d0\u30c3\u30af\u30ed\u30b0\u3092\u8aad\u3093\u3067\u304f\u3060\u3055\u3044\u3002\u4ed6\u306e\u53c2\u52a0\u8005\u304c\u52b9\u679c\u7684\u306b\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u53d6\u308b\u6a5f\u4f1a\u3092\u4e0e\u3048\u3066\u304f\u3060\u3055\u3044\u3002
- \u4ed6\u306e\u53c2\u52a0\u8005\u306e\u767a\u8a00\u306e\u80cc\u5f8c\u306b\u306f\u826f\u3044\u610f\u56f3\u304c\u3042\u308b\u3068\u4eee\u5b9a\u3057\u307e\u3059\u3002\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u975e\u5e38\u306b\u591a\u69d8\u3067\u3001\u5168\u4e16\u754c\u304b\u3089\u306e\u53c2\u52a0\u8005\u304c\u3044\u307e\u3059\u3002\u6587\u5316\u7684\u306a\u7279\u6027\u3084\u8a00\u8a9e\u7684\u306a\u7279\u6027\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002
- \u3053\u306e\u5206\u91ce\u306b\u65b0\u3057\u304f\u53c2\u52a0\u3059\u308b\u4eba\u3082\u591a\u304f\u3044\u307e\u3059\u3002\u5f7c\u3089\u304c\u826f\u3044\u610f\u56f3\u3092\u6301\u3063\u3066\u3044\u308b\u304c\u3001\u307e\u3060\u8a00\u8a9e\u3084\u30a2\u30a4\u30c7\u30a2\u3092\u30de\u30b9\u30bf\u30fc\u3057\u3066\u3044\u306a\u3044\u3068\u4eee\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u79c1\u305f\u3061\u306f\u5f7c\u3089\u3092\u52a9\u3051\u305f\u3044\u3068\u601d\u3063\u3066\u3044\u307e\u3059\uff01
- \u4e00\u822c\u5316\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u81ea\u5206\u81ea\u8eab\u306e\u7d4c\u9a13\u304b\u3089\u8a71\u3059\u3053\u3068\u3002\u4ed6\u4eba\u306e\u7d4c\u9a13\u306e\u4fa1\u5024\u3092\u8a8d\u8b58\u3059\u308b\u3002\u4ed6\u4eba\u306e\u4ee3\u308f\u308a\u306b\u8a71\u3059\u3053\u3068\u306f\u907f\u3051\u3066\u304f\u3060\u3055\u3044\u3002
- \u300c\u5f7c\u3089\u300d\u3001\u300c\u79c1\u305f\u3061\u300d\u3001\u300c\u3042\u306a\u305f\u300d\u306e\u4ee3\u308f\u308a\u306b\u300c\u79c1\u300d\u3092\u4f7f\u3063\u3066\u304f\u3060\u3055\u3044\u3002
- \u3059\u3079\u3066\u306e\u53c2\u52a0\u8005\u306f\u3001\u4ed6\u306e\u53c2\u52a0\u8005\u304c\u81ea\u5206\u81ea\u8eab\u306e\u30e6\u30cb\u30fc\u30af\u306a\u7d4c\u9a13\u3092\u6301\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3059\u308b\u3079\u304d\u3067\u3059\u3002
- \u5225\u306e\u53c2\u52a0\u8005\u306e\u7d4c\u9a13\u3092\u7121\u52b9\u306b\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u4ee3\u308f\u308a\u306b\u3001\u3042\u306a\u305f\u81ea\u8eab\u306e\u30b9\u30c8\u30fc\u30ea\u30fc\u3084\u7d4c\u9a13\u3092\u5171\u6709\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u8cea\u554f\u3092\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30a4\u30c7\u30a2\u3001\u611f\u60c5\u3001\u61f8\u5ff5\u3001\u307e\u305f\u306f\u304a\u4e92\u3044\u306b\u7570\u8b70\u3092\u5531\u3048\u307e\u3059\u3002\u500b\u4eba\u653b\u6483\u306f\u63a7\u3048\u307e\u3059\u3002\u307e\u305a\u306f\u30a2\u30a4\u30c7\u30a2\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3059\u3002
- \u8a00\u8449\u306b\u3088\u308b\u7570\u8b70\u3001\u76ae\u8089\u306a\u4fae\u8fb1\u3001\u6027\u5225/\u4eba\u7a2e/\u5730\u57df\u306e\u56fa\u5b9a\u89b3\u5ff5\u306a\u3069\u306f\u907f\u3051\u307e\u3059\u3002
- \u81ea\u5206\u306e\u80fd\u529b\u3068\u90fd\u5408\u306b\u5408\u308f\u305b\u3066\u6700\u5927\u9650\u306b\u53c2\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u6210\u9577\u306f\u3001\u500b\u4eba\u306e\u610f\u898b\u3092\u53d6\u308a\u5165\u308c\u308b\u3053\u3068\u306b\u304b\u304b\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30c1\u30e3\u30f3\u30cd\u30eb\u3067\u306f\u3001\u7686\u3055\u3093\u304c\u58f0\u3092\u4e0a\u3052\u3066\u767a\u8a00\u3059\u308b\u3053\u3068\u3092\u671b\u3093\u3067\u3044\u307e\u3059\u3002\u8ca2\u732e\u3067\u304d\u308b\u6642\u9593\u306f\u4eba\u305d\u308c\u305e\u308c\u3067\u3059\u30025 \u5206\u3067\u3082 5 \u6642\u9593\u3067\u3082\u3001\u53c2\u52a0\u3057\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u5e78\u3044\u3067\u3059\u3002
- \u9759\u304b\u306b\u6f5c\u3093\u3067\u5b66\u3073\u306b\u6765\u308b\u3001\u3064\u307e\u308a\u300c\u6f5c\u3080\u300d\u4eba\u3082\u6b53\u8fce\u3057\u307e\u3059\u304c\u3001\u81ea\u5df1\u7d39\u4ecb\u3092\u3057\u3066\u6328\u62f6\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u5408\u610f\u3059\u308b\u3053\u3068\u304c\u5fc5\u305a\u3057\u3082\u76ee\u6a19\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u53d7\u3051\u5165\u308c\u3066\u304f\u3060\u3055\u3044\u3002
- \u6280\u8853\u7684\u306a\u554f\u984c\u306b\u306f\u3001\u3042\u306a\u305f\u306e\u8a2d\u5b9a\u3067\u306f\u3046\u307e\u304f\u3044\u304b\u306a\u3044\u304b\u3082\u3057\u308c\u306a\u3044\u304c\u3001\u3055\u307e\u3056\u307e\u306a\u300c\u6b63\u3057\u3044\u300d\u7b54\u3048\u304c\u3057\u3070\u3057\u3070\u5b58\u5728\u3057\u307e\u3059\u3002
- \u8a00\u8a9e\u306e\u9055\u3044\u3084\u610f\u56f3\u3057\u306a\u3044\u610f\u5473\u5408\u3044\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u300c\u30c6\u30ad\u30b9\u30c8\u306f\u96e3\u3057\u3044\u300d - \u30c6\u30ad\u30b9\u30c8\u3067\u52b9\u679c\u7684\u306b\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3068\u308b\u306e\u306f\u96e3\u3057\u3044\u3053\u3068\u3092\u8a8d\u8b58\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u500b\u4eba\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u8a8d\u3081\u308b\u3002
- \u660e\u793a\u3055\u308c\u305f\u540d\u524d\u3068\u4ee3\u540d\u8a5e\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4eba\u7a2e\u3001\u6027\u7684\u6307\u5411\u3001\u969c\u5bb3\u306a\u3069\u306b\u3064\u3044\u3066\u7591\u554f\u3092\u5448\u3055\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002
- \u8ab0\u304b\u3092\u3069\u306e\u3088\u3046\u306b\u547c\u3076\u3079\u304d\u304b\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u63a7\u3048\u3081\u304b\u3064\u656c\u610f\u3092\u6301\u3063\u3066\u5c0b\u306d\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001\u3069\u306e\u4ee3\u540d\u8a5e\u3092\u4f7f\u7528\u3059\u3079\u304d\u304b\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u3063\u3066\u5c0b\u306d\u3066\u304f\u3060\u3055\u3044\u3002\u6b63\u3057\u3044\u4ee3\u540d\u8a5e\u3092\u4f7f\u3046\u3053\u3068\u3067\u4ed6\u4eba\u3092\u5c0a\u91cd\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- \u4e00\u90e8\u306e\u30aa\u30d5\u30c8\u30d4\u30c3\u30af\u306a\u4f1a\u8a71\u306f\u8a31\u5bb9\u3055\u308c\u307e\u3059\u3002
- \u30a2\u30ca\u30a6\u30f3\u30b9\u306e\u30af\u30ed\u30b9\u30dd\u30b9\u30c8\u306e\u4e00\u90e8\u3082\u8a31\u5bb9\u3055\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u884c\u70ba\u306f\u8a31\u3055\u308c\u307e\u305b\u3093:
- \u30b9\u30ec\u30c3\u30c9\u306e\u4e57\u3063\u53d6\u308a
- \u30b9\u30d1\u30e0\u884c\u70ba
- \u5546\u696d\u7684\u306a\u5e83\u544a
- \u9732\u9aa8\u306a\u81ea\u5df1\u5ba3\u4f1d
- \u7279\u306b\u516c\u5f0f\u306e\u4f1a\u8b70\u6642\u9593\u3084\u96c6\u4e2d\u7684\u306a\u4f1a\u8a71\u4e2d\u306b\u30aa\u30d5\u30c8\u30d4\u30c3\u30af\u306b\u9038\u8131\u3059\u308b\u3053\u3068
- \u30aa\u30d5\u30c8\u30d4\u30c3\u30af\u306a\u4f1a\u8a71\u3092\u6df1\u3081\u308b\u305f\u3081\u306e\u3088\u308a\u9069\u5207\u306a\u5834\u6240\u3084\u6642\u9593\u3092\u767a\u8868\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002
- \u9069\u5207\u306a\u884c\u52d5\u304c\u4f55\u304b\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- Lagoon\u5185\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u5171\u6709\u3059\u308b\u5834\u5408\u306f\u3001\u660e\u78ba\u306a\u540c\u610f\u306e\u3082\u3068\u3067\u306e\u307f\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001\u5171\u6709\u306f\u614e\u91cd\u306b\u8003\u3048\u3066\u884c\u3044\u3001\u53c2\u52a0\u8005\u3092\u5acc\u304c\u3089\u305b\u305f\u308a\u3001\u50b7\u3064\u3051\u308b\u610f\u56f3\u3092\u3082\u3063\u3066\u884c\u308f\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002
- \u3053\u306e\u30d5\u30a9\u30fc\u30e9\u30e0\u306f\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u3068\u8003\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u3053\u306b\u6295\u7a3f\u3055\u308c\u305f\u3082\u306e\u306f\u8ab0\u3067\u3082\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u3001\u5b9f\u969b\u306b\u8aad\u307e\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3068\u60f3\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- Lagoon\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u5171\u6709\u3059\u308b\u969b\u306f\u3001\u3059\u3079\u3066\u306e\u53c2\u52a0\u8005\u304b\u3089\u4e8b\u524d\u306b\u8a31\u53ef\u3092\u5f97\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u5f15\u7528\u3055\u308c\u305f\u308a\u3001\u8981\u7d04\u3055\u308c\u305f\u308a\u3001\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u304c\u64ae\u3089\u308c\u305f\u308a\u3059\u308b\u5834\u5408\u3067\u3082\u540c\u69d8\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u3001Twitter\u3084\u4ed6\u306e\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u30e1\u30c7\u30a3\u30a2\u3067\u306e\u5171\u6709\u3082\u542b\u307e\u308c\u307e\u3059\u3002 \u30d6\u30ed\u30b0\u6295\u7a3f\u3001\u8a18\u4e8b\u3001\u30dd\u30c3\u30c9\u30ad\u30e3\u30b9\u30c8\u306a\u3069\u3001\u3053\u308c\u3089\u306e\u5834\u6240\u306f\u8b70\u8ad6\u3084\u4f5c\u696d\u9032\u884c\u4e2d\u306e\u5834\u6240\u3067\u3059\u3002\u4f1a\u8a71\u306e\u65ad\u7247\u3092\u524a\u9664\u3059\u308b\u3068\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u304c\u5931\u308f\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u7279\u306bLagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u63a8\u9032\u3059\u308b\u76ee\u7684\u304c\u306a\u3044\u5834\u5408\u3001\u8b70\u8ad6\u3092\u6b6a\u3081\u305f\u308a\u3001\u963b\u6b62\u3057\u305f\u308a\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
- \u4e0a\u8a18\u3067\u8ff0\u3079\u305f\u901a\u308a\u3001\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u3092\u64ae\u3063\u3066\u30bd\u30fc\u30b7\u30e3\u30eb\u30e1\u30c7\u30a3\u30a2\u3084\u4ed6\u306e\u30d5\u30a9\u30fc\u30e9\u30e0\u306b\u6295\u7a3f\u3059\u308b\u5834\u5408\u3001\u305d\u308c\u3092\u6295\u7a3f\u3057\u305f\u4eba\u304b\u3089\u8a31\u53ef\u3092\u53d6\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u8a31\u53ef\u3092\u53d6\u308b\u969b\u306b\u306f\u3001\u8b58\u5225\u60c5\u5831\u3092\u524a\u9664\u3059\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u542b\u3081\u3066\u304f\u3060\u3055\u3044\u3002\u8b58\u5225\u60c5\u5831\u3092\u524a\u9664\u3057\u305f\u5834\u5408\u3067\u3082\u3001\u8a31\u53ef\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306b\u306fDiscord\u3001Github\u3001\u305d\u306e\u4ed6\u306eLagoon\u306e\u5a92\u4f53\u304b\u3089\u306e\u5185\u5bb9\u3082\u542b\u307e\u308c\u307e\u3059\u3002
- \u4f55\u304b\u3092\u5171\u6709\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u305f\u3060\u805e\u3044\u3066\u307f\u3066\u304f\u3060\u3055\u3044\uff01\u300c\u306d\u3048\u3001\u3053\u308c\u3092Twitter\u306b\u30b7\u30a7\u30a2\u3057\u3066\u3082\u3044\u3044\u3067\u3059\u304b\uff1f\u3042\u306a\u305f\u306b\u30af\u30ec\u30b8\u30c3\u30c8\u3092\u4ed8\u3051\u308b\u3053\u3068\u3092\u559c\u3093\u3067\u3044\u307e\u3059\uff01\u300d
- \u53c2\u52a0\u8005\u304cLagoon\u306e\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc\u306b\u30cf\u30e9\u30b9\u30e1\u30f3\u30c8\u884c\u70ba\u3092\u5831\u544a\u3059\u308b\u305f\u3081\u306b\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u3092\u64ae\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001\u8a31\u53ef\u3092\u5f97\u308b\u3053\u3068\u306a\u304f\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u516c\u306b\u307e\u305f\u306f\u79c1\u7684\u306b\u500b\u4eba\u3092\u6065\u305a\u304b\u3057\u304f\u3059\u308b\u305f\u3081\u306b\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u3092\u64ae\u308b\u3053\u3068\u306f\u8a31\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u30cf\u30e9\u30b9\u30e1\u30f3\u30c8\u884c\u70ba\u306e\u5831\u544a\u306b\u306e\u307f\u9069\u7528\u3055\u308c\u307e\u3059\u3002
- \u5b89\u5168\u304b\u3064\u9069\u5207\u306a\u5834\u5408\u306b\u306f\u3001\u305d\u306e\u5834\u3067\u304a\u4e92\u3044\u306e\u82e6\u60c5\u3092\u89e3\u6c7a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u5b89\u5168\u3067\u3042\u308b\u5834\u5408\u3001\u5bfe\u7acb\u304c\u8d77\u3053\u3063\u305f\u5834\u6240\u3067\u660e\u78ba\u5316\u3057\u3001\u95a2\u4e0e\u3057\u3088\u3046\u3068\u52aa\u3081\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001Discord\u30c1\u30e3\u30f3\u30cd\u30eb\u3067\u3002
- \u5bfe\u7acb\u304c\u30a8\u30b9\u30ab\u30ec\u30fc\u30c8\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u7ba1\u7406\u8005\u3084\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30de\u30cd\u30fc\u30b8\u30e3\u30fc(Alanna)\u306b\u9023\u7d61\u3059\u308b\u3002
- \u52a9\u3051\u3092\u6c42\u3081\u308b\u3002
- \u5bfe\u7acb\u306e\u4e3b\u984c\u304cLagoon\u3068\u306f\u95a2\u4fc2\u306a\u3044\u5834\u5408\u306f\u3001\u305d\u306e\u4f1a\u8a71\u3092\u3088\u308a\u9069\u5207\u306a\u30c1\u30e3\u30f3\u30cd\u30eb\u3078\u79fb\u52d5\u3055\u305b\u308b\u3002
\u5bfe\u9762\u3067\u306eLagoon\u30b9\u30da\u30fc\u30b9\u306b\u304a\u3051\u308b\u8ffd\u52a0\u7684\u306a\u914d\u616e\u4e8b\u9805
- \u30a4\u30d9\u30f3\u30c8\u306e\u884c\u52d5\u898f\u7bc4\u304c\u3042\u308b\u5834\u5408\u306f\u305d\u308c\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u306a\u3044\u5834\u5408\u306f\u3001\u79c1\u305f\u3061\u306e\u884c\u52d5\u898f\u7bc4\u304c\u9069\u7528\u3055\u308c\u307e\u3059\u3002
- \u4eba\u3005\u3001\u5f7c\u3089\u306e\u79fb\u52d5\u88c5\u7f6e\u3001\u307e\u305f\u306f\u4ed6\u306e\u88dc\u52a9\u6a5f\u5668\u306b\u3001\u305d\u306e\u4eba\u306e\u540c\u610f\u306a\u304f\u89e6\u308c\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u3082\u3057\u8ab0\u304b\u304c\u3042\u308b\u7279\u5b9a\u306e\u884c\u52d5\u3092\u6b62\u3081\u308b\u3088\u3046\u306b\u983c\u3093\u3060\u3089\u3001\u3059\u3050\u306b\u6b62\u3081\u3066\u304f\u3060\u3055\u3044\u3002
- \u4f55\u304b\u554f\u984c\u304c\u3042\u3063\u305f\u5834\u5408\u306f\u3001\u30a4\u30d9\u30f3\u30c8\u306e\u30b9\u30bf\u30c3\u30d5\u306b\u5831\u544a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 Lagoon\u30c1\u30fc\u30e0\u306e\u30e1\u30f3\u30d0\u30fc\u306b\u95a2\u3059\u308b\u554f\u984c\u306e\u5834\u5408\u306f\u3001uselagoon@amazee.io\u306b\u5831\u544a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Lagoon\u30c1\u30fc\u30e0\u306f\u3001Lagoon\u306e\u30b9\u30da\u30fc\u30b9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8ab0\u3067\u3082\u7d42\u4e86\u3055\u305b\u308b\u6a29\u5229\u3092\u4fdd\u7559\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/","title":"Lagoon\u306e\u9ad8\u5ea6\u306a\u6982\u5ff5","text":"\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Lagoon\u306e\u3088\u308a\u9ad8\u5ea6\u306a\u6982\u5ff5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002Lagoon\u3092\u4f7f\u3046\u306e\u304c\u521d\u3081\u3066\u306e\u65b9\u306f\u3001\u307e\u305aLagoon\u306e\u57fa\u672c\u6982\u5ff5\u304b\u3089\u59cb\u3081\u3066\u304f\u3060\u3055\u3044\u3002
\u5c02\u9580\u7684\u306a\u30b5\u30dd\u30fc\u30c8\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u304b\u3001\u79c1\u305f\u3061\u306eDiscord\u3067\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30e1\u30f3\u30d0\u30fc\u3084\u30e1\u30f3\u30c6\u30ca\u30fc\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-advanced/backups/","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7","text":"Lagoon\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u3068\u30b3\u30f3\u30c6\u30ca\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u4e21\u65b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u6a5f\u80fd\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u3001k8up operator\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30aa\u30da\u30ec\u30fc\u30bf\u306f\u3001\u3053\u308c\u3089\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u30ab\u30bf\u30ed\u30b0\u5316\u3059\u308b\u305f\u3081\u306bRestic\u3092\u5229\u7528\u3057\u3001\u901a\u5e38\u306fAWS S3\u30d0\u30b1\u30c3\u30c8\u306b\u63a5\u7d9a\u3057\u3066\u751f\u6210\u3055\u308c\u305f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u5b89\u5168\u306a\u30aa\u30d5\u30b5\u30a4\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/backups/#production","title":"production\u74b0\u5883","text":""},{"location":"ja/concepts-advanced/backups/#_2","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb","text":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u30b3\u30f3\u30c6\u30ca\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067production
\u74b0\u5883\u5185\u3067\u591c\u9593\u306b\u884c\u308f\u308c\u307e\u3059\u3002
\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306b\u7570\u306a\u308b\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e.lagoon.yml\u30d5\u30a1\u30a4\u30eb\u306e\"Backup Schedule\"\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u3067\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/backups/#_3","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u4fdd\u6301","text":"production\u74b0\u5883\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u4ee5\u4e0b\u306e\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306b\u5f93\u3063\u3066\u4fdd\u6301\u3055\u308c\u307e\u3059:
- \u65e5\u6b21:7
- \u9031\u6b21:6
- \u6708\u6b21:1
- \u6642\u9593\u3054\u3068:0
\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306b\u7570\u306a\u308b\u4fdd\u6301\u671f\u9593\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e.lagoon.yml\u30d5\u30a1\u30a4\u30eb\u306b\u3042\u308b\"Backup Retention\"\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u3067\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/backups/#_4","title":"\u958b\u767a\u74b0\u5883","text":"\u958b\u767a\u74b0\u5883\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u6bce\u6669\u8a66\u307f\u3089\u308c\u307e\u3059\u304c\u3001\u3042\u304f\u307e\u3067\u30d9\u30b9\u30c8\u30a8\u30d5\u30a9\u30fc\u30c8\u30b5\u30fc\u30d3\u30b9\u3067\u3059\u3002
"},{"location":"ja/concepts-advanced/backups/#_5","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u53d6\u5f97","text":"Restic\u306b\u4fdd\u5b58\u3055\u308c\u305f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306fLagoon\u5185\u3067\u8ffd\u8de1\u3055\u308c\u3001Lagoon UI\u306e\u5404\u74b0\u5883\u306e\u300c\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u300d\u30bf\u30d6\u304b\u3089\u56de\u5fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/backups/#_6","title":"\u30ab\u30b9\u30bf\u30e0\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304a\u3088\u3073/\u307e\u305f\u306f\u30ea\u30b9\u30c8\u30a2\u4f4d\u7f6e","text":"Lagoon\u306f\u3001\u5404\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eLagoon API\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\"\u30ab\u30b9\u30bf\u30e0\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u8a2d\u5b9a\"\u304a\u3088\u3073/\u307e\u305f\u306f\"\u30ab\u30b9\u30bf\u30e0\u30ea\u30b9\u30c8\u30a2\u8a2d\u5b9a\"\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u3001\u30ab\u30b9\u30bf\u30e0\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3068\u30ea\u30b9\u30c8\u30a2\u306e\u5834\u6240\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002
\u5371\u967a
\u6ce8\u610f\u3057\u3066\u9032\u3081\u3066\u304f\u3060\u3055\u3044:\u3053\u308c\u3089\u306e\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u30ec\u30d9\u30eb\u3067\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7/\u30ea\u30b9\u30c8\u30a2\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u5834\u6240\u304c\u4e0a\u66f8\u304d\u3055\u308c\u307e\u3059\u3002\u8a2d\u5b9a\u304c\u9593\u9055\u3063\u3066\u3044\u308b\u3068\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7/\u30ea\u30b9\u30c8\u30a2\u304c\u5931\u6557\u3059\u308b\u539f\u56e0\u3068\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/","title":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8","text":""},{"location":"ja/concepts-advanced/base-images/#what-is-a-base-image","title":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u3001Lagoon\u4e0a\u3067\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u4f7f\u7528\u3067\u304d\u308b\u3001\u307e\u305f\u306f\u4f7f\u7528\u3057\u3066\u3044\u308bDocker\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u76e3\u67fb\u3055\u308c\u3066\u3044\u306a\u3044\u3082\u306e\u304c\u4e0a\u6d41\u304b\u3089\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9/\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u6301\u3061\u8fbc\u307e\u308c\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u4f4e\u30ec\u30d9\u30eb\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u304b\u3089\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ec\u30d9\u30eb\u306e\u30c6\u30fc\u30de\u3068\u30e2\u30b8\u30e5\u30fc\u30eb\u307e\u3067\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u74b0\u5883\u4e0a\u3067\u5fc5\u8981\u3068\u306a\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u3082\u306e\u304c\u3059\u3079\u3066\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u307e\u3059\u3002
\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u3069\u306e\u30b7\u30b9\u30c6\u30e0\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u3066\u3044\u308b\u304b\u304c\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u6642\u9593\u3068\u30ea\u30bd\u30fc\u30b9\u306e\u7bc0\u7d04\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u5171\u6709\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u308c\u3089\u3092\u500b\u3005\u306e\u6570\u767e\u306e\u30b5\u30a4\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-advanced/base-images/#derived-images","title":"\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8","text":"\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3068\u306f\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u62e1\u5f35\u3059\u308b\u30a4\u30e1\u30fc\u30b8\u306e\u3053\u3068\u3092\u6307\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u3044\u304f\u3064\u304b\u306e\u30d6\u30ed\u30b0\u30b5\u30a4\u30c8\u3092\u4f5c\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u79c1\u305f\u3061\u306eDrupal\u30a4\u30e1\u30fc\u30b8\u3092\u53d6\u5f97\u3057\u3001\u30d6\u30ed\u30b0\u30b5\u30a4\u30c8\u306b\u5fc5\u8981\u306a\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u30c6\u30fc\u30de\u3059\u3079\u3066\u3092\u542b\u3081\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3001\u305d\u306e\u30d6\u30ed\u30b0\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3079\u3066\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u6d3e\u751f\u3057\u307e\u3059\u3002
\u3059\u3079\u3066\u306e\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u306f\u3001composer.json
\u30d5\u30a1\u30a4\u30eb(Packagist\u3001Satis\u3001\u307e\u305f\u306fGitHub\u306a\u3069\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u7d4c\u7531\u3067)\u3092\u53d6\u308a\u8fbc\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u57fa\u672c\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
\u3055\u3089\u306b\u3001\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001/build/pre_composer
\u30b9\u30af\u30ea\u30d7\u30c8\u3078\u306e\u547c\u3073\u51fa\u3057\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u304c\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3067\u30b9\u30af\u30ea\u30d7\u30c8\u3001\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u306a\u3069\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3067\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u66f4\u65b0\u307e\u305f\u306f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u308b\u3068\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u5b9f\u884c\u3055\u308c\u3001pre_composer
\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u305d\u306e\u5f8c\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#anatomy-of-a-base-image","title":"\u3079\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u69cb\u9020","text":"\u60c5\u5831
\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u306f\u3001Drupal\u3084Laravel\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u4f8b\u306b\u53d6\u308a\u4e0a\u3052\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u5143\u3005Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3053\u308c\u3089\u306e\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5411\u3051\u306b\u66f8\u304b\u308c\u305f\u3082\u306e\u3067\u3059\u3002\u4ed6\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u5185\u5bb9\u3082\u30ab\u30d0\u30fc\u3059\u308b\u3088\u3046\u306b\u62e1\u5f35\u3055\u308c\u307e\u3059\u304c\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u5185\u5bb9\u306b\u95a2\u4fc2\u306a\u304f\u3001\u30d7\u30ed\u30bb\u30b9\u306f\u5909\u308f\u308a\u307e\u305b\u3093\u3002
\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u3001Composer\u3067\u7ba1\u7406\u3055\u308c\u3001BitBucket\u3001GitHub\u3001\u307e\u305f\u306fGitLab (\u30c1\u30fc\u30e0\u304c\u4f7f\u7528\u3057\u3066\u3044\u308b\u3082\u306e)\u306b\u30db\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5404\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u72ec\u81ea\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#metapackages","title":"\u30e1\u30bf\u30d1\u30c3\u30b1\u30fc\u30b8","text":"\u30e1\u30bf\u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u3001\u8907\u6570\u306e\u4ed6\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u5305\u62ec\u3059\u308bComposer\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u4f8b\u3048\u3070\u3001Laravel\u3084Drupal\u306e\u30b3\u30a2\u30d5\u30a1\u30a4\u30eb\u3001\u5fc5\u8981\u306a\u30e2\u30b8\u30e5\u30fc\u30eb\u3084\u30c6\u30fc\u30de\u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u306b Laravel \u3084 Drupal \u306a\u3069\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002
\u4ee5\u4e0b\u306f\u3001Laravel\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092 composer.json
\u304b\u3089\u4f7f\u7528\u3057\u305f\u4f8b\u3067\u3059:
composer.json\"require\": {\n \"amazeelabs/algm_laravel_baseimage\": \"*\"\n},\n
\u79c1\u305f\u3061\u306b\u5fc5\u7528\u306a\u306e\u306fGitHub\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u6307\u3059\u3053\u306e\u30e1\u30bf\u30d1\u30c3\u30b1\u30fc\u30b8\u3060\u3051\u3067\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#docker-composeyml","title":"docker-compose.yml
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4ed6\u306e\u90e8\u5206\u306f docker-compose.yml
\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Drupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408\u3001Drupal \u306e\u30a4\u30e1\u30fc\u30b8\u304c\u5fc5\u8981\u3067\u3059\u304c\u3001MariaDB\u3001Solr\u3001Redis\u3001Varnish\u3082\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306fDrupal\u306b\u6700\u9069\u5316\u3055\u308c\u3066\u304a\u308a\u3001\u3059\u3079\u3066docker-compose.yml
\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#drupal","title":"Drupal","text":"Drupal\u30d9\u30fc\u30b9\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Drupal\u30b3\u30a2\u306b\u52a0\u3048\u3066\u4ee5\u4e0b\u306e\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30c8\u30c4\u30fc\u30eb\u3084\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059:
- Drupal Console
- Drush
- Configuration installer
- Redis
- Poll
- Search API
- Search API Solr
- Varnish Purge
- Purge
- Admin Toolbar
- CDN
- Password Policy
- Pathauto
- Ultimate Cron
"},{"location":"ja/concepts-advanced/base-images/#configuration","title":"\u8a2d\u5b9a","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u3001Laravel\u3067\u4f7f\u7528\u3055\u308c\u308b\u74b0\u5883\u5909\u6570\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002
\u3053\u308c\u3089\u306f\u4ee5\u4e0b\u306e\u5024\u3067\u3059:
DB_CONNECTION
DB_HOST
DB_PORT
DB_DATABASE
DB_USERNAME
DB_PASSWORD
REDIS_HOST
REDIS_PASSWORD
REDIS_PORT
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb(\u901a\u5e38\u306f/config
\u306b\u4f4d\u7f6e\u3057\u3066\u3044\u307e\u3059)\u304c\u3053\u308c\u3089\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-advanced/base-images/#queues","title":"\u30ad\u30e5\u30fc","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u30ad\u30e5\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001artisan-worker
\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u30ef\u30fc\u30ab\u30fc\u30b3\u30f3\u30c6\u30ca\u3067\u3001artisan queue:work
\u306e\u5b9f\u884c\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002\uff08docker-compose.yml
\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\uff09
"},{"location":"ja/concepts-advanced/base-images/#understanding-the-process-of-building-a-base-image","title":"\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306e\u7406\u89e3 \u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u90e8\u5206\u304c\u3042\u308a\u307e\u3059\u3002\u4e3b\u8981\u306a\u30b9\u30c6\u30c3\u30d7\u306f\u3059\u3079\u3066Makefile\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002Jenkinsfile\u306b\u306f\u3088\u308a\u30b7\u30f3\u30d7\u30eb\u306a\u30d3\u30e5\u30fc\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u898b\u308b\u3053\u3068\u3067\u3001\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u4f55\u304c\u8d77\u3053\u308b\u304b\u3092\u3088\u304f\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059(\u3053\u308c\u306f\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3059\u308b\u969b\u306b\u91cd\u8981\u3067\u3059)\u3002\u30ed\u30fc\u30ab\u30eb\u3067\u5168\u3066\u3092\u4f5c\u6210\u3057\u3001\u30c6\u30b9\u30c8\u3057\u305f\u5f8c\u306b\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3068\u3001\u5b9f\u969b\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306fJenkins\u306b\u3088\u3063\u3066\u69cb\u7bc9\u3055\u308c\u3001Harbor\u306b\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#makefile-and-build-assumptions","title":"Makefile\u3068\u30d3\u30eb\u30c9\u306e\u524d\u63d0\u6761\u4ef6","text":"\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u5834\u5408\u3001\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u306b\u6700\u4f4e\u9650\u5fc5\u7528\u306a\u74b0\u5883\u5909\u6570\u304c\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#base-image-build-variables","title":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u30d3\u30eb\u30c9\u5909\u6570","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306b\u6ce8\u5165\u3055\u308c\u308b\u5909\u6570\u3068\u3001\u305d\u308c\u3092\u898b\u3064\u3051\u308b\u5834\u6240\u3067\u3059\u3002
BUILD_NUMBER
- \u3053\u308c\u306f\u81ea\u52d5\u7684\u306bJenkins\u306b\u3088\u3063\u3066\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002 GIT_BRANCH
- \u3053\u308c\u306fJenkins\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u81ea\u4f53\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002\u305d\u306e\u6642\u70b9\u3067\u30d3\u30eb\u30c9\u3055\u308c\u3066\u3044\u308b\u30d6\u30e9\u30f3\u30c1(develop\u3001main\u306a\u3069)\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002 DOCKER_REPO
/DOCKER_HUB
- \u3053\u308c\u306fJenkinsfile\u81ea\u4f53\u5185\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u3066\u751f\u6210\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u304c\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u308bDocker\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30cf\u30d6\u3092\u6307\u3057\u3066\u3044\u307e\u3059\u3002 DOCKER_USERNAME
/DOCKER_PASSWORD
- \u3053\u308c\u3089\u306f\u3001\u30d3\u30eb\u30c9\u306e\u65e9\u3044\u6bb5\u968e\u3067Docker\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u5b9f\u969b\u306b\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5909\u6570\u306fJenkins\u306e\u8a8d\u8a3c\u60c5\u5831\u5185\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306fJenkinsfile\u81ea\u4f53\u3067\u4f7f\u7528\u3055\u308c\u3001Makefile\u306e\u4e00\u90e8\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3064\u307e\u308a\u3001Jenkins\u4ee5\u5916\u306e\u5834\u6240(\u30ed\u30fc\u30ab\u30eb\u3067\u30c6\u30b9\u30c8\u3059\u308b\u306a\u3069)\u3067\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5834\u5408\u3001docker login
\u3092\u624b\u52d5\u3067\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u5b9f\u969b\u306b\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u30de\u30b7\u30f3\u3067make
\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u308c\u3089\u304c\u74b0\u5883\u3067\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u3044\u3068\u601d\u3046\u3067\u3057\u3087\u3046 - \u305f\u3068\u3048\u3070\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089make\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306b\u3053\u308c\u3089\u3092\u8a2d\u5b9a\u3059\u308b\u3060\u3051\u3067\u3082\u69cb\u3044\u307e\u305b\u3093:
\u30ed\u30fc\u30ab\u30eb\u3067make\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u8a2d\u5b9a\u3059\u308bGIT_BRANCH=example_branch_name DOCKER_HUB=the_docker_hub_the_images_are_pushed_to DOCKER_REPO=your_docker_repo_here BUILD_NUMBER=<some_integer> make images_remove\n
"},{"location":"ja/concepts-advanced/base-images/#makefile-targets","title":"Makefile targets","text":"\u6700\u3082\u91cd\u8981\u306a\u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059:
images_build
: \u74b0\u5883\u5909\u6570\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u753b\u50cf\u3092\u30d3\u30eb\u30c9\u3057\u3066\u30bf\u30b0\u3092\u4ed8\u3051\u3066\u516c\u958b\u3057\u307e\u3059\u3002 images_publish
: \u30d3\u30eb\u30c9\u3055\u308c\u305f\u753b\u50cf\u3092Docker\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002 images_start
: \u30c6\u30b9\u30c8\u306a\u3069\u306e\u305f\u3081\u306b\u30a4\u30e1\u30fc\u30b8\u3092\u958b\u59cb\u3057\u307e\u3059\u3002 images_test
:\u30a4\u30e1\u30fc\u30b8\u306b\u5bfe\u3057\u3066\u57fa\u672c\u7684\u306a\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 images_remove
:\u30d3\u30eb\u30c9\u74b0\u5883\u5909\u6570\u304c\u4e0e\u3048\u3089\u308c\u308b\u3068\u3001\u4ee5\u524d\u306b\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u524a\u9664\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#example-workflow-for-building-a-new-release-of-a-base-image","title":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u30ea\u30ea\u30fc\u30b9\u3092\u30d3\u30eb\u30c9\u3059\u308b\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u4f8b","text":"\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u307b\u3068\u3093\u3069\u306f\u3001\u69d8\u3005\u306a\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u9593\u3067\u5171\u6709\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u4e3b\u306b\u4e0a\u8a18\u3067\u8aac\u660e\u3057\u305fMakefile\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002
- Docker Login - Docker\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u3001Harbor\u306eURL\u304cDocker\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u6e21\u3055\u308c\u307e\u3059\u3002
- Docker Build -
make images_build
\u30b9\u30c6\u30c3\u30d7\u304c\u73fe\u5728\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u4ee5\u4e0b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u307e\u3059: - \u3059\u3079\u3066\u306e\u74b0\u5883\u5909\u6570\u304c\u30d3\u30eb\u30c9\u306e\u305f\u3081\u306b\u6e96\u5099\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
docker-compose build
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u73fe\u5728\u306eGit\u30d6\u30e9\u30f3\u30c1\u304b\u3089\u3044\u304f\u3064\u304b\u306e\u65b0\u3057\u3044Docker\u30a4\u30e1\u30fc\u30b8\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002
- Image Test - \u3053\u308c\u306b\u3088\u308a
make images_test
\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u30c6\u30b9\u30c8\u3055\u308c\u308b\u30a4\u30e1\u30fc\u30b8\u306b\u3088\u308a\u7570\u306a\u308a\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u3053\u308c\u306f\u30a4\u30e1\u30fc\u30b8\u3092\u958b\u59cb\u3057\u3001\u4f55\u3089\u304b\u306e\u65b9\u6cd5\u3067\u5bfe\u8a71\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u975e\u5e38\u306b\u76f4\u611f\u7684\u306a\u30c6\u30b9\u30c8\u3067\u3059(Drupal\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30ea\u30b9\u30c8\u8868\u793a\u306a\u3069)\u3002 - Docker Push - \u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001
images_publish
\u306emake\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u542b\u307e\u308c\u308b\u30ed\u30b8\u30c3\u30af\u304c\u5b9f\u884c\u3055\u308c\u3001\u305d\u306e\u7d50\u679c\u3068\u3057\u3066\u751f\u6210\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u306b\u30bf\u30b0\u304c\u4ed8\u3051\u3089\u308c\u307e\u3059\u3002 \u30b9\u30c6\u30c3\u30d72\u306eDocker Build\u3067\u305d\u308c\u3089\u3092Harbor\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3064\u3044\u3066\u306f\u3001\u672c\u30ac\u30a4\u30c9\u306e\u4ed6\u306e\u5834\u6240\u3067\u8a73\u3057\u304f\u8aac\u660e\u3055\u308c\u3066\u3044\u307e\u3059\u3002 - Docker Clean Images -
images_remove
\u3068\u3044\u3046make\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u5b9f\u884c\u3057\u3001\u3053\u308c\u3089\u304cHarbor\u306b\u3042\u308b\u305f\u3081\u3001\u65b0\u3057\u304f\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3092Docker\u30db\u30b9\u30c8\u304b\u3089\u5358\u7d14\u306b\u524a\u9664\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#releasing-a-new-version-of-a-base-image","title":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30ea\u30ea\u30fc\u30b9","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30ea\u30ea\u30fc\u30b9\u3059\u308b\u7406\u7531\u306f\u591a\u3005\u3042\u308a\u307e\u3059\u3002Drupal\u3084Laravel\u3001Node.js\u306a\u3069\u306e\u30a4\u30e1\u30fc\u30b8\u3067\u306f\u3001\u6a5f\u80fd\u3084\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u305f\u3081\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u3084\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u307e\u305f\u306f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u30b3\u30f3\u30c6\u30ca\u306b\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u3066\u3044\u308b\u57fa\u672c\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u66f4\u65b0\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001PHP\u3084Node.js\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u66f4\u65b0\u3059\u308b\u306a\u3069\u3067\u3059\u3002\u307e\u305f\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u3066\u3044\u308b\u5b9f\u969b\u306e\u57fa\u672c\u7684\u306a\u30a4\u30e1\u30fc\u30b8\u3092\u66f4\u65b0\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002
\u3042\u306a\u305f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d9\u30fc\u30b9\u3068\u306a\u308b\u30a4\u30e1\u30fc\u30b8\u306f\u3001Lagoon\u30c1\u30fc\u30e0\u306b\u3088\u3063\u3066\u7ba1\u7406\u3055\u308c\u3066\u3044\u308b\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u6708\u306b\u4e00\u56de(\u307e\u305f\u306f\u305d\u308c\u4ee5\u4e0a)\u306e\u983b\u5ea6\u3067\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u304c\u66f4\u65b0\u3055\u308c\u305f\u3068\u304d\u3001\u3042\u306a\u305f\u306f\u30a2\u30c3\u30d7\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u3066\u3044\u308b\u5909\u66f4\u3068\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u53d6\u308a\u5165\u308c\u308b\u305f\u3081\u306b\u3001\u81ea\u5206\u81ea\u8eab\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u305d\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u793a\u3057\u307e\u3059\u3002 Drupal8\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u30ea\u30ea\u30fc\u30b9\u3092\u66f4\u65b0\u304a\u3088\u3073\u30bf\u30b0\u4ed8\u3051\u3057\u307e\u3059\u3002\u6211\u3005\u306f\u65b0\u3057\u3044\u30e2\u30b8\u30e5\u30fc\u30eb(ClamAV)\u3092\u57fa\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002Drupal\u3067\u30c7\u30e2\u3092\u884c\u3046\u306e\u306f\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u4e2d\u3067\u6700\u3082\u8a2d\u5b9a\u304c\u8907\u96d1\u3060\u304b\u3089\u3067\u3059\u3002\u3059\u3079\u3066\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u5171\u901a\u3059\u308b\u624b\u9806\u3092\u4ee5\u4e0b\u306b\u8a18\u8f09\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#step-1-pull-down-the-base-image-locally","title":"\u30b9\u30c6\u30c3\u30d71 - \u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u30ed\u30fc\u30ab\u30eb\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b","text":"\u3053\u308c\u306f\u5358\u306bGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30ed\u30fc\u30ab\u30eb\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u3067\u3059\u3002Drupal8\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u5834\u5408\u3067\u306f\u3001Bitbucket\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u306e\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
Clone Git repo.git clone ssh://git@bitbucket.biscrum.com:7999/webpro/drupal8_base_image.git\n
"},{"location":"ja/concepts-advanced/base-images/#step-2-make-the-changes-to-the-repository","title":"\u30b9\u30c6\u30c3\u30d72 - \u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b","text":"\u60c5\u5831
\u3053\u3053\u3067\u793a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306fDrupal 8\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u7279\u6709\u306e\u3082\u306e\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u3042\u3089\u3086\u308b\u5909\u66f4(\u30d5\u30a1\u30a4\u30eb\u306e\u8ffd\u52a0\u3001\u57fa\u672c\u7684\u306aDocker\u30a4\u30e1\u30fc\u30b8\u306e\u5909\u66f4\u306a\u3069)\u306f\u3059\u3079\u3066\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u5bfe\u3057\u3066\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u884c\u308f\u308c\u307e\u3059\u3002
\u6211\u3005\u306e\u4f8b\u3067\u306f\u3001ClamAV\u30e2\u30b8\u30e5\u30fc\u30eb\u3092Drupal 8\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u95a2\u4e0e\u3057\u307e\u3059\u3002\u6700\u521d\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u5fc5\u8981\u3068\u3059\u308b\u3053\u3068\u3067\u3001\u3053\u308c\u306b\u3088\u308a\u6211\u3005\u306ecomposer.json
\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306fcomposer require
\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u884c\u308f\u308c\u307e\u3059\u3002
\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059: Composer require\u3067\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3002
composer require drupal/clamav\n
Composer require\u306e\u30d7\u30ed\u30bb\u30b9\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306fcomposer.json
\u30d5\u30a1\u30a4\u30eb\u306b\u8868\u793a\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002 \u3053\u3053\u3067\u306f\u3001composer.json
\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304d\u3001\u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30ea\u30b9\u30c8\u3092\u898b\u3066\u3001ClamAV\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u30ea\u30b9\u30c8\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#step-22-ensure-that-the-required-drupal-module-is-enabled-in-template-based-derived-images","title":"\u30b9\u30c6\u30c3\u30d72.2 - \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d9\u30fc\u30b9\u306e\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3067\u5fc5\u8981\u306aDrupal\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u8ffd\u52a0\u3055\u308c\u305f\u4efb\u610f\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d9\u30fc\u30b9\u306e\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3067\u6709\u52b9\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u3092Lagoon Bundle\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u884c\u308f\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u5177\u4f53\u7684\u306b\u306f\u3001dependencies
\u30bb\u30af\u30b7\u30e7\u30f3\u306elagoon_bundle.info.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u4f9d\u5b58\u6027\u3068\u3057\u3066\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3092\u8981\u6c42\u3057\u307e\u3059\u3002Lagoon Bundle\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u9593\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u5f37\u5236\u3059\u308b\u305f\u3081\u3060\u3051\u306b\u5b58\u5728\u3059\u308b\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002 \u3053\u3053\u3067\u306f\u3001web/modules/contrib/lagoon/lagoon_bundle/lagoon_bundle.info.yml
\u3092\u958b\u304d\u3001\u4f9d\u5b58\u95a2\u4fc2\u3068\u3057\u3066clamav:clamav
\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
\u3053\u308c\u306b\u4f9d\u5b58\u95a2\u4fc2\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3001\u6d3e\u751f\u3057\u305f\u30a4\u30e1\u30fc\u30b8\u4e0a\u3067Lagoon Bundle\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u6709\u52b9\u306b\u306a\u308b\u305f\u3073\u306b\u3001\u305d\u306e\u4f9d\u5b58\u95a2\u4fc2(\u3053\u306e\u5834\u5408\u3001\u65b0\u305f\u306b\u8ffd\u52a0\u3055\u308c\u305fClamAV\u30e2\u30b8\u30e5\u30fc\u30eb)\u3082\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u6642\u306blagoon_bundle
\u3092\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3067\u6709\u52b9\u306b\u3059\u308b\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u5f37\u5236\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#step-23-test","title":"\u30b9\u30c6\u30c3\u30d72.3 - \u30c6\u30b9\u30c8","text":"\u3053\u308c\u306f\u3042\u306a\u305f\u304c\u4f55\u3092\u30c6\u30b9\u30c8\u3057\u3066\u3044\u308b\u304b\u306b\u3088\u308a\u307e\u3059\u3002ClamAV\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8ffd\u52a0\u3059\u308b\u5834\u5408\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3067\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3055\u308c\u3001Lagoon Bundle\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u6709\u52b9\u5316\u3055\u308c\u305f\u3068\u304d\u306bClamAV\u3082\u6709\u52b9\u5316\u3055\u308c\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u3044\u3067\u3059\u3002 \u3053\u3053\u3067\u306f\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u304c/app/web/modules/contrib
\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3055\u308c\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
\u305d\u3057\u3066\u3001lagoon_bundle
\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u5316\u3059\u308b\u3068\u304d\u306b\u3001clamav
\u3082\u6709\u52b9\u5316\u3055\u308c\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 Drush\u3067\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u5316\u3059\u308b\u3002
drush pm-enable lagoon_bundle -y\n
\u8b66\u544a
\u4e0a\u8a18\u306e\u30b3\u30f3\u30c6\u30ca\u3067JWT\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308b\u3067\u3057\u3087\u3046\u3002\u4e0a\u306e\u30c7\u30e2\u3067\u306f\u3053\u306e\u30a8\u30e9\u30fc\u306f\u7121\u8996\u3057\u3066\u304b\u307e\u3044\u307e\u305b\u3093\u3002\u80cc\u666f\u3068\u3057\u3066\u3001\u3042\u306a\u305f\u304c\u4f5c\u696d\u3057\u3066\u3044\u308b\u30b5\u30a4\u30c8\u306bLagoon\u74b0\u5883\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001\u3053\u306e\u30a8\u30e9\u30fc\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u304c\u7d42\u4e86\u3057\u305f\u306e\u3067\u3001\u30a4\u30e1\u30fc\u30b8\u3092\u30bf\u30b0\u4ed8\u3051\u3057\u3066\u30d3\u30eb\u30c9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#step-3-tagging-images","title":"\u30b9\u30c6\u30c3\u30d73 - \u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30b0\u4ed8\u3051","text":"\u30a4\u30e1\u30fc\u30b8\u306f\u3001Git\u30bf\u30b0\u306b\u57fa\u3065\u3044\u3066\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3055\u308c\u307e\u3059 - \u3053\u308c\u3089\u306f\u6a19\u6e96\u7684\u306a\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0(semver)\u306e\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3046\u3079\u304d\u3067\u3059\u3002\u3059\u3079\u3066\u306e\u30bf\u30b0\u306f vX.Y.Z \u306e\u69cb\u9020\u3092\u6301\u3064\u3079\u304d\u3067\u3042\u308a\u3001X\u3001Y\u3001Z\u306f\u6574\u6570\u3067\u3059(\u6b63\u78ba\u306b\u306fX.Y.Z\u81ea\u4f53\u304c\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3042\u308a\u3001vX.Y.Z\u306f\u30bf\u30b0\u3067\u3059)\u3002\u3053\u308c\u306f\u30a4\u30e1\u30fc\u30b8\u30bf\u30b0\u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u306e\u3067\u5fc5\u305a\u5f93\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u3053\u306e\u4f8b\u3067\u306f\u3001ClamAV\u3092\u8ffd\u52a0\u3057\u305f\u3053\u3068\u3092\u793a\u3059Drupal8\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30bf\u30b0\u4ed8\u3051\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#here-we-demonstrate-how-to-tag-an-image","title":"\u3053\u3053\u3067\u306f\u3001\u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30b0\u4ed8\u3051\u65b9\u6cd5\u3092\u793a\u3057\u307e\u3059","text":"\u79c1\u305f\u3061\u306f\u3001git log
\u3092\u4f7f\u7528\u3057\u3066\u3001\u901a\u5e38\u306e\u30b3\u30df\u30c3\u30c8\u3084\u30d7\u30c3\u30b7\u30e5\u3068\u540c\u3058\u3088\u3046\u306b\u3001\u5909\u66f4\u3092\u30b3\u30df\u30c3\u30c8(\u3057\u304b\u3057\u30d7\u30c3\u30b7\u30e5\u306f\u3057\u306a\u3044)\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
- \u307e\u3060\u5909\u66f4\u3092\u30b3\u30df\u30c3\u30c8\u3057\u3066\u3044\u306a\u3051\u308c\u3070\u3001\u30b3\u30df\u30c3\u30c8\u3057\u307e\u3059\u3002
- \u6b21\u306b\u3001
git tag
\u3092\u4f7f\u7528\u3057\u3066\u3001\u3069\u306e\u30bf\u30b0\u306b\u3044\u308b\u306e\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 - \u6b21\u306b\u3001
git tag -a v0.0.9 -m \u201cAdds clamAV to base.\u201d
\u3092\u4f7f\u7528\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3057\u307e\u3059\u3002 - _git -a, --annotate\u3092\u4f7f\u3046\u3068 \u7121\u7f72\u540d\u306e\u6ce8\u91c8\u4ed8\u304d\u30bf\u30b0\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
- \u6b21\u306b\u3001
git push --tags
\u3067\u30bf\u30b0\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002 - \u6700\u5f8c\u306b\u3001
git push
\u3067\u5168\u3066\u306e\u5909\u66f4\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
\u5371\u967a
\u30bf\u30b0\u306f\u305d\u308c\u81ea\u4f53\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u660e\u793a\u7684\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\uff01
"},{"location":"ja/concepts-advanced/base-images/#how-git-tags-map-to-image-tags","title":"Git\u306e\u30bf\u30b0\u304c\u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30b0\u306b\u3069\u306e\u3088\u3046\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u308b\u304b","text":"\u5371\u967a
\u30d3\u30eb\u30c9\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306b\u3088\u308a\u307e\u3059\u304c\u3001\u307b\u307c\u78ba\u5b9f\u306bdevelop\u30d6\u30e9\u30f3\u30c1\u7d4c\u7531\u3067\u5909\u66f4\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u3001\u305d\u308c\u3092main\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3059\u308b\u3067\u3057\u3087\u3046\u3002
\u3053\u3053\u3067\u899a\u3048\u3066\u304a\u304f\u3079\u304d\u91cd\u8981\u306a\u70b9\u306f\u3001Jenkins\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f\u3001\u6700\u65b0\u306e\u30b3\u30df\u30c3\u30c8\u30bf\u30b0\u306b\u57fa\u3065\u3044\u3066\u30a4\u30e1\u30fc\u30b8\u3092\u30bf\u30b0\u4ed8\u3051\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002
\u30a4\u30e1\u30fc\u30b8\u306f\u4ee5\u4e0b\u306e\u30eb\u30fc\u30eb\u3067\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3001\u3053\u308c\u306b\u8a72\u5f53\u3059\u308b\u3082\u306e\u3054\u3068\u306b\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u307e\u3059:
- main\u30d6\u30e9\u30f3\u30c1\u304c\u30d3\u30eb\u30c9\u3055\u308c\u308b\u3068\u3001
latest
\u3068\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u307e\u3059\u3002 - develop\u30d6\u30e9\u30f3\u30c1\u304c\u30d3\u30eb\u30c9\u3055\u308c\u308b\u3068\u3001
development
\u3068\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u307e\u3059\u3002 - \u30d3\u30eb\u30c9\u3055\u308c\u308b\u30b3\u30df\u30c3\u30c8\u304c\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3066\u3044\u308c\u3070\u3001\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u306f\u305d\u306e\u30b3\u30df\u30c3\u30c8\u306e\u30bf\u30b0\u4ed8\u3051\u3067\u30d3\u30eb\u30c9\u3055\u308c\u307e\u3059\u3002
- \u4e0a\u3067\u793a\u3057\u305f\u3088\u3046\u306b\u3001\u3053\u308c\u304c\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30ea\u30ea\u30fc\u30b9\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002\u307e\u305f\u3001\u4efb\u610f\u306e\u30bf\u30b0\u3067\u30a2\u30c9\u30db\u30c3\u30af\u306a\u30d3\u30eb\u30c9\u3092\u884c\u3046\u305f\u3081\u306b\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u30bf\u30b0\u540d\u306b\u306f\u5341\u5206\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3089\u306f\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u306e\u30bf\u30b0\u3067\u306e\u307f\u30c6\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#step-4-building-the-new-base-images","title":"\u30b9\u30c6\u30c3\u30d74 - \u65b0\u3057\u3044\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9","text":"\u60c5\u5831
\u4e00\u822c\u7684\u306b\u306f\u3001\u81ea\u52d5\u30d3\u30eb\u30c9\u306e\u305f\u3081\u306e\u30c8\u30ea\u30ac\u30fc\u30b9\u30c8\u30e9\u30c6\u30b8\u30fc\u3092\u3053\u3053\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u305d\u308c\u306f\u3042\u306a\u305f\u306e\u30cb\u30fc\u30ba\u3084\u8a2d\u5b9a\u306b\u3088\u3063\u3066\u7570\u306a\u308b\u305f\u3081\u3001\u3053\u3053\u3067\u306f\u624b\u52d5\u3067\u30d3\u30eb\u30c9\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002
- \u3042\u306a\u305f\u306eLagoon Jenkins\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002
- \u4f5c\u696d\u4e2d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8(\u3053\u306e\u5834\u5408\u3001AIOBI Drupal 8 Base)\u3092\u9078\u629e\u3057\u307e\u3059\u3002
- \u30d3\u30eb\u30c9\u3057\u305f\u3044\u30d6\u30e9\u30f3\u30c1\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
- \u300cBuild Now\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
\u3053\u308c\u306b\u3088\u308a\u3001\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u304c\u958b\u59cb\u3055\u308c\u3001\u6210\u529f\u3059\u308c\u3070\u65b0\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u3092Harbor\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
\u30d3\u30eb\u30c9\u304c\u6210\u529f\u3057\u306a\u3044\u5834\u5408\u306f\u3001\u30d3\u30eb\u30c9\u81ea\u4f53\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30ed\u30b0\u3092\u8aad\u307f\u3001\u3069\u3053\u3067\u5931\u6557\u3057\u305f\u304b\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u4e0b\u306eHarbor\u304b\u3089\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u3067\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u79c1\u305f\u3061\u304cJenkins\u3067\u30d3\u30eb\u30c9\u3057\u305f\u3070\u304b\u308a\u306e\u30a4\u30e1\u30fc\u30b8\u306fHarbor\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u3001\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u305d\u308c\u304cv0.0.9\u3068\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u305d\u306e\u30bf\u30b0\u306e\u3064\u3044\u305f\u30a4\u30e1\u30fc\u30b8\u304c\u5b58\u5728\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u79c1\u305f\u3061\u306fmain\u30d6\u30e9\u30f3\u30c1\u3092\u30d3\u30eb\u30c9\u3057\u305f\u306e\u3067\u3001\u300clatest\u300d\u30a4\u30e1\u30fc\u30b8\u3082\u30d3\u30eb\u30c9\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u306e\u6bb5\u968e\u3067\u306f\u3001v0.0.9\u3068\u300clatest\u300d\u30a4\u30e1\u30fc\u30b8\u306f\u540c\u4e00\u3067\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#acknowledgement","title":"\u8b1d\u8f9e","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u69cb\u9020\u306f\u3001\u5b9f\u969b\u306b\u306f\u3001 Denpal\u306e\u30d5\u30a9\u30fc\u30af\u3067\u3059\u3002\u3053\u308c\u306f\u5143\u306eDrupal Composer Template\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u304c\u3001Lagoon(\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u307e\u305f\u306f\u30db\u30b9\u30c8\u3055\u308c\u305fLagoon)\u3067\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u3059\u3079\u3066\u3092\u542b\u3093\u3067\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-idling/","title":"\u74b0\u5883\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0(\u30aa\u30d7\u30b7\u30e7\u30f3)","text":""},{"location":"ja/concepts-advanced/environment-idling/#_2","title":"\u74b0\u5883\u30a2\u30a4\u30c9\u30e9\u30fc\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f","text":"Lagoon\u306f\u3001Aergia\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc(lagoon-remote
\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u3059)\u3092\u5229\u7528\u3057\u3066\u3001\u4e00\u5b9a\u671f\u9593\u4f7f\u7528\u3055\u308c\u3066\u3044\u306a\u3044\u74b0\u5883\u3092\u81ea\u52d5\u7684\u306b\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001Kubernetes\u30af\u30e9\u30b9\u30bf\u306e\u8ca0\u8377\u3092\u8efd\u6e1b\u3057\u3001\u5b9f\u969b\u306b\u4f7f\u7528\u4e2d\u306e\u672c\u756a\u74b0\u5883\u3068\u958b\u767a\u74b0\u5883\u306e\u5168\u4f53\u7684\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u884c\u308f\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-idling/#_3","title":"\u74b0\u5883\u306f\u3069\u306e\u3088\u3046\u306b\u3057\u3066\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u306a\u308a\u307e\u3059\u304b\uff1f","text":"\u74b0\u5883\u30a2\u30a4\u30c9\u30e9\u30fc\u306b\u306f\u591a\u304f\u306e\u7570\u306a\u308b\u8a2d\u5b9a\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u6a19\u6e96\u7684\u306aLagoon\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u793a\u3057\u307e\u3059(\u3053\u308c\u3089\u306f\u3042\u306a\u305f\u306eLagoon\u3067\u306f\u5168\u304f\u7570\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001Lagoon\u7ba1\u7406\u8005\u306b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff01)
- \u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u306f4\u6642\u9593\u3054\u3068\u306b\u8a66\u307f\u3089\u308c\u307e\u3059\u3002
- \u672c\u756a\u74b0\u5883\u306f\u6c7a\u3057\u3066\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u306a\u308a\u307e\u305b\u3093\u3002
- CLI\u30dd\u30c3\u30c9\u306f\u3001cron\u30b8\u30e7\u30d6\u304c\u542b\u307e\u308c\u3066\u304a\u3089\u305a\u3001\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u63a5\u7d9a\u304c\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u306a\u3044\u5834\u5408\u306b\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u306a\u308a\u307e\u3059\u3002
- \u4ed6\u306e\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u30dd\u30c3\u30c9\u306f\u3001\u74b0\u5883\u4e0a\u3067\u904e\u53bb4\u6642\u9593\u306e\u9593\u306b\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u304c\u306a\u304b\u3063\u305f\u5834\u5408\u306b\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u306a\u308a\u307e\u3059\u3002
- \u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30d3\u30eb\u30c9\u304c\u9032\u884c\u4e2d\u3067\u3042\u308c\u3070\u3001\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u306f\u884c\u308f\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-advanced/environment-idling/#_4","title":"\u74b0\u5883\u306f\u3069\u306e\u3088\u3046\u306b\u3057\u3066\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u304b\u3089\u89e3\u9664\u3055\u308c\u307e\u3059\u304b\uff1f","text":"Aergia\u306f\u3001\u4efb\u610f\u306e\u74b0\u5883\u304c\u30a2\u30af\u30bb\u30b9\u3055\u308c\u308b\u3068\u81ea\u52d5\u7684\u306b\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u3092\u89e3\u9664\u3057\u307e\u3059\u3002 \u305d\u306e\u305f\u3081\u3001\u74b0\u5883\u306eURL\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3060\u3051\u3067\u74b0\u5883\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002\u540c\u69d8\u306b\u3001\u74b0\u5883\u3078\u306eSSH\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u958b\u59cb\u3059\u308b\u3068\u3001\u30b5\u30fc\u30d3\u30b9\u3082\u518d\u958b\u3057\u307e\u3059\u3002
\u30a2\u30f3\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u306f\u6570\u79d2\u304b\u304b\u308a\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001Kubernetes\u30af\u30e9\u30b9\u30bf\u306f\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u8d77\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3089\u3067\u3059\u3002\u3053\u306e\u9593\u3001\u8a2a\u554f\u8005\u306b\u306f\u3001\u73fe\u5728\u81ea\u5206\u306e\u74b0\u5883\u304c\u8d77\u52d5\u4e2d\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3059\u5f85\u6a5f\u753b\u9762\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-idling/#idler","title":"Idler\u304c\u79c1\u306e\u74b0\u5883\u3092\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u3057\u306a\u3044\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u3059\u304b\uff1f","text":"\u306f\u3044\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8(\u3059\u3079\u3066\u306e\u74b0\u5883\u306b\u5f71\u97ff)\u3068\u74b0\u5883(1\u3064\u306e\u74b0\u5883\u306e\u307f\u3092\u5bfe\u8c61\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408)\u306bautoIdle
\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u3042\u308a\u3001\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u304c\u884c\u308f\u308c\u308b\u304b\u3069\u3046\u304b\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u30021
\u306e\u5024\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/\u74b0\u5883\u304c\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u306e\u5bfe\u8c61\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c0
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u74b0\u5883\u304c0
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u3066\u3082\u3001\u74b0\u5883\u306f\u6c7a\u3057\u3066\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u306a\u308a\u307e\u305b\u3093\u3002 \u30c7\u30d5\u30a9\u30eb\u30c8\u306f\u5e38\u306b1
(\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u304c\u6709\u52b9)\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/\u74b0\u5883\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8a2d\u5b9a\u65b9\u6cd5\u304c\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306b\u76f8\u8ac7\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-advanced/environment-types/","title":"\u74b0\u5883\u306e\u7a2e\u985e","text":"Lagoon\u306f\u73fe\u5728\u3001production(\u672c\u756a\u74b0\u5883)
\u3068development(\u958b\u767a\u74b0\u5883)
\u306e2\u3064\u306e\u7570\u306a\u308b\u74b0\u5883\u30bf\u30a4\u30d7\u3092\u533a\u5225\u3057\u3066\u3044\u307e\u3059\u3002
Lagoon GraphQL API\u3092\u901a\u3058\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u969b\u306b\u306f\u3001productionEnvironment
\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Lagoon\u304c\u5b9f\u884c\u3059\u308b\u3059\u3079\u3066\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3067\u3001\u73fe\u5728\u306e\u74b0\u5883\u540d\u304cproductionEnvironment
\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u3068\u4e00\u81f4\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3057\u307e\u3059\u3002\u3082\u3057\u305d\u3046\u3067\u3042\u308c\u3070\u3001Lagoon\u306f\u3053\u306e\u74b0\u5883\u3092production
\u74b0\u5883\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u307e\u3059\u3002\u3053\u308c\u306f2\u3064\u306e\u5834\u6240\u3067\u884c\u308f\u308c\u307e\u3059:
- GraphQL API\u81ea\u4f53\u5185\u3002
- \u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u5185\u306e
LAGOON_ENVIRONMENT_TYPE
\u3068\u3044\u3046\u540d\u524d\u306e\u74b0\u5883\u5909\u6570\u3002
\u3053\u306e2\u3064\u3060\u3051\u3067\u3059\u3002Lagoon\u81ea\u4f53\u306fdevelopment
\u3068production
\u306e\u74b0\u5883\u3092\u307e\u3063\u305f\u304f\u540c\u3058\u3088\u3046\u306b\u6271\u3044\u307e\u3059(\u6700\u7d42\u7684\u306b\u306f\u74b0\u5883\u306e\u9055\u3044\u3092\u3067\u304d\u308b\u3060\u3051\u5c11\u306a\u304f\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059 - \u305d\u308c\u304cLagoon\u306e\u7f8e\u3057\u3055\u3067\u3059)\u3002
\u3053\u306e\u60c5\u5831\u3092\u4f7f\u7528\u3059\u308b\u3082\u306e\u304c\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059:
- \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001
development
\u74b0\u5883\u306f\u30d2\u30c3\u30c8\u304c4\u6642\u9593\u306a\u3044\u5834\u5408\u306b\u4f11\u6b62\u72b6\u614b\u306b\u306a\u308a\u307e\u3059(\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3001\u81ea\u52d5\u7684\u306b\u8d77\u52d5\u3057\u307e\u3059)\u3002\u307e\u305f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b1\u3064\u305a\u3064\u306e\u74b0\u5883\u3067\u81ea\u52d5\u4f11\u6b62\u3092\u7121\u52b9\u306b\u3059\u308b\u3088\u3046\u4f9d\u983c\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\uff01 - \u30c7\u30d5\u30a9\u30eb\u30c8\u306eDrupal
settings.php
\u30d5\u30a1\u30a4\u30eb\u306f\u3001development.settings.php
\u3068 production.settings.php
\u3068\u3044\u3046\u8ffd\u52a0\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u74b0\u5883\u30bf\u30a4\u30d7\u3054\u3068\u306b\u7570\u306a\u308b\u8a2d\u5b9a\u3084\u69cb\u6210\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 - \u3082\u3057\u3001\u3042\u306a\u305f\u304c
production
\u74b0\u5883\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883(\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u307e\u305f\u306fREST\u7d4c\u7531\u3067)\u3092\u524a\u9664\u3059\u308b\u306a\u3089\u3001Lagoon\u306f\u8aa4\u3063\u3066\u524a\u9664\u3059\u308b\u306e\u3092\u9632\u3050\u305f\u3081\u306b\u62d2\u5426\u3057\u307e\u3059\u3002production
\u74b0\u5883\u3092\u524a\u9664\u3059\u308b\u306b\u306f\u3001API\u3067productionEnvironment
\u3092\u5909\u66f4\u3059\u308b\u304b\u3001REST API\u306ePOST\u30da\u30a4\u30ed\u30fc\u30c9\u3067forceDeleteProductionEnvironment: true
\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u7528\u304c\u3042\u308a\u307e\u3059\u3002 - Lagoon\u306e\u7ba1\u7406\u8005\u306f\u3001
production
\u74b0\u5883\u60c5\u5831\u3092\u8ffd\u52a0\u306e\u76ee\u7684\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001amazee.io\u3067\u306f\u3001\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u306e\u4fa1\u683c\u3092\u8a08\u7b97\u3059\u308b\u305f\u3081\u306b\u3001production
\u74b0\u5883\u306e\u30d2\u30c3\u30c8\u6570\u3060\u3051\u3092\u8a08\u7b97\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-variables/","title":"\u74b0\u5883\u5909\u6570","text":"API\u30c8\u30fc\u30af\u30f3\u3084\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u3092\u74b0\u5883\u5909\u6570\u306b\u4fdd\u5b58\u3059\u308b\u3053\u3068\u306f\u4e00\u822c\u7684\u3067\u3059\u3002
\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3046\u3068\u3001\u3053\u308c\u3089\u306e\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u306f\u74b0\u5883\u3054\u3068\u306b\u7570\u306a\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u3001\u5404\u74b0\u5883\u304c\u74b0\u5883\u5909\u6570\u307e\u305f\u306f.env
\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u5225\u306e\u74b0\u5883\u5909\u6570\u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570\u306b\u306fDockerfile\u307e\u305f\u306f\u30e9\u30f3\u30bf\u30a4\u30e0\u6642(API\u74b0\u5883\u5909\u6570\u7d4c\u7531)\u306e\u3044\u305a\u308c\u304b\u3067\u5b9a\u7fa9\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308b\u305f\u3081\u512a\u5148\u9806\u4f4d\u304c\u3042\u308a\u3001\u3088\u308a\u4f4e\u3044\u6570\u5b57\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u304c\u512a\u5148\u3055\u308c\u307e\u3059\u3002
- \u74b0\u5883\u5909\u6570(Lagoon API\u7d4c\u7531\u3067\u5b9a\u7fa9) - \u74b0\u5883\u56fa\u6709\u3002
- \u74b0\u5883\u5909\u6570(Lagoon API\u7d4c\u7531\u3067\u5b9a\u7fa9) - \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u3002
- Dockerfile\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570(
ENV
\u30b3\u30de\u30f3\u30c9)\u3002 .lagoon.env.
\u306e$LAGOON_GIT_BRANCH
\u307e\u305f\u306f.lagoon.env.
\u306e$LAGOON_GIT_SAFE_BRANCH
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570(\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u3001$LAGOON_GIT_BRANCH
\u3068$LAGOON_GIT_SAFE_BRANCH
\u304c\u3053\u306eDocker\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u306e\u540d\u524d\u3068\u4e00\u81f4\u3059\u308b\u540d\u524d\u3067\u3042\u308b\u5834\u5408\u3001\u3053\u308c\u3089\u306e\u5024\u3092\u3053\u306e\u7279\u5b9a\u306e\u30d6\u30e9\u30f3\u30c1\u306e\u5909\u6570\u306b\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002\uff09 .lagoon.env
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570(\u5b58\u5728\u3059\u308b\u5834\u5408)\u3001\u3053\u308c\u3092\u5168\u3066\u306e\u30d6\u30e9\u30f3\u30c1\u306e\u5909\u6570\u306e\u4e0a\u66f8\u304d\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 .env
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u3002 .env.defaults
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u3002
.lagoon.env.
\u306e$LAGOON_GIT_BRANCH
\u3001.lagoon.env.
\u306e$LAGOON_GIT_SAFE_BRANCH
\u3001.env
\u3001\u305d\u3057\u3066 .env.defaults
\u306f\u3001\u5168\u3066\u3001\u5404\u30b3\u30f3\u30c6\u30ca\u81ea\u4f53\u306b\u3088\u3063\u3066\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4e00\u90e8\u3068\u3057\u3066\u5b9f\u884c\u3055\u308c\u308b\u969b\u306b\u30bd\u30fc\u30b9\u5316\u3055\u308c\u307e\u3059\u3002\u305d\u308c\u3089\u306fLagoon\u3067\u306f\u306a\u304f\u3001\u30b3\u30f3\u30c6\u30ca\u306eENTRYPOINT
\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u3088\u3063\u3066\u8aad\u307f\u8fbc\u307e\u308c\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u305d\u308c\u3089\u3092\u63a2\u3057\u307e\u3059\u3002\u74b0\u5883\u5909\u6570\u304c\u671f\u5f85\u901a\u308a\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u5834\u5408\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u306b\u4ed6\u306e\u5834\u6240\u3092\u6307\u3059WORKDIR
\u8a2d\u5b9a\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#environment-variables-lagoon-api","title":"\u74b0\u5883\u5909\u6570 - Lagoon API","text":"Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u4fdd\u5b58\u3057\u305f\u304f\u306a\u3044\u5909\u6570(\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc\u3084API\u30ad\u30fc\u306a\u3069)\u306b\u3064\u3044\u3066\u306f\u3001Lagoon API\u306e\u74b0\u5883\u5909\u6570\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5909\u6570\u306f\u3001\u8ab0\u304b\u304c\u30ed\u30fc\u30ab\u30eb\u306e\u958b\u767a\u74b0\u5883\u3084\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u4e0a\u306b\u6301\u3063\u3066\u3044\u308b\u3068\u3001\u5371\u967a\u306b\u3055\u3089\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
Lagoon API\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u307e\u305f\u306f\u74b0\u5883\u56fa\u6709\u306e\u5909\u6570\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u30b9\u30b3\u30fc\u30d7\u9650\u5b9a\u306e\u30d3\u30eb\u30c9\u6642\u307e\u305f\u306f\u30e9\u30f3\u30bf\u30a4\u30e0\u306b\u5bfe\u3057\u3066\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3059\u3079\u3066Lagoon GraphQL API\u3092\u901a\u3058\u3066\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002GraphQL API\u306e\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001GraphQL API\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#runtime-environment-variables-lagoon-api","title":"\u30e9\u30f3\u30bf\u30a4\u30e0\u74b0\u5883\u5909\u6570 - LagoonAPI","text":"\u30e9\u30f3\u30bf\u30a4\u30e0\u74b0\u5883\u5909\u6570\u306f\u81ea\u52d5\u7684\u306b\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u3067\u5229\u7528\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u74b0\u5883\u304c\u518d\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u5f8c\u306b\u306e\u307f\u8ffd\u52a0\u307e\u305f\u306f\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002
\u3053\u308c\u306f\u3001ID 463
\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u5909\u6570(\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u5229\u7528\u53ef\u80fd)\u3092\u5b9a\u7fa9\u3057\u307e\u3059:
\u30e9\u30f3\u30bf\u30a4\u30e0\u5909\u6570\u306e\u8ffd\u52a0mutation addRuntimeEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:RUNTIME,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"\n}\n) {\nid\n}\n}\n
\u3053\u308c\u306f\u3001\u74b0\u5883ID 546
\u7279\u6709\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u5909\u6570(\u7279\u5b9a\u306e\u74b0\u5883\u306e\u307f\u3067\u5229\u7528\u53ef\u80fd)\u3092\u5b9a\u7fa9\u3057\u307e\u3059:
\u74b0\u5883ID\u306e\u5b9a\u7fa9mutation addRuntimeEnv {\naddEnvVariable(\ninput:{\ntype:ENVIRONMENT,\ntypeId:546,\nscope:RUNTIME,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"\n}\n) {\nid\n}\n}\n
"},{"location":"ja/concepts-advanced/environment-variables/#build-time-environment-variables-lagoon-api","title":"\u30d3\u30eb\u30c9\u6642\u306e\u74b0\u5883\u5909\u6570 LagoonAPI","text":"\u30d3\u30eb\u30c9\u6642\u306e\u74b0\u5883\u5909\u6570\u306f\u30d3\u30eb\u30c9\u4e2d\u306b\u306e\u307f\u5229\u7528\u53ef\u80fd\u3067\u3042\u308a\u3001Dockerfiles\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
\u30d3\u30eb\u30c9\u6642\u306e\u74b0\u5883\u5909\u6570\u306e\u4f7f\u7528ARG MYVARIABLENAME\n
\u901a\u5e38\u3001ARG
\u306fFROM
\u306e\u5f8c\u306b\u8a18\u8ff0\u3057\u307e\u3059\u3002ARG\u3068FROM\u306b\u3064\u3044\u3066\u306edocker\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u8aad\u3080\u3002
\u3053\u308c\u306f\u3001ID 463
\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306e\u30d3\u30eb\u30c9\u6642\u5909\u6570(\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u5229\u7528\u53ef\u80fd)\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306e\u30d3\u30eb\u30c9\u6642\u5909\u6570\u3092\u5b9a\u7fa9\u3059\u308bmutation addBuildtimeEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:BUILD,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"}\n) {\nid\n}\n}\n
\u3053\u308c\u306f\u3001\u74b0\u5883ID 546
\u7279\u6709\u306e\u30d3\u30eb\u30c9\u6642\u5909\u6570\u3092\u5b9a\u7fa9\u3057\u307e\u3059(\u305d\u306e\u7279\u5b9a\u306e\u74b0\u5883\u5185\u3060\u3051\u3067\u5229\u7528\u53ef\u80fd)\u3002
\u74b0\u5883ID\u3092\u5b9a\u7fa9\u3059\u308bmutation addBuildtimeEnv {\naddEnvVariable(input:{type:ENVIRONMENT, typeId:546, scope:BUILD, name:\"MYVARIABLENAME\", value:\"MyVariableValue\"}) {\nid\n}\n}\n
\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u306e\u74b0\u5883\u5909\u6570\u306f\u3001\u30d3\u30eb\u30c9\u4e2d\u306b\u306e\u307f\u5229\u7528\u53ef\u80fd\u3067\u3001\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u304d\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3001Specials \u00bb container-registries
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u307e\u305f\u306f\u74b0\u5883\u30ec\u30d9\u30eb\u3067\u9069\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u3053\u308c\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u3092\u5b9a\u7fa9\u3057\u307e\u3059 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8ID 463
\u306e\u305f\u3081\u306e\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u5909\u6570(\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u5229\u7528\u53ef\u80fd):
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306e\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u5909\u6570\u3092\u5b9a\u7fa9\u3059\u308bmutation addContainerRegistryEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:CONTAINER_REGISTRY,\nname:\"MY_OWN_REGISTRY_PASSWORD\",\nvalue:\"MySecretPassword\"})\n) {\nid\n}\n}\n
\u3053\u308c\u306f\u3001\u74b0\u5883ID 546
\u7279\u6709\u306e\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u5909\u6570\u3092\u5b9a\u7fa9\u3057\u307e\u3059(\u305d\u306e\u7279\u5b9a\u306e\u74b0\u5883\u5185\u3067\u306e\u307f\u5229\u7528\u53ef\u80fd):
\u74b0\u5883ID\u3092\u5b9a\u7fa9\u3059\u308bmutation addContainerRegistryEnv {\naddEnvVariable(\ninput:{\ntype:ENVIRONMENT,\ntypeId:546,\nscope:CONTAINER_REGISTRY,\nname:\"MY_OWN_REGISTRY_PASSWORD\",\nvalue:\"MySecretPassword\"}\n) {\nid\n}\n}\n
"},{"location":"ja/concepts-advanced/environment-variables/#global-environment-variables-lagoon-api","title":"\u30b0\u30ed\u30fc\u30d0\u30eb\u74b0\u5883\u5909\u6570 - Lagoon API","text":"\u30b0\u30ed\u30fc\u30d0\u30eb\u74b0\u5883\u5909\u6570\u306f\u3001\u30d3\u30eb\u30c9\u306b\u3088\u3063\u3066\u6d88\u8cbb\u3055\u308c\u308b\u305f\u3081\u306e\u30d3\u30eb\u30c9\u6642\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u3001\u307e\u305f\u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u5185\u3067\u5229\u7528\u53ef\u80fd\u306a\u30e9\u30f3\u30bf\u30a4\u30e0\u5909\u6570\u3068\u3057\u3066\u5229\u7528\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#environment-files-existing-directly-in-the-git-repo","title":"Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u76f4\u63a5\u5b58\u5728\u3059\u308b\u74b0\u5883\u30d5\u30a1\u30a4\u30eb","text":"Git\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306b\u5b89\u5168\u306b\u4fdd\u5b58\u3067\u304d\u308b\u74b0\u5883\u5909\u6570\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3089\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u76f4\u63a5\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059 \u3002\u3053\u308c\u3089\u306e\u5909\u6570\u306f\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3067\u3082\u5229\u7528\u53ef\u80fd\u3067\u3042\u308a\u3001\u3088\u308a\u79fb\u690d\u6027\u304c\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002
\u74b0\u5883\u30d5\u30a1\u30a4\u30eb\u306e\u69cb\u6587\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059:
myenvironment.envMYVARIABLENAME=\"MyVariableValue\"\nMVARIABLENUMBER=4242\nDB_USER=$DB_USERNAME # DB_USERNAME\u306e\u5024\u3067DB_USER\u3092\u518d\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304cLagoon\u63d0\u4f9b\u306e\u5909\u6570\u306b\u5bfe\u3057\u3066\u5225\u306e\u5909\u6570\u540d\u3092\u671f\u5f85\u3057\u3066\u3044\u308b\u5834\u5408\u306a\u3069\u3067\u3059\u3002\n
"},{"location":"ja/concepts-advanced/environment-variables/#lagoonenvbranchname","title":".lagoon.env.$BRANCHNAME
","text":"\u74b0\u5883\u3054\u3068\u306b\u7570\u306a\u308b\u74b0\u5883\u5909\u6570\u3092\u5b9a\u7fa9\u3057\u305f\u3044\u5834\u5408\u306f\u3001.lagoon.env.$BRANCHNAME
\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30e1\u30a4\u30f3\u30d6\u30e9\u30f3\u30c1\u306e\u5834\u5408\u306f.lagoon.env.main
\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u74b0\u5883\u9593\u3067\u306e\u74b0\u5883\u5909\u6570\u306e\u533a\u5225\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#env-and-envdefaults","title":".env
and .env.defaults
","text":".env
\u3068.env.defaults
\u306f\u3001\u4ed6\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306e\u74b0\u5883\u5909\u6570\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u74b0\u5883\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u5229\u7528\u3057\u307e\u3059(Workflows\u53c2\u7167)\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#special-environment-variables","title":"\u7279\u5225\u306a\u74b0\u5883\u5909\u6570","text":""},{"location":"ja/concepts-advanced/environment-variables/#php_error_reporting","title":"PHP_ERROR_REPORTING
","text":"\u3053\u306e\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001PHP\u304c\u4f7f\u7528\u3059\u308b\u30ed\u30b0\u30ec\u30d9\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001production
\u74b0\u5883\u304b\u958b\u767a\u74b0\u5883\u304b\u306b\u3088\u3063\u3066\u52d5\u7684\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
production
\u74b0\u5883\u3067\u306f\u3001\u3053\u306e\u5024\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
\u306b\u306a\u308a\u307e\u3059\u3002
\u958b\u767a\u74b0\u5883\u3067\u306f\u3001\u3053\u306e\u5024\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067E_ALL & ~E_DEPRECATED & ~E_STRICT
\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#custom-backup-settings","title":"\u30ab\u30b9\u30bf\u30e0\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u8a2d\u5b9a","text":"Lagoon\u306f\u3001\u6b21\u306e4\u3064\u306e\u5909\u6570\u3059\u3079\u3066\u304cBUILD
\u30bf\u30a4\u30d7\u306e\u5909\u6570\u3068\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u4efb\u610f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30ab\u30b9\u30bf\u30e0\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u5834\u6240\u3068\u8a8d\u8a3c\u60c5\u5831\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002\u74b0\u5883\u5909\u6570\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u3067(\u74b0\u5883\u3054\u3068\u3067\u306f\u306a\u304f)\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u305d\u308c\u3089\u3092\u8a2d\u5b9a\u3057\u305f\u5f8c\u306bLagoon\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u304c\u5fc5\u8981\u3067\u3059(\u3059\u3079\u3066\u306e\u74b0\u5883\u306b\u3064\u3044\u3066)\u3002
\u3053\u308c\u3089\u306e\u5909\u6570\u306e\u3044\u305a\u308c\u304b\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Lagoon\u304c\u4f5c\u6210\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u3059\u3079\u3066\u306e\u74b0\u5883\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304c\u3053\u308c\u3089\u306e\u8a8d\u8a3c\u60c5\u5831\u3092\u4f7f\u7528\u3057\u3066\u683c\u7d0d\u3055\u308c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u3053\u308c\u3089\u306e\u8a8d\u8a3c\u60c5\u5831\u306e\u4e2d\u65ad\u304c\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u5931\u6557\u307e\u305f\u306f\u30a2\u30af\u30bb\u30b9\u4e0d\u80fd\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570\u540d \u76ee\u7684 LAGOON_BAAS_CUSTOM_BACKUP_ENDPOINT
Lagoon\u306b\u3088\u3063\u3066\u958b\u59cb\u3055\u308c\u305f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u4fdd\u5b58\u3059\u308bS3\u4e92\u63db\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u6307\u5b9a\u3057\u307e\u3059S3 Sydney\u306e\u4f8b\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 https://s3.ap-southeast-2.amazonaws.com
LAGOON_BAAS_CUSTOM_BACKUP_BUCKET
Lagoon\u306b\u3088\u3063\u3066\u958b\u59cb\u3055\u308c\u305f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u4fdd\u5b58\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u540d\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u306e\u4f8b\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 example-restore-bucket
LAGOON_BAAS_CUSTOM_BACKUP_ACCESS_KEY
\u30ab\u30b9\u30bf\u30e0 \u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30b1\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306bLagoon\u304c\u4f7f\u7528\u3059\u308b\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u306e\u4f8b\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 AKIAIOSFODNN7EXAMPLE
LAGOON_BAAS_CUSTOM_BACKUP_SECRET_KEY
\u30ab\u30b9\u30bf\u30e0\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30b1\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306bLagoon\u304c\u4f7f\u7528\u3059\u308b\u79d8\u5bc6\u30ad\u30fc\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u306e\u4f8b\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
S3\u30d0\u30b1\u30c3\u30c8\u3067\u306f\u30d1\u30d6\u30ea\u30c3\u30af\u30a2\u30af\u30bb\u30b9\u306f\u4e0d\u8981\u3067\u3001\u5b8c\u5168\u306b\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
Lagoon\u306f\u3053\u308c\u3089\u306eS3\u30d0\u30b1\u30c3\u30c8\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u81ea\u52d5\u7684\u306b\u524a\u9664\u3059\u308b\u305f\u3081\u3001\u30d0\u30b1\u30c3\u30c8\u30ec\u30d9\u30eb\u3067\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u4fdd\u6301\u30dd\u30ea\u30b7\u30fc\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#custom-restore-location","title":"\u30ab\u30b9\u30bf\u30e0\u5fa9\u5143\u5834\u6240","text":"BUILD
\u30bf\u30a4\u30d7\u306e\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u4ee5\u4e0b\u306e\u51684\u3064\u306e\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u4efb\u610f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u30ab\u30b9\u30bf\u30e0\u30ea\u30b9\u30c8\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002\u74b0\u5883\u5909\u6570\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u3067\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a(\u74b0\u5883\u3054\u3068\u3067\u306f\u306a\u304f)\u3001\u305d\u308c\u3089\u3092\u8a2d\u5b9a\u3057\u305f\u5f8c\u3001Lagoon\u306e\u30c7\u30d7\u30ed\u30a4\u304c\u5fc5\u8981\u3067\u3059(\u5404\u74b0\u5883\u306b\u3064\u3044\u3066)\u3002
\u3053\u308c\u3089\u306e\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Lagoon\u306b\u3088\u3063\u3066\u5fa9\u5143\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u74b0\u5883\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u304c\u3053\u308c\u3089\u306e\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u3092\u4f7f\u7528\u3057\u3066\u4fdd\u5b58\u3055\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3089\u306e\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u4e2d\u65ad\u3055\u308c\u308b\u3068\u3001\u5fa9\u5143\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u5931\u6557\u307e\u305f\u306f\u30a2\u30af\u30bb\u30b9\u4e0d\u80fd\u306b\u3064\u306a\u304c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570\u540d \u76ee\u7684 LAGOON_BAAS_CUSTOM_RESTORE_ENDPOINT
Lagoon\u306b\u3088\u3063\u3066\u958b\u59cb\u3055\u308c\u305f\u5fa9\u5143\u3092\u4fdd\u5b58\u3059\u308b S3 \u4e92\u63db\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002S3 Sydney\u306e\u4f8b\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 https://s3.ap-southeast-2.amazonaws.com
LAGOON_BAAS_CUSTOM_RESTORE_BUCKET
Lagoon\u306b\u3088\u3063\u3066\u958b\u59cb\u3055\u308c\u305f\u5fa9\u5143\u3092\u4fdd\u5b58\u3059\u308b\u30d0\u30b1\u30c3\u30c8\u540d\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u306e\u4f8b\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 example-restore-bucket
LAGOON_BAAS_CUSTOM_RESTORE_ACCESS_KEY
\u30ab\u30b9\u30bf\u30e0\u5fa9\u5143\u30d0\u30b1\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306bLagoon\u304c\u4f7f\u7528\u3059\u308b\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u306e\u4f8b\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 AKIAIOSFODNN7EXAMPLE
LAGOON_BAAS_CUSTOM_RESTORE_SECRET_KEY
\u30ab\u30b9\u30bf\u30e0\u5fa9\u5143\u30d0\u30b1\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306bLagoon\u304c\u4f7f\u7528\u3059\u308b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u306e\u4f8b\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Lagoon\u306f\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30d0\u30b1\u30c3\u30c8\u5185\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u7f72\u540d\u6e08\u307fURL \u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u3001S3\u30d0\u30b1\u30c3\u30c8\u3067\u306f\u30d1\u30d6\u30ea\u30c3\u30af\u30a2\u30af\u30bb\u30b9\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
S3\u30d0\u30b1\u30c3\u30c8 example-restore-bucket
\u306e\u307f\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8a31\u53ef\u3059\u308b\u3088\u3046\u306b\u4f5c\u6210\u3067\u304d\u308b AWS IAM \u30dd\u30ea\u30b7\u30fc\u306e\u4f8b\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002
aws_iam_restore_policy.json{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"s3:GetBucketLocation\",\n\"s3:ListBucket\"\n],\n\"Resource\": [\n\"arn:aws:s3:::example-restore-bucket\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"s3:PutObject\",\n\"s3:GetObject\",\n\"s3:GetObjectVersion\",\n\"s3:GetBucketLocation\",\n\"s3:PutObjectAcl\"\n],\n\"Resource\": [\n\"arn:aws:s3:::example-restore-bucket/*\"\n]\n}\n]\n}\n
\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u5f37\u5316\u3068\u30b9\u30c8\u30ec\u30fc\u30b8\u30b3\u30b9\u30c8\u524a\u6e1b\u306e\u305f\u3081\u306b\u3001\u8a2d\u5b9a\u3055\u308c\u305f\u30e9\u30a4\u30d5\u30bf\u30a4\u30e0\u5f8c\u306b\u5fa9\u5143\u3055\u308c\u305f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u524a\u9664\u3059\u308b(\u4f8b\u3048\u3070\u30017\u65e5\u9593)\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Lagoon\u306f\u3053\u306e\u30b7\u30ca\u30ea\u30aa\u3092\u3046\u307e\u304f\u51e6\u7406\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u5fa9\u5143\u3055\u308c\u305f\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u518d\u4f5c\u6210\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/feature-flags/","title":"\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d5\u30e9\u30b0","text":"Lagoon\u306e\u4e00\u90e8\u306e\u6a5f\u80fd\u306f\u3001\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d5\u30e9\u30b0\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u5236\u5fa1\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u306f\u3001\u65b0\u3057\u3044\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u6a5f\u80fd\u3092\u5236\u5fa1\u3055\u308c\u305f\u65b9\u6cd5\u3067\u5c55\u958b\u3059\u308b\u305f\u3081\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u7ba1\u7406\u8005\u3092\u652f\u63f4\u3059\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/feature-flags/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u4ee5\u4e0b\u306e\u74b0\u5883\u5909\u6570\u306f\u3001\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d5\u30e9\u30b0\u3092\u5207\u308a\u66ff\u3048\u308b\u305f\u3081\u306b\u74b0\u5883\u307e\u305f\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570\u540d \u30a2\u30af\u30c6\u30a3\u30d6\u30b9\u30b3\u30fc\u30d7 \u5c0e\u5165\u3055\u308c\u305f\u30d0\u30fc\u30b8\u30e7\u30f3 \u524a\u9664\u3055\u308c\u305f\u30d0\u30fc\u30b8\u30e7\u30f3 \u30c7\u30d5\u30a9\u30eb\u30c8\u5024 \u8aac\u660e LAGOON_FEATURE_FLAG_ROOTLESS_WORKLOAD
global
2.2.0 - \u7121\u52b9
\u3053\u306e\u74b0\u5883\u307e\u305f\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30dd\u30c3\u30c9\u306b\u975eroot\u30dd\u30c3\u30c9\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001enabled
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u30d5\u30e9\u30b0\u306f\u6700\u7d42\u7684\u306b\u5ec3\u6b62\u3055\u308c\u3001\u305d\u306e\u6642\u70b9\u3067\u975eroot\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u304c\u5f37\u5236\u3055\u308c\u307e\u3059\u3002 LAGOON_FEATURE_FLAG_ISOLATION_NETWORK_POLICY
global
2.2.0 - \u7121\u52b9
\u30c7\u30d7\u30ed\u30a4\u6642\u306b\u5404\u74b0\u5883\u306b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u540d\u524d\u7a7a\u9593\u5206\u96e2\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30dd\u30ea\u30b7\u30fc\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3001enabled
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u30d5\u30e9\u30b0\u306f\u6700\u7d42\u7684\u306b\u5ec3\u6b62\u3055\u308c\u3001\u305d\u306e\u6642\u70b9\u3067\u540d\u524d\u7a7a\u9593\u5206\u96e2\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30dd\u30ea\u30b7\u30fc\u304c\u5f37\u5236\u3055\u308c\u307e\u3059\u3002\u6ce8: \u3053\u306e\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3057\u3066\u304b\u3089\u7121\u52b9\u306b\u3059\u308b\u3068\u3001\u65e2\u5b58\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306f\u524a\u9664\u3055\u308c\u307e\u305b\u3093\u3002 \u4ee5\u524d\u306e\u30c7\u30d7\u30ed\u30a4\u304b\u3089\u306e\u30dd\u30ea\u30b7\u30fc\u524a\u9664\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u3089\u306f\u624b\u52d5\u3067\u524a\u9664\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},{"location":"ja/concepts-advanced/feature-flags/#_2","title":"\u30af\u30e9\u30b9\u30bf\u30fc\u30ec\u30d9\u30eb\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb","text":"\u6a5f\u80fd\u30d5\u30e9\u30b0\u306f\u30af\u30e9\u30b9\u30bf\u30fc\u30ec\u30d9\u30eb\u3067\u3082\u5236\u5fa1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308blagoon-build-deploy
\u30c1\u30e3\u30fc\u30c8\u304c\u3042\u308a\u307e\u3059\u3002 \u5404\u6a5f\u80fd\u30d5\u30e9\u30b0\u306b\u306f\u3001\u8a2d\u5b9a\u3067\u304d\u308b\u5024\u304cdefault
\u3068force
\u306e2\u7a2e\u985e\u3042\u308a\u307e\u3059\u3002
default
\u306f\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u74b0\u5883\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30dd\u30ea\u30b7\u30fc\u3092\u5236\u5fa1\u3057\u307e\u3059\u304c\u3001\u4e0a\u8a18\u306e\u74b0\u5883\u5909\u6570\u306b\u3088\u3063\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u307e\u305f\u306f\u74b0\u5883\u30ec\u30d9\u30eb\u3067\u4e0a\u66f8\u304d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 force
\u3082\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u74b0\u5883\u306e\u30dd\u30ea\u30b7\u30fc\u3092\u5236\u5fa1\u3057\u307e\u3059\u304c\u3001\u4e0a\u8a18\u306e\u74b0\u5883\u5909\u6570\u306b\u3088\u3063\u3066\u4e0a\u66f8\u304d\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-advanced/service-types/","title":"\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7","text":"\u4ee5\u4e0b\u306b\u793a\u3059\u306e\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u5185\u306e lagoon.type
\u3092\u901a\u3058\u3066\u5b9a\u7fa9\u3067\u304d\u308b\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3067\u3059\u3002
\u8b66\u544a
\u4e00\u5ea6 lagoon.type
\u304c\u5b9a\u7fa9\u3055\u308c\u3001\u74b0\u5883\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3068\u3001\u7570\u306a\u308b\u30bf\u30a4\u30d7\u306b\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u304a\u3089\u305a\u3001\u74b0\u5883\u304c\u58ca\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/service-types/#basic","title":"basic
","text":"\u57fa\u672c\u7684\u306a\u30b3\u30f3\u30c6\u30ca\u3067\u3001\u65e2\u5b58\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u306a\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u307b\u3068\u3093\u3069\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30dd\u30fc\u30c8\u306f\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3057\u3066\u5909\u66f4\u3067\u304d\u307e\u3059\u3002\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u304c\u5fc5\u8981\u3067\u306a\u3044\u5834\u5408(\u4f8b:\u5185\u90e8\u5411\u3051\u30b5\u30fc\u30d3\u30b9\u306e\u5834\u5408)\u3001docker-compose.yml \u5185\u3067 lagoon.autogeneratedroute: false
\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 3000
\u3067TCP\u63a5\u7d9a 3000
\u306f\u3044 \u3044\u3044\u3048 lagoon.service.port
, lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#basic-persistent","title":"basic-persistent
","text":"basic
\u3068\u540c\u3058\u3067\u3059\u304c\u3001\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u3057\u3001lagoon.persistent
\u3092\u3067\u30de\u30a6\u30f3\u30c8\u306e\u4f4d\u5024\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 3000
\u3067TCP\u63a5\u7d9a 3000
\u306f\u3044 \u306f\u3044 lagoon.service.port
, lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.persistent.class
"},{"location":"ja/concepts-advanced/service-types/#cli","title":"cli
","text":"PHP\u3001Node.js\u306a\u3069\u3001\u4efb\u610f\u306eCLI\u30b3\u30f3\u30c6\u30ca\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 /var/run/secrets/lagoon/sshkey/ssh-privatekey
\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u3066\u3044\u308b\u9867\u5ba2\u306eSSH\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ad\u30fc\u304c\u81ea\u52d5\u7684\u306b\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u305d\u306e\u4ed6\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - \u3044\u3044\u3048 \u3044\u3044\u3048 \u3044\u3044\u3048 -"},{"location":"ja/concepts-advanced/service-types/#cli-persistent","title":"cli-persistent
","text":"cli
\u3068\u540c\u3058\u3067\u3059\u304c\u3001lagoon.persistent.name
\u306f\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u6301\u3064\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3092\u6307\u5b9a\u3055\u308c\u308b\u3053\u3068\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u5b9a\u7fa9\u3055\u308c\u305flagoon.persistent
\u30e9\u30d9\u30eb\u306e\u4e0b\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u307e\u3059\u3002\u81ea\u8eab\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u305b\u305a\u3001\u5225\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u305f\u3081\u3060\u3051\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u305d\u306e\u4ed6\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - \u3044\u3044\u3048 \u3044\u3044\u3048 \u306f\u3044 lagoon.persistent.name
, lagoon.persistent
"},{"location":"ja/concepts-advanced/service-types/#elasticsearch","title":"elasticsearch
","text":"Elasticsearch\u30b3\u30f3\u30c6\u30ca\u306f\u3001/usr/share/el
\u306e\u4e0b\u306b\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u81ea\u52d5\u751f\u6210\u3057\u307e\u3059\u3002 elasticsearch/data
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf localhost:9200/_cluster/health?local=true
\u3067HTTP\u901a\u4fe1 9200 \u306a\u3057 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#kibana","title":"kibana
","text":"Kibana\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 5601
\u3067TCP\u63a5\u7d9a 5601
\u306f\u3044 \u306a\u3057 -"},{"location":"ja/concepts-advanced/service-types/#logstash","title":"logstash
","text":"Logstash\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 9600
\u3067TCP\u63a5\u7d9a 9600
\u306a\u3057 \u306a\u3057 -"},{"location":"ja/concepts-advanced/service-types/#mariadb","title":"mariadb
","text":"Lagoon\u306bmariadb-single
\u3068mariadb-dbaas
\u306e\u3069\u3061\u3089\u304b\u3092\u81ea\u52d5\u7684\u306b\u6c7a\u5b9a\u3055\u305b\u308b\u30e1\u30bf\u30b5\u30fc\u30d3\u30b9\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - - - - -"},{"location":"ja/concepts-advanced/service-types/#mariadb-single","title":"mariadb-single
","text":"MariaDB\u30b3\u30f3\u30c6\u30ca\u3002/lagoon/mysql-backup.sh 127.0.0.1
\u3092\u5b9f\u884c\u3059\u308b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306ecron\u30b8\u30e7\u30d6\u309224\u6642\u9593\u3054\u3068\u306b\u4f5c\u6210\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 3306
\u3067TCP\u63a5\u7d9a 3306
\u306a\u3057 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#mariadb-dbaas","title":"mariadb-dbaas
","text":"DBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u3092\u4ecb\u3057\u305f\u5171\u6709MariaDB\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf \u4e0d\u8981 3306
\u306a\u3057 - -"},{"location":"ja/concepts-advanced/service-types/#mongo","title":"mongo
","text":"Lagoon\u306bmongo-single
\u3068mongo-dbaas
\u306e\u3069\u3061\u3089\u304b\u3092\u81ea\u52d5\u7684\u306b\u6c7a\u5b9a\u3055\u305b\u308b\u30e1\u30bf\u30b5\u30fc\u30d3\u30b9\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - - - - -"},{"location":"ja/concepts-advanced/service-types/#mongo-single","title":"mongo-single
","text":"MongoDB\u30b3\u30f3\u30c6\u30ca\u3001/data/db
\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u6700\u5c0f1GB\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 27017
\u3067TCP\u63a5\u7d9a 27017
\u306a\u3057 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#mongo-dbaas","title":"mongo-dbaas
","text":"DBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u3092\u4ecb\u3057\u305f\u5171\u6709MongoDB\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf \u4e0d\u8981 27017
\u3044\u3044\u3048 - -"},{"location":"ja/concepts-advanced/service-types/#nginx","title":"nginx
","text":"NGINX\u30b3\u30f3\u30c6\u30ca\u3002\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf localhost:50000/nginx_status
8080
\u306f\u3044 \u3044\u3044\u3048 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#nginx-php","title":"nginx-php
","text":"nginx
\u3068\u540c\u3058\u3067\u3059\u304c\u3001\u8ffd\u52a0\u3067php
\u30b3\u30f3\u30c6\u30ca\u304c\u3042\u308a\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf NGINX: localhost:50000/nginx_status
, PHP: /usr/sbin/check_fcgi
8080
\u306f\u3044 \u3044\u3044\u3048 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#nginx-php-persistent","title":"nginx-php-persistent
","text":"nginx-php
\u3068\u540c\u69d8\u3002\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u3057\u3001lagoon.persistent
\u3067\u30de\u30a6\u30f3\u30c8\u306e\u4f4d\u7f6e\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf NGINX: localhost:50000/nginx_status
, PHP: /usr/sbin/check_fcgi
http\u306e8080
\u306f\u3044 \u306f\u3044 lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.persistent.class
"},{"location":"ja/concepts-advanced/service-types/#node","title":"node
","text":"Node.js \u30b3\u30f3\u30c6\u30ca\u3002\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 3000
\u3067TCP\u63a5\u7d9a 3000
\u306f\u3044 \u306a\u3057 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#node-persistent","title":"node-persistent
","text":"node
\u3068\u540c\u69d8\u3002\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u3057\u3001lagoon.persistent
\u3067\u30de\u30a6\u30f3\u30c8\u306e\u4f4d\u7f6e\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 3000
\u3067TCP\u63a5\u7d9a 3000
\u306f\u3044 \u306f\u3044 lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.persistent.class
"},{"location":"ja/concepts-advanced/service-types/#none","title":"none
","text":"Lagoon\u306b\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5b8c\u5168\u306b\u7121\u8996\u3059\u308b\u3088\u3046\u6307\u793a\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - - - - -"},{"location":"ja/concepts-advanced/service-types/#opensearch","title":"opensearch
","text":"OpenSearch\u30b3\u30f3\u30c6\u30ca\u3001/usr/share/opensearch/data
\u4ee5\u4e0b\u306b\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u81ea\u52d5\u751f\u6210\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf localhost:920
\u3067\u306eHTTP 0/_cluster/health?local=true| 9200 | \u3044\u3044\u3048 | \u306f\u3044 |
lagoon.persistent.size`"},{"location":"ja/concepts-advanced/service-types/#postgres","title":"postgres
","text":"Lagoon\u306bpostgres-single
\u3068postgres-dbaas
\u306e\u3069\u3061\u3089\u304b\u3092\u81ea\u52d5\u7684\u306b\u6c7a\u5b9a\u306b\u6c7a\u5b9a\u3055\u305b\u308b\u30e1\u30bf\u30b5\u30fc\u30d3\u30b9\u3002
\u5065\u5eb7\u30c1\u30a7\u30c3\u30af \u9732\u51fa\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - - - - -"},{"location":"ja/concepts-advanced/service-types/#postgres-single","title":"postgres-single
","text":"Postgres\u30b3\u30f3\u30c6\u30ca\u3002\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u7528\u306ecron\u30b8\u30e7\u30d6\u3092\u4f5c\u6210\u3057\u300124\u6642\u9593\u3054\u3068\u306b/lagoon/postgres-backup.sh localhost
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u5065\u5eb7\u30c1\u30a7\u30c3\u30af \u9732\u51fa\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 5432
\u3067TCP\u63a5\u7d9a 5432
\u3044\u3044\u3048 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#postgres-dbaas","title":"postgres-dbaas
","text":"DBaaS Operator\u7d4c\u7531\u3067\u5171\u6709PostgreSQL\u30b5\u30fc\u30d0\u3092\u5229\u7528\u3057\u307e\u3059\u3002
\u5065\u5eb7\u30c1\u30a7\u30c3\u30af \u9732\u51fa\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf \u4e0d\u8981 5432
\u3044\u3044\u3048 - -"},{"location":"ja/concepts-advanced/service-types/#python","title":"python
","text":"Python\u30b3\u30f3\u30c6\u30ca\u3002\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u5065\u5eb7\u30c1\u30a7\u30c3\u30af \u9732\u51fa\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 8800
\u3067HTTP\u63a5\u7d9a 8800
\u306f\u3044 \u3044\u3044\u3048 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#python-persistent","title":"python-persistent
","text":"\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5099\u3048\u305fPython\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 8800
\u3067HTTP\u63a5\u7d9a 8800
\u306f\u3044 \u306f\u3044 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#redis","title":"redis
","text":"Redis\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 6379
\u3067TCP\u63a5\u7d9a 6379
\u3044\u3044\u3048 \u3044\u3044\u3048 -"},{"location":"ja/concepts-advanced/service-types/#redis-persistent","title":"redis-persistent
","text":"/data
\u4ee5\u4e0b\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u81ea\u52d5\u751f\u6210\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5099\u3048\u305fRedis\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 6379
\u3067TCP\u63a5\u7d9a 6379
\u3044\u3044\u3048 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#solr","title":"solr
","text":"/var/solr
\u4ee5\u4e0b\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u81ea\u52d5\u751f\u6210\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5099\u3048\u305fSolr\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 8983
\u3067TCP\u63a5\u7d9a 8983
\u3044\u3044\u3048 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#varnish","title":"varnish
","text":"Varnish\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf HTTP\u30ea\u30af\u30a8\u30b9\u30c8 localhost:8080/varnish_status
8080
\u306f\u3044 \u3044\u3044\u3048 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#varnish-persistent","title":"varnish-persistent
","text":"/var/cache/varnish
\u4e0b\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u6301\u3064Varnish\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf HTTP\u30ea\u30af\u30a8\u30b9\u30c8 localhost:8080/varnish_status
8080
\u306f\u3044 \u306f\u3044 lagoon.autogeneratedroute
, lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#worker","title":"worker
","text":"\u4efb\u610f\u306e\u7a2e\u985e\u306e\u30ef\u30fc\u30ab\u30fc\u30b3\u30f3\u30c6\u30ca(\u30ad\u30e5\u30fc\u30ef\u30fc\u30ab\u30fc\u306a\u3069)\u3067\u3001\u516c\u958b\u30b5\u30fc\u30d3\u30b9\u30dd\u30fc\u30c8\u304c\u306a\u3044\u5834\u5408\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - \u3044\u3044\u3048 \u3044\u3044\u3048 \u3044\u3044\u3048 -"},{"location":"ja/concepts-advanced/service-types/#worker-persistent","title":"worker-persistent
","text":"worker
\u3068\u540c\u3058\u3067\u3059\u304c\u3001lagoon.persistent.name
\u304c\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u6301\u3064\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3092\u4e0e\u3048\u3089\u308c\u308b\u3053\u3068\u3092\u671f\u5f85\u3057\u3001\u5b9a\u7fa9\u3055\u308c\u305flagoon.persistent
\u30e9\u30d9\u30eb\u306e\u4e0b\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u81ea\u8eab\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u305f\u3081\u306b\u306e\u307f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u305d\u306e\u4ed6\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - \u3044\u3044\u3048 \u3044\u3044\u3048 \u306f\u3044 lagoon.persistent.name
, lagoon.persistent
"},{"location":"ja/concepts-advanced/workflows/","title":"\u30ef\u30fc\u30af\u30d5\u30ed\u30fc","text":"Lagoon\u306f\u3001\u53ef\u80fd\u306a\u9650\u308a\u591a\u69d8\u306a\u958b\u767a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u7279\u306b\u3001\u30c1\u30fc\u30e0\u306b\u5bfe\u3057\u3066\u7279\u5b9a\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u5f37\u5236\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u5404\u958b\u767a\u30c1\u30fc\u30e0\u304c\u81ea\u5206\u305f\u3061\u306e\u30b3\u30fc\u30c9\u3092\u3069\u306e\u3088\u3046\u306b\u958b\u767a\u3057\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u304b\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/workflows/#fixed-branches","title":"\u56fa\u5b9a\u30d6\u30e9\u30f3\u30c1","text":"\u6700\u3082\u76f4\u63a5\u7684\u306a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u56fa\u5b9a\u30d6\u30e9\u30f3\u30c1\u306b\u57fa\u3065\u3044\u305f\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3067\u3059:
Lagoon\u304c\u30c7\u30d7\u30ed\u30a4\u3059\u3079\u304d\u30d6\u30e9\u30f3\u30c1(\u4f8b\u3048\u3070 develop
\u3001staging
\u3001main
\u306a\u3069\u3001\u3053\u308c\u3089\u306f\u6b63\u898f\u8868\u73fe\u3067 ^(develop|staging|main)$
\u3068\u306a\u308a\u307e\u3059)\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u308c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u305d\u308c\u3067\u5b8c\u4e86\u3067\u3059\uff01
\u65b0\u3057\u3044\u6a5f\u80fd\u3092\u30c6\u30b9\u30c8\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u3067\u8a2d\u5b9a\u3057\u305f\u30d6\u30e9\u30f3\u30c1\u306b\u305d\u308c\u3089\u3092\u30de\u30fc\u30b8\u3057\u3066\u30d7\u30c3\u30b7\u30e5\u3057\u3001Lagoon\u304c\u305d\u306e\u6a5f\u80fd\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002\u554f\u984c\u304c\u306a\u3051\u308c\u3070\u3001\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u3092\u3042\u306a\u305f\u306e\u672c\u756a\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3057\u3066\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/workflows/#feature-branches","title":"\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d6\u30e9\u30f3\u30c1","text":"\u3082\u3046\u5c11\u3057\u9ad8\u5ea6\u306a\u3082\u306e\u306b\u306a\u308b\u3068\u3001\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d6\u30e9\u30f3\u30c1\u304c\u3042\u308a\u307e\u3059\u3002Lagoon\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u30d6\u30e9\u30f3\u30c1\u3092\u6b63\u898f\u8868\u73fe\u3067\u5b9a\u7fa9\u3059\u308b\u80fd\u529b\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u4e0a\u8a18\u306e\u6b63\u898f\u8868\u73fe\u3092\u3053\u306e\u3088\u3046\u306b\u62e1\u5f35\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:^feature\\/|^(staging|main)$
\u3002\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u306ffeature/
\u3067\u59cb\u307e\u308b\u3059\u3079\u3066\u306e\u30d6\u30e9\u30f3\u30c1\u3001\u304a\u3088\u3073staging
\u3068main
\u3068\u3044\u3046\u540d\u524d\u306e\u30d6\u30e9\u30f3\u30c1\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3088\u3046\u6307\u793a\u3057\u307e\u3059\u3002\u79c1\u305f\u3061\u306e\u958b\u767a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093:
- \u65b0\u3057\u3044\u30d6\u30e9\u30f3\u30c1\u3092\u4f5c\u6210\u3059\u308b
main
\u304b\u3089feature/myfeature
\u3092\u547c\u3073\u51fa\u3057\u3001feature/myfeature
\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002 - Lagoon\u306f\u3001
feature/myfeature
\u30d6\u30e9\u30f3\u30c1\u3092\u65b0\u3057\u3044\u74b0\u5883\u3068\u3057\u3066\u30c7\u30d7\u30ed\u30a4\u3057\u3001\u4ed6\u306e\u6a5f\u80fd\u3068\u306f\u72ec\u7acb\u3057\u3066\u6a5f\u80fd\u3092\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002 feature/myfeature
\u3092main
\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3059\u308b\u3068\u3001\u305d\u308c\u306f\u3042\u306a\u305f\u306e\u672c\u756a\u74b0\u5883\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002
\u3082\u3057\u3054\u5e0c\u671b\u3067\u3042\u308c\u3070\u3001feature/myfeature
\u3084\u4ed6\u306e\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d6\u30e9\u30f3\u30c1\u3092\u6700\u521d\u306bstaging
\u306b\u30de\u30fc\u30b8\u3057\u3066\u3001\u8907\u6570\u306e\u6a5f\u80fd\u3092\u4e00\u7dd2\u306b\u30c6\u30b9\u30c8\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001main\u306b\u30de\u30fc\u30b8\u3067\u304d\u307e\u3059\u3002
\u3053\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30d6\u30e9\u30f3\u30c1\u306e\u6574\u7406\u3068\u30af\u30ea\u30fc\u30f3\u3055\u304c\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002\u5404\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d6\u30e9\u30f3\u30c1\u306f\u81ea\u8eab\u306eLagoon\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u3001\u975e\u5e38\u306b\u901f\u304f\u5927\u91cf\u306e\u74b0\u5883\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u305d\u308c\u3089\u5168\u3066\u304c\u30ea\u30bd\u30fc\u30b9\u3092\u6d88\u8cbb\u3057\u307e\u3059\u3002\u672a\u4f7f\u7528\u306e\u30d6\u30e9\u30f3\u30c1\u306f\u5fc5\u305a\u30de\u30fc\u30b8\u3059\u308b\u304b\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u3053\u306e\u305f\u3081\u3001\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u8003\u3048\u308b\u3053\u3068\u304c\u7406\u306b\u304b\u306a\u3063\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-advanced/workflows/#pull-requests","title":"\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8","text":"\u3055\u3089\u306b\u9ad8\u5ea6\u306a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u3088\u308b\u3082\u306e\u3067\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u3001\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8(\u307e\u305f\u306f\u30de\u30fc\u30b8\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u3082\u547c\u3070\u308c\u307e\u3059)\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308bGit\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u30a2\u30a4\u30c7\u30a2\u306f\u3001\u30d3\u30eb\u30c9\u4e2d\u306bLagoon\u304c\u30de\u30fc\u30b8\u3092\u884c\u3063\u3066\u304f\u308c\u308b\u306e\u3067\u3001\u5b9f\u969b\u306b\u30de\u30fc\u30b8\u3059\u308b\u5fc5\u8981\u306f\u306a\u304f\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u30d6\u30e9\u30f3\u30c1\u3068\u4e00\u7dd2\u306b\u6a5f\u80fd\u3092\u30c6\u30b9\u30c8\u3067\u304d\u308b\u3068\u3044\u3046\u30a2\u30a4\u30c7\u30a2\u306e\u80cc\u666f\u306b\u3042\u308a\u307e\u3059\u3002
\u79c1\u305f\u3061\u306e\u4f8b\u3067\u306f\u3001Lagoon\u3092\u8a2d\u5b9a\u3057\u3066\u3001\u30d6\u30e9\u30f3\u30c1^(staging|main)$
\u3068\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092.*
(\u3059\u3079\u3066\u306e\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b)\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u305b\u307e\u3059\u3002 \u3053\u308c\u3067\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:
main
\u304b\u3089\u65b0\u3057\u3044\u30d6\u30e9\u30f3\u30c1feature/myfeature
\u3092\u4f5c\u6210\u3057\u3001feature/myfeature
\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059(\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u30d6\u30e9\u30f3\u30c1\u306fstaging
\u3068main
\u306e\u307f\u306e\u305f\u3081\u3001\u4eca\u306f\u30c7\u30d7\u30ed\u30a4\u306f\u884c\u308f\u308c\u307e\u305b\u3093)\u3002 - \u3042\u306a\u305f\u306eGit\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u3067
feature/myfeature
\u304b\u3089main
\u3078\u306e\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 - Lagoon\u306f\u4eca\u3001
feature/myfeature
\u30d6\u30e9\u30f3\u30c1\u3092main
\u30d6\u30e9\u30f3\u30c1\u306e\u4e0a\u306b\u30de\u30fc\u30b8\u3057\u3001\u305d\u306e\u7d50\u679c\u306e\u30b3\u30fc\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002 - \u3053\u308c\u3067\u3001
feature/myfeature
\u30d6\u30e9\u30f3\u30c1\u306e\u6a5f\u80fd\u3092\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002\u307e\u308b\u3067main
\u306b\u30de\u30fc\u30b8\u3055\u308c\u305f\u304b\u306e\u3088\u3046\u306b\u3001feature/myfeature
\u30d6\u30e9\u30f3\u30c1\u3092\u4f5c\u6210\u3057\u3066\u304b\u3089main
\u3067\u8d77\u3053\u3063\u305f\u3059\u3079\u3066\u306e\u5909\u66f4\u304c\u305d\u3053\u306b\u3042\u308a\u307e\u3059\u306e\u3067\u3001main
\u30d6\u30e9\u30f3\u30c1\u306e\u53e4\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u6301\u3063\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u306a\u3044\u3068\u5fc3\u914d\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002 - \u30de\u30fc\u30b8\u306e\u7af6\u5408\u304c\u3042\u308b\u5834\u5408\u3001\u30d3\u30eb\u30c9\u304c\u5931\u6557\u3057\u3001Lagoon\u306f\u505c\u6b62\u3057\u3066\u3042\u306a\u305f\u306b\u901a\u77e5\u3057\u307e\u3059\u3002
- \u3042\u306a\u305f\u304c\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30c6\u30b9\u30c8\u3092\u7d42\u3048\u305f\u5f8c \u30ea\u30af\u30a8\u30b9\u30c8\u30d6\u30e9\u30f3\u30c1\u3067\u306f\u3001Git\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u306b\u623b\u3063\u3066\u5b9f\u969b\u306b\u30b3\u30fc\u30c9\u3092
main
\u306b\u30de\u30fc\u30b8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001main
\u306e\u30c7\u30d7\u30ed\u30a4\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u307e\u3059\u3002 - \u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30de\u30fc\u30b8\u3055\u308c\u308b\u3068\u3001\u81ea\u52d5\u7684\u306b\u30af\u30ed\u30fc\u30ba\u3055\u308c\u3001Lagoon\u306f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u74b0\u5883\u3092\u81ea\u52d5\u7684\u306b\u524a\u9664\u3057\u307e\u3059\u3002
\u4e00\u90e8\u306e\u30c1\u30fc\u30e0\u3067\u306f\u3001\u5171\u6709\u306estaging
\u30d6\u30e9\u30f3\u30c1\u306b\u5bfe\u3057\u3066\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4f5c\u6210\u3057\u3001\u305d\u306e\u5f8c\u3001\u5225\u306e\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4ecb\u3057\u3066staging
\u30d6\u30e9\u30f3\u30c1\u3092main
\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3059\u308b\u3053\u3068\u3092\u9078\u629e\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u3001\u4f7f\u7528\u3057\u3066\u3044\u308bGit\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u7a2e\u985e\u306b\u3088\u308a\u307e\u3059\u3002
\u307e\u305f\u3001Lagoon\u3067\u306f\u3001\u30bf\u30a4\u30c8\u30eb\u306b\u7279\u5b9a\u306e\u30c6\u30ad\u30b9\u30c8\u304c\u3042\u308b\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u307f\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b63\u898f\u8868\u73fe\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f[BUILD]
\u306f\u3001\u30bf\u30a4\u30c8\u30eb\u304c[BUILD] My Pull Request
\u306e\u3088\u3046\u306a\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u307f\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u3001\u30bf\u30a4\u30c8\u30eb\u304cMy other Pull Request
\u306e\u3088\u3046\u306a\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306f\u81ea\u52d5\u7684\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u74b0\u5883\u306e\u6570\u3092\u5c11\u306a\u304f\u4fdd\u3064\u3053\u3068\u304c\u3067\u304d\u3001\u307e\u3060\u74b0\u5883\u304c\u5fc5\u8981\u3067\u306a\u3044\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4fdd\u6301\u3059\u308b\u3053\u3068\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/workflows/#automatic-database-sync-for-pull-requests","title":"\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u81ea\u52d5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540c\u671f","text":"\u81ea\u52d5\u7684\u306a\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u74b0\u5883\u306f\u7d20\u6674\u3089\u3057\u3044\u3053\u3068\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u305d\u308c\u3089\u306e\u74b0\u5883\u304c\u4f5c\u6210\u3055\u308c\u305f\u3068\u304d\u306b\u5225\u306e\u74b0\u5883\u304b\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u540c\u671f\u3055\u308c\u308b\u3068\u4fbf\u5229\u3060\u308d\u3046\u3068\u3082\u601d\u3044\u307e\u3059\u3002Lagoon\u306f\u305d\u308c\u3092\u6271\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff01
\u6b21\u306e\u4f8b\u306f\u3001\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u74b0\u5883\u306e\u6700\u521d\u306e\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3067\u30b9\u30c6\u30fc\u30b8\u30f3\u30b0\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u540c\u671f\u3057\u307e\u3059:
.lagoon.ymltasks:\npost-rollout:\n- run:\nname: IF no Drupal installed & Pullrequest = Sync database from staging\ncommand: |\nif [[ -n ${LAGOON_PR_BASE_BRANCH} ]] && tables=$(drush sqlq 'show tables;') && [ -z \"$tables\" ]; then\ndrush -y sql-sync @staging default\nfi\nservice: cli\nshell: bash\n
"},{"location":"ja/concepts-advanced/workflows/#promotion","title":"\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3","text":"\u74b0\u5883\u306b\u30b3\u30fc\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5225\u306e\u65b9\u6cd5\u306f\u3001\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3067\u3059\u3002
\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u8003\u3048\u65b9\u306f\u3001\u4f8b\u3068\u3057\u3066\u3053\u3053\u304b\u3089\u6765\u3066\u3044\u307e\u3059\u3002
staging
\u30d6\u30e9\u30f3\u30c1\u3092main
\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3057\u3001main
\u306b\u5909\u66f4\u304c\u306a\u3051\u308c\u3070\u3001\u3064\u307e\u308amain
\u3068staging
\u304cGit\u3067\u307e\u3063\u305f\u304f\u540c\u3058\u30b3\u30fc\u30c9\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408\u3067\u3082\u3001\u7d50\u679c\u3068\u3057\u3066\u5f97\u3089\u308c\u308bDocker\u30a4\u30e1\u30fc\u30b8\u304c\u308f\u305a\u304b\u306b\u7570\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u6700\u5f8c\u306estaging
\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3068\u73fe\u5728\u306emain
\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306e\u9593\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u4e0a\u6d41Docker\u30a4\u30e1\u30fc\u30b8\u304c\u5909\u66f4\u3055\u308c\u305f\u304b\u3001\u307e\u305f\u306f\u3055\u307e\u3056\u307e\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u306b\u3088\u3063\u3066\u30ed\u30fc\u30c9\u3055\u308c\u305f\u4f9d\u5b58\u95a2\u4fc2\u304c\u5909\u66f4\u3055\u308c\u305f\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3067\u3059\u3002\u3053\u308c\u306f\u975e\u5e38\u306b\u5c0f\u3055\u3044\u78ba\u7387\u3067\u3059\u304c\u5b58\u5728\u3057\u307e\u3059\u3002
\u305d\u306e\u305f\u3081\u3001 \u3053\u306e\u72b6\u6cc1\u3067\u306fLagoon\u306f\u4e00\u3064\u306e\u74b0\u5883\u304b\u3089\u5225\u306e\u74b0\u5883\u3078\u306eLagoon\u30a4\u30e1\u30fc\u30b8\u306e\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u3068\u3044\u3046\u6982\u5ff5\u3092\u7406\u89e3\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u57fa\u672c\u7684\u306b\u3001\u3059\u3067\u306b\u69cb\u7bc9\u3055\u308c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305fDocker\u30a4\u30e1\u30fc\u30b8\u3092\u4e00\u3064\u306e\u74b0\u5883\u304b\u3089\u53d6\u308a\u51fa\u3057\u3001\u305d\u308c\u3089\u306e\u307e\u3063\u305f\u304f\u540c\u3058Docker\u30a4\u30e1\u30fc\u30b8\u3092\u5225\u306e\u74b0\u5883\u3067\u4f7f\u7528\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
\u79c1\u305f\u3061\u306e\u4f8b\u3067\u306f\u3001main
\u74b0\u5883\u304b\u3089production
\u74b0\u5883\u3078Docker\u30a4\u30e1\u30fc\u30b8\u3092\u30d7\u30ed\u30e2\u30fc\u30c8\u3057\u305f\u3044\u3068\u601d\u3063\u3066\u3044\u307e\u3059:
- \u6700\u521d\u306b\u3001
main
\u3068\u3044\u3046\u540d\u524d\u306e\u901a\u5e38\u306e\u30c7\u30d7\u30ed\u30a4\u74b0\u5883\u304c\u5fc5\u8981\u3067\u3059\u3002\u74b0\u5883\u304c\u6b63\u5e38\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u307e\u305f\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b
production
\u3068\u3044\u3046\u540d\u524d\u306e\u30d6\u30e9\u30f3\u30c1\u304c\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u304c\u3042\u308b\u3068\u3001\u4eba\u3005\u304c\u3053\u306e\u30d6\u30e9\u30f3\u30c1\u306b\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u306a\u3069\u3001\u5947\u5999\u306a\u6df7\u4e71\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 - \u6b21\u306b\u3001lagoon cli\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u30c8\u30ea\u30ac\u30fc\u3057\u307e\u3059:
\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308blagoon deploy promote --project=\"myproject\" --source=\"main\" --destination=\"production\"\n
\u3053\u308c\u306f\u3001\u30bd\u30fc\u30b9main
\u304b\u3089\u30c7\u30b9\u30c6\u30a3\u30cd\u30fc\u30b7\u30e7\u30f3production
\u3078\u306e\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u3092\u5e0c\u671b\u3059\u308b\u3053\u3068\u3092Lagoon\u306b\u4f1d\u3048\u307e\u3059\u3002
Lagoon\u306f\u6b21\u306e\u3053\u3068\u3092\u884c\u3044\u307e\u3059:
.lagoon.yml
\u3068docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30c9\u3059\u308b\u305f\u3081\u306b\u3001Git\u30d6\u30e9\u30f3\u30c1main
\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u307e\u3059(Lagoon\u304c \u5b8c\u5168\u306b\u52d5\u4f5c\u3059\u308b\u306b\u306f\u3053\u308c\u3089\u304c\u307e\u3060\u5fc5\u8981\u3067\u3059)\u3002 docker-compose.yml
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3057\u3066\u3001\u3059\u3079\u3066\u306eKubernetes/OpenShift\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u304c\u3001\u74b0\u5883\u5909\u6570\u3068\u3057\u3066LAGOON_GIT_BRANCH=production
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 main
\u74b0\u5883\u304b\u3089\u6700\u65b0\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u30b3\u30d4\u30fc\u3057\u3001\u305d\u308c\u3089\u3092\u4f7f\u7528\u3057\u307e\u3059(\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3057\u305f\u308a\u3001\u4e0a\u6d41\u304b\u3089\u30bf\u30b0\u4ed8\u3051\u3057\u305f\u308a\u3059\u308b\u4ee3\u308f\u308a\u306b)\u3002 - \u901a\u5e38\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306e\u3088\u3046\u306b\u3001\u3059\u3079\u3066\u306e\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u4ed6\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3068\u540c\u69d8\u306b\u3001\u6210\u529f\u307e\u305f\u306f\u5931\u6557\u306e\u901a\u77e5\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/","title":"Lagoon\u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5","text":"\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Lagoon\u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\u3059\u3067\u306b\u3053\u308c\u3089\u306b\u3064\u3044\u3066\u7406\u89e3\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001Lagoon\u306e\u9ad8\u5ea6\u306a\u6982\u5ff5\u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002
\u3082\u3057\u52a9\u3051\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u304b\u3001\u79c1\u305f\u3061\u306eDiscord\u3067\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3084\u30e1\u30f3\u30c6\u30ca\u30fc\u3078\u3054\u9023\u7d61\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/","title":"\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u30d7\u30ed\u30bb\u30b9","text":"\u3053\u306e\u6587\u66f8\u3067\u306f\u3001Lagoon\u306e\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u4e2d\u306b\u5b9f\u969b\u306b\u4f55\u304c\u8d77\u3053\u308b\u304b\u3092\u8aac\u660e\u3057\u307e\u3059\u3002\u5b9f\u969b\u306e\u30d7\u30ed\u30bb\u30b9\u304b\u3089\u5927\u5e45\u306b\u5358\u7d14\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001Lagoon\u304c\u65b0\u3057\u3044\u30b3\u30fc\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3073\u306b\u4f55\u304c\u884c\u308f\u308c\u3066\u3044\u308b\u304b\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002
\u4ee5\u4e0b\u306e\u30d3\u30c7\u30aa\u3092\u898b\u3066\u3001\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30d7\u30ed\u30bb\u30b9\u306e\u8a73\u7d30\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#1-openshiftkubernetes","title":"1. \u74b0\u5883\u306e\u305f\u3081\u306eOpenShift\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/Kubernetes\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u306e\u8a2d\u5b9a","text":"\u307e\u305a\u3001Lagoon\u306f\u6307\u5b9a\u3055\u308c\u305f\u74b0\u5883\u306eOpenShift\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/Kubernetes\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u304c\u5b58\u5728\u3057\u3066\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u5fc5\u8981\u306a\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3001\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u4f5c\u6210\u3057\u3001\u74b0\u5883\u5909\u6570\u3092lagoon-env
\u3068\u3044\u3046ConfigMap\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u74b0\u5883\u306e\u30bf\u30a4\u30d7\u3084\u540d\u524d\u3001Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u306a\u3069\u306e\u60c5\u5831\u3067\u6e80\u305f\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#2-git","title":"2. Git\u306e\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3068\u30de\u30fc\u30b8","text":"\u6b21\u306b\u3001Lagoon\u306fGit\u304b\u3089\u30b3\u30fc\u30c9\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u307e\u3059\u3002.lagoon.yml
\u3001docker-compose.yml
\u3001\u304a\u3088\u3073.env
\u3092\u8aad\u307f\u53d6\u308b\u305f\u3081\u3060\u3051\u3067\u306a\u304f\u3001Docker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u306b\u3082\u3053\u308c\u304c\u5fc5\u8981\u3067\u3059\u3002
\u6ce8\u610f\u70b9\u3068\u3057\u3066\u3001Lagoon\u306f\u30d6\u30e9\u30f3\u30c1/PR\u304cLagoon\u3067\u8a2d\u5b9a\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u306e\u6b63\u898f\u8868\u73fe\u3068\u4e00\u81f4\u3059\u308b\u5834\u5408\u306b\u306e\u307f\u3001\u3053\u308c\u3089\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u304c\u3069\u306e\u3088\u3046\u306b\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u305f\u304b\u306b\u57fa\u3065\u3044\u3066\u3001\u7570\u306a\u308b\u3053\u3068\u304c\u8d77\u3053\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#webhook","title":"\u30d6\u30e9\u30f3\u30c1Webhook\u30d7\u30c3\u30b7\u30e5","text":"\u30c7\u30d7\u30ed\u30a4\u304cGit webhook\u7d4c\u7531\u3067\u81ea\u52d5\u7684\u306b\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u3001\u5358\u4e00\u306e\u30d6\u30e9\u30f3\u30c1\u5411\u3051\u3067\u3042\u308b\u5834\u5408\u3001Lagoon\u306fwebhook\u30da\u30a4\u30ed\u30fc\u30c9\u306b\u542b\u307e\u308c\u308bGit SHA\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u305f\u5404Git SHA\u3054\u3068\u306b\u30c7\u30d7\u30ed\u30a4\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#rest","title":"\u30d6\u30e9\u30f3\u30c1REST\u30c8\u30ea\u30ac\u30fc","text":"REST API\u7d4c\u7531(UI\u307e\u305f\u306fGraphQL\u7d4c\u7531)\u3067\u624b\u52d5\u3067\u30d6\u30e9\u30f3\u30c1\u30c7\u30d7\u30ed\u30a4\u3092\u30c8\u30ea\u30ac\u30fc\u3057\u3001POST\u30da\u30a4\u30ed\u30fc\u30c9\u3067SHA
\u3092\u5b9a\u7fa9\u3057\u306a\u3044\u5834\u5408\u3001Lagoon\u306f\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u306e\u6700\u65b0\u306e\u30b3\u30df\u30c3\u30c8\u3092\u5358\u306b\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u3001\u305d\u308c\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#_2","title":"\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8","text":"\u30c7\u30d7\u30ed\u30a4\u304c\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8(PR)\u30c7\u30d7\u30ed\u30a4\u3067\u3042\u308b\u5834\u5408\u3001Lagoon\u306f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30d9\u30fc\u30b9\u3068HEAD\u30d6\u30e9\u30f3\u30c1\u304a\u3088\u3073SHA\u3092\u30ed\u30fc\u30c9\u3057\u3001\u6b21\u306e\u3053\u3068\u3092\u884c\u3044\u307e\u3059:
- PR\u304c\u6307\u3057\u3066\u3044\u308b\u30d6\u30e9\u30f3\u30c1(\u30d9\u30fc\u30b9\u30d6\u30e9\u30f3\u30c1)\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u307e\u3059\u3002
- PR\u304c\u8d77\u6e90\u3068\u306a\u308b\u30d6\u30e9\u30f3\u30c1(
HEAD
\u30d6\u30e9\u30f3\u30c1)\u3092\u30d9\u30fc\u30b9\u30d6\u30e9\u30f3\u30c1\u306e\u4e0a\u306b\u30de\u30fc\u30b8\u3057\u307e\u3059\u3002 - \u3088\u308a\u5177\u4f53\u7684\u306b\u306f:
- Lagoon\u306f\u3001Webhook\u3067\u9001\u4fe1\u3055\u308c\u305f\u7279\u5b9a\u306eSHA\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u3066\u30de\u30fc\u30b8\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306eSHA\u306f\u30d6\u30e9\u30f3\u30c1\u30d8\u30c3\u30c9\u3092\u6307\u3057\u3066\u3044\u308b\u5834\u5408\u3082\u3042\u308c\u3070\u3001 \u305d\u3046\u3067\u306a\u3044\u5834\u5408 \u3082\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001GitHub\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u65b0\u3057\u3044\u30d7\u30c3\u30b7\u30e5\u3092\u884c\u3046\u3068\u3001\u30d9\u30fc\u30b9\u30d6\u30e9\u30f3\u30c1\u306eSHA\u304c\u73fe\u5728\u306e\u30d9\u30fc\u30b9\u30d6\u30e9\u30f3\u30c1HEAD\u3092\u6307\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
\u30de\u30fc\u30b8\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u3001Lagoon\u3082\u505c\u6b62\u3057\u3001\u305d\u306e\u3053\u3068\u3092\u304a\u77e5\u3089\u305b\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#3","title":"3. \u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9","text":"docker-compose.yml
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u5404\u30b5\u30fc\u30d3\u30b9\u306b\u3064\u3044\u3066\u3001Lagoon\u306f\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001\u3053\u306e\u6642\u70b9\u3067\u30d3\u30eb\u30c9\u304c\u884c\u308f\u308c\u307e\u3059\u3002\u30d3\u30eb\u30c9\u306e\u9806\u5e8f\u306f\u3001docker-compose.yml
\u3067\u306e\u8a2d\u5b9a\u9806\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u3044\u304f\u3064\u304b\u306e\u30d3\u30eb\u30c9\u5f15\u6570\u304c\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002
LAGOON_GIT_SHA
LAGOON_GIT_BRANCH
LAGOON_PROJECT
LAGOON_BUILD_TYPE
( pullrequest
\u3001branch
\u3001\u307e\u305f\u306f promote
\u306e\u3044\u305a\u308c\u304b) LAGOON_SSH_PRIVATE_KEY
- \u30bd\u30fc\u30b9\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308bSSH\u306e\u79d8\u5bc6\u9375\u3067\u3059\u3002\u30d3\u30eb\u30c9\u5f15\u6570\u3092\u5b9f\u969b\u306e\u9375\u306b\u5909\u63db\u3059\u308b\u306b\u306f\u3001RUN /lagoon/entrypoints/05-ssh-key.sh
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u306e\u9375\u306f/home/.ssh/key
\u306b\u3042\u308a\u3001SSH\u3068Git\u304c\u81ea\u52d5\u7684\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002\u5b89\u5168\u306e\u305f\u3081\u3001RUN rm /home/.ssh/key
\u3092\u4f7f\u7528\u3057\u3066\u9375\u3092\u518d\u5ea6\u524a\u9664\u3057\u307e\u3059\u3002 LAGOON_GIT_SOURCE_REPOSITORY
- \u30bd\u30fc\u30b9\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u5b8c\u5168\u306aGit URL\u3067\u3059
\u307e\u305f\u3001\u3053\u308c\u304c\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30d3\u30eb\u30c9\u3067\u3042\u308b\u5834\u5408\u306f\u4ee5\u4e0b\u3068\u306a\u308a\u307e\u3059\u3002
LAGOON_PR_HEAD_BRANCH
LAGOON_PR_HEAD_SHA
LAGOON_PR_BASE_BRANCH
LAGOON_PR_BASE_SHA
LAGOON_PR_TITLE
\u307e\u305f\u3001\u3059\u3067\u306b\u69cb\u7bc9\u3055\u308c\u305f\u5404\u30a4\u30e1\u30fc\u30b8\u306e\u540d\u524d\u3082\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002\u3042\u306a\u305f\u306edocker-compose.yml
\u304c\u6700\u521d\u306bcli
\u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3057\u3001\u6b21\u306bnginx
\u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001nginx
\u30a4\u30e1\u30fc\u30b8\u306e\u540d\u524d\u306fNGINX_IMAGE
\u3068\u3057\u3066\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#4-kubernetesopenshift","title":"4. Kubernetes\u307e\u305f\u306fOpenShift\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b","text":"\u6b21\u306b\u3001Lagoon\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u304b\u3089\u5b9a\u7fa9\u3055\u308c\u308b\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u30eb\u30fc\u30c8\u3001\u304a\u3088\u3073.lagoon.yml
\u3067\u5b9a\u7fa9\u3057\u305f\u8ffd\u52a0\u53ef\u80fd\u306a\u306e\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u3092Kubernetes\u307e\u305f\u306fOpenShift\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002
\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001LAGOON_ROUTES
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c8\u3092\u30ab\u30f3\u30de\u533a\u5207\u308a\u306eURL\u3068\u3057\u3066\u516c\u958b\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u4ee5\u4e0b\u306e\u9806\u5e8f\u30671\u3064\u306e\u30eb\u30fc\u30c8\u3092\"main\"\u30eb\u30fc\u30c8\u3068\u3057\u3066\u5b9a\u7fa9\u3057\u307e\u3059:
- \u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u5834\u5408:
.lagoon.yml
\u3067\u6700\u521d\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8 docker-compose.yml
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u304b\u3089\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u6700\u521d\u306e\u30eb\u30fc\u30c8 - \u306a\u3057
\"main\"\u30eb\u30fc\u30c8\u306fLAGOON_ROUTE
\u74b0\u5883\u5909\u6570\u3092\u4ecb\u3057\u3066\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#5","title":"5. \u30a4\u30e1\u30fc\u30b8\u306e\u30d7\u30c3\u30b7\u30e5\u3068\u30bf\u30b0\u4ed8\u3051","text":"\u3053\u308c\u3067\u3001\u4ee5\u524d\u306b\u30d3\u30eb\u30c9\u3057\u305fDocker\u30a4\u30e1\u30fc\u30b8\u3092\u5185\u90e8\u306eDocker\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
docker-compose.yml
\u3067\u30d3\u30eb\u30c9\u3059\u308bDockerfile\u3092\u6307\u5b9a\u305b\u305a\u306b\u30a4\u30e1\u30fc\u30b8\u306e\u307f\u3092\u6307\u5b9a\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u306b\u3064\u3044\u3066\u3082\u3001\u30bf\u30b0\u4ed8\u3051\u304c\u884c\u308f\u308c\u3001\u5185\u90e8Docker\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u8a8d\u8b58\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u308c\u3089\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u30b3\u30f3\u30c6\u30ca\u3067\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#6","title":"6. \u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8","text":"Lagoon\u306f\u3001\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\uff08PVC\uff09\u3092\u5fc5\u8981\u3068\u3057\u3066\u8981\u6c42\u3057\u305f\u5404\u30b5\u30fc\u30d3\u30b9\u306e\u305f\u3081\u306b\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#7-cron","title":"7. Cron\u30b8\u30e7\u30d6","text":"MariaDB\u306e\u3088\u3046\u306bcron\u30b8\u30e7\u30d6\u3092\u8981\u6c42\u3059\u308b\u5404\u30b5\u30fc\u30d3\u30b9\u3001\u304a\u3088\u3073.lagoon.yml\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30ab\u30b9\u30bf\u30e0cron\u30b8\u30e7\u30d6\u3054\u3068\u306b\u3001Lagoon\u306fcron\u30b8\u30e7\u30d6\u74b0\u5883\u5909\u6570\u3092\u751f\u6210\u3057\u3001\u305d\u308c\u3089\u306f\u5f8c\u3067\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306b\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#8","title":"8. \u5b9a\u7fa9\u6e08\u307f\u306e\u30d7\u30ec\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u306e\u5b9f\u884c","text":"\u6b21\u306bLagoon\u306f.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u305fpre-rollout
\u306e\u30bf\u30b9\u30af\u3092\u78ba\u8a8d\u3057\u3001\u305d\u308c\u3089\u3092\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u3054\u3068\u306b1\u3064\u305a\u3064\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30bf\u30b9\u30af\u306f\u73fe\u5728\u5b9f\u884c\u4e2d\u306e\u30dd\u30c3\u30c9\u3067\u5b9f\u884c\u3055\u308c\u308b\u305f\u3081\u3001\u6700\u65b0\u306e\u30b3\u30df\u30c3\u30c8\u306b\u306e\u307f\u5b58\u5728\u3059\u308b\u6a5f\u80fd\u3084\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u6700\u521d\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3067\u306f\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002
\u3053\u308c\u3089\u306e\u30bf\u30b9\u30af\u306e\u3044\u305a\u308c\u304b\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u3001Lagoon\u306f\u76f4\u3061\u306b\u505c\u6b62\u3057\u901a\u77e5\u3057\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u306f\u9032\u884c\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#9-deploymentconfigsstatefulsetsdaemonsets","title":"9. DeploymentConfigs\u3001Statefulsets\u3001Daemonsets","text":"\u3053\u308c\u304c\u304a\u305d\u3089\u304f\u6700\u3082\u91cd\u8981\u306a\u30b9\u30c6\u30c3\u30d7\u3067\u3059\u3002\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u306b\u57fa\u3065\u3044\u3066\u3001Lagoon\u306f[ Deployment\u3001Statefulset \u307e\u305f\u306f Daemonsets \u3092\u30b5\u30fc\u30d3\u30b9\u7528\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 (Deployment\u306fOpenShift\u306e DeploymentConfigs \u3068\u540c\u7b49\u3067\u3059)
\u3053\u308c\u306b\u306f\u3001\u4ee5\u524d\u306b\u53ce\u96c6\u3057\u305f\u60c5\u5831\u3001cron\u30b8\u30e7\u30d6\u3001\u6c38\u7d9a\u7684\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u4f4d\u7f6e\u3001\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u306a\u3069\u5168\u3066\u304c\u542b\u307e\u308c\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u306f\u3001\u74b0\u5883\u5909\u6570\u304c\u5909\u66f4\u3055\u308c\u305f\u308a\u3001\u30a4\u30e1\u30fc\u30b8\u304c\u5909\u66f4\u3055\u308c\u305f\u308a\u3057\u305f\u5834\u5408\u306a\u3069\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066Kubernetes\u3084OpenShift\u304c\u30dd\u30c3\u30c9\u306e\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u81ea\u52d5\u7684\u306b\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u3053\u3068\u3082\u5f15\u304d\u8d77\u3053\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u5909\u66f4\u304c\u306a\u3044\u5834\u5408\u306f\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306f\u884c\u308f\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306ePHP\u30b3\u30fc\u30c9\u306e\u307f\u3092\u66f4\u65b0\u3057\u305f\u5834\u5408\u3001Varnish\u3001Solr\u3001MariaDB\u3001Redis\u306a\u3069\u306e\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u304c\u3042\u306a\u305f\u306e\u30b3\u30fc\u30c9\u3092\u542b\u307e\u306a\u3044\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5168\u3066\u304c\u975e\u5e38\u306b\u9ad8\u901f\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#10","title":"10. \u3059\u3079\u3066\u306e\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3064","text":"\u3053\u3053\u3067Lagoon\u306f\u5f85\u6a5f\u3057\u307e\u3059\uff01\u65b0\u3057\u3044\u30dd\u30c3\u30c9\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u304c\u3059\u3079\u3066\u5b8c\u4e86\u3057\u3001\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af\u304c\u6210\u529f\u3059\u308b\u306e\u3092\u5f85\u3061\u307e\u3059\u3002
\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3084\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af\u306e\u3044\u305a\u308c\u304b\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u3001\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306f\u3053\u3053\u3067\u505c\u6b62\u3055\u308c\u3001Slack\u306a\u3069\u306e\u5b9a\u7fa9\u6e08\u307f\u306e\u901a\u77e5\u30b7\u30b9\u30c6\u30e0\u3092\u901a\u3058\u3066\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u304c\u5931\u6557\u3057\u305f\u3053\u3068\u304c\u901a\u77e5\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#11","title":"11. \u5b9a\u7fa9\u3055\u308c\u305f\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u306e\u5b9f\u884c","text":"\u6b21\u306b\u3001Lagoon\u306f.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066post-rollout
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30bf\u30b9\u30af\u3092\u63a2\u3057\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u3067\u305d\u308c\u3089\u3092\u4e00\u3064\u305a\u3064\u5b9f\u884c\u3057\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u3044\u305a\u308c\u304b\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u3001Lagoon\u306f\u76f4\u3061\u306b\u505c\u6b62\u3057\u3001\u3042\u306a\u305f\u306b\u901a\u77e5\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#12","title":"12. \u6210\u529f","text":"\u5168\u3066\u304c\u9806\u8abf\u306b\u9032\u307f\u3001\u4f55\u3082\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u3001Lagoon\u306f\u3053\u306e\u30d3\u30eb\u30c9\u3092\u6210\u529f\u3068\u30de\u30fc\u30af\u3057\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u901a\u77e5\u3092\u4ecb\u3057\u3066\u3042\u306a\u305f\u306b\u901a\u77e5\u3057\u307e\u3059\u3002\u2705
"},{"location":"ja/concepts-basics/docker-compose-yml/","title":"docker-compose.yml","text":"docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306fLagoon\u304c\u4ee5\u4e0b\u306e\u76ee\u7684\u306e\u305f\u3081\u306b\u5229\u7528\u3057\u307e\u3059:
- \u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u30b5\u30fc\u30d3\u30b9/\u30b3\u30f3\u30c6\u30ca\u3092\u77e5\u308b
- \u30b3\u30f3\u30c6\u30ca\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u3069\u306e\u3088\u3046\u306b\u30d3\u30eb\u30c9\u3055\u308c\u308b\u304b\u3092\u5b9a\u7fa9\u3059\u308b
- \u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u3088\u3046\u306a\u8ffd\u52a0\u306e\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3059\u308b
Docker Compose(\u30c4\u30fc\u30eb)\u306fYAML\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306e\u691c\u8a3c\u306b\u975e\u5e38\u306b\u53b3\u683c\u3067\u3042\u308b\u305f\u3081\u3001\u30b5\u30fc\u30d3\u30b9\u5b9a\u7fa9\u306elabels
\u5185\u3067\u306e\u307f\u8a2d\u5b9a\u3092\u884c\u3046\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002
\u8b66\u544a
Lagoon\u306fdocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30e9\u30d9\u30eb\u3001\u30b5\u30fc\u30d3\u30b9\u540d\u3001\u30a4\u30e1\u30fc\u30b8\u540d\u3001\u30d3\u30eb\u30c9\u5b9a\u7fa9\u306e\u307f\u3092\u8aad\u307f\u53d6\u308a\u307e\u3059\u3002\u30dd\u30fc\u30c8\u3001\u74b0\u5883\u5909\u6570\u3001\u30dc\u30ea\u30e5\u30fc\u30e0\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u30ea\u30f3\u30af\u3001\u30e6\u30fc\u30b6\u30fc\u306a\u3069\u306e\u5b9a\u7fa9\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002
\u3053\u308c\u306f\u610f\u56f3\u7684\u306a\u3082\u306e\u3067\u3001docker-compose
\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u306a\u305f\u306e\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u306e\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002Lagoon\u306flagoon.type
\u304b\u3089\u3042\u306a\u305f\u304c\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u3044\u308b\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30d7\u3092\u5b66\u3073\u3001\u305d\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u5fc5\u8981\u3068\u3059\u308b\u30dd\u30fc\u30c8\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u305d\u306e\u4ed6\u306e\u8ffd\u52a0\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u77e5\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u4ee5\u4e0b\u306b\u3001Drupal\u7528\u306edocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306e\u7c21\u5358\u306a\u4f8b\u3092\u793a\u3057\u307e\u3059:
docker-compose.ymlversion: '2.3'\nx-lagoon-project:\n# Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d(\u3053\u308c\u3092\u7de8\u96c6\u3059\u308b\u969b\u306f`&lagoon-project`\u3092\u6b8b\u3057\u3066\u304f\u3060\u3055\u3044)\n&lagoon-project drupal-example\nx-volumes:\n&default-volumes\n# Docker\u30b3\u30f3\u30c6\u30ca\u306b\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u30de\u30a6\u30f3\u30c8\u3057\u305f\u3044\u3059\u3079\u3066\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u5b9a\u7fa9\u3057\u307e\u3059\nvolumes:\n- .:/app:delegated\nx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# \u30ed\u30fc\u30ab\u30eb\u3067\u4f7f\u7528\u3059\u308b\u30eb\u30fc\u30c8\u3002pygmy\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30eb\u30fc\u30c8\u306f *\u5fc5\u305a* .docker.amazee.io\u3067\u7d42\u308f\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n# \u672c\u756a\u74b0\u5883\u3068\u540c\u69d8\u306e\u52d5\u4f5c\u3092\u3055\u305b\u305f\u3044\u5834\u5408\u306f\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\n#LAGOON_ENVIRONMENT_TYPE: production\n# Xdebug\u3092\u6709\u52b9\u306b\u3057\u3001`docker-compose up -d`\u3067\u518d\u8d77\u52d5\u3057\u305f\u3044\u5834\u5408\u306f\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\n#XDEBUG_ENABLE: \"true\"\nx-user:\n&default-user\n# \u30b3\u30f3\u30c6\u30ca\u304c\u5b9f\u884c\u3055\u308c\u308b\u3079\u304d\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30e6\u30fc\u30b6\u30fc\u3002Linux\u4e0a\u3067ID `1000`\u4ee5\u5916\u306e\u30e6\u30fc\u30b6\u30fc\u3067\u5b9f\u884c\u3059\u308b\u5834\u5408\u306f\u3053\u308c\u3092\u5909\u66f4\u3057\u307e\u3059\nuser: '1000'\nservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent # (1)\nlagoon.persistent: /app/web/sites/default/files/\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent # (2)\nlagoon.name: nginx\nlagoon.persistent: /app/web/sites/default/files/\nmariadb:\nimage: uselagoon/mariadb-10.11-drupal\nlabels:\nlagoon.type: mariadb\n
- \u3053\u3053\u3067\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30dd\u30c3\u30c9\u306b\u6ce8\u76ee\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u3053\u3053\u3067\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30dd\u30c3\u30c9\u306b\u6ce8\u76ee\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#basic-settings","title":"\u57fa\u672c\u8a2d\u5b9a","text":"x-lagoon-project
:
\u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30de\u30b7\u30f3\u540d\u3067\u3001\u3053\u3053\u3067\u5b9a\u7fa9\u3057\u307e\u3059\u3002\"drupal-example\"\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002
x-volumes
:
\u3053\u308c\u306fLagoon\u306b\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3059\u308b\u3082\u306e\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f/app
\u306b\u5b58\u5728\u3057\u307e\u3059\u304c\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3092\u8ffd\u52a0\u307e\u305f\u306f\u5909\u66f4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
x-environment
:
- \u3053\u3053\u3067\u30ed\u30fc\u30ab\u30eb\u958b\u767aURL\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002pygmy\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001
.docker.amazee.io
\u3067\u7d42\u308f\u3089\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 - \u5b8c\u5168\u306b\u672c\u756a\u74b0\u5883\u306b\u4f3c\u305b\u305f\u3044\u5834\u5408\u306f\u3001
LAGOON_ENVIRONMENT_TYPE: production
\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u5916\u3057\u307e\u3059\u3002 - Xdebug\u3092\u6709\u52b9\u306b\u3057\u305f\u3044\u5834\u5408\u306f\u3001
DEBUG_ENABLE: \"true\"
\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u5916\u3057\u307e\u3059\u3002
x-user
:
Linux\u3092\u4f7f\u7528\u3057\u3066\u3044\u3066\u30011000
\u4ee5\u5916\u306e\u30e6\u30fc\u30b6\u30fc\u3067\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u3092\u9664\u304d\u3001\u3053\u308c\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u307b\u3068\u3093\u3069\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#services","title":"services
","text":"\u3053\u3053\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u6b8b\u5ff5\u306a\u304c\u3089\u3001 Docker Compose\u306f\u305d\u308c\u3089\u3092\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3073\u307e\u3059\u304c\u3001\u5b9f\u969b\u306b\u306f\u30b3\u30f3\u30c6\u30ca\u3067\u3059\u3002\u3053\u308c\u304b\u3089\u306f\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u3067\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3076\u3053\u3068\u306b\u3057\u307e\u3059\u3002
\u305d\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d(\u4e0a\u8a18\u306e\u4f8b\u3067\u306f nginx
\u3001php
\u3001mariadb
)\u306f\u3001Lagoon\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u308bKubernetes\u306e\u30dd\u30c3\u30c9\u306e\u540d\u524d(\u307e\u305f\u5225\u306e\u7528\u8a9e\u3068\u3057\u3066\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3073\u307e\u3059)\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u3001\u3055\u3089\u306b\u5b9a\u7fa9\u3055\u308c\u305flagoon.type
\u306b\u57fa\u3065\u3044\u3066\u4f5c\u6210\u3055\u308c\u308bKubernetes\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3068\u3057\u3066\u3082\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u3001\u30eb\u30fc\u30c8\u3001\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u306a\u3069\u304c\u542b\u307e\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
\u30b5\u30fc\u30d3\u30b9\u540d\u306fRFC 1035\u306eDNS\u30e9\u30d9\u30eb\u6a19\u6e96\u306b\u6e96\u62e0\u3057\u3066\u3044\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30b5\u30fc\u30d3\u30b9\u540d\u306f\u4ee5\u4e0b\u306e\u8981\u4ef6\u3092\u6e80\u305f\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
- \u6700\u592763\u6587\u5b57\u3092\u542b\u3080
- \u5c0f\u6587\u5b57\u306e\u82f1\u6570\u5b57\u307e\u305f\u306f'-'\u306e\u307f\u3092\u542b\u3080
- \u82f1\u5b57\u3067\u59cb\u307e\u308b
- \u82f1\u6570\u5b57\u3067\u7d42\u308f\u308b
\u8b66\u544a
\u4e00\u5ea6\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3092\u8a2d\u5b9a\u3057\u305f\u3089\u3001\u4fee\u6b63\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u4fee\u6b63\u3059\u308b\u3068\u3001\u30b3\u30f3\u30c6\u30ca\u5185\u3067\u69d8\u3005\u306a\u554f\u984c\u304c\u767a\u751f\u3057\u3001\u4e0d\u6574\u5408\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#docker-images","title":"Docker\u30a4\u30e1\u30fc\u30b8","text":""},{"location":"ja/concepts-basics/docker-compose-yml/#build","title":"build
","text":"\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3054\u3068\u306bLagoon\u304c\u3042\u306a\u305f\u306e\u30b5\u30fc\u30d3\u30b9\u306eDockerfile\u3092\u30d3\u30eb\u30c9\u3057\u3066\u307b\u3057\u3044\u5834\u5408\u3001\u3053\u3053\u3067\u5b9a\u7fa9\u3067\u304d\u307e\u3059:
build
context
docker build
\u30b3\u30de\u30f3\u30c9\u306b\u6e21\u3059\u3079\u304d\u30d3\u30eb\u30c9\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30d1\u30b9
dockerfile:
- \u30d3\u30eb\u30c9\u3059\u308b\u3079\u304dDockerfile\u306e\u5834\u6240\u3068\u540d\u524d
\u8b66\u544a
Lagoon\u306f\u77ed\u7e2e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002build: <Dockerfile>
\u306e\u5b9a\u7fa9\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u51e6\u7406\u306f\u5931\u6557\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#image","title":"image
","text":"Dockerfile\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u306a\u304f\u3001\u65e2\u5b58\u306eDockerfile\u3092\u4f7f\u7528\u3057\u305f\u3044\u5834\u5408\u306f\u3001image
\u3067\u5b9a\u7fa9\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#types","title":"\u30bf\u30a4\u30d7","text":"Lagoon\u306f\u3001Kubernetes\u3084OpenShift\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u6b63\u3057\u304f\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30d7\u3092\u77e5\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u3053\u308c\u306flagoon.type
\u30e9\u30d9\u30eb\u3092\u901a\u3058\u3066\u884c\u308f\u308c\u307e\u3059\u3002\u9078\u629e\u3067\u304d\u308b\u30bf\u30a4\u30d7\u306f\u591a\u6570\u3042\u308a\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u30bf\u30a4\u30d7\u3068\u8ffd\u52a0\u8a2d\u5b9a\u306e\u53ef\u80fd\u6027\u3092\u898b\u308b\u306b\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#skipignore-containers","title":"\u30b3\u30f3\u30c6\u30ca\u306e\u30b9\u30ad\u30c3\u30d7/\u7121\u8996","text":"\u305f\u3068\u3048\u3070\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u6642\u306b\u306e\u307f\u30b3\u30f3\u30c6\u30ca\u304c\u5fc5\u8981\u306a\u5834\u5408\u306a\u3069\u3001Lagoon\u306b\u30b5\u30fc\u30d3\u30b9\u3092\u5b8c\u5168\u306b\u7121\u8996\u3055\u305b\u305f\u3044\u5834\u5408\u306f\u3001\u305d\u306e\u30bf\u30a4\u30d7\u306bnone
\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#persistent-storage","title":"\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8","text":"\u4e00\u90e8\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u306f\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u5fc5\u8981\u3067\u3059\u3002Lagoon\u3067\u306f\u3001\u5404\u30b3\u30f3\u30c6\u30ca\u304c\u6700\u59271\u3064\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u306b\u81ea\u8eab\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u8981\u6c42\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d(\u305d\u308c\u3092\u4ed6\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3055\u305b\u308b\u3053\u3068\u3082\u53ef\u80fd)\u3001\u307e\u305f\u3001\u30b3\u30f3\u30c6\u30ca\u306b\u4ed6\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u4f5c\u6210\u3057\u305f\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u3088\u3046\u6307\u793a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u591a\u304f\u306e\u5834\u5408\u3001Lagoon\u306f\u305d\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u3069\u3053\u306b\u914d\u7f6e\u3059\u3079\u304d\u304b\u3092\u77e5\u3063\u3066\u3044\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001 \u4f8b\u3048\u3070\u3001MariaDB\u30b3\u30f3\u30c6\u30ca\u306e\u5834\u5408\u3001Lagoon\u306f\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092/var/lib/mysql
\u306b\u914d\u7f6e\u3059\u3079\u304d\u3068\u77e5\u3063\u3066\u304a\u308a\u3001\u305d\u308c\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u8ffd\u52a0\u306e\u8a2d\u5b9a\u306a\u3057\u306b\u81ea\u52d5\u7684\u306b\u305d\u3053\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u4e00\u90e8\u306e\u72b6\u6cc1\u3067\u306f\u3001Lagoon\u306f\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u3069\u3053\u306b\u914d\u7f6e\u3059\u3079\u304d\u304b\u3092\u77e5\u308b\u305f\u3081\u306b\u3042\u306a\u305f\u306e\u52a9\u3051\u304c\u5fc5\u8981\u3067\u3059\u3002
lagoon.persistent
- \u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30de\u30a6\u30f3\u30c8\u3059\u3079\u304d\u7d76\u5bfe\u30d1\u30b9(\u4e0a\u8a18\u306e\u4f8b\u3067\u306f/app/web/sites/default/files/
\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u306fDrupal\u304c\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u671f\u5f85\u3059\u308b\u30d1\u30b9\u3067\u3059)\u3002 lagoon.persistent.name
- Lagoon\u306b\u305d\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u65b0\u3057\u3044\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u306a\u3044\u3088\u3046\u306b\u6307\u793a\u3057\u3001\u4ee3\u308f\u308a\u306b\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u5b9a\u7fa9\u6e08\u307f\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059\u3002 lagoon.persistent.size
- \u5fc5\u8981\u306a\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u30b5\u30a4\u30ba(Lagoon\u306f\u901a\u5e38\u3001\u6700\u5c0f5G\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3082\u3057\u3082\u3063\u3068\u5fc5\u8981\u306a\u3089\u3001\u3053\u3053\u3067\u5b9a\u7fa9\u3057\u3066\u304f\u3060\u3055\u3044)\u3002 lagoon.persistent.class
- \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306fLagoon\u306f\u81ea\u52d5\u7684\u306b\u9069\u5207\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u30af\u30e9\u30b9(MySQL\u306eSSD\u3001Nginx\u306e\u5927\u91cf\u30b9\u30c8\u30ec\u30fc\u30b8\u306a\u3069)\u3092\u30b5\u30fc\u30d3\u30b9\u306b\u5272\u308a\u5f53\u3066\u307e\u3059\u3002\u3053\u308c\u3092\u4e0a\u66f8\u304d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u3053\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001Lagoon\u304c\u52d5\u4f5c\u3059\u308bKubernetes/OpenShift\u306e\u30a4\u30f3\u30d5\u30e9\u57fa\u76e4\u306b\u5927\u304d\u304f\u4f9d\u5b58\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3064\u3044\u3066\u306fLagoon\u306e\u7ba1\u7406\u8005\u306b\u554f\u3044\u5408\u308f\u305b\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#auto-generated-routes","title":"\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8","text":"docker-compose.yml\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u3054\u3068\u306b\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u3092\u6709\u52b9\u307e\u305f\u306f\u7121\u52b9\u306b\u3059\u308b\u3053\u3068\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002
lagoon.autogeneratedroute: false
\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u305d\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3057\u3066\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u304c\u505c\u6b62\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u3092\u6301\u3064\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u9069\u7528\u3067\u304d\u307e\u3059\u304c\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9\u306a\u3069\u306e\u8ffd\u52a0\u306e\u5185\u90e8\u5411\u3051\u30b5\u30fc\u30d3\u30b9\u3092\u4f5c\u6210\u3059\u308b\u969b\u306bbasic
\u304a\u3088\u3073basic-persistent
\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3067\u7279\u306b\u4fbf\u5229\u3067\u3059\u3002\u9006\u3082\u307e\u305f\u540c\u69d8\u306b\u3001.lagoon.yml\u30d5\u30a1\u30a4\u30eb\u304c\u305d\u308c\u3089\u3092\u7121\u52b9\u306b\u3059\u308b\u3068\u304d\u306b\u3001\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3057\u3066\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#multi-container-pods","title":"\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30fc\u30dd\u30c3\u30c9","text":"Kubernetes\u3068OpenShift\u306f\u5358\u7d14\u306a\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u305d\u308c\u305e\u308c\u304c1\u3064\u4ee5\u4e0a\u306e\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u6301\u3064\u30dd\u30c3\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002\u901a\u5e38\u3001Lagoon\u306f\u5b9a\u7fa9\u3055\u308c\u305fdocker-compose
\u30b5\u30fc\u30d3\u30b9\u3054\u3068\u306b\u30b3\u30f3\u30c6\u30ca\u30fc\u304c\u5185\u90e8\u306b\u3042\u308b\u5358\u4e00\u306e\u30dd\u30c3\u30c9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u3042\u308b\u30b1\u30fc\u30b9\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30b3\u30f3\u30c6\u30ca\u30fc\u304c\u4e92\u3044\u306b\u975e\u5e38\u306b\u4f9d\u5b58\u3057\u3066\u3044\u3066\u3001\u5e38\u306b\u4e00\u7dd2\u306b\u3044\u308b\u3079\u304d\u3067\u3042\u308b\u305f\u3081\u3001\u5358\u4e00\u306e\u30dd\u30c3\u30c9\u5185\u306b2\u3064\u306e\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u3088\u3046\u306a\u72b6\u6cc1\u306e\u4e00\u4f8b\u306f\u3001PHP\u30b3\u30f3\u30c6\u30ca\u3068NGINX\u30b3\u30f3\u30c6\u30ca\u304cDrupal\u306e\u3088\u3046\u306a\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306ePHP\u30b3\u30fc\u30c9\u3092\u542b\u3080\u5834\u5408\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u30b1\u30fc\u30b9\u3067\u306f\u3001\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u4e00\u7dd2\u306b\u3059\u3079\u304d\u304b\u3092Lagoon\u306b\u4f1d\u3048\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3001\u6b21\u306e\u3088\u3046\u306b\u884c\u3044\u307e\u3059(\u79c1\u305f\u3061\u304c\u30b3\u30f3\u30c6\u30ca\u3092docker-compose
\u306e\u305f\u3081\u306bservices
\u3068\u547c\u3093\u3067\u3044\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044):
- \u4e21\u65b9\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u3001\u4e8c\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u671f\u5f85\u3059\u308b
lagoon.type
\u3067\u5b9a\u7fa9\u3057\u307e\u3059(\u3053\u306e\u4f8b\u3067\u306f\u3001nginx
\u3068php
\u30b5\u30fc\u30d3\u30b9\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308bnginx-php-persistent
\u3067\u3059)\u3002 - \u7b2c2\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u7b2c1\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u30ea\u30f3\u30af\u3057\u3001\u7b2c2\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30e9\u30d9\u30eb
lagoon.name
\u306b\u3066\u7b2c1\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u6307\u5b9a\u3057\u307e\u3059(\u3053\u306e\u4f8b\u3067\u306f\u3001lagoon.name: nginx
\u3068\u6307\u5b9a\u3057\u307e\u3059)\u3002
\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u306fnginx
\u3068php
\u30b3\u30f3\u30c6\u30ca\u3092nginx
\u3068\u547c\u3070\u308c\u308b1\u3064\u306e\u30dd\u30c3\u30c9\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3057\u307e\u3059\u3002
\u8b66\u544a
\u4e00\u5ea6\u30b5\u30fc\u30d3\u30b9\u306elagooon.name
\u3092\u8a2d\u5b9a\u3057\u305f\u3089\u3001\u4fee\u6b63\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u3042\u306a\u305f\u306e\u30b3\u30f3\u30c6\u30ca\u3067\u6df7\u4e71\u3092\u5f15\u304d\u8d77\u3053\u3057\u3001\u4e0d\u6574\u5408\u3092\u5f15\u304d\u8d77\u3053\u3059\u539f\u56e0\u3068\u306a\u308a\u307e\u3059\u3002
Lagoon\u306f\u30012\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u3046\u3061\u3069\u308c\u304c\u5b9f\u969b\u306e\u500b\u3005\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\uff08\u3053\u306e\u5834\u5408\u3001nginx
\u304a\u3088\u3073php
\uff09\u3067\u3042\u308b\u304b\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u884c\u3046\u305f\u3081\u306b\u3001\u30bf\u30a4\u30d7\u306b\u3088\u3063\u3066\u4e0e\u3048\u3089\u308c\u305f\u540d\u524d\u3068\u540c\u3058\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u691c\u7d22\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001nginx-php-persistent
\u306fdocker-compose.yml
\u5185\u306bnginx
\u3068\u3044\u3046\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u3068php
\u3068\u3044\u3046\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u304c1\u3064\u305a\u3064\u5b58\u5728\u3059\u308b\u3053\u3068\u3092\u671f\u5f85\u3057\u307e\u3059\u3002\u4f55\u3089\u304b\u306e\u7406\u7531\u3067\u30b5\u30fc\u30d3\u30b9\u306b\u7570\u306a\u308b\u540d\u524d\u3092\u4f7f\u7528\u3057\u305f\u3044\u5834\u5408\u3001\u307e\u305f\u306fnginx-php-persistent
\u30bf\u30a4\u30d7\u306e\u30dd\u30c3\u30c9\u3092\u8907\u6570\u5fc5\u8981\u3068\u3059\u308b\u5834\u5408\u306b\u306f\u3001\u5b9f\u969b\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306blagoon.deployment.servicetype
\u3068\u3044\u3046\u8ffd\u52a0\u306e\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u4f8b:
docker-compose.ymlnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # \u3053\u308c\u304c\u306a\u3044\u5834\u5408\u3001Lagoon\u306f\u30b3\u30f3\u30c6\u30ca\u540d\u3001\u3064\u307e\u308a\u3053\u306e\u5834\u5408\u306fnginx\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\nlagoon.deployment.servicetype: nginx\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092Lagoon\u306eNGINX\u30dd\u30c3\u30c9\u306e\u4e00\u90e8\u306b\u3057\u307e\u3059\u3002\nlagoon.deployment.servicetype: php\n
\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u540d\u306fnginx
\u3068php
\u3067\u3059(\u597d\u304d\u306a\u540d\u524d\u3092\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002lagoon.name
\u306fLagoon\u306b\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u4e00\u7dd2\u306e\u30dd\u30c3\u30c9\u306b\u3059\u3079\u304d\u3092\u4f1d\u3048\u307e\u3059 - \u540c\u3058\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u3059\u3079\u3066\u4e00\u7dd2\u306e\u30dd\u30c3\u30c9\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002
Lagoon\u306f\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u304cnginx
\u3001php
\u3067\u3042\u308b\u304b\u3092\u8a8d\u8b58\u3059\u308b\u305f\u3081\u306b\u3001lagoon.deployment.servicetype: nginx
\u304a\u3088\u3073lagoon.deployment.servicetype: php
\u3068\u5b9a\u7fa9\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#helm-templates-kubernetes-only","title":"Helm\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 (Kubernetes\u306e\u307f)","text":"Lagoon\u306fKubernetes\u3067\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4f5c\u6210\u306bHelm\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u3092\u884c\u3046\u305f\u3081\u306b\u3001\u4e00\u9023\u306e\u30c1\u30e3\u30fc\u30c8\u304cbuild-deploy-tool
\u30a4\u30e1\u30fc\u30b8\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#custom-rollout-monitor-types","title":"\u30ab\u30b9\u30bf\u30e0\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30e2\u30cb\u30bf\u30fc\u30bf\u30a4\u30d7","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Lagoon\u306f\u30ab\u30b9\u30bf\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u304cKubernetes\u307e\u305f\u306fOpenshift\u5185\u306eDeploymentConfig
\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4ecb\u3057\u3066\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3055\u308c\u308b\u3053\u3068\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u306b\u57fa\u3065\u3044\u3066\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3092\u76e3\u8996\u3057\u307e\u3059\u3002\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u304c\u7570\u306a\u308b\u76e3\u8996\u65b9\u6cd5\u3092\u5fc5\u8981\u3068\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306flagoon.rollout
\u3092\u901a\u3058\u3066\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
deploymentconfig
- \u3053\u308c\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3059\u3002\u30b5\u30fc\u30d3\u30b9\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4e2d\u306eDeploymentConfig
\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u671f\u5f85\u3057\u307e\u3059\u3002 daemonset
- \u30b5\u30fc\u30d3\u30b9\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5185\u306eDaemonset
\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u671f\u5f85\u3057\u307e\u3059\u3002 false
- \u3069\u306e\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3082\u76e3\u8996\u305b\u305a\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u9069\u7528\u3055\u308c\u3001\u30a8\u30e9\u30fc\u3092\u6295\u3052\u306a\u3044\u5834\u5408\u306b\u306e\u307f\u6e80\u8db3\u3057\u307e\u3059\u3002
\u307e\u305f\u3001\u7279\u5b9a\u306e\u74b0\u5883\u306e\u307f\u306b\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3092\u4e0a\u66f8\u304d\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f.lagoon.yml
\u3067\u884c\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#docker-compose-v2-compatibility","title":"Docker Compose v2\u4e92\u63db\u6027","text":"\u30d0\u30b0
\u30ed\u30fc\u30ab\u30eb\u3067Docker Compose V2\u306e\u53e4\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u3068\u3001\u4e00\u90e8\u306e\u65e2\u77e5\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059 - \u3053\u308c\u3089\u306e\u554f\u984c\u306f\u5f8c\u306e\u30ea\u30ea\u30fc\u30b9(v2.17.3\u4ee5\u964d)\u3067\u89e3\u6c7a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30a8\u30e9\u30fc\u306e\u89e3\u6c7a\u7b56\u306f\u901a\u5e38\u3001\u4f7f\u7528\u3057\u3066\u3044\u308bDocker Compose\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u66f4\u65b0\u3059\u308b\u304b(\u307e\u305f\u306f\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b)\u3001\u3042\u308b\u3044\u306f\u4f7f\u7528\u3057\u3066\u3044\u308bDocker Desktop\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u3053\u3068\u3067\u3059\u3002 Docker Desktop\u306e\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u8a73\u3057\u304f\u306f
depends_on\u306e\u30a8\u30e9\u30fc\u3092\u793a\u3059Docker Compose\u51fa\u529bFailed to solve with frontend dockerfile.v0: failed to create LLB definition: pull access denied, repository does not exist or may require authorization\n\n\u307e\u305f\u306f\n\nFailed to solve: drupal9-base-cli: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed`\n
- \u3053\u308c\u3089\u306fDocker Compose v2.13.0\u3067\u89e3\u6c7a\u3055\u308c\u307e\u3059\u3002
- \u3053\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u3001\u30d3\u30eb\u30c9\u304c\u3001\u307e\u3060\u30d3\u30eb\u30c9\u3055\u308c\u3066\u3044\u306a\u3044Docker\u30a4\u30e1\u30fc\u30b8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3088\u3046\u3068\u3057\u305f\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002BuildKit\u306f\u4e26\u5217\u306b\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u3001\u3082\u3057\u3082\u3046\u4e00\u3064\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u7d99\u627f\u3059\u308b\u3082\u306e\u304c\u3042\u308b\u5834\u5408(Drupal\u306eCLI\u306e\u3088\u3046\u306b)\u306f\u3053\u306e\u4e8b\u8c61\u304c\u767a\u751f\u3057\u307e\u3059\u3002
- \u30de\u30eb\u30c1\u30b9\u30c6\u30fc\u30b8\u30d3\u30eb\u30c9\u3068\u3057\u3066\u518d\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001\u30d3\u30eb\u30c9\u5185\u306etarget\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
- \u3059\u3067\u306b\u65b0\u3057\u3044Docker Compose\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30a8\u30e9\u30fc\u306f\u3001docker-container\u30d3\u30eb\u30c9\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092buildx\u3067\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
docker buildx ls
\u304cdocker-container\u30d9\u30fc\u30b9\u306e\u3082\u306e\u3067\u306f\u306a\u304f\u3001docker builder\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u3068\u3057\u3066\u8868\u793a\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002Docker buildx\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u3053\u3061\u3089\u3067\u3059.
volumes_from\u30a8\u30e9\u30fc\u3092\u793a\u3059Docker Compose\u51fa\u529bno such service: container:amazeeio-ssh-agent\n
- \u3053\u306e\u554f\u984c\u306fDocker Compose v2.17.3\u3067\u89e3\u6c7a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
- \u3053\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u30b3\u30f3\u30c6\u30ca\u3078\u306eSSH\u30a2\u30af\u30bb\u30b9\u3092\u63d0\u4f9b\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u304c\u3001\u3042\u306a\u305f\u306eDocker Compose\u30b9\u30bf\u30c3\u30af\u306e\u5916\u90e8\u3067\u5b9f\u884c\u3055\u308c\u3001\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
- \u3042\u306a\u305f\u306e\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u304b\u3089SSH\u30a2\u30af\u30bb\u30b9\u304c\u5fc5\u8981\u306a\u3044\u5834\u5408\u3001
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#buildkit-and-lagoon","title":"BuildKit\u3068Lagoon","text":"BuildKit\u306f\u3001\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u52b9\u7387\u7684\u3067\u8868\u73fe\u529b\u8c4a\u304b\u3067\u7e70\u308a\u8fd4\u3057\u5229\u7528\u53ef\u80fd\u306a\u65b9\u6cd5\u3067\u30d3\u30eb\u30c9\u6210\u679c\u7269\u306b\u5909\u63db\u3059\u308b\u305f\u3081\u306e\u30c4\u30fc\u30eb\u30ad\u30c3\u30c8\u3067\u3059\u3002
Lagoon v2.11.0\u306e\u30ea\u30ea\u30fc\u30b9\u306b\u3088\u308a\u3001Lagoon\u306f\u3088\u308a\u9ad8\u5ea6\u306aBuildKit\u30d9\u30fc\u30b9\u306edocker-compose\u30d3\u30eb\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u74b0\u5883\u3067BuildKit\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u74b0\u5883\u306bDOCKER_BUILDKIT=1
\u3092\u30d3\u30eb\u30c9\u6642\u306e\u5909\u6570\u3068\u3057\u3066\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#docker-compose-errors-in-lagoon-builds","title":"Lagoon\u30d3\u30eb\u30c9\u3067\u306eDocker Compose\u30a8\u30e9\u30fc","text":"Docker Compose\u3067\u4e00\u822c\u7684\u306a\u30d3\u30eb\u30c9\u30a8\u30e9\u30fc\u306e\u89e3\u6c7a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001Lagoon\u30d3\u30eb\u30c9\u30a8\u30e9\u30fc\u30da\u30fc\u30b8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#common-docker-compose-issues","title":"\u3088\u304f\u3042\u308bDocker Compose\u306e\u554f\u984c","text":"\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u4e00\u822c\u7684\u306aDocker Compose\u306e\u30a8\u30e9\u30fc\u3068\u305d\u306e\u5bfe\u51e6\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u3067\u767a\u751f\u3059\u308b\u304b\u3001\u307e\u305f\u306fLagoon\u30d3\u30eb\u30c9\u30a8\u30e9\u30fc\u3068\u8b66\u544a\u3068\u3057\u3066\u767a\u751f\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#dual-mapping-keys","title":"\u4e8c\u91cd\u30de\u30c3\u30d4\u30f3\u30b0\u30ad\u30fc","text":"\u30de\u30c3\u30d4\u30f3\u30b0\u30ad\u30fc\u306e\u30a8\u30e9\u30fc\u3092\u793a\u3059Docker Compose\u306e\u51fa\u529bERR: yaml: unmarshal errors: line 22: mapping key \"<<\" already defined at line 21\n
Lagoon\u306e\u521d\u671f\u30ea\u30ea\u30fc\u30b9\u3067\u306f\u3001\u30dc\u30ea\u30e5\u30fc\u30e0\u3068\u30e6\u30fc\u30b6\u30fc\u30b3\u30fc\u30c9\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u3001\u30b5\u30fc\u30d3\u30b9\u306bYAML\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u30da\u30a2\u304c\u6dfb\u4ed8\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u3002Docker Compose\u306e\u65b0\u3057\u3044\u30ea\u30ea\u30fc\u30b9\u3067\u306f\u3001\u3053\u308c\u3092\u30a8\u30e9\u30fc\u3068\u3057\u3066\u5831\u544a\u3057\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u4f8b\u304c\u73fe\u5728\u66f4\u65b0\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u306e\u3001\u66f4\u65b0\u304c\u5fc5\u8981\u306a\u53e4\u3044\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
\u3053\u306e\u30a8\u30e9\u30fc\u306f\u3001Docker Compose\u304c\u914d\u5217\u306b\u4f55\u3092\u633f\u5165\u3057\u3066\u3044\u308b\u306e\u304b\u5206\u304b\u3089\u306a\u3044\u305f\u3081\u3001\u91cd\u8907\u3057\u3066\u3044\u308b\u3068\u4eee\u5b9a\u3057\u3066\u767a\u751f\u3057\u307e\u3059\u3002
\u3042\u306a\u305f\u306edocker-compose.yml
\u304c\u3053\u306e(\u307e\u305f\u306f\u985e\u4f3c\u306e)\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u3092\u4e00\u3064\u4ee5\u4e0a\u542b\u3093\u3067\u3044\u308b\u5834\u5408\u3001\u3042\u306a\u305f\u306f\u5f71\u97ff\u3092\u53d7\u3051\u307e\u3059\u3002
\u4e8c\u91cd\u30de\u30c3\u30d4\u30f3\u30b0\u30ad\u30fc\u3092\u542b\u3080Docker Compose\u306e\u30a8\u30e9\u30fc...\n<< : [*default-volumes]\n<< : [*default-user]\n...\n
\u4fee\u6b63\u7248\u3067\u306f\u3001\u4e21\u65b9\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u30921\u3064\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u30ad\u30fc\u306b\u7d71\u5408\u3057\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u7b87\u6240\u3092\u5bfe\u51e6\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
Docker Compose\u306b\u304a\u3051\u308b\u8907\u6570\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u30de\u30c3\u30d4\u30f3\u30b0\u30ad\u30fc\u306e\u6b63\u3057\u3044\u633f\u5165\u65b9\u6cd5...\n<< : [*default-volumes, *default-user]\n...\n
"},{"location":"ja/concepts-basics/lagoon-yml/","title":".lagoon.yml","text":".lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306e\u4e2d\u5fc3\u3068\u306a\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u64cd\u4f5c\u3092\u884c\u3046\u305f\u3081\u306e\u8a2d\u5b9a\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059:
- \u30b5\u30a4\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u30eb\u30fc\u30c8\u3092\u5b9a\u7fa9\u3059\u308b
- \u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b
- \u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b
- SSL\u8a3c\u660e\u66f8\u3092\u8a2d\u5b9a\u3059\u308b
- \u74b0\u5883\u306e\u305f\u3081\u306ecron\u30b8\u30e7\u30d6\u3092\u8ffd\u52a0\u3059\u308b
.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30eb\u30fc\u30c8\u306b\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#_1","title":"\u6c4e\u7528\u7684\u306a\u8a2d\u5b9a","text":""},{"location":"ja/concepts-basics/lagoon-yml/#docker-compose-yaml","title":"docker-compose-yaml
","text":"\u3053\u306e\u8a2d\u5b9a\u306f\u3001\u30d3\u30eb\u30c9\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u3069\u306eDocker Compose YAML\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3079\u304d\u304b\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u30b3\u30f3\u30c6\u30ca\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3079\u304d\u304b\u3092\u628a\u63e1\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3068\u3057\u3066 docker-compose.yml
\u3092\u6307\u3057\u307e\u3059\u304c\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u7279\u5b9a\u306eLagoon Docker Compose YAML\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#environment_variablesgit_sha","title":"environment_variables.git_sha
","text":"\u3053\u306e\u8a2d\u5b9a\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305fGit SHA\u3092\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3053\u308c\u306f\u7121\u52b9\u3067\u3059\u3002\u5024\u3092 true
\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001SHA\u304c\u74b0\u5883\u5909\u6570 LAGOON_GIT_SHA
\u3068\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#routes","title":"\u30eb\u30fc\u30c8","text":"\u30eb\u30fc\u30c8\u306f\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u30b5\u30fc\u30d3\u30b9\u3078\u8ee2\u9001\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059 \u3002\u74b0\u5883\u5185\u306e\u5404\u30b5\u30fc\u30d3\u30b9\u306b\u306f\u30eb\u30fc\u30c8\u304c\u3042\u308a\u3001\u30c9\u30e1\u30a4\u30f3\u540d\u306f\u624b\u52d5\u307e\u305f\u306f\u81ea\u52d5\u3067\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u306e routes
\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u306f\u3001\u3059\u3079\u3066\u306e\u74b0\u5883\u306e\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c8\u306b\u5bfe\u3057\u3066\u9069\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#routesautogenerate","title":"routes.autogenerate
","text":"\u30eb\u30fc\u30c8\u3092\u81ea\u52d5\u7684\u306b\u4f5c\u6210\u3059\u308b\u3088\u3046\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002\u624b\u52d5\u30eb\u30fc\u30c8\u306f\u74b0\u5883\u3054\u3068\u306b\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002
enabled
: \u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u3092\u7121\u52b9\u306b\u3059\u308b\u306b\u306f\u3001false
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306ftrue
\u3067\u3059\u3002 allowPullrequests
: \u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u305f\u3081\u306b enabled: false
\u3092\u4e0a\u66f8\u304d\u3059\u308b\u306b\u306f\u3001true
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002.lagoon.ymlroutes:\nautogenerate:\nenabled: false\nallowPullrequests: true\n
insecure
: HTTP\u63a5\u7d9a\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306fAllow
\u3067\u3059\u3002 Allow
: \u30eb\u30fc\u30c8\u306fHTTP\u3068HTTPS\u306e\u4e21\u65b9\u306b\u5fdc\u7b54\u3057\u307e\u3059\u3002 Redirect
: \u30eb\u30fc\u30c8\u306f\u4efb\u610f\u306eHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092HTTPS\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002
-
prefixes
: \u5404\u74b0\u5883\u306e\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u306e\u30d7\u30ec\u30d5\u30a3\u30af\u30b9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u8a00\u8a9e\u30d7\u30ec\u30d5\u30a3\u30af\u30b9\u30c9\u30e1\u30a4\u30f3\u3084Drupal\u306edomain
\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u305f\u30de\u30eb\u30c1\u30c9\u30e1\u30a4\u30f3\u30b5\u30a4\u30c8\u306a\u3069\u306b\u4fbf\u5229\u3067\u3059\u3002
.lagoon.yml routes:\nautogenerate:\nprefixes:\n- www\n- de\n- fr\n- it\n
"},{"location":"ja/concepts-basics/lagoon-yml/#tasks","title":"\u30bf\u30b9\u30af","text":"\u5b9a\u7fa9\u53ef\u80fd\u306a\u30bf\u30b9\u30af\u306b\u306f\u8907\u6570\u306e\u7a2e\u985e\u304c\u3042\u308a\u3001\u305d\u308c\u3089\u306f\u30d3\u30eb\u30c9\u30d5\u30ed\u30fc\u306e\u4e2d\u306e\u3069\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u5b9f\u884c\u3055\u308c\u308b\u304b\u304c\u7570\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#pre-rollout-tasks-pre_rolloutirun","title":"\u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af - pre_rollout.[i].run
","text":"\u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u6b63\u5e38\u306b\u30d3\u30eb\u30c9\u3055\u308c\u305f\u5f8c\u3001\u304b\u3064\u3001\u4ee5\u4e0b\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u306e\u524d\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3059\u308b\u30bf\u30b9\u30af\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- \u65b0\u898f\u306b\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3067\u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u66f4\u65b0\u3055\u308c\u308b
- \u65e2\u5b58\u306e\u74b0\u5883\u306b\u4ed6\u306e\u5909\u66f4\u304c\u52a0\u3048\u3089\u308c\u308b
\u3053\u306e\u6a5f\u80fd\u3092\u5229\u7528\u3059\u308b\u3068\u3001\u305f\u3068\u3048\u3070\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u66f4\u65b0\u3059\u308b\u524d\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u3092\u4f5c\u6210\u3059\u308b\u306a\u3069\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306e\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002
\u60c5\u5831
\u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u306f\u3001\u66f4\u65b0\u524d\u306e\u65e2\u5b58\u306e\u30dd\u30c3\u30c9\u5185\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u3064\u307e\u308a:
- \u6700\u5f8c\u306e\u30c7\u30d7\u30ed\u30a4\u4ee5\u964d\u306bDockerfile\u306b\u52a0\u3048\u3089\u308c\u305f\u5909\u66f4\u306f\u3001\u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u304c\u5b9f\u884c\u3055\u308c\u308b\u3068\u304d\u306b\u306f\u53cd\u6620\u3055\u308c\u307e\u305b\u3093\u3002
- \u65e2\u5b58\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u306a\u3044\u5834\u5408(\u4f8b\u3048\u3070\u3001\u65b0\u3057\u3044\u74b0\u5883\u306e\u521d\u671f\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u6642\u306a\u3069)\u3001\u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u306f\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#post-rollout-tasks-post_rolloutirun","title":"\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af - post_rollout.[i].run
","text":"\u4ee5\u4e0b\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u306e\u5f8c\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u30bf\u30b9\u30af\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- \u5168\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u6b63\u5e38\u306b\u30d3\u30eb\u30c9\u3055\u308c\u308b
- \u5168\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u65b0\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u3067\u66f4\u65b0\u3055\u308c\u308b
readiness
\u30c1\u30a7\u30c3\u30af\u3092\u901a\u904e\u3057\u3001\u5168\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u7a3c\u50cd\u3059\u308b
\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u306e\u4e00\u822c\u7684\u306a\u4f7f\u7528\u4f8b\u306b\u306f\u3001drush updb
\u3001drush cim
\u306e\u5b9f\u884c\u3084\u3001\u3055\u307e\u3056\u307e\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30a2\u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002
name
- \u540d\u524d\u306f\u3001\u30ed\u30b0\u5185\u306e\u5404\u30bf\u30b9\u30af\u3092\u8b58\u5225\u3059\u308b\u305f\u3081\u306e\u4efb\u610f\u306e\u30e9\u30d9\u30eb\u3067\u3059\u3002
command
- \u3053\u3053\u3067\u306f\u3001\u5b9f\u884c\u3059\u308b\u3079\u304d\u30b3\u30de\u30f3\u30c9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3001\u5404\u30b3\u30f3\u30c6\u30ca\u306eWORKDIR\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002Lagoon\u306e\u30a4\u30e1\u30fc\u30b8\u306e\u5834\u5408\u3001\u3053\u308c\u306f
/app
\u3067\u3059\u3002\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u7279\u5b9a\u306e\u5834\u6240\u306bcd
\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u3092\u5ff5\u982d\u306b\u7f6e\u3044\u3066\u304f\u3060\u3055\u3044\u3002
service
- \u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002Drupal\u306e\u4f8b\u306b\u5f93\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u308c\u306fCLI\u30b3\u30f3\u30c6\u30ca\u306b\u306a\u308a\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u306e\u30b3\u30fc\u30c9\u3001\u30d5\u30a1\u30a4\u30eb\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u304c\u3059\u3079\u3066\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3089\u3067\u3059\u3002\u901a\u5e38\u3001\u3053\u308c\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
container
- \u30b5\u30fc\u30d3\u30b9\u304c\u8907\u6570\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408(\u4f8b:
nginx-php
)\u3001\u30dd\u30c3\u30c9\u5185\u3067\u63a5\u7d9a\u3059\u308b\u30b3\u30f3\u30c6\u30ca\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059(\u4f8b:nginx
\u30dd\u30c3\u30c9\u5185\u306ephp
\u30b3\u30f3\u30c6\u30ca)\u3002
shell
- \u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u30b7\u30a7\u30eb\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f
sh
\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u304c\u3001\u30b3\u30f3\u30c6\u30ca\u304c\u4ed6\u306e\u30b7\u30a7\u30eb(bash
\u306a\u3069)\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408\u306fsh
\u4ee5\u5916\u306e\u30b7\u30a7\u30eb\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u5185\u3067if/else\u3092\u4f7f\u3063\u305f\u5c0f\u3055\u306abash\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306b\u4fbf\u5229\u3067\u3059\u3002\u8907\u6570\u884c\u306b\u308f\u305f\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u8a18\u8ff0\u3059\u308b\u65b9\u6cd5\u3092\u5b66\u3076\u306b\u306f\u4ee5\u4e0b\u306e\u4f8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
when
- \u30bf\u30b9\u30af\u306e\u6761\u4ef6\u4ed8\u304d\u5b9f\u884c\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u304b\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001true/false\u306b\u8a55\u4fa1\u3055\u308c\u308b\u5f0f\u3067\u3042\u308b\u3053\u3068\u3092\u671f\u5f85\u3055\u308c\u307e\u3059\u3002
\u6ce8: \u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u4e2d\u306bpre/post-rollout\u30bf\u30b9\u30af\u3092\u4e00\u6642\u7684\u306b\u7121\u52b9\u306b\u3057\u305f\u3044\u5834\u5408\u306f\u3001API\u3067\u4ee5\u4e0b\u306e\u74b0\u5883\u5909\u6570\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u307e\u305f\u306f\u74b0\u5883\u306b\u8a2d\u5b9a\u3057\u307e\u3059\uff08\u74b0\u5883\u5909\u6570\u306e\u8a2d\u5b9a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3053\u3053\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\uff09\u3002
LAGOON_PREROLLOUT_DISABLED=true
LAGOON_POSTROLLOUT_DISABLED=true
"},{"location":"ja/concepts-basics/lagoon-yml/#example-post-rollout-tasks","title":"post-rollout\u30bf\u30b9\u30af\u306e\u4f8b","text":"\u4ee5\u4e0b\u306f\u3044\u304f\u3064\u304b\u306e\u6709\u7528\u306apost-rollout\u30bf\u30b9\u30af\u306e\u4f8b\u3067\u3059\u3002
Drupal\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306b\u306e\u307f\u5b9f\u884c\u3059\u308b\u30bf\u30b9\u30af:
.lagoon.yml- run:\n name: IF no Drupal installed\n command: | # (1)\nif tables=$(drush sqlq \"show tables like 'node';\") && [ -z \"$tables\" ]; then\n#### whatever you like\nfi\nservice: cli\n shell: bash\n
\u30d6\u30e9\u30f3\u30c1\u540d\u306b\u57fa\u3065\u3044\u3066\u5b9f\u884c\u3059\u308b\u30bf\u30b9\u30af:
.lagoon.yml- run:\nname: Different tasks based on branch name\ncommand: |\n### Runs if current branch is not 'production'\nservice: cli\nwhen: LAGOON_GIT_BRANCH != \"production\"\n
\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c:
.lagoon.yml- run:\nname: Run Script\ncommand: './scripts/script.sh'\nservice: cli\n
\u30dd\u30c3\u30c9\u5185\u306e\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u5bfe\u8c61\u306b\u3059\u308b:
.lagoon.yml- run:\nname: show php env variables\ncommand: env\nservice: nginx\ncontainer: php\n
Drupal & Drush 9: \u30de\u30b9\u30bf\u30fc\u74b0\u5883\u304b\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u30d5\u30a1\u30a4\u30eb\u3092\u540c\u671f:
.lagoon.yml- run:\n name: Sync DB and Files from master if we are not on master\n command: |\n# Only if we don't have a database yet\nif tables=$(drush sqlq 'show tables;') && [ -z \"$tables\" ]; then\ndrush sql-sync @lagoon.master @self # (1)\ndrush rsync @lagoon.master:%files @self:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n fi\nservice: cli\n when: LAGOON_ENVIRONMENT_TYPE != \"production\"\n
- \u3053\u3053\u3067\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u9069\u3057\u305f\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#backup-retention","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4fdd\u6301\u671f\u9593 ( #backup-retention }","text":""},{"location":"ja/concepts-basics/lagoon-yml/#backup-retentionproductionmonthly","title":"backup-retention.production.monthly
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eproduction\u74b0\u5883\u306e\u6708\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4fdd\u6301\u6570\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
\u3053\u306e\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 1
\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#backup-retentionproductionweekly","title":"backup-retention.production.weekly
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eproduction\u74b0\u5883\u306e\u9031\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4fdd\u6301\u6570\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
\u3053\u306e\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 6
\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#backup-retentionproductiondaily","title":"backup-retention.production.daily
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eproduction\u74b0\u5883\u306e\u65e5\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4fdd\u6301\u6570\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
\u3053\u306e\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 7
\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#backup-retentionproductionhourly","title":"backup-retention.production.hourly
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eproduction\u74b0\u5883\u306e\u6bce\u6642\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4fdd\u6301\u6570\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
\u3053\u306e\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 0
\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#backup-schedule","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb","text":""},{"location":"ja/concepts-basics/lagoon-yml/#backup-scheduleproduction","title":"backup-schedule.production
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001Minute
\u30d6\u30ed\u30c3\u30af\u306f M
\u3067\u306a\u3051\u308c\u3070\u306a\u3089\u305a\u3001\u4ed6\u306e\u5024\u306f Lagoon \u30d3\u30eb\u30c9\u306b\u5931\u6557\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u306f\u3053\u308c\u3089\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u4f55\u5206\u306b\u884c\u3046\u304b\u30e9\u30f3\u30c0\u30e0\u306b\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u30e6\u30fc\u30b6\u30fc\u306f\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306e\u6b8b\u308a\u306e\u90e8\u5206\u3092\u6642\u9593\u5358\u4f4d\u3067\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002
\u3053\u306e\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u30c7\u30d5\u30a9\u30eb\u30c8\u306f M H(22-2) * * *
\u3067\u3059\u3002\u6ce8\u610f\u3057\u3066\u9802\u304d\u305f\u3044\u306e\u306f\u3001 \u3053\u308c\u3089\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u3001\u30af\u30e9\u30b9\u30bf\u306e\u30ed\u30fc\u30ab\u30eb\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#environments","title":"\u74b0\u5883","text":"\u74b0\u5883\u540d\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u540d\u3084\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u540d\u3068\u4e00\u81f4\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5404\u74b0\u5883\u3067\u7570\u306a\u308b\u8a2d\u5b9a\u3092\u6301\u3064\u3053\u3068\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u306e\u4f8b\u3067\u306f\u3001main
\u3068staging
\u74b0\u5883\u306b\u9069\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#environmentsnameroutes","title":"environments.[name].routes
","text":"\u624b\u52d5\u30eb\u30fc\u30c8\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u3078\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u6307\u793a\u3059\u308b\u305f\u3081\u306b\u74b0\u5883\u3054\u3068\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30c9\u30e1\u30a4\u30f3\u540d\u3067\u3059\u3002\u3059\u3079\u3066\u306e\u74b0\u5883\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u3001\u624b\u52d5\u30eb\u30fc\u30c8\u306f\u901a\u5e38\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u30e1\u30a4\u30f3\u30c9\u30e1\u30a4\u30f3(www.example.com
\u306a\u3069)\u3092\u4f7f\u7528\u3057\u3066\u672c\u756a\u74b0\u5883\u3067\u306e\u307f\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
\u30d2\u30f3\u30c8
Lagoon\u306f\u624b\u52d5\u30eb\u30fc\u30c8\u3092\u5236\u5fa1\u3067\u304d\u306a\u3044\u306e\u3067\u3001DNS\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3067DNS\u30ec\u30b3\u30fc\u30c9\u304c\u9069\u5207\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u81ea\u52d5\u30eb\u30fc\u30c8\u3092\u6307\u3059CNAME
\u30ec\u30b3\u30fc\u30c9\u3092\u8a2d\u5b9a\u3067\u304d\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
\u74b0\u5883\u306e\u6b21\u306e\u6700\u521d\u306e\u8981\u7d20\u306f\u30bf\u30fc\u30b2\u30c3\u30c8\u30b5\u30fc\u30d3\u30b9\u3067\u3042\u308a\u3001\u79c1\u305f\u3061\u306e\u4f8b\u3067\u306fnginx
\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u306f\u79c1\u305f\u3061\u304c\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u5165\u3063\u3066\u304f\u308b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u308b\u304b\u3092\u8b58\u5225\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002
\u6700\u3082\u5358\u7d14\u306a\u30eb\u30fc\u30c8\u306f example.com
\u3067\u3001\u3053\u308c\u306f\u79c1\u305f\u3061\u306e\u4f8b\u306e.lagoon.yml
\u3067\u78ba\u8a8d \u3067\u304d\u307e\u3059 - \u8ffd\u52a0\u306e\u8a2d\u5b9a\u304c\u306a\u3044\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u3042\u306a\u305f\u304c\u30eb\u30fc\u30c8\u306b\u5bfe\u3057\u3066Let's Encrypt\u8a3c\u660e\u66f8\u3092\u671b\u3093\u3067\u3044\u308b\u3068\u4eee\u5b9a\u3057\u3001HTTPS\u304b\u3089HTTP\u3078\u306e\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u4ee5\u4e0b\u306e\"www.example.com\"
\u306e\u4f8b\u3067\u306f\u3001\u3055\u3089\u306b3\u3064\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059(\u307e\u305f\u3001\u30eb\u30fc\u30c8\u306e\u7d42\u308f\u308a\u306b\u3042\u308b:
\u3068\u3001\u30eb\u30fc\u30c8\u304c\"
\u3067\u56f2\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u3053\u308c\u306f\u91cd\u8981\u3067\u3059\uff01):
.lagoon.yml- \"www.example.com\":\ntls-acme: true\ninsecure: Redirect\nhstsEnabled: true\n
"},{"location":"ja/concepts-basics/lagoon-yml/#ssl-configuration-tls-acme","title":"SSL\u8a2d\u5b9a tls-acme
","text":"\u8b66\u544a
tls-acme: true
\u304b\u3089tls-acme: false
\u306b\u5207\u308a\u66ff\u3048\u308b\u3068\u3001\u3053\u306e\u30eb\u30fc\u30c8\u306b\u5bfe\u3057\u3066\u4ee5\u524d\u306b\u751f\u6210\u3055\u308c\u305f\u8a3c\u660e\u66f8\u304c\u3059\u3079\u3066\u524a\u9664\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u5916\u90e8\u306eCDN\u3092\u4f7f\u7528\u3057\u3066\u3044\u3066\u8a3c\u660e\u66f8\u306e\u30d4\u30f3\u7559\u3081\u3092\u884c\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u4e88\u671f\u3057\u306a\u3044\u6319\u52d5\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
tls-acme
:Let's Encrypt\u3092\u901a\u3058\u305f\u81ea\u52d5TLS\u8a3c\u660e\u66f8\u751f\u6210\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306ftrue
\u3067\u3001\u81ea\u52d5\u8a3c\u660e\u66f8\u3092\u7121\u52b9\u306b\u3059\u308b\u306b\u306ffalse
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 insecure
:HTTP\u63a5\u7d9a\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306fAllow
\u3067\u3059\u3002 Allow
:\u30eb\u30fc\u30c8\u306fHTTP\u3068HTTPS\u306b\u5fdc\u7b54\u3057\u307e\u3059\u3002 Redirect
:\u30eb\u30fc\u30c8\u306f\u3059\u3079\u3066\u306eHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092HTTPS\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002
hstsEnabled
: Strict-Transport-Security
\u30d8\u30c3\u30c0\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f false
\u3067\u3059\u3002 hstsMaxAge
: max-age
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 31536000
(1 \u5e74)\u3067\u3059\u3002 hstsPreload
: preload
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f false
\u3067\u3059\u3002 hstsIncludeSubdomains
: includeSubDomains
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f false
\u3067\u3059\u3002
\u60c5\u5831
\u8a3c\u660e\u66f8\u8a8d\u8a3c\u6a5f\u95a2(CA)\u306b\u3088\u3063\u3066\u7f72\u540d\u3055\u308c\u305fSSL\u8a3c\u660e\u66f8\u304b\u3089Let's Encrypt\u8a3c\u660e\u66f8\u306b\u5207\u308a\u66ff\u3048\u308b\u4e88\u5b9a\u306e\u5834\u5408\u3001\u79fb\u884c\u3092\u76e3\u8996\u3059\u308b\u305f\u3081\u306bLagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#monitoring-a-specific-path","title":"\u7279\u5b9a\u306e\u30d1\u30b9\u306e\u76e3\u8996","text":"UptimeRobot\u304c\u3042\u306a\u305f\u306e\u30af\u30e9\u30b9\u30bf\u30fc(Kubernetes\u307e\u305f\u306fOpenShift)\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001Lagoon\u306f\u5404\u30eb\u30fc\u30c8/\u30a4\u30f3\u30b0\u30ec\u30b9\u306bannotation\u3092\u8a2d\u5b9a\u3057\u3066stakater/IngressControllerMonitor
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u306f\u30eb\u30fc\u30c8\u306e\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u3092\u76e3\u8996\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u7279\u5b9a\u306e\u30eb\u30fc\u30c8\u3092\u76e3\u8996\u3057\u305f\u3044\u5834\u5408\u3001\u30eb\u30fc\u30c8\u4ed5\u69d8\u306bmonitoring-path
\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3053\u308c\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u3059\u3002\u4e00\u822c\u7684\u306a\u4f7f\u7528\u6cd5\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\u3092\u30d0\u30a4\u30d1\u30b9\u3059\u308b\u76e3\u8996\u7528\u306e\u30d1\u30b9\u3092\u8a2d\u5b9a\u3057\u3001\u30b5\u30a4\u30c8\u306e\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306e\u76e3\u8996\u3092\u53ef\u80fd\u306b\u3059\u308b\u3053\u3068\u3067\u3059\u3002
.lagoon.yml- \"www.example.com\":\nmonitoring-path: \"/bypass-cache\"\n
"},{"location":"ja/concepts-basics/lagoon-yml/#ingress-annotations","title":"Ingress annotations","text":"\u8b66\u544a
\u30eb\u30fc\u30c8/Ingress\u306eannotations\u306f\u3001nginx-ingress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u5b9f\u884c\u3059\u308b\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u307f\u304c\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306fLagoon\u7ba1\u7406\u8005\u306b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
annotations
\u306f\u3001nginx-ingress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308bannotations\u306eYAML\u30de\u30c3\u30d7\u3067\u3059\u3002\u3053\u308c\u306f\u7279\u306b\u3001\u7c21\u5358\u306a\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3084\u4ed6\u306e\u8a2d\u5b9a\u306b\u4fbf\u5229\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#restrictions","title":"\u5236\u9650\u4e8b\u9805","text":"Lagoon\u3067\u306f\u3001\u4e00\u90e8\u306eannotations\u304c\u7981\u6b62\u3055\u308c\u3066\u3044\u308b\u304b\u3001\u307e\u305f\u306f\u90e8\u5206\u7684\u306b\u5236\u9650\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u4ee5\u4e0b\u306e\u8868\u306f\u3001\u3053\u308c\u3089\u306e\u30eb\u30fc\u30eb\u3092\u8aac\u660e\u3057\u3066\u3044\u307e\u3059\u3002
\u3042\u306a\u305f\u306e.lagoon.yml
\u304c\u3053\u308c\u3089\u306eannotations\u306e\u3044\u305a\u308c\u304b\u3092\u542b\u3093\u3067\u3044\u308b\u5834\u5408\u3001\u30d3\u30eb\u30c9\u304c\u5931\u6557\u3059\u308b\u539f\u56e0\u3068\u306a\u308a\u307e\u3059\u3002
\u6ce8\u91c8 \u30ce\u30fc\u30c8 nginx.ingress.kubernetes.io/auth-snippet
\u7981\u6b62 nginx.ingress.kubernetes.io/configuration-snippet
rewrite
\u3001add_header
\u3001set_real_ip
\u3001\u304a\u3088\u3073 more_set_headers
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306b\u5236\u9650\u3055\u308c\u3066\u3044\u307e\u3059\u3002 nginx.ingress.kubernetes.io/modsecurity-snippet
\u7981\u6b62 nginx.ingress.kubernetes.io/server-snippet
rewrite
\u3001add_header
\u3001set_real_ip
\u3001\u304a\u3088\u3073 more_set_headers
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306b\u5236\u9650\u3055\u308c\u3066\u3044\u307e\u3059\u3002 nginx.ingress.kubernetes.io/stream-snippet
\u7981\u6b62 nginx.ingress.kubernetes.io/use-regex
\u7981\u6b62"},{"location":"ja/concepts-basics/lagoon-yml/#ingress-annotations-redirects","title":"Ingress\u306eannotations\u30ea\u30c0\u30a4\u30ec\u30af\u30c8","text":"\u3053\u306e\u4f8b\u3067\u306f\u3001example.ch
\u3078\u306e\u4efb\u610f\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u3001\u30d5\u30a9\u30eb\u30c0\u30fc\u3084\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4fdd\u6301\u3057\u305f\u307e\u307e https://www.example.ch
\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3055\u308c\u307e\u3059(example.com/folder?query
-> https://www.example.ch/folder?query
)\u3002
.lagoon.yml- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\n
Lagoon\u306b\u30db\u30b9\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u4ed6\u306e\u4efb\u610f\u306eURL\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002 \u4ee5\u4e0b\u306fexample.de
\u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092https://www.google.com
\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002
.lagoon.yml- \"example.de\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.google.com\n
"},{"location":"ja/concepts-basics/lagoon-yml/#trusted-reverse-proxies","title":"\u4fe1\u983c\u3055\u308c\u308b\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7","text":"\u8b66\u544a
Kubernetes\u306f\u5358\u4e00\u306enginx.ingress.kubernetes.io/server-snippet
\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u307f\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\u975e\u672c\u756a\u74b0\u5883\u306e\u30eb\u30fc\u30c8\u3067\u3053\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001add_header X-Robots-Tag \"noindex, nofollow\";
\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3082\u30b5\u30fc\u30d0\u30fc\u30b9\u30cb\u30da\u30c3\u30c8\u306e\u4e00\u90e8\u3068\u3057\u3066\u542b\u3081\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u3001\u958b\u767a\u74b0\u5883\u3067\u30ed\u30dc\u30c3\u30c8\u304c\u30af\u30ed\u30fc\u30eb\u3059\u308b\u306e\u3092\u9632\u3050\u305f\u3081\u306b\u5fc5\u8981\u3067\u3059\u3002ingress\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u958b\u767a\u74b0\u5883\u3067\u3053\u308c\u3092\u9632\u3050\u305f\u3081\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30c7\u30d5\u30a9\u30eb\u30c8\u306eserver-snippet\u306f\u3001.lagoon.yml
\u306b\u8a2d\u5b9a\u3055\u308c\u305fserver-snippets
\u306b\u3088\u3063\u3066\u4e0a\u66f8\u304d\u3055\u308c\u307e\u3059\u3002
\u4e00\u90e8\u306e\u8a2d\u5b9a\u3067\u306f\u3001\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7(CDN\u306a\u3069)\u304cKubernetes\u30af\u30e9\u30b9\u30bf\u306e\u524d\u306b\u914d\u7f6e\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u3067\u306f\u3001\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u306eIP\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306eREMOTE_ADDR
HTTP_X_REAL_IP
HTTP_X_FORWARDED_FOR
\u30d8\u30c3\u30c0\u30fc\u30d5\u30a3\u30fc\u30eb\u30c9\u3068\u3057\u3066\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u30ea\u30af\u30a8\u30b9\u30bf\u30fc\u306e\u30aa\u30ea\u30b8\u30ca\u30ebIP\u306fHTTP_X_ORIGINAL_FORWARDED_FOR
\u30d8\u30c3\u30c0\u30fc\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002
\u3042\u306a\u305f\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u30ea\u30af\u30a8\u30b9\u30c8IP\u3092\u5fc5\u8981\u3068\u3059\u308b\u5834\u5408\u3001 REMOTE_ADDR
HTTP_X_FORWARDED_FOR
HTTP_X_REAL_IP
\u30d8\u30c3\u30c0\u30fc\u306b\u5143\u306eIP\u304c\u8868\u793a\u3055\u308c\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001\u4fe1\u983c\u3059\u308b\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u306eIP\u3092\u30a4\u30f3\u30b0\u30ec\u30b9\u306b\u4f1d\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
.lagoon.yml- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/server-snippet: |\nset_real_ip_from 1.2.3.4/32;\n
\u3053\u306e\u4f8b\u3067\u306f\u3001CIDR 1.2.3.4/32
(\u3053\u306e\u5834\u5408\u306fIP 1.2.3.4
)\u3092\u4fe1\u983c\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001IP 1.2.3.4
\u304b\u3089Kubernetes\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u9001\u4fe1\u3055\u308c\u308b\u3068\u3001X-Forwarded-For
\u30d8\u30c3\u30c0\u30fc\u304c\u5206\u6790\u3055\u308c\u3001\u305d\u306e\u5185\u5bb9\u304c REMOTE_ADDR
HTTP_X_REAL_IP
HTTP_X_FORWARDED_FOR
\u30d8\u30c3\u30c0\u30fc\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#environmentsnametypes","title":"Environments.[name].types
","text":"Lagoon\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089lagoon.type
\u30e9\u30d9\u30eb\u3092\u8abf\u3079\u3066\u3001\u3069\u306e\u7a2e\u985e\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3079\u304d\u304b\u3092\u5b66\u7fd2\u3057\u307e\u3059(docker-compose.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u5168\u74b0\u5883\u3067\u306f\u306a\u304f\u3001\u5358\u4e00\u306e\u74b0\u5883\u3060\u3051\u3067type\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3082\u3057\u3001\u30b5\u30fc\u30d3\u30b9\u30d6\u30ed\u30fc\u30ab\u30fc/\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306b\u5171\u6709\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u305b\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u958b\u767a\u74b0\u5883\u3067\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eMariaDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002
service-name: service-type
service-name
\u306f\u3001docker-compose.yml
\u304b\u3089\u4e0a\u66f8\u304d\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3067\u3059 service-type
\u306f\u3001\u4e0a\u66f8\u304d\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3067\u3059
MariaDB_Galera\u306e\u8a2d\u5b9a\u4f8b:
.lagoon.ymlenvironments:\ndevelop:\ntypes:\nmariadb: mariadb-single\n
"},{"location":"ja/concepts-basics/lagoon-yml/#environmentsnametemplates","title":"environments.[name].templates
","text":"Lagoon\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089lagoon.template
\u30e9\u30d9\u30eb\u3092\u8abf\u3079\u3066\u3001\u30b5\u30fc\u30d3\u30b9\u304c\u30ab\u30b9\u30bf\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u5fc5\u8981\u3068\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059(docker-compose.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u306f\u306a\u304f\u3001\u7279\u5b9a\u306e\u74b0\u5883\u3060\u3051\u3067\u4e0a\u66f8\u304d\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059:
service-name: template-file
service-name
\u306f\u3001docker-compose.yml
\u304b\u3089\u4e0a\u66f8\u304d\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3067\u3059\u3002 template-file
\u306f\u3001\u3053\u306e\u74b0\u5883\u3067\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u4f7f\u7528\u3059\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30d1\u30b9\u3068\u540d\u524d\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#example-template-override","title":"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4e0a\u66f8\u304d\u306e\u4f8b","text":".lagoon.ymlenvironments:\nmain:\ntemplates:\nmariadb: mariadb.main.deployment.yml\n
"},{"location":"ja/concepts-basics/lagoon-yml/#environments-name-rollouts","title":"environments.[name].rollouts
","text":"Lagoon\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9 lagoon.rollout
\u30e9\u30d9\u30eb\u3092docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8abf\u3079\u3066\u3001\u30b5\u30fc\u30d3\u30b9\u304c\u7279\u5225\u306a\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30a4\u30d7\u3092\u5fc5\u8981\u3068\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059(docker-compose.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u7279\u306b\u74b0\u5883\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30bf\u30a4\u30d7\u3092\u4e0a\u66f8\u304d\u3057\u305f\u5834\u5408\u306b\u306f\u3001\u5358\u4e00\u306e\u74b0\u5883\u3060\u3051\u3067\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30a4\u30d7\u3092\u4e0a\u66f8\u304d\u3057\u305f\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002
service-name: rollout-type
service-name
\u306f\u3001\u4e0a\u66f8\u304d\u3057\u305f\u3044docker-compose.yml
\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3067\u3059\u3002 rollout-type
\u306f\u3001\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u306e\u30bf\u30a4\u30d7\u3067\u3059\u3002\u53ef\u80fd\u306a\u5024\u306b\u3064\u3044\u3066\u306f\u3001docker-compose.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#custom-rollout-type-example","title":"\u30ab\u30b9\u30bf\u30e0\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30a4\u30d7\u306e\u4f8b","text":".lagoon.ymlenvironments:\nmain:\nrollouts:\nmariadb: statefulset\n
"},{"location":"ja/concepts-basics/lagoon-yml/#environmentsnameautogenerateroutes","title":"environments.[name].autogenerateRoutes
","text":"\u30eb\u30fc\u30c8\u306e\u81ea\u52d5\u751f\u6210\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3067\u3082\u3001\u74b0\u5883\u3054\u3068\u306b\u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
.lagoon.ymlroutes:\nautogenerate:\nenabled: false\nenvironments:\ndevelop:\nautogenerateRoutes: true\n
"},{"location":"ja/concepts-basics/lagoon-yml/#environmentsnamecronjobs","title":"environments.[name].cronjobs
","text":"Cron\u30b8\u30e7\u30d6\u306f\u3001\u901a\u5e38\u3001\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u540c\u3058\u3082\u306e\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u671b\u307e\u3057\u304f\u306a\u3044\u305f\u3081\u3001\u5404\u74b0\u5883\u3067\u660e\u793a\u7684\u306b\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5b9a\u7fa9\u3057\u305f\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306b\u3088\u308a\u3001Cron\u30b8\u30e7\u30d6\u306fKubernetes\u30cd\u30a4\u30c6\u30a3\u30d6\u306eCronJob
\u3068\u3057\u3066\u3001\u307e\u305f\u306f\u5b9a\u7fa9\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u306ecrontab\u3092\u4ecb\u3057\u305fin-pod cron\u30b8\u30e7\u30d6\u3068\u3057\u3066\u5b9f\u884c\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#cron-job-example","title":"Cron\u30b8\u30e7\u30d6\u306e\u4f8b","text":".lagoon.ymlcronjobs:\n- name: Hourly Drupal Cron\nschedule: \"M * * * *\" # 1\u6642\u9593\u3054\u3068, \u4f55\u5206\u306a\u306e\u304b\u306f\u30e9\u30f3\u30c0\u30e0.\ncommand: drush cron\nservice: cli\n- name: Nightly Drupal Cron\nschedule: \"M 0 * * *\" # 1\u65e5\u3054\u3068, \u4f55\u5206\u306a\u306e\u304b\u306f\u300100:00\u304b\u308900:59\u306e\u9593\u306e\u30e9\u30f3\u30c0\u30e0.\ncommand: drush cron\nservice: cli\n
name
: \u4ed6\u306ecron\u30b8\u30e7\u30d6\u3068\u533a\u5225\u3057\u3001\u76ee\u7684\u3092\u7279\u5b9a\u3059\u308b\u305f\u3081\u306e\u4efb\u610f\u306e\u540d\u524d -
schedule
: cron\u30b8\u30e7\u30d6\u306e\u5b9f\u884c\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3002Lagoon\u306f\u3001crontab\u5f62\u5f0f\u306e\u62e1\u5f35\u7248\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u69cb\u6587\u304c\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001crontab generator\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u5206\u306b
M
\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001cron\u30b8\u30e7\u30d6\u306f \u30e9\u30f3\u30c0\u30e0\u306a\u5206(\u6bce\u6642\u9593\u540c\u3058\u5206)\u306b1\u6642\u9593\u3054\u3068\u306b\u5b9f\u884c\u3059\u308b\u304b\u3001M/15
\u3092\u6307\u5b9a\u3057\u306615\u5206\u3054\u3068\u306b\u5b9f\u884c\u3059\u308b\u304c\u3001\u6642\u9593\u304b\u3089\u306e\u30e9\u30f3\u30c0\u30e0\u306a\u30aa\u30d5\u30bb\u30c3\u30c8(6,21,36,51
\u306e\u3088\u3046\u306a)\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066cron\u30b8\u30e7\u30d6\u3092\u5206\u6563\u3055\u305b\u308b\u3053\u3068\u306f\u3001\u3059\u3079\u3066\u306e\u30b8\u30e7\u30d6\u3092\u52060
\u3067\u4e00\u6589\u306b\u5b9f\u884c\u3059\u308b\u3088\u308a\u3082\u826f\u3044\u65b9\u6cd5\u3067\u3059\u3002 H
\u3092\u6642\u9593\u306b\u6307\u5b9a\u3059\u308b\u3068\u3001cron\u30b8\u30e7\u30d6\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u6642\u9593(\u6bce\u65e5\u540c\u3058\u6642\u9593)\u306b1\u65e51\u56de\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u307e\u305f\u3001H(2-4)
\u3092\u6307\u5b9a\u3059\u308b\u3068\u30012\u6642\u304b\u30894\u6642\u306e\u9593\u306b1\u65e51\u56de\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002
\u30bf\u30a4\u30e0\u30be\u30fc\u30f3:
- cron\u30b8\u30e7\u30d6\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u306fUTC\u3067\u3059\u3002
- \u30cd\u30a4\u30c6\u30a3\u30d6\u306ecron\u30b8\u30e7\u30d6\u306f\u30ce\u30fc\u30c9\u306e\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528\u3057\u3001\u305d\u308c\u306fUTC\u3067\u3059\u3002
- In-pod\u306ecron\u30b8\u30e7\u30d6\u306f\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528\u3057\u3001UTC\u4ee5\u5916\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
command
:\u5b9f\u884c\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u30b5\u30fc\u30d3\u30b9\u306eWORKDIR
\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002Lagoon\u30a4\u30e1\u30fc\u30b8\u306e\u5834\u5408\u3001\u3053\u308c\u306f/app
\u3067\u3059\u3002
\u8b66\u544a
Cron\u30b8\u30e7\u30d6\u306f\u3001crontab\u3092\u4ecb\u3057\u3066Pod\u5185\u3067\u5b9f\u884c\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u8907\u6570\u884c\u306e\u30b3\u30de\u30f3\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u8907\u96d1\u306a\u307e\u305f\u306f\u8907\u6570\u884c\u306ecron\u30b3\u30de\u30f3\u30c9\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001\u30b3\u30de\u30f3\u30c9\u3068\u3057\u3066\u4f7f\u7528\u53ef\u80fd\u306a\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u7528\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u307e\u305f\u306f\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8 \u30bf\u30b9\u30af \u304c\u6a5f\u80fd\u3059\u308b\u304b\u3069\u3046\u304b\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u5371\u967a
Cron\u30b8\u30e7\u30d6\u306fKubernetes\u306e\u30dd\u30c3\u30c9\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u304c\u3001\u30dd\u30c3\u30c9\u306e\u518d\u30b9\u30b1\u30b8\u30e5\u30fc\u30ea\u30f3\u30b0\u306b\u3088\u308a\u4e2d\u65ad\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u305d\u306e\u305f\u3081\u3001cron\u30b8\u30e7\u30d6\u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u306f\u3001\u6b21\u306ecron\u30a4\u30f3\u30bf\u30fc\u30d0\u30eb\u3067\u30b3\u30de\u30f3\u30c9\u3092\u5b89\u5168\u306b\u4e2d\u65ad\u3057\u3001\u518d\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
service
:\u30b3\u30de\u30f3\u30c9\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u5b9f\u884c\u3059\u308b\u304b\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3053\u308c\u306fcli
\u30b5\u30fc\u30d3\u30b9\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#polysite","title":"\u30dd\u30ea\u30b5\u30a4\u30c8 { #polysite )","text":"Lagoon\u3067\u306f\u3001\u540c\u3058Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8907\u6570\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u3053\u308c\u3092\u30dd\u30ea\u30b5\u30a4\u30c8\u3068\u547c\u3073\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u540c\u3058\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u3092\u5b9f\u884c\u3057\u306a\u304c\u3089\u3001\u7570\u306a\u308b\u72ec\u7acb\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u6c38\u7d9a\u7684\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u8a31\u53ef\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 .lagoon.yml
\u3067\u306f\u3001\u73fe\u5728\u3001\u30dd\u30ea\u30b5\u30a4\u30c8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u305f\u3081\u306e\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306e\u307f\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u6a19\u6e96\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u306e\u4e3b\u306a\u9055\u3044\u306f\u3001environments
\u304c\u4e8c\u6b21\u5143\u8981\u7d20\u3068\u306a\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u304c\u6700\u4e0a\u4f4d\u8981\u7d20\u3068\u306a\u308b\u3053\u3068\u3067\u3059\u3002
\u3053\u308c\u3092\u5229\u7528\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u3092\u8e0f\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
- Lagoon\u306b2\u3064(\u4ee5\u4e0a)\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001\u305d\u308c\u305e\u308c\u306b\u540c\u3058Git URL\u3068\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u30d6\u30e9\u30f3\u30c1\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3042\u306a\u305f\u306e.lagoon.yml\u306b\u5f93\u3063\u3066\u547d\u540d\u3055\u308c\u307e\u3059(\u4f8b:
poly-project1
\u3068 poly-project2
) - \u5404\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
- (\u3082\u3057\u5fc5\u8981\u306a\u3089)\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u3092\u8a2d\u5b9a\u3057\u307e\u3059 - \u305d\u306e\u5f8c\u3001\u30d7\u30c3\u30b7\u30e5/\u30c7\u30d7\u30ed\u30a4\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u30d7\u30c3\u30b7\u30e5\u306f\u3001\u305d\u306eGit URL\u306b\u5bfe\u3059\u308b\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/\u30d6\u30e9\u30f3\u30c1\u3092\u540c\u6642\u306b\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#polysite-example","title":"Polysite\u306e\u4f8b","text":".lagoon.ymlpoly-project1:\nenvironments:\nmain:\nroutes:\n- nginx:\n- project1.com\npoly-project2:\nenvironments:\nmain:\nroutes:\n- nginx:\n- project2.com\n
"},{"location":"ja/concepts-basics/lagoon-yml/#specials","title":"\u7279\u5225\u306a\u9805\u76ee","text":""},{"location":"ja/concepts-basics/lagoon-yml/#api","title":"api
","text":"\u60c5\u5831 amazee.io\u306b\u30db\u30b9\u30c8\u3055\u308c\u305fLagoon\u3067\u76f4\u63a5\u52d5\u4f5c\u3059\u308b\u5834\u5408\u3001\u3053\u306e\u30ad\u30fc\u306f\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
api
\u30ad\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Lagoon CLI\u3068drush
\u304cLagoon GraphQL API\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u5225\u306eURL\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u30b9\u30ad\u30fc\u30e0\u4ed8\u304d\u306e\u5b8c\u5168\u306aURL\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b:http://localhost:3000
\u3053\u308c\u306f\u901a\u5e38\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001Lagoon\u306e\u7ba1\u7406\u8005\u304c\u305d\u3046\u3059\u308b\u3088\u3046\u6307\u793a\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#ssh","title":"ssh
","text":"\u60c5\u5831 amazee.io\u306b\u30db\u30b9\u30c8\u3055\u308c\u305fLagoon\u3067\u76f4\u63a5\u52d5\u4f5c\u3059\u308b\u5834\u5408\u3001\u3053\u306e\u30ad\u30fc\u306f\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
ssh
\u30ad\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Lagoon CLI\u3068drush
\u304cLagoon\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u5225\u306eSSH\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u30b3\u30ed\u30f3\u3067\u533a\u5207\u3089\u308c\u305f\u30db\u30b9\u30c8\u540d\u3068\u30dd\u30fc\u30c8\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b:localhost:2020
\u3053\u308c\u306f\u901a\u5e38\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001Lagoon\u306e\u7ba1\u7406\u8005\u304c\u305d\u3046\u3059\u308b\u3088\u3046\u6307\u793a\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#container-registries","title":"container-registries
","text":"container-registries
\u30d6\u30ed\u30c3\u30af\u3067\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u307e\u305f\u306f\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u306a\u30a4\u30e1\u30fc\u30b8\u3092\u30d7\u30eb\u3059\u308b\u305f\u3081\u306e\u72ec\u81ea\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001username
\u3001password
\u3001\u304a\u3088\u3073\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u30ec\u30b8\u30b9\u30c8\u30ea\u306e url
\u304c\u5fc5\u8981\u3067\u3059\u3002YAML\u3067 url
\u3092\u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067Docker Hub\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u30a8\u30f3\u30c8\u30ea\u306b\u8aac\u660e\u3092\u8ffd\u52a0\u3057\u3066\u3001\u60c5\u5831\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u3044\u304f\u3064\u304b\u306e\u4f8b\u3092\u4ee5\u4e0b\u306b\u793a\u3057\u307e\u3059
\u30ec\u30b8\u30b9\u30c8\u30ea\u30e6\u30fc\u30b6\u30fc\u306b\u4f7f\u7528\u3059\u308b\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u306f2\u3064\u3042\u308a\u307e\u3059\u3002
- API\u3067\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u5b9a\u7fa9\u3059\u308b
- .lagoon.yml\u30d5\u30a1\u30a4\u30eb\u306b\u30cf\u30fc\u30c9\u30b3\u30fc\u30c9\u3059\u308b\uff08\u305f\u3060\u3057\u3001\u3053\u308c\u306f\u63a8\u5968\u3057\u307e\u305b\u3093\uff09
"},{"location":"ja/concepts-basics/lagoon-yml/#environment-variables-method","title":"\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5","text":"\u307e\u305a\u3001.lagoon.yml\u306b\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u30e6\u30fc\u30b6\u30fc\u540d\u3084\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30ab\u30b9\u30bf\u30e0\u30ec\u30b8\u30b9\u30c8\u30ea\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3067\u3082\u3001URL\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u6b21\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3057\u307e\u3059:
.lagoon.ymlcontainer-registries:\ndocker-hub:\ndescription: \"\u30c7\u30d5\u30a9\u30eb\u30c8\u306edocker.io\u30ec\u30b8\u30b9\u30c8\u30ea\u7528\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u74b0\u5883\u5909\u6570\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\"\nmy-custom-registry:\ndescription: \"\u30ab\u30b9\u30bf\u30e0\u30ec\u30b8\u30b9\u30c8\u30ea\u7528\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u74b0\u5883\u5909\u6570\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\"\nurl: my.own.registry.com\nanother-custom-registry:\ndescription: \"\u4ed6\u306e\u30ec\u30b8\u30b9\u30c8\u30ea\u7528\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u74b0\u5883\u5909\u6570\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\"\nusername: myotheruser\nurl: my.other.registry.com\n
.lagoon.yml\u306b\u30e6\u30fc\u30b6\u30fc\u540d\u3092\u5b9a\u7fa9\u3059\u308b\u5834\u5408\u3001\u95a2\u9023\u3059\u308b\u5909\u6570\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305f\u3060\u3057\u3001\u5909\u6570\u3092\u8ffd\u52a0\u3059\u308b\u5834\u5408\u3001\u305d\u306e\u5909\u6570\u306e\u5024\u304c\u512a\u5148\u3055\u308c\u307e\u3059\u3002
\u6b21\u306b\u3001Lagoon API\u3067container_registry
\u30bf\u30a4\u30d7\u306e\u74b0\u5883\u5909\u6570\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
- lagoon add variable -p <\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d> -N <\u30ec\u30b8\u30b9\u30c8\u30ea\u30e6\u30fc\u30b6\u30fc\u306e\u5909\u6570\u540d> -V <\u30e6\u30fc\u30b6\u30fc> -S container_registry
- lagoon add variable -p <\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d> -N <\u30ec\u30b8\u30b9\u30c8\u30ea\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5909\u6570\u540d> -V <\u30d1\u30b9\u30ef\u30fc\u30c9> -S container_registry
- (\u8a73\u3057\u304f\u306f\u74b0\u5883\u5909\u6570\u3092\u53c2\u7167)
\u5909\u6570\u306e\u540d\u524d\u306f.lagoon.yml\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30ec\u30b8\u30b9\u30c8\u30ea\u306e\u540d\u524d\u3068\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6b21\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\uff1a
- \u5927\u6587\u5b57\u3067\u8a18\u8ff0\u3059\u308b
- \u30cf\u30a4\u30d5\u30f3\uff08-\uff09\u3092\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\uff08_\uff09\u306b\u7f6e\u304d\u63db\u3048\u308b
- \u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306bREGISTRY_\u3092\u4ed8\u3051\u308b
- \u30b5\u30d5\u30a3\u30c3\u30af\u30b9\u306b_USERNAME\u307e\u305f\u306f_PASSWORD\u3092\u4ed8\u3051\u308b
\u3044\u304f\u3064\u304b\u306e\u4f8b\u3092\u793a\u3057\u307e\u3059\uff1a
dockerhub
\u306fREGISTRY_DOCKERHUB_USERNAME
\u304a\u3088\u3073REGISTRY_DOCKERHUB_PASSWORD
\u306b\u306a\u308a\u307e\u3059\u3002 docker-hub
\u306fREGISTRY_DOCKER_HUB_USERNAME
\u304a\u3088\u3073REGISTRY_DOCKER_HUB_PASSWORD
\u306b\u306a\u308a\u307e\u3059\u3002 my-custom-registry
\u306fREGISTRY_MY_CUSTOM_REGISTRY_USERNAME
\u304a\u3088\u3073REGISTRY_MY_CUSTOM_REGISTRY_PASSWORD
\u306b\u306a\u308a\u307e\u3059\u3002 - \u30cf\u30a4\u30d5\u30f3\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u5c0f\u6587\u5b57\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\uff08\u4f8b\uff1a
REGISTRY_dockerhub_USERNAME
\uff09\u3082\u52d5\u4f5c\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u5e38\u306b\u5927\u6587\u5b57\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u512a\u5148\u3055\u308c\u307e\u3059\u3002
Legacy method of defining registry password \u4ee5\u524d\u306f\u3001\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3057\u305f\u3002\u3053\u306e\u5834\u5408\u3001\u5909\u6570\u540d\u306f.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u6b21\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3055\u308c\u307e\u3059\uff1a .lagoon.yml
container-registries:\ndocker-hub:\nusername: dockerhubuser\npassword: MY_DOCKER_HUB_PASSWORD\n
\u30e6\u30fc\u30b6\u30fc\u540d\u3082\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5909\u6570\u3067\u30e6\u30fc\u30b6\u30fc\u540d\u3092\u5b9a\u7fa9\u3059\u308b\u5834\u5408\u306f\u305d\u306e\u9650\u308a\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u5909\u6570\u306f\u6b21\u306e\u3088\u3046\u306bAPI\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\uff1a
- lagoon add variable -p <\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d> -N MY_DOCKER_HUB_PASSWORD -V <\u30d1\u30b9\u30ef\u30fc\u30c9> -S container_registry
\u3053\u306e\u65b9\u6cd5\u306f\u5f15\u304d\u7d9a\u304d\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3059\u304c\u3001\u5c06\u6765\u7684\u306b\u975e\u63a8\u5968\u3068\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u65b9\u6cd5\u306b\u5909\u66f4\u3059\u308b\u6642\u9593\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u3001\u30d3\u30eb\u30c9\u5185\u3067\u8b66\u544a\u304c\u8868\u793a\u3055\u308c\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002
\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5909\u6570\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30ab\u30b9\u30bf\u30e0\u540d\u306e\u5909\u6570\u306e\u4ee3\u308f\u308a\u306b\u305d\u308c\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#hardcoded-values-method","title":"\u30cf\u30fc\u30c9\u30b3\u30fc\u30c9\u3055\u308c\u305f\u5024\u306e\u65b9\u6cd5","text":"\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u304c\u3001.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u76f4\u63a5\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
.lagoon.ymlcontainer-registries:\ndocker-hub:\ndescription: \"\u30c7\u30d5\u30a9\u30eb\u30c8\u306edocker.io\u30ec\u30b8\u30b9\u30c8\u30ea\u306e\u8a8d\u8a3c\u60c5\u5831\"\nusername: dockerhubuser\npassword: MySecretPassword\nmy-custom-registry:\ndescription: \"\u81ea\u5206\u306e\u30ec\u30b8\u30b9\u30c8\u30ea\u306e\u8a8d\u8a3c\u60c5\u5831\"\nurl: my.own.registry.com\nusername: mycustomuser\npassword: MyCustomSecretPassword\n
"},{"location":"ja/concepts-basics/lagoon-yml/#consuming-a-custom-or-private-container-registry-image","title":"\u30ab\u30b9\u30bf\u30e0\u307e\u305f\u306f\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u306a\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u30a4\u30e1\u30fc\u30b8\u306e\u4f7f\u7528","text":"\u30ab\u30b9\u30bf\u30e0\u307e\u305f\u306f\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u306a\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u5185\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u66f4\u65b0\u3057\u3066\u3001\u30a4\u30e1\u30fc\u30b8\u3092\u5b9a\u7fa9\u3059\u308b\u4ee3\u308f\u308a\u306b\u30d3\u30eb\u30c9\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
.docker-compose.ymlservices:\nmariadb:\nbuild:\ncontext: .\ndockerfile: Dockerfile.mariadb\n
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304c\u30d3\u30eb\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u66f4\u65b0\u3055\u308c\u305f\u3089\u3001 Dockerfile.<service>
\u3092\u4f5c\u6210\u3057\u3001\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30a4\u30e1\u30fc\u30b8\u3092 FROM <repo>/<name>:<tag>
\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
.lagoon.ymlFROM dockerhubuser/my-private-database:tag\n
"},{"location":"ja/concepts-basics/lagoon-yml/#example-lagoonyml","title":".lagoon.yml
\u306e\u4f8b","text":"\u3053\u308c\u306f\u5168\u3066\u306e\u53ef\u80fd\u306a\u8a2d\u5b9a\u3092\u793a\u3057\u305f .lagoon.yml
\u306e\u4f8b\u3067\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5408\u308f\u305b\u3066\u8abf\u6574\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
.lagoon.ymldocker-compose-yaml: docker-compose.yml\nenvironment_variables:\ngit_sha: 'true'\ntasks:\npre-rollout:\n- run:\nname: drush sql-dump\ncommand: mkdir -p /app/web/sites/default/files/private/ && drush sql-dump --ordered-dump --gzip --result-file=/app/web/sites/default/files/private/pre-deploy-dump.sql.gz\nservice: cli\npost-rollout:\n- run:\nname: drush cim\ncommand: drush -y cim\nservice: cli\nshell: bash\n- run:\nname: drush cr\ncommand: drush -y cr\nservice: cli\nroutes:\nautogenerate:\ninsecure: Redirect\nenvironments:\nmain:\nroutes:\n- nginx:\n- example.com\n- example.net\n- \"www.example.com\":\ntls-acme: true\ninsecure: Redirect\nhstsEnabled: true\n- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\ntypes:\nmariadb: mariadb\ntemplates:\nmariadb: mariadb.main.deployment.yml\nrollouts:\nmariadb: statefulset\ncronjobs:\n- name: drush cron\nschedule: \"M * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\nstaging:\ncronjobs:\n- name: drush cron\nschedule: \"M * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\nfeature/feature-branch:\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\n
"},{"location":"ja/concepts-basics/lagoon-yml/#deprecated","title":"\u975e\u63a8\u5968","text":"\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u306f\u975e\u63a8\u5968\u3068\u306a\u308a\u3001\u3042\u306a\u305f\u306e .lagoon.yml
\u304b\u3089\u524a\u9664\u3059\u308b\u3079\u304d\u3067\u3059\u3002
routes.autogenerate.insecure
None
\u30aa\u30d7\u30b7\u30e7\u30f3\u306f Redirect
\u3068\u540c\u7b49\u3067\u3059\u3002
environments.[name].monitoring_urls
environments.[name].routes.[service].[route].hsts
environments.[name].routes.[service].[route].insecure
None
\u30aa\u30d7\u30b7\u30e7\u30f3\u306f Redirect
\u3068\u540c\u7b49\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/building-blocks/deploy-targets/","title":"\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8","text":"\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8 \u306f\u3001Lagoon\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u3069\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u304b\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u4e00\u3064\u307e\u305f\u306f\u305d\u308c\u4ee5\u4e0a\u306e\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u3001\u4f8b\u3048\u3070\u3001\u4e00\u3064\u306f\u672c\u756a\u7528\u3001\u3082\u3046\u4e00\u3064\u306f\u30c6\u30b9\u30c8\u7528\u3068\u3044\u3063\u305f\u5177\u4f53\u7684\u306a\u4f7f\u3044\u5206\u3051\u304c\u53ef\u80fd\u3067\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u306e\u81ea\u52d5\u30c7\u30d7\u30ed\u30a4\u3084\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3078\u306e\u5bfe\u5fdc\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aad\u3080\u3002
"},{"location":"ja/concepts-basics/building-blocks/groups/","title":"\u30b0\u30eb\u30fc\u30d7","text":"\u30b0\u30eb\u30fc\u30d7 \u306f\u30ed\u30fc\u30eb\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7d44\u7e54\u306f1\u3064\u4ee5\u4e0a\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5404\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u306f1\u3064\u4ee5\u4e0a\u306e\u30b0\u30eb\u30fc\u30d7\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002\u30b0\u30eb\u30fc\u30d7\u306f\u8907\u6570\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30b0\u30eb\u30fc\u30d7\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u306f\u72ec\u7acb\u3057\u3066\u4f5c\u6210\u3055\u308c\u3001\u305d\u306e\u5f8c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002
\u7d44\u7e54\u306b\u306f\u3001\u5272\u308a\u5f53\u3066\u3089\u308c\u308b\u30b0\u30eb\u30fc\u30d7\u306e\u6570\u3092\u5236\u9650\u3059\u308b\u30af\u30a9\u30fc\u30bf\u304c\u3042\u308a\u307e\u3059\u3002\u30af\u30a9\u30fc\u30bf\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/building-blocks/notifications/","title":"\u901a\u77e5","text":"\u901a\u77e5 \u306f\u3001Lagoon\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u9032\u884c\u72b6\u6cc1\u3092\u4f1d\u3048\u308b\u65b9\u6cd5\u3067\u3059\u3002\u901a\u77e5\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u7a2e\u985e\u304c\u3042\u308a\u307e\u3059:
- Slack
- RocketChat
- \u30e1\u30fc\u30eb
- Webhook
- Microsoft Teams
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u4e00\u3064\u307e\u305f\u306f\u8907\u6570\u306e\u901a\u77e5\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7d44\u7e54\u306f\u3001\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3059\u308b\u901a\u77e5\u306e\u5272\u308a\u5f53\u3066\u67a0\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u901a\u77e5\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u306f\u72ec\u7acb\u3057\u3066\u4f5c\u6210\u3055\u308c\u3001\u305d\u306e\u5f8c\u4e00\u3064\u307e\u305f\u306f\u8907\u6570\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
Lagoon UI\u3067\u901a\u77e5\u3092\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u3067\u8ffd\u52a0\u3059\u308b\u65b9\u6cd5\u3092\u5b66\u3076.
API\u3092\u901a\u3058\u3066\u901a\u77e5\u3092\u8ffd\u52a0\u3059\u308b\u65b9\u6cd5\u3092\u5b66\u3076.
"},{"location":"ja/concepts-basics/building-blocks/organizations/","title":"\u7d44\u7e54","text":"\u7d44\u7e54 \u306f\u3001\u4e00\u3064\u4ee5\u4e0a\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u901a\u77e5\u3092\u542b\u3080\u3053\u3068\u304c\u3067\u304d\u308b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u3059\u3002\u7d44\u7e54\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u5236\u5fa1\u3057\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u4f5c\u6210\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u8ffd\u52a0\u3068\u524a\u9664\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30b0\u30eb\u30fc\u30d7\u306e\u5272\u308a\u5f53\u3066\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002
Organizations\u306f\u3001\u69cb\u9020\u306e\u5c64\u3092\u8ffd\u52a0\u3057\u3066\u73fe\u5b9f\u3092\u6a21\u5023\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u7279\u5b9a\u306e\u30b5\u30a4\u30c8\u3067\u4f5c\u696d\u3059\u308b\u30c1\u30fc\u30e0\u3092\u53cd\u6620\u3059\u308b\u305f\u3081\u306b\u3001\u7d44\u7e54\u3092\u4f5c\u6210\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3067\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u305d\u306e\u7d44\u7e54\u306b\u306f\u3001\u305d\u306e\u30b5\u30a4\u30c8\u3092\u69cb\u6210\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u3001 \u958b\u767a\u8005\u3068 \u547c\u3070\u308c\u308b\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u3057\u3066\u30b5\u30a4\u30c8\u4f5c\u696d\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3059\u3079\u3066\u306e\u4eba\u3005\u3001\u305d\u3057\u3066\u30b5\u30a4\u30c8\u3084\u554f\u984c\u3092\u95b2\u89a7\u3059\u308b\u305f\u3081\u3060\u3051\u306bLagoon\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5225\u306e\u30b0\u30eb\u30fc\u30d7\uff08 \u95b2\u89a7\u8005 \u3068\u547c\u3070\u308c\u308b\uff09\u304c\u542b\u307e\u308c\u3001\u305d\u308c\u305e\u308c\u9069\u5207\u306a\u30ed\u30fc\u30eb\u3092\u6301\u3061\u307e\u3059\u3002
\u7d44\u7e54\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u901a\u77e5\u3001\u74b0\u5883\u306e\u6570\u3092\u5236\u9650\u3059\u308b\u305f\u3081\u306e\u30af\u30a9\u30fc\u30bf\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30af\u30a9\u30fc\u30bf\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u7d44\u7e54\u3068\u306e\u3084\u308a\u3068\u308a\u306b\u3064\u3044\u3066\u3082\u3063\u3068\u5b66\u3076.
"},{"location":"ja/concepts-basics/building-blocks/projects/","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u306f\u3001Lagoon\u4e0a\u3067\u52d5\u4f5c\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002\u7d44\u7e54\u306f1\u3064\u4ee5\u4e0a\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u306f\u30011\u4eba\u4ee5\u4e0a\u306e\u30e6\u30fc\u30b6\u30fc\u3001\u901a\u77e5\u3001\u305d\u3057\u3066\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u7d44\u7e54\u306f\u3001\u4f5c\u6210\u3067\u304d\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u91cf\u3092\u5236\u9650\u3059\u308b\u305f\u3081\u306e\u30af\u30a9\u30fc\u30bf\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/building-blocks/roles/","title":"\u30ed\u30fc\u30eb","text":"\u30ed\u30fc\u30eb \u306f\u30e6\u30fc\u30b6\u30fc\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306f\u30b0\u30eb\u30fc\u30d7\u3084\u7d44\u7e54\u3067\u30ed\u30fc\u30eb\u3092\u4e0e\u3048\u3089\u308c\u307e\u3059\u3002
\u30b0\u30eb\u30fc\u30d7\u306e\u30e1\u30f3\u30d0\u30fc\u306b\u306f\u4ee5\u4e0b\u306e\u30ed\u30fc\u30eb\u3092\u4e0e\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
- \u30b2\u30b9\u30c8
- \u30ec\u30dd\u30fc\u30bf\u30fc
- \u958b\u767a\u8005
- \u30e1\u30f3\u30c6\u30ca\u30fc
- \u30aa\u30fc\u30ca\u30fc
\u3053\u308c\u3089\u306e\u30ed\u30fc\u30eb\u3068\u305d\u306e\u6a29\u9650\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u3053\u3067\u8a73\u3057\u304f\u8aac\u660e\u3055\u308c\u3066\u3044\u307e\u3059:\u30ed\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u3002
\u7d44\u7e54\u306e\u30e1\u30f3\u30d0\u30fc\u306b\u306f\u4ee5\u4e0b\u306e\u30ed\u30fc\u30eb\u3092\u4e0e\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
- \u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc
- \u7d44\u7e54\u306e\u30d3\u30e5\u30fc\u30a2
\u30af\u30a9\u30fc\u30bf\u306e\u5909\u66f4
\u30af\u30a9\u30fc\u30bf\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc \u306f\u3001\u30af\u30a9\u30fc\u30bf\u306e\u5909\u66f4\u3092\u9664\u304f\u3001\u7d44\u7e54\u306e\u7ba1\u7406\u306b\u95a2\u9023\u3059\u308b\u3059\u3079\u3066\u306e\u4e8b\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5f7c\u3089\u306f\u30e6\u30fc\u30b6\u30fc\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u3001\u901a\u77e5\u306e\u8ffd\u52a0\u3084\u524a\u9664\u304c\u3067\u304d\u307e\u3059\u3002
\u7d44\u7e54\u306e\u95b2\u89a7\u8005 \u306f\u3001\u7d44\u7e54\u3092\u95b2\u89a7\u3059\u308b\u3060\u3051\u306e\u8aad\u307f\u53d6\u308a\u5c02\u7528\u306e\u30ed\u30fc\u30eb\u3067\u3042\u308a\u3001\u5909\u66f4\u3084\u8ffd\u52a0\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u5f7c\u3089\u306f\u7d44\u7e54\u5185\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u901a\u77e5\u3092\u95b2\u89a7\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
\u30aa\u30fc\u30ca\u30fc\u307e\u305f\u306f\u30d3\u30e5\u30fc\u30a2\u3068\u3057\u3066\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u30e6\u30fc\u30b6\u30fc\u306f\u3001\u7d44\u7e54\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-basics/building-blocks/users/","title":"\u30e6\u30fc\u30b6\u30fc","text":"\u30e6\u30fc\u30b6\u30fc \u306f\u3001Lagoon\u30b7\u30b9\u30c6\u30e0\u3068\u3084\u308a\u53d6\u308a\u3059\u308b\u305f\u3081\u306eLagoon\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306f\u4e00\u3064\u307e\u305f\u306f\u8907\u6570\u306e\u7d44\u7e54\u3084\u30b0\u30eb\u30fc\u30d7\u306b\u6240\u5c5e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u5404\u30b0\u30eb\u30fc\u30d7\u306f\u3055\u307e\u3056\u307e\u306a\u8a31\u53ef\u3092\u4ed8\u4e0e\u3059\u308b\u7570\u306a\u308b\u30ed\u30fc\u30eb\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7d44\u7e54\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u304a\u3088\u3073\u30ed\u30fc\u30eb\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u4ed8\u4e0e\u3057\u307e\u3059\u3002
\u30e6\u30fc\u30b6\u30fc\u306e\u30ed\u30fc\u30eb\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aad\u3080\u3002
"},{"location":"ja/contributing-to-lagoon/api-debugging/","title":"API\u30c7\u30d0\u30c3\u30b0","text":"1 . services/api/package.json
\u306b\u3042\u308bdev
\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u4ee5\u4e0b\u3092\u542b\u3080\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059:
services/api/package.jsonnode --inspect=0.0.0.0:9229\n
2 . docker-compose.yml
\u3092\u66f4\u65b0\u3057\u3066\u3001dist
\u30d5\u30a9\u30eb\u30c0\u3092\u30de\u30c3\u30d7\u3057\u30019229
\u30dd\u30fc\u30c8\u3092\u516c\u958b\u3057\u307e\u3059:
docker-compose.yml api:\nimage: ${IMAGE_REPO:-lagoon}/api\ncommand: yarn run dev\nvolumes:\n- ./services/api/src:/app/services/api/src\n- ./services/api/dist:/app/services/api/dist\ndepends_on:\n- api-db\n- local-api-data-watcher-pusher\n- keycloak\nports:\n- '3000:3000'\n- '9229:9229'\n
3 . \u6b21\u306e\u5185\u5bb9\u3092.vscode/launch.json
\u306b\u8ffd\u52a0\u3057\u307e\u3059:
.vscode/launch.json{\n// IntelliSense\u3092\u4f7f\u7528\u3057\u3066\u53ef\u80fd\u306a\u5c5e\u6027\u306b\u3064\u3044\u3066\u5b66\u7fd2\u3057\u307e\u3059\u3002\n// \u65e2\u5b58\u306e\u5c5e\u6027\u306e\u8aac\u660e\u3092\u8868\u793a\u3059\u308b\u306b\u306f\u3001\u30db\u30d0\u30fc\u3057\u307e\u3059\u3002\n// \u8a73\u7d30\u60c5\u5831\u306f\u3001\u6b21\u306eURL\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044:https://go.microsoft.com/fwlink/?linkid=830387.\n\"version\": \"0.2.0\",\n\"configurations\": [\n{\n\"name\": \"Docker: Attach to Node\",\n\"type\": \"node\",\n\"request\": \"attach\",\n\"port\": 9229,\n\"address\": \"localhost\",\n\"outFiles\": [\"${workspaceRoot}/app/services/api/dist/**/*.js\"],\n\"localRoot\": \"${ \"workspaceFolder}/services/api\",\n \"remoteRoot\": \"/app/services/api\",\n \"sourceMaps\": true,\n \"protocol\": \"inspector\"\n }\n ]\n}\n4 . \u30b3\u30f3\u30c6\u30ca\u306e\u518d\u69cb\u7bc9/\u518d\u8d77\u52d5:\n```bash title=\"\u30b3\u30f3\u30c6\u30ca\u306e\u518d\u8d77\u52d5\"\nrm build/api && make build/api && docker-compose restart api\n
5 . VScode\u3092\u518d\u8d77\u52d5\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/","title":"Lagoon\u306e\u958b\u767a","text":"Lagoon\u306e\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306f\u3001\u73fe\u5728\u3001\u30ed\u30fc\u30ab\u30eb\u306eKubernetes\u30af\u30e9\u30b9\u30bf\u30fc\u307e\u305f\u306fDocker Compose(\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u3068\u3057\u3066)\u3092\u7d4c\u7531\u3057\u3066\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u6ce8\u610f:
\u30d5\u30eb\u306eLagoon\u30b9\u30bf\u30c3\u30af\u306f\u3001\u73fe\u5728ARM\u30d9\u30fc\u30b9\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3(M1/M2 Apple Silicon\u30d9\u30fc\u30b9\u306e\u30de\u30b7\u30f3\u306a\u3069)\u3068\u4e92\u63db\u6027\u306e\u306a\u3044\u4e0a\u6d41\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u4f9d\u5b58\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u305f\u3081\u3001\u3053\u308c\u3089\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u4e0a\u3067lagoon-core
\u307e\u305f\u306flagoon-remote
\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u307e\u305f\u306f\u958b\u767a\u3059\u308b\u3053\u3068\u306f\u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u8a73\u7d30\u306fhttps://github.com/uselagoon/lagoon/issues/3189 \u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#docker","title":"Docker","text":"Docker\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u3067Lagoon\u3092\u30d3\u30eb\u30c9\u304a\u3088\u3073\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#dockerdocker-compose","title":"Docker\u3068Docker Compose\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"Docker\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
Docker Compose\u306f\u3001Docker for Mac\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002Linux\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306e\u624b\u9806\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#docker_1","title":"Docker\u306e\u8a2d\u5b9a","text":"Docker\u306e\u30bb\u30ad\u30e5\u30a2\u3067\u306a\u3044\u30ec\u30b8\u30b9\u30c8\u30ea\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u3092\u8aad\u3093\u3067\u304f\u3060\u3055\u3044\u3002\u518d\u8a2d\u5b9a\u3092\u907f\u3051\u308b\u305f\u3081\u3001\u5168\u3066\u306e\u30ed\u30fc\u30ab\u30ebIPv4\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30a2\u30c9\u30ec\u30b9\u30b9\u30da\u30fc\u30b9\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002 Kubernetes\u3068Docker Compose\u3002\u305f\u3068\u3048\u3070\u3001\"insecure-registries\" : [\"172.16.0.0/12\",\"192.168.0.0/16\"],
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#docker_2","title":"\u5341\u5206\u306aDocker\u30ea\u30bd\u30fc\u30b9\u306e\u5272\u308a\u5f53\u3066","text":"\u30ed\u30fc\u30ab\u30eb\u30de\u30b7\u30f3\u4e0a\u3067Lagoon\u3001Kubernetes\u3001\u307e\u305f\u306fDocker\u30af\u30e9\u30b9\u30bf\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u591a\u304f\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u6d88\u8cbb\u3057\u307e\u3059\u3002Docker\u30db\u30b9\u30c8\u306b\u306f\u6700\u4f4e\u3067\u30828\u3064\u306eCPU\u30b3\u30a2\u306812GB\u306eRAM\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#lagoon_1","title":"\u30ed\u30fc\u30ab\u30eb\u3067Lagoon\u3092\u30d3\u30eb\u30c9\u3059\u308b","text":"\u8b66\u544a
Lagoon\u3092\u3053\u306e\u65b9\u6cd5\u3067\u30d3\u30eb\u30c9\u3092\u8003\u3048\u308b\u306e\u306f\u3001\u305d\u308c\u306b\u6a5f\u80fd\u3084\u6a5f\u80fd\u3092\u958b\u767a\u3057\u305f\u3044\u3001\u307e\u305f\u306f\u5185\u90e8\u30d7\u30ed\u30bb\u30b9\u3092\u30c7\u30d0\u30c3\u30b0\u3057\u305f\u3044\u5834\u5408\u3060\u3051\u3067\u3059\u3002\u307e\u305f\u3001\u30d3\u30eb\u30c9\u305b\u305a\u306bLagoon\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5(\u3064\u307e\u308a\u3001\u516c\u958b\u3055\u308c\u305f\u30ea\u30ea\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5)\u306e\u6307\u793a\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002
\u79c1\u305f\u3061\u306f\u3001\u5fc5\u8981\u306aDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3057\u3001Kubernetes\u3092\u8a2d\u5b9a\u3057\u3001\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306bmake
(Makefile\u3092\u53c2\u7167)\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002
\u79c1\u305f\u3061\u306f\u3001\u307b\u3068\u3093\u3069\u306e\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u30b7\u30ca\u30ea\u30aa\u3092\u30ab\u30d0\u30fc\u3059\u308b\u305f\u3081\u306b\u3001Makefile\u306b\u3044\u304f\u3064\u304b\u306e\u30eb\u30fc\u30c1\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3057\u305f\u3002\u3053\u3053\u3067\u306f\u3001\u5b8c\u5168\u306a\u30d7\u30ed\u30bb\u30b9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#_1","title":"\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9","text":" - \u3053\u3053\u3067\u306e
-j8
\u306f\u3001make\u306b\u30d3\u30eb\u30c9\u3092\u901f\u3081\u308b\u305f\u3081\u306b\u4e26\u5217\u30678\u3064\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u3088\u3046\u306b\u6307\u793a\u3057\u307e\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u8abf\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u3067
SCAN_IMAGES=false
\u3092\u8a2d\u5b9a\u3057\u3066\u3001\u30d3\u30eb\u30c9\u3057\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002 \u8106\u5f31\u6027\u3002\u3053\u308c\u3092true\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u30b9\u30ad\u30e3\u30f3\u7d50\u679c\u3092\u542b\u3080scan.txt
\u30d5\u30a1\u30a4\u30eb\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30eb\u30fc\u30c8\u306b\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002
\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9make -j8 build\n
- Makefile\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u3067Lagoon\u306e\u30c6\u30b9\u30c8\u30eb\u30fc\u30c6\u30a3\u30f3\u3092\u958b\u59cb\u3057\u307e\u3059(\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8)\u3002
\u30c6\u30b9\u30c8\u958b\u59cbmake kind/test\n
\u8b66\u544a
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30c6\u30b9\u30c8\u304c\u591a\u6570\u3042\u308a\u307e\u3059 - \u6a5f\u80fd\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u6700\u4f4e\u9650\u306e\u30ed\u30fc\u30ab\u30eb\u3067\u306e\u30c6\u30b9\u30c8\u306e\u307f\u3092\u8003\u616e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u3001Makefile\u306eTESTS
\u5909\u6570\u304b\u3089\u30c6\u30b9\u30c8\u3092\u6307\u5b9a\u3057\u305f\u308a\u524a\u9664\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u306f\u6b21\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u307e\u3059:
- \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u30c4\u30fc\u30eb\u306e\u6b63\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u307e\u3059 -
kind
\u3001kubectl
\u3001helm
\u3001jq
\u3002 - Lagoon\u304c\u6a5f\u80fd\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306aHelm\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002
- \u524d\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u6b63\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u304c\u3059\u3079\u3066\u30d3\u30eb\u30c9\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
- \u30ed\u30fc\u30ab\u30eb\u306eKinD\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u306eDocker\u30b3\u30f3\u30c6\u30ca\u306b\u5b8c\u5168\u306b\u7a3c\u50cd\u3059\u308bKubernetes\u30af\u30e9\u30b9\u30bf\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3053\u306e\u30af\u30e9\u30b9\u30bf\u306f\u3001\u30d3\u30eb\u30c9\u3057\u305fLagoon\u30a4\u30e1\u30fc\u30b8\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u305f\u3081\u306b\u63d0\u4f9b\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u3068\u901a\u4fe1\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u305f\u3081\u306b\u30db\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3082\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u3059\u3002
- Lagoon\u3092 https://github.com/uselagoon/lagoon-charts (\u5fc5\u8981\u306b\u5fdc\u3058\u3066Makefile\u306e
CHARTS_TREEISH
\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30d6\u30e9\u30f3\u30c1\u3092\u5236\u5fa1\u3057\u3066\u304f\u3060\u3055\u3044). - Harbor Image\u30ec\u30b8\u30b9\u30c8\u30ea\u3092KinD\u30af\u30e9\u30b9\u30bf\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u305d\u306e\u30a4\u30f3\u30b0\u30ec\u30b9\u3068\u30a2\u30af\u30bb\u30b9\u3092\u9069\u5207\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002
- Docker\u306f\u30d3\u30eb\u30c9\u3057\u305fLagoon\u306e\u30a4\u30e1\u30fc\u30b8\u3092Harbor\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
- \u6b21\u306b\u3001lagoon-charts\u306eMakefile\u3092\u4f7f\u7528\u3057\u3066\u3001\u6b8b\u308a\u306e\u8a2d\u5b9a\u624b\u9806\u3092\u9032\u884c\u3057\u307e\u3059\u3002
- \u9069\u5207\u306a\u30a4\u30f3\u30b0\u30ec\u30b9\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3059 - NGINX Ingress Controller\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
- \u7279\u5b9a\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u8981\u6c42\u3092\u51e6\u7406\u3059\u308b\u30ed\u30fc\u30ab\u30ebNFS\u30b5\u30fc\u30d0\u30fc\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3059 - Read-Write-Many\u64cd\u4f5c(RWX)\u3092\u51e6\u7406\u3059\u308b\u3082\u306e\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
- \u305d\u306e\u5f8c\u3001Lagoon Core\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u30ed\u30fc\u30ab\u30eb\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30ed\u30fc\u30ab\u30eb\u3067\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u30c6\u30b9\u30c8\u306b\u5fc5\u8981\u3068\u3055\u308c\u306a\u3044\u4e00\u90e8\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u9664\u5916\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u3001API\u3068Keycloak\u304c\u30aa\u30f3\u30e9\u30a4\u30f3\u306b\u306a\u308b\u306e\u3092\u5f85\u3061\u307e\u3059\u3002
- DBaaS\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3059 - MariaDB\u3001PostgreSQL\u3001MongoDB\u3002\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u3001 \u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u4e2d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u3001\u30af\u30e9\u30a6\u30c9\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc(\u4f8b\u3048\u3070\u3001Cloud SQL\u3001RDS\u3001Azure Database\u306a\u3069)\u7d4c\u7531\u3067\u5229\u7528\u53ef\u80fd\u306a\u30de\u30cd\u30fc\u30b8\u30c9\u30b5\u30fc\u30d3\u30b9\u3092\u30a8\u30df\u30e5\u30ec\u30fc\u30c8\u3057\u307e\u3059\u3002
- \u6b21\u306bLagoon Remote\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3001Lagoon Core\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3001\u30ed\u30fc\u30ab\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u901a\u4fe1\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u3053\u308c\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3063\u3066\u304b\u3089\u7d9a\u884c\u3057\u307e\u3059\u3002
- \u30c6\u30b9\u30c8\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3059\u308b\u305f\u3081\u306b\u3001Lagoon Test\u30c1\u30e3\u30fc\u30c8\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30c6\u30b9\u30c8\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30db\u30b9\u30c8\u3059\u308b\u30ed\u30fc\u30ab\u30eb\u306eGit\u30b5\u30fc\u30d0\u30fc\u304c\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u3001\u8a2d\u5b9a\u3067Lagoon API\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u4e8b\u524d\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u305d\u308c\u304b\u3089\u3001\u30c6\u30b9\u30c8\u3092\u958b\u59cb\u3059\u308b\u524d\u306b\u6e96\u5099\u30c1\u30a7\u30c3\u30af\u3092\u884c\u3044\u307e\u3059\u3002
- Lagoon\u306f\u3001Makefile\u306eTESTS\u5909\u6570\u3067\u6307\u5b9a\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u5404\u30c6\u30b9\u30c8\u306f\u81ea\u8eab\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3001\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u305f\u5f8c\u306b\u74b0\u5883\u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u524a\u9664\u3057\u307e\u3059\u3002\u30c6\u30b9\u30c8\u306e\u5b9f\u884c\u7d50\u679c\u306f
lagoon-test-suite-*
\u30dd\u30c3\u30c9\u306e\u30b3\u30f3\u30bd\u30fc\u30eb\u30ed\u30b0\u306b\u51fa\u529b\u3055\u308c\u3001\u30b3\u30f3\u30c6\u30ca\u3054\u3068\u306b1\u3064\u306e\u30c6\u30b9\u30c8\u3092\u53c2\u7167\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u7406\u60f3\u7684\u306b\u306f\u3001\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8\u304c\u901a\u904e\u3057\u3001\u3059\u3079\u3066\u7d42\u4e86\u3057\u307e\u3059\uff01
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#_2","title":"\u30c6\u30b9\u30c8\u306e\u9032\u884c\u72b6\u6cc1\u3068\u30ed\u30fc\u30ab\u30eb\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u8868\u793a","text":"\u30c6\u30b9\u30c8\u30eb\u30fc\u30c1\u30f3\u306f\u30ed\u30fc\u30ab\u30eb\u306eKubeconfig\u30d5\u30a1\u30a4\u30eb(\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8\u306bkubeconfig.kind.lagoon
\u3068\u3044\u3046\u540d\u524d\u3067)\u3092\u4f5c\u6210\u3057\u3001Kubernetes\u306e\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3001\u30d3\u30e5\u30fc\u30ef\u3001CLI\u3068\u3068\u3082\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30ed\u30fc\u30ab\u30eb\u30af\u30e9\u30b9\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u30c4\u30fc\u30eb\u3067\u3059\u3002\u79c1\u305f\u3061\u306f\u3001Lens\u3001Octant\u3001kubectl\u3001Portainer\u3068\u3044\u3063\u305f\u30c4\u30fc\u30eb\u3092\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306b\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002Lagoon Core\u3001Remote\u3001Tests\u306f\u3059\u3079\u3066Lagoon
\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u3067\u30d3\u30eb\u30c9\u3055\u308c\u3001\u5404\u74b0\u5883\u306f\u81ea\u8eab\u306e\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u3066\u5b9f\u884c\u3059\u308b\u305f\u3081\u3001\u78ba\u8a8d\u3059\u308b\u969b\u306b\u306f\u6b63\u3057\u3044\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u30ed\u30fc\u30ab\u30eb\u30af\u30e9\u30b9\u30bf\u3068kubectl\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u6b63\u3057\u3044Kubeconfig\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u3059\u3079\u3066\u306e\u30b3\u30de\u30f3\u30c9\u3067\u884c\u3046\u3053\u3068\u3082\u3001\u597d\u307f\u306e\u30c4\u30fc\u30eb\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
kubeconfig.kind.lagoonKUBECONFIG=./kubeconfig.kind.lagoon kubectl get pods -n lagoon\n
\u30ed\u30fc\u30ab\u30eb\u306eLagoon\u3092\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308bHelm\u30c1\u30e3\u30fc\u30c8\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u306e\u30d5\u30a9\u30eb\u30c0\u306b\u30af\u30ed\u30fc\u30f3\u3055\u308c\u3001lagoon-charts.kind.lagoon
\u306b\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5f8c\u3067\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u7c21\u5358\u306a\u5909\u66f4\u306e\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#lagoon_2","title":"\u30ed\u30fc\u30ab\u30ebLagoon\u30af\u30e9\u30b9\u30bf\u3068\u5bfe\u8a71\u3059\u308b","text":"Makefile\u306b\u306f\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305fLagoon\u3068\u306e\u5bfe\u8a71\u3092\u7c21\u5358\u306b\u3059\u308b\u3044\u304f\u3064\u304b\u306e\u30eb\u30fc\u30c1\u30f3\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059:
Create local portsmake kind/port-forwards\n
\u3053\u308c\u306b\u3088\u308a\u3001UI\u3092\u516c\u958b\u3059\u308b\u305f\u3081\u306e\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002 6060)\u3001API (7070)\u3001\u305d\u3057\u3066 Keycloak (8080)\u3067\u3059\u3002\u3053\u308c\u306f stdout
\u306b\u30ed\u30b0\u3092\u51fa\u529b\u3059\u308b\u305f\u3081\u3001\u5225\u306e\u30bf\u30fc\u30df\u30ca\u30eb/\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u5b9f\u884c\u3059\u3079\u304d\u3067\u3057\u3087\u3046\u3002
\u7ba1\u7406\u8005\u306e\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308bmake kind/get-admin-creds\n
\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u3068\u3084\u308a\u53d6\u308a\u3059\u308b\u305f\u3081\u306e\u5fc5\u8981\u306a\u8cc7\u683c\u60c5\u5831\u304c\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
- JWT\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u306eGraphQL\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067bearer\u30c8\u30fc\u30af\u30f3\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u7ba1\u7406\u8005\u30b9\u30b3\u30fc\u30d7\u306e\u30c8\u30fc\u30af\u30f3\u3067\u3059\u3002\u8a73\u7d30\u306fGraphQL\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
- Keycloak\u306e\"admin\"\u30e6\u30fc\u30b6\u30fc\u7528\u306e\u30c8\u30fc\u30af\u30f3\u304c\u3042\u308a\u3001\u3059\u3079\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u30ed\u30fc\u30eb\u306a\u3069\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002
- Lagoon\u306e\"lagoonadmin\"\u30e6\u30fc\u30b6\u30fc\u7528\u306e\u30c8\u30fc\u30af\u30f3\u3082\u3042\u308a\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b0\u30eb\u30fc\u30d7\u3001\u6a29\u9650\u306a\u3069\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30a4\u30e1\u30fc\u30b8\u306e\u518d\u30d7\u30c3\u30b7\u30e5make kind/dev\n
\u3053\u308c\u306b\u3088\u308a\u3001KIND_SERVICES
\u306b\u30ea\u30b9\u30c8\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u304c\u6b63\u3057\u3044\u30bf\u30b0\u3067\u518d\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u3001lagoon-core\u30c1\u30e3\u30fc\u30c8\u304c\u518d\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306fLagoon\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3059\u308b\u5c0f\u3055\u306a\u5909\u66f4\u3092\u30c6\u30b9\u30c8\u3059\u308b\u306e\u306b\u4fbf\u5229\u3067\u3059\u304c\u3001\"\u30e9\u30a4\u30d6\"\u958b\u767a\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u307e\u305a\u3053\u308c\u3089\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u518d\u69cb\u7bc9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b:rm build/api && make build/api
.
typescript\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u30d3\u30eb\u30c9\u3059\u308bmake kind/local-dev-patch\n
\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305fNode.js\u3092\u4f7f\u7528\u3057\u3066typescript\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u30d3\u30eb\u30c9\u3055\u308c\u307e\u3059(\u3053\u308c\u306f >16.0)\u3002\u305d\u306e\u5f8c\u3001\u6b21\u306e\u64cd\u4f5c\u3092\u884c\u3044\u307e\u3059:
- Lagoon\u30b5\u30fc\u30d3\u30b9\u304b\u3089\u306e
dist
\u30d5\u30a9\u30eb\u30c0\u3092Kubernetes\u306e\u6b63\u3057\u3044lagoon-core\u30dd\u30c3\u30c9\u306b\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059 - \u30b3\u30fc\u30c9\u306e\u5909\u66f4\u3092\u76e3\u8996\u3059\u308b
nodemon
\u304c\u52d5\u4f5c\u3057\u3066\u3044\u308b\u30b5\u30fc\u30d3\u30b9\u3068\u5171\u306blagoon-core\u30c1\u30e3\u30fc\u30c8\u3092\u518d\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059 - \u3053\u308c\u306b\u3088\u308a\u3001Lagoon \u3067\u306e\u30e9\u30a4\u30d6\u958b\u767a\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002
- Kubernetes\u306e\u30dd\u30c3\u30c9\u306b\u5909\u66f4\u304c\u53cd\u6620\u3055\u308c\u308b\u305f\u3081\u306b\u306f\u3001\u6642\u6298\u518d\u30c7\u30d7\u30ed\u30a4\u304c\u5fc5\u8981\u306a\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u7570\u306a\u308b\u30d6\u30e9\u30f3\u30c1\u3092
git clean -dfx
\u3067\u518d\u30d3\u30eb\u30c9\u3059\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u30b5\u30fc\u30d3\u30b9\u304b\u3089\u306e\u30d3\u30eb\u30c9\u6210\u679c\u7269\u3092\u30af\u30ea\u30fc\u30f3\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u306a\u304a\u3001dist\u30d5\u30a9\u30eb\u30c0\u306fGit\u306b\u3088\u3063\u3066\u7121\u8996\u3055\u308c\u307e\u3059\u3002
\u30ed\u30ae\u30f3\u30b0\u3092\u958b\u59cbmake kind/local-dev-logging\n
\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u306eDocker\u306b\u72ec\u7acb\u3057\u305fOpenDistro for Elasticsearch\u30af\u30e9\u30b9\u30bf\u304c\u4f5c\u6210\u3055\u308c\u3001Lagoon\u304c\u3059\u3079\u3066\u306e\u30ed\u30b0(Lagoon\u304a\u3088\u3073\u30d7\u30ed\u30b8\u30a7\u30af\u30c8)\u3092\u305d\u308c\u306b\u9001\u4fe1\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a2d\u5b9a\u306flagoon-logging\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u3092\u518d\u5b9f\u884cmake kind/retest\n# OR\nmake kind/retest TESTS='[features-kubernetes]'\n
\u3053\u308c\u306b\u3088\u308a\u3001\u65e2\u5b58\u306e\u30af\u30e9\u30b9\u30bf\u306b\u5bfe\u3059\u308b\u4e00\u9023\u306e\u30c6\u30b9\u30c8(TESTS
\u5909\u6570\u3067\u5b9a\u7fa9)\u304c\u518d\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u30c6\u30b9\u30c8\u7528\u306e\u30a4\u30e1\u30fc\u30b8(tests\u3001local-git\u3001data-watcher-pusher)\u304c\u518d\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002\u30c6\u30b9\u30c8\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 TESTS\u5909\u6570\u3092\u30a4\u30f3\u30e9\u30a4\u30f3\u3067\u6e21\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u8a2d\u5b9a\u3092\u66f4\u65b0\u3059\u308b\u5834\u5408\u3001\u30c6\u30b9\u30c8\u30a4\u30e1\u30fc\u30b8\u3092\u518d\u30d3\u30eb\u30c9\u3057\u3066\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001rm build/tests && make build/tests && make kind/push-images IMAGES='tests' && make kind/retest TESTS='[api]'
Push all imagesmake kind/push-images\n# OR\nmake kind/push-images IMAGES='tests local-git'\n
\u3053\u308c\u306b\u3088\u308a\u3001\u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002IMAGES
\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u7279\u5b9a\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u30bf\u30b0\u3092\u4ed8\u3051\u3066\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
Remove clustermake kind/clean\n
\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u306eDocker\u304b\u3089KinD Lagoon\u30af\u30e9\u30b9\u30bf\u304c\u524a\u9664\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#ansible","title":"Ansible","text":"Lagoon\u30c6\u30b9\u30c8\u3067\u306f\u3001Ansible\u3092\u7528\u3044\u3066\u30c6\u30b9\u30c8\u30b9\u30a4\u30fc\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u7279\u5b9a\u306e\u6a5f\u80fd\u306e\u30c6\u30b9\u30c8\u7bc4\u56f2\u306f\u3001\u305d\u308c\u305e\u308c\u306e\u30eb\u30fc\u30c1\u30f3\u306b\u5206\u5272\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30ed\u30fc\u30ab\u30eb\u3067\u958b\u767a\u4f5c\u696d\u3092\u884c\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u5b9f\u884c\u3059\u308b\u30c6\u30b9\u30c8\u3092\u9078\u629e\u3057\u3001Makefile\u5185\u306e$TESTS
\u5909\u6570\u3092\u66f4\u65b0\u3057\u3066\u3001\u540c\u6642\u306b\u5b9f\u884c\u3055\u308c\u308b\u30c6\u30b9\u30c8\u3092\u6e1b\u3089\u3057\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30c6\u30b9\u30c8\u306e\u8a2d\u5b9a\u306f3\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u4fdd\u6301\u3055\u308c\u3066\u3044\u307e\u3059:
tests
\u306fAnsible\u30c6\u30b9\u30c8\u30b5\u30fc\u30d3\u30b9\u305d\u306e\u3082\u306e\u3067\u3059\u3002\u30ed\u30fc\u30ab\u30eb\u306e\u30c6\u30b9\u30c8\u30eb\u30fc\u30c1\u30f3\u3067\u306f\u3001\u5404\u500b\u3005\u306e\u30c6\u30b9\u30c8\u3092\u30c6\u30b9\u30c8\u30b9\u30a4\u30fc\u30c8\u306e\u30dd\u30c3\u30c9\u5185\u306e\u5225\u3005\u306e\u30b3\u30f3\u30c6\u30ca\u3068\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u4ee5\u4e0b\u306b\u30ea\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 local-git
\u306f\u30af\u30e9\u30b9\u30bf\u5185\u3067\u30db\u30b9\u30c8\u3055\u308c\u308bGit\u30b5\u30fc\u30d0\u3067\u3001\u305d\u308c\u304c\u4fdd\u6301\u3057\u3066\u3044\u307e\u3059 \u30c6\u30b9\u30c8\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3002Ansible\u306f\u30c6\u30b9\u30c8\u306e\u9593\u306b\u3053\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30d7\u30eb\u3068\u30d7\u30c3\u30b7\u30e5\u3092\u884c\u3044\u307e\u3059\u3002 api-data-watcher-pusher
\u306f\u3001\u5fc5\u8981\u306aKubernetes\u8a2d\u5b9a\u3001\u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc\u30a2\u30ab\u30a6\u30f3\u30c8\u3068SSH\u30ad\u30fc\u3001\u5fc5\u8981\u306a\u30b0\u30eb\u30fc\u30d7\u3068\u901a\u77e5\u3092\u30ed\u30fc\u30ab\u30ebLagoon\u306b\u4e8b\u524d\u306b\u914d\u7f6e\u3059\u308b\u305f\u3081\u306eGraphQL\u5909\u7570\u306e\u30bb\u30c3\u30c8\u3067\u3059\u3002 \u3053\u308c\u306f\u5b9f\u884c\u3054\u3068\u306b\u30ed\u30fc\u30ab\u30eb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u74b0\u5883\u3092\u6d88\u53bb\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Kubernetes\u306b\u95a2\u9023\u3059\u308b\u500b\u3005\u306e\u30eb\u30fc\u30c1\u30f3\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059:
active-standby-kubernetes
\u306fKubernetes\u3067\u306e\u30a2\u30af\u30c6\u30a3\u30d6/\u30b9\u30bf\u30f3\u30d0\u30a4\u3092\u78ba\u8a8d\u3059\u308b\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 api
\u306fAPI - \u30d6\u30e9\u30f3\u30c1/PR\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3001\u6607\u9032\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 bitbucket
\u3001gitlab
\u3001github
\u306f\u7279\u5b9a\u306eSCM\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 drupal-php74
\u306f\u5358\u4e00\u30dd\u30c3\u30c9\u306eMariaDB\u3001MariaDB DBaaS\u3001\u304a\u3088\u3073Drupal 8/9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306eDrush\u7279\u5316\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059(drupal-php73
\u306fDrush\u30c6\u30b9\u30c8\u3092\u884c\u3044\u307e\u305b\u3093)\u3002 drupal-postgres
\u306f\u3001Drupal 8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306e\u5358\u4e00\u30dd\u30c3\u30c9\u306ePostgreSQL\u3068PostgreSQL DBaaS\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 elasticsearch
\u306fElasticsearch\u5358\u4e00\u30dd\u30c3\u30c9\u3078\u306e\u30b7\u30f3\u30d7\u30eb\u306aNGINX\u30d7\u30ed\u30ad\u30b7\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 features-variables
\u306fLagoon\u5185\u306e\u5909\u6570\u3092\u5229\u7528\u3059\u308b\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 features-kubernetes
\u306fKubernetes\u306b\u7279\u5316\u3057\u305f\u6a19\u6e96\u7684\u306aLagoon\u30c6\u30b9\u30c8\u306e\u7bc4\u56f2\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 features-kubernetes-2
\u306f\u3088\u308a\u9ad8\u5ea6\u306akub\u3092\u5b9f\u884c\u3057\u307e\u3059 * \u30a8\u30f3\u30c0\u30fc\u30f3\u7279\u6709\u306e\u30c6\u30b9\u30c8 - \u8907\u6570\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u8a2d\u5b9a\u3092\u30ab\u30d0\u30fc\u3002 nginx
\u3001node
\u3001python
\u306f\u3001\u305d\u308c\u305e\u308c\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30bf\u30a4\u30d7\u306b\u5bfe\u3057\u3066\u57fa\u672c\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 node-mongodb
\u306f\u3001\u5358\u4e00\u30dd\u30c3\u30c9\u306eMongoDB\u30c6\u30b9\u30c8\u3068Node.js\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u5bfe\u3059\u308bMongoDB DBaaS\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#_3","title":"\u30ed\u30fc\u30ab\u30eb\u958b\u767a","text":"\u307b\u3068\u3093\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u306fNode.js\u3067\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u591a\u304f\u304c\u540c\u69d8\u306eNode.js\u30b3\u30fc\u30c9\u3068Node.js\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u5171\u6709\u3057\u3066\u3044\u308b\u305f\u3081\u3001Yarn\u3068\u3044\u3046\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306fYarn workspaces\u3068\u547c\u3070\u308c\u307e\u3059\u3002Yarn workspaces\u306f\u3001\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u3092\u5b9a\u7fa9\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306bpackage.json
\u304c\u5fc5\u8981\u3067\u3059\u3002
\u30b5\u30fc\u30d3\u30b9\u306e\u958b\u767a\u306f\u3001Docker\u5185\u3067\u76f4\u63a5\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305d\u308c\u305e\u308c\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u3001\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304c\u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059(docker-compose.yml
\u3092\u53c2\u7167)\u3002Node.js\u81ea\u4f53\u304cnodemon
\u3092\u4ecb\u3057\u3066\u30b3\u30fc\u30c9\u3092\u76e3\u8996\u3057\u3001\u5909\u66f4\u304c\u3042\u308b\u3068Node.js\u30d7\u30ed\u30bb\u30b9\u3092\u81ea\u52d5\u7684\u306b\u518d\u8d77\u52d5\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#lagoon-commons","title":"lagoon-commons","text":"\u30b5\u30fc\u30d3\u30b9\u306f\u591a\u304f\u306eNode.js\u30d1\u30c3\u30b1\u30fc\u30b8\u3060\u3051\u3067\u306a\u304f\u3001\u5b9f\u969b\u306e\u30ab\u30b9\u30bf\u30e0\u30b3\u30fc\u30c9\u3082\u5171\u6709\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30b3\u30fc\u30c9\u306fnode-packages/lagoon-commons
\u5185\u306b\u3042\u308a\u3001\u81ea\u52d5\u7684\u306b\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3055\u308c\u307e\u3059\u3002 Yarn\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306b\u3088\u3063\u3066\u7ba1\u7406\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u30b5\u30fc\u30d3\u30b9\u306enodemon
\u306f\u3001node-packages
\u306e\u5909\u66f4\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3001\u30ce\u30fc\u30c9\u30d7\u30ed\u30bb\u30b9\u3092\u81ea\u52d5\u7684\u306b\u518d\u8d77\u52d5\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#_4","title":"\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":""},{"location":"ja/contributing-to-lagoon/developing-lagoon/#nodejsdocker","title":"Node.js\u30d9\u30fc\u30b9\u306e\u30b5\u30fc\u30d3\u30b9\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3067\u304d\u306a\u3044","text":"\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30a4\u30e1\u30fc\u30b8\u3092\u518d\u30d3\u30eb\u30c9\u3057\u3066\u304f\u3060\u3055\u3044:
\u30a4\u30e1\u30fc\u30b8\u306e\u518d\u69cb\u7bc9 make clean\n make build\n
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#nodejsnode_modules","title":"Node.js\u30d9\u30fc\u30b9\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9/\u5b9f\u884c\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001node_modules
\u306e\u5185\u5bb9\u304c\u4e0d\u8db3\u3057\u3066\u3044\u308b\u3068\u3044\u3046\u30a8\u30e9\u30fc\u304c\u51fa\u308b","text":"\u4e00\u90e8\u306e\u30b5\u30fc\u30d3\u30b9\u304cyarn
\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306b\u3088\u3063\u3066\u7ba1\u7406\u3055\u308c\u3066\u3044\u308b\u5171\u901a\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u6301\u3063\u3066\u3044\u308b\u305f\u3081\u3001Lagoon\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067yarn
\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#nipio","title":"nip.io
\u30c9\u30e1\u30a4\u30f3\u306e\u89e3\u6c7a\u3067\u30a8\u30e9\u30fc\u304c\u51fa\u308b","text":"\u30a8\u30e9\u30fcError response from daemon: Get https://registry.172.18.0.2.nip.io:32080/v2/: dial tcp: lookup registry.172.18.0.2.nip.io: no such host\n
\u3053\u308c\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u306e\u30ea\u30be\u30eb\u30d0\u304c\u7d50\u679c\u304b\u3089\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8IP\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u5834\u5408\u306b\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u3001/etc/resolv.conf
\u3092\u7de8\u96c6\u3057\u3066\u3001\u7d50\u679c\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3057\u306a\u3044\u516c\u958b\u30ea\u30be\u30eb\u30d0\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u3001\u4e0a\u90e8\u306bnameserver 8.8.8.8
\u306e\u3088\u3046\u306a\u884c\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#_5","title":"\u4f8b\u793a\u7684\u306a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc","text":"\u3053\u3053\u3067\u306f\u3001\u958b\u767a\u306e\u30b7\u30ca\u30ea\u30aa\u3068\u7269\u4e8b\u3092\u9032\u3081\u308b\u305f\u3081\u306e\u6709\u7528\u306a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#1","title":"\u30c6\u30b9\u30c8\u306e\u8ffd\u52a0 1. \u4e0a\u8a18\u306e\u6700\u521d\u306e\u624b\u9806\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002","text":" tests/tests/features-variables.yaml
\u3092\u7de8\u96c6\u3057\u3001\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002 tests
\u30a4\u30e1\u30fc\u30b8\u3092\u518d\u69cb\u7bc9\u3057\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u306e\u69cb\u7bc9rm build/tests\nmake -j8 build/tests\n
- \u65b0\u3057\u3044
tests
\u30a4\u30e1\u30fc\u30b8\u3092\u30af\u30e9\u30b9\u30bf\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u30a4\u30e1\u30fc\u30b8\u3092\u30d7\u30c3\u30b7\u30e5make kind/push-images IMAGES=tests\n
- \u30c6\u30b9\u30c8\u3092\u518d\u5b9f\u884c\u3057\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u3092\u518d\u5b9f\u884cmake kind/retest TESTS='[features-variables]'\n
"},{"location":"ja/contributing-to-lagoon/documentation/","title":"Lagoon\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3078\u306e\u8ca2\u732e","text":"\u7686\u3055\u3093\u304b\u3089\u3044\u305f\u3060\u3051\u308b\u3082\u306e\u306f\u4f55\u3067\u3082\u5927\u3044\u306b\u8a55\u4fa1\u3057\u307e\u3059\uff01
\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u4f5c\u6210\u3068\u95b2\u89a7\u3092\u975e\u5e38\u306b\u7c21\u5358\u306b\u3057\u3066\u304a\u308a\u3001\u30c1\u30fc\u30e0\u306f\u5e38\u306b\u30ec\u30d3\u30e5\u30fc\u3084\u30d2\u30f3\u30c8\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u6e96\u5099\u304c\u3067\u304d\u3066\u3044\u307e\u3059\u3002
\u79c1\u305f\u3061\u306f\u512a\u308c\u305fMaterial\u30c6\u30fc\u30de\u3068\u5171\u306bmkdocs\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/documentation/#_1","title":"\u30ed\u30fc\u30ab\u30eb\u3067\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u95b2\u89a7\u3068\u66f4\u65b0","text":"Lagoon\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30eb\u30fc\u30c8\u304b\u3089(Docker\u304c\u5fc5\u8981\u3067\u3059)\u3001\u4ee5\u4e0b\u3092\u5b9f\u884c\u3057\u307e\u3059:
Get local docs up and running.docker run --rm -it -p 127.0.0.1:8000:8000 -v ${PWD}:/docs ghcr.io/amazeeio/mkdocs-material\n
\u3053\u308c\u306b\u3088\u308a\u3001\u4efb\u610f\u306e\u66f4\u65b0\u3067\u30e9\u30a4\u30d6\u30ea\u30ed\u30fc\u30c9\u304c\u8a2d\u5b9a\u3055\u308c\u305f\u958b\u767a\u30b5\u30fc\u30d0\u30fc\u304c http://127.0.0.1:8000\u3067\u8d77\u52d5\u3057\u307e\u3059\u3002
\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3055\u308c\u305fDocker\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001\u5fc5\u8981\u306a\u3059\u3079\u3066\u306e\u62e1\u5f35\u6a5f\u80fd\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
\u3042\u308b\u3044\u306f\u3001mkdocs
\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001mkdocs\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u5fc5\u8981\u306a\u3059\u3079\u3066\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
Install mkdocspip3 install -r docs/requirements.txt\nmkdocs serve\n
"},{"location":"ja/contributing-to-lagoon/documentation/#_2","title":"\u30af\u30e9\u30a6\u30c9\u3067\u306e\u7de8\u96c6","text":"\u5404\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30da\u30fc\u30b8\u306b\u306f\u3001\u53f3\u4e0a\u306b\"\u7de8\u96c6\"\u306e\u925b\u7b46\u30a2\u30a4\u30b3\u30f3\u304c\u3042\u308a\u3001\u305d\u308c\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u6b63\u3057\u3044\u30da\u30fc\u30b8\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002 Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u3066\u3002
\u3053\u3061\u3089\u3067\u3082\u304a\u6c17\u8efd\u306b\u8ca2\u732e\u3057\u3066\u3044\u305f\u3060\u3051\u307e\u3059\u3002\u7d44\u307f\u8fbc\u307f\u306egithub.dev web\u30d9\u30fc\u30b9\u306e\u30a8\u30c7\u30a3\u30bf\u30fc\u3092\u3044\u3064\u3067\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u57fa\u672c\u7684\u306a\u30de\u30fc\u30af\u30c0\u30a6\u30f3\u306e\u30d7\u30ec\u30d3\u30e5\u30fc\u304c\u3042\u308a\u307e\u3059\u304c\u3001mkdocs\u306e\u7d20\u6674\u3089\u3057\u3055\u306f\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/contributing-to-lagoon/documentation/#_3","title":"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30d7\u30ed\u30a4\u65b9\u6cd5","text":"\u79c1\u305f\u3061\u306fDeploy MkDocs GitHub\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3001\u3059\u3079\u3066\u306e\u30e1\u30a4\u30f3\u30d6\u30e9\u30f3\u30c1\u306e\u30d7\u30c3\u30b7\u30e5\u3092\u30d3\u30eb\u30c9\u3057\u3001gh-pages
\u30d6\u30e9\u30f3\u30c1\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u30c8\u30ea\u30ac\u30fc\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/releasing/","title":"Lagoon\u306e\u30ea\u30ea\u30fc\u30b9","text":"Lagoon\u306b\u306f\u591a\u304f\u306e\u52d5\u7684\u306a\u90e8\u5206\u304c\u3042\u308b\u305f\u3081\u3001\u30ea\u30ea\u30fc\u30b9\u306f\u304b\u306a\u308a\u8907\u96d1\u3067\u3059\uff01
"},{"location":"ja/contributing-to-lagoon/releasing/#lagoon-core-","title":"Lagoon-core - \u30bf\u30b0\u3068\u30c6\u30b9\u30c8","text":" - \u6b21\u306e\u5168\u3066\u306e\u7279\u5b9a\u3055\u308c\u305f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30e1\u30a4\u30f3\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059:
- uselagoon/lagoon
- uselagoon/build-deploy-tool
- uselagoon/lagoon-ui
- \u78ba\u8a8d\u304c\u7d42\u308f\u3063\u305f\u3089\u3001\u6b21\u306e\u30bf\u30b0(\u30de\u30a4\u30ca\u30fc\u307e\u305f\u306f\u30d1\u30c3\u30c1)\u3092\u30e1\u30a4\u30f3\u30d6\u30e9\u30f3\u30c1\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306fv2.MINOR.PATCH\u3068\u3057\u3001semver\u306b\u5f93\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Jenkins\u30d3\u30eb\u30c9\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u3001https://ci.lagoon.sh/blue/organizations/jenkins/lagoon/branches \u3067\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- \u3053\u308c\u304c\u30d3\u30eb\u30c9\u4e2d\u306e\u9593\u3001
lagoon-ui
\u3068 build-deploy-tool
\u306e\u9069\u5207\u306a\u30b3\u30df\u30c3\u30c8\u306b\u8efd\u91cf\u30bf\u30b0\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f core-v2.MINOR.PATCH \u3068\u3057\u307e\u3059\u3002build-deploy-tool\u306b\u306f\u4ed6\u306e\u30bf\u30b0\u3084\u30ea\u30ea\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001lagoon-ui\u306b\u306f\u72ec\u81ea\u306esemver\u30ea\u30ea\u30fc\u30b9\u304c\u3042\u308a\u3001\u3053\u308c\u306f\u305d\u306e\u6a5f\u80fd\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002 - Jenkins\u3067\u306e\u30d3\u30eb\u30c9\u304c\u6210\u529f\u3057\u305f\u3089\u3001https://github.com/uselagoon/lagoon-charts \u306b\u79fb\u52d5\u3057\u3066\u3001\u30c1\u30e3\u30fc\u30c8\u30ea\u30ea\u30fc\u30b9\u306e\u6e96\u5099\u3092\u3057\u307e\u3059\u3002
-
lagoon-core
\u3068 lagoon-test
\u30c1\u30e3\u30fc\u30c8\u306echart.yaml\u3067\u3001\u66f4\u65b0\u3057\u307e\u3059\u3002 \u4ee5\u4e0b\u306e\u30d5\u30a3\u30fc\u30eb\u30c9:
- \u30d0\u30fc\u30b8\u30e7\u30f3: \u3053\u308c\u306f\u30c1\u30e3\u30fc\u30c8\u306e\u6b21\u306e\u300c\u30de\u30a4\u30ca\u30fc\u300d\u30ea\u30ea\u30fc\u30b9\u3067\u3001\u901a\u5e38\u306f\u5bfe\u5fdc\u3059\u308blagoon-core\u30ea\u30ea\u30fc\u30b9\u306e\u305f\u3081\u306e\u30de\u30a4\u30ca\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059
- appVersion: \u3053\u308c\u306f\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305flagoon-core\u306e\u5b9f\u969b\u306e\u30bf\u30b0\u3067\u3059
- artifacthub.io/changes: \u5fc5\u8981\u306a\u306e\u306f\u4ee5\u4e0b\u306e\u30b9\u30cb\u30da\u30c3\u30c8\u306e2\u884c\u3067\u3001\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u5b9f\u969b\u306eappVersion\u306b\u5408\u308f\u305b\u3066\u5909\u66f4\u3055\u308c\u307e\u3059\u3002
sample chart.yml snippets
# \u3053\u308c\u306f\u30c1\u30e3\u30fc\u30c8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3059\u3002\u3053\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u306f\u3001\u30a2\u30d7\u30ea\n# \u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u542b\u3080\u3001\u30c1\u30e3\u30fc\u30c8\u3068\u305d\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u305f\u3073\u306b\u5897\u3084\u3059\u3079\u304d\u3067\u3059\u3002\n# \u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0(https://semver.org/)\u306b\u5f93\u3046\u3053\u3068\u304c\u671f\u5f85\u3055\u308c\u307e\u3059\u3002\nversion: 1.28.0\n# \u3053\u308c\u306f\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u3067\u3059\u3002\u3053\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\n# \u756a\u53f7\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u305f\u3073\u306b\u5897\u52a0\u3055\u305b\u308b\u3079\u304d\u3067\u3059\u3002\n# \u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u306b\u5f93\u3046\u3053\u3068\u304c\u671f\u5f85\u3055\u308c\u307e\u305b\u3093\u3002\u305d\u308c\u3089\u306f\n# \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u4f7f\u7528\u3057\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u53cd\u6620\u3059\u308b\u3079\u304d\u3067\u3059\u3002\nappVersion: v2.14.2\n# \u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306f\u3001artifacthub.io\u306e\u30c1\u30a7\u30f3\u30b8\u30ed\u30b0\u3092\u53ce\u96c6\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\n# \u305d\u308c\u306f\u5404\u30ea\u30ea\u30fc\u30b9\u3054\u3068\u306b\u65b0\u305f\u306b\u958b\u59cb\u3055\u308c\u308b\u3079\u304d\u3067\u3059\n# \u6709\u52b9\u306a\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u7a2e\u985e\u306f\u3001\u8ffd\u52a0\u3001\u5909\u66f4\u3001\u975e\u63a8\u5968\u3001\u524a\u9664\u3001\u4fee\u6b63\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u304c\u3042\u308a\u307e\u3059\nannotations:\nartifacthub.io/changes: |\n- \u7a2e\u985e: \u5909\u66f4\n\u8aac\u660e: Lagoon appVersion\u3092v2.14.2\u306b\u66f4\u65b0\n
lagoon-core\u30ea\u30ea\u30fc\u30b9\u306e\u7d50\u679c\u3001lagoon-core\u3068lagoon-test\u306e\u30c1\u30e3\u30fc\u30c8\u306e\u307f\u304c\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002\u4ed6\u306b\u5909\u66f4\u304c\u3042\u308b\u5834\u5408\u306f\u3001lagoon-remote\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002 -
\u3053\u306e\u30c1\u30e3\u30fc\u30c8\u30ea\u30ea\u30fc\u30b9\u306ePR\u3092\u4f5c\u6210\u3057\u3001Github Actions\u30b9\u30a4\u30fc\u30c8\u304c\u4e00\u9023\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u65bd\u3057\u307e\u3059:
- Lint\u3068\u30c6\u30b9\u30c8\u30c1\u30e3\u30fc\u30c8 - \u30de\u30c8\u30ea\u30af\u30b9: \u73fe\u5728\u30c6\u30b9\u30c8\u3055\u308c\u3066\u3044\u308bKubernetes\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5bfe\u3057\u3066lint\u3068\u30c1\u30e3\u30fc\u30c8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u884c\u3044\u307e\u3059
- Lint\u3068\u30c6\u30b9\u30c8\u30c1\u30e3\u30fc\u30c8 - current: \u4ee5\u524d/\u5c06\u6765\u306eKubernetes\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5bfe\u3057\u3066lint\u3068\u30c1\u30e3\u30fc\u30c8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u884c\u3044\u307e\u3059
- Lagoon tests: \u30ea\u30ea\u30fc\u30b9\u306b\u5bfe\u3057\u3066ansible\u30c6\u30b9\u30c8\u306e\u5168\u30b7\u30ea\u30fc\u30ba\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u901a\u5e38\u3001lint\u3068\u30c6\u30b9\u30c8\u30c1\u30e3\u30fc\u30c8\u306e\u5931\u6557\u306f\u3088\u304f\u8aac\u660e\u3055\u308c\u3066\u3044\u307e\u3059(\u30c1\u30e3\u30fc\u30c8\u8a2d\u5b9a\u306e\u6b20\u843d/\u8aa4\u8a2d\u5b9a)\u3002\u5358\u4e00\u306eLagoon\u30c6\u30b9\u30c8\u304c\u5931\u6557\u3059\u308b\u5834\u5408\u306f\u3001\u518d\u5b9f\u884c\u3059\u308b\u3060\u3051\u3067\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u8907\u6570\u306e\u5931\u6557\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001\u8abf\u67fb\u304c\u5fc5\u8981\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u30c6\u30b9\u30c8\u304c\u3059\u3079\u3066\u6210\u529f\u3057\u305f\u5f8c\u3001\u30ea\u30ea\u30fc\u30b9\u306e\u4f5c\u6210\u3092\u9032\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
"},{"location":"ja/contributing-to-lagoon/releasing/#lagoon-core-_1","title":"Lagoon-core - \u30ea\u30ea\u30fc\u30b9\u3068\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8","text":" - uselagoon/lagoon \u3067\u3001\u5148\u307b\u3069\u30d7\u30c3\u30b7\u30e5\u3057\u305f\u30bf\u30b0\u304b\u3089\u30ea\u30ea\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\"\u30ea\u30ea\u30fc\u30b9\u306e\u751f\u6210 \"notes\"\u30dc\u30bf\u30f3\u3092\u4f7f\u3063\u3066\u5909\u66f4\u5c65\u6b74\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u30ea\u30ea\u30fc\u30b9\u306b\u542b\u3081\u308b\u5185\u5bb9\u306b\u3064\u3044\u3066\u306f\u3001\u4ee5\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u307e\u305f\u3001lagoon-images\u306e\u30ea\u30f3\u30af\u306f\u5e38\u306b\u6700\u65b0\u306e\u30ea\u30ea\u30fc\u30b9\u7248\u3068\u306a\u308a\u307e\u3059\u3002\u30c1\u30e3\u30fc\u30c8\u3001lagoon-ui\u3001build-deploy-tool\u3078\u306e\u30ea\u30f3\u30af\u306f\u3059\u3079\u3066\u4eca\u3059\u3050\u57cb\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u30ea\u30f3\u30af\u306f\u4eca\u5f8c\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u52d5\u4f5c\u3057\u307e\u305b\u3093\u3002\u3053\u308c\u3092\u6700\u65b0\u306e\u30ea\u30ea\u30fc\u30b9\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u3001\u30ea\u30ea\u30fc\u30b9\u3092\u516c\u958b\u3057\u307e\u3059\u3002
- uselagoon/build-deploy-tool \u3067\u3001\u5148\u307b\u3069\u30d7\u30c3\u30b7\u30e5\u3057\u305f\u30bf\u30b0\u304b\u3089\u30ea\u30ea\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\"\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u3092\u751f\u6210\"\u30dc\u30bf\u30f3\u3092\u4f7f\u7528\u3057\u3066\u5909\u66f4\u5c65\u6b74\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u6700\u5f8c\u306ecore-v2.X\u30bf\u30b0\u304c\u4f7f\u7528\u3055\u308c\u3001\u4ed6\u306e\u30bf\u30b0\u306f\u4f7f\u7528\u3055\u308c\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u30ea\u30ea\u30fc\u30b9\u306b\u542b\u3081\u308b\u5185\u5bb9\u306b\u3064\u3044\u3066\u306f\u3001\u4ee5\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3092\u6700\u65b0\u306e\u30ea\u30ea\u30fc\u30b9\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u3001\u30ea\u30ea\u30fc\u30b9\u3092\u516c\u958b\u3057\u307e\u3059\u3002
- uselagoon/lagoon-ui \u3067\u3001\u5148\u307b\u3069\u30d7\u30c3\u30b7\u30e5\u3057\u305f\u30bf\u30b0\u304b\u3089\u30ea\u30ea\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\"\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u3092\u751f\u6210\"\u30dc\u30bf\u30f3\u3092\u4f7f\u7528\u3057\u3066\u5909\u66f4\u5c65\u6b74\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u6700\u5f8c\u306ecore-v2.X\u30bf\u30b0\u304c\u4f7f\u7528\u3055\u308c\u3001\u4ed6\u306e\u30bf\u30b0\u306f\u4f7f\u7528\u3055\u308c\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u30ea\u30ea\u30fc\u30b9\u306b\u542b\u3081\u308b\u5185\u5bb9\u306b\u3064\u3044\u3066\u306f\u3001\u4ee5\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3092\u6700\u65b0\u306e\u30ea\u30ea\u30fc\u30b9\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u3001\u30ea\u30ea\u30fc\u30b9\u3092\u516c\u958b\u3057\u307e\u3059\u3002
- uselagoon/lagoon-charts \u3067 \u6210\u529f\u3057\u305fPR\u3092\u30de\u30fc\u30b8\u3059\u308b\u3068\u3001lagoon-core\u3068lagoon-test\u306e\u30ea\u30ea\u30fc\u30b9\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\u7d50\u679c\u3068\u3057\u3066\u5f97\u3089\u308c\u305flagoon-core\u30c1\u30e3\u30fc\u30c8\u30ea\u30ea\u30fc\u30b9\u3092\u7de8\u96c6\u3057\u3001\u30bf\u30a4\u30c8\u30eb\u3068\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\u3059\u308blagoon\u30ea\u30ea\u30fc\u30b9\u3092\u8a18\u8f09\u3057\u307e\u3059\u3002\u4ee5\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u3068\u540c\u69d8\u306b\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/releasing/#lagoon-","title":"Lagoon\u30ea\u30e2\u30fc\u30c8 - \u30ea\u30ea\u30fc\u30b9\u3068\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8","text":"Lagoon remote\u306fLagoon Core\u3068\u306f\u5225\u306e\u30ea\u30ea\u30fc\u30b9\u30b5\u30a4\u30af\u30eb\u3092\u6301\u3061\u3001\u305d\u306e\u305f\u3081\u3001\u4f9d\u5b58\u95a2\u4fc2\u306e\u3042\u308b\u30b5\u30d6\u30c1\u30e3\u30fc\u30c8\u3084\u30b5\u30fc\u30d3\u30b9\u304c\u66f4\u65b0\u3055\u308c\u308b\u305f\u3073\u306b\u30ea\u30ea\u30fc\u30b9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/tests/","title":"\u30c6\u30b9\u30c8","text":"\u79c1\u305f\u3061\u306e\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8\u306fAnsible\u3067\u66f8\u304b\u308c\u3066\u304a\u308a\u3001\u4e3b\u306b\u4ee5\u4e0b\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u5f93\u3063\u3066\u3044\u307e\u3059:
- \u65b0\u3057\u3044Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
- \u30d5\u30a1\u30a4\u30eb\u306e\u30ea\u30b9\u30c8(
tests/files
\u5185)\u304b\u3089\u4e00\u90e8\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3057\u3001\u3053\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30df\u30c3\u30c8\u3057\u307e\u3059\u3002 - \u3053\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3092Git\u30b5\u30fc\u30d0\u30fc(\u30ed\u30fc\u30ab\u30eb\u307e\u305f\u306fGitHub\u4e0a)\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
- \u30c8\u30ea\u30ac\u30fc\u30b5\u30fc\u30d3\u30b9(\u4f8b\u3048\u3070\u3001\u5b9f\u969b\u306b\u9001\u4fe1\u3055\u308c\u308b\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u3068\u540c\u3058\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u30cf\u30f3\u30c9\u30e9\u30fc\u3078\u306e\u30a6\u30a7\u30d6\u30d5\u30c3\u30af)\u306b\u30c8\u30ea\u30ac\u30fc\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002
- \u30c6\u30b9\u30c8\u304c\u4f55\u304b\u304c\u8d77\u3053\u308b\u3053\u3068\u3092\u671f\u5f85\u3059\u308bURL\u3092\u76e3\u8996\u3092\u958b\u59cb\u3057\u307e\u3059(\u4f8b\u3048\u3070\u3001Git\u30d6\u30e9\u30f3\u30c1\u3092HTML\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u6301\u3064Node.js\u30a2\u30d7\u30ea\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u306a\u3069)\u3002
- URL\u306e\u7d50\u679c\u3068\u671f\u5f85\u3055\u308c\u308b\u7d50\u679c\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
Lagoon\u306f\u4e3b\u306b3\u3064\u306e\u7570\u306a\u308b\u65b9\u6cd5\u3067\u30c6\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059:
"},{"location":"ja/contributing-to-lagoon/tests/#1","title":"1. \u30ed\u30fc\u30ab\u30eb\u3067","text":"\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u4e2d\u306b\u30c6\u30b9\u30c8\u3059\u308b\u6700\u5584\u306e\u65b9\u6cd5\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u306e\u30c6\u30b9\u30c8\u3067\u3059\u3002\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8\u306fmake
\u3092\u4ecb\u3057\u3066\u958b\u59cb\u3055\u308c\u307e\u3059\u3002Make\u306f\u5fc5\u8981\u306a\u3059\u3079\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001\u30d3\u30eb\u30c9\u3057\u307e\u3059\u3002
Make testsmake tests\n
\u3053\u308c\u306b\u3088\u308a\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u30c6\u30b9\u30c8\u306e\u4e00\u90e8\u3060\u3051\u3092\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306f\u3001make tests-list
\u3092\u5b9f\u884c\u3057\u3066\u3059\u3079\u3066\u306e\u5b58\u5728\u3059\u308b\u30c6\u30b9\u30c8\u3092\u8868\u793a\u3057\u3001\u305d\u308c\u305e\u308c\u3092\u500b\u5225\u306b\u5b9f\u884c\u3057\u307e\u3059\u3002
\u305f\u3068\u3048\u3070\u3001make tests/node
\u306fNode.js Docker\u30a4\u30e1\u30fc\u30b8\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u3067 \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u306e\u5185\u90e8\u3067\u4f55\u304c\u8d77\u3053\u3063\u3066\u3044\u308b\u306e\u304b\u3092\u5b9f\u969b\u306b\u898b\u308b\u305f\u3081\u306b\u306f\u3001make logs
\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059:
Make logsmake logs\n
\u307e\u305f\u306f\u7279\u5b9a\u306e\u30b5\u30fc\u30d3\u30b9\u3060\u3051\u3092\u8868\u793a\u3059\u308b\u306b\u306f:
Make logsmake logs service=webhook-handler\n
"},{"location":"ja/contributing-to-lagoon/tests/#2","title":"2. \u81ea\u52d5\u5316\u3055\u308c\u305f\u7d71\u5408\u30c6\u30b9\u30c8","text":"Lagoon\u306b\u5bfe\u3057\u3066\u4f5c\u6210\u3055\u308c\u305f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30c6\u30b9\u30c8\u3059\u308b\u305f\u3081\u306b\u3001\u5c02\u7528\u306eJenkins\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u5b8c\u5168\u306b\u81ea\u52d5\u5316\u3055\u308c\u305f\u7d71\u5408\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u3066\u3044\u307e\u3059:https://ci.lagoon.sh\u3002\u3053\u308c\u306f.Jenkinsfile
\u5185\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u304a\u308a\u3001\u958b\u304b\u308c\u305f\u3059\u3079\u3066\u306e\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5bfe\u3057\u3066\u81ea\u52d5\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002
\u3053\u308c\u306b\u3088\u308a\u3001\u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u3001Kubernetes\u30af\u30e9\u30b9\u30bf\u304c\u8d77\u52d5\u3057\u3001\u4e00\u9023\u306e\u30c6\u30b9\u30c8\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u306f\u3053\u3053\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
- https://ci.lagoon.sh/blue/organizations/jenkins/lagoon/activity
"},{"location":"ja/docker-images/commons/","title":"Commons","text":"Lagoon commons
Docker\u30a4\u30e1\u30fc\u30b8\u3002\u516c\u5f0f\u306eAlpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u3066\u3044\u307e\u3059\u3002
\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u81ea\u4f53\u306f\u6a5f\u80fd\u3092\u6301\u3061\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u4ed6\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u30a4\u30e1\u30fc\u30b8\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Lagoon\u5185\u306e\u3059\u3079\u3066\u306ealpine\u30d9\u30fc\u30b9\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u3001commons\u304b\u3089\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u7d99\u627f\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/commons/#_1","title":"\u30c4\u30fc\u30eb","text":" docker-sleep
- \u6a19\u6e96\u5316\u3055\u308c\u305f1\u6642\u9593\u306e\u30b9\u30ea\u30fc\u30d7\u6a5f\u80fd fix-permissions
- \u6307\u5b9a\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u3092\u81ea\u52d5\u7684\u306b\u5168\u30b0\u30eb\u30fc\u30d7\u306e\u8aad\u307f\u66f8\u304d\u53ef\u80fd\u306b\u5909\u66f4 wait-for
- \u30b5\u30fc\u30d3\u30b9\u304c\u6b63\u3057\u3044\u9806\u5e8f\u3067\u8d77\u52d5\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5c0f\u3055\u306a\u30b9\u30af\u30ea\u30d7\u30c8 - https://github.com/eficode/wait-for \u3092\u57fa\u306b\u3057\u3066\u3044\u307e\u3059 entrypoint-readiness
- \u9577\u6642\u9593\u5b9f\u884c\u3055\u308c\u308b\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u304c\u5b8c\u4e86\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d entrypoints
- /lagoon/entrypoints/* \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3092\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u9806/\u6570\u5024\u9806\u306b\u8aad\u307f\u8fbc\u3080\u30b9\u30af\u30ea\u30d7\u30c8
"},{"location":"ja/docker-images/commons/#_2","title":"\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u306e\u4e00\u89a7\u306fhttps://github.com/uselagoon/lagoon-images/tree/main/images/commons/lagoon/entrypoints\u306b\u3042\u308a\u307e\u3059\u3002\u4ee5\u964d\u306e\u4e0b\u6d41\u30a4\u30e1\u30fc\u30b8\u3082\u3001/lagoon
\u914d\u4e0b\u306b\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3092\u8ffd\u52a0\u3067\u304d\u3001\u6700\u7d42\u7684\u306a\u30a4\u30e1\u30fc\u30b8\u3067\u5b9f\u884c\u3055\u307e\u3059\u3002
"},{"location":"ja/docker-images/mariadb/","title":"MariaDB","text":"MariaDB\u306f\u3001MySQL\u306e\u5f8c\u7d99\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u3067\u3059\u3002
Lagoon\u306e MariaDB
\u30a4\u30e1\u30fc\u30b8\u306eDockerfile\u306f\u3001\u516c\u5f0f\u306eAlpine\u30a4\u30e1\u30fc\u30b8\u3067\u63d0\u4f9b\u3055\u308c\u308b mariadb
\u3068 mariadb-client
\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eMariaDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
- 10.4 Dockerfile (Alpine 3.12 \u306f2022\u5e745\u6708\u307e\u3067\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mariadb-10.4
- 10.5 Dockerfile (Alpine 3.14 \u306f2023\u5e745\u6708\u307e\u3067\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mariadb-10.5
- 10.6 Dockerfile (Alpine 3.16 \u306f2024\u5e745\u6708\u307e\u3067\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mariadb-10.6
- 10.11 Dockerfile (Alpine 3.18 \u306f2025\u5e745\u6708\u307e\u3067\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mariadb-10.11
\u60c5\u5831
\u3053\u308c\u3089\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u516c\u5f0f\u306eMariaDB\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u69cb\u7bc9\u3055\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u30b5\u30dd\u30fc\u30c8\u30b5\u30a4\u30af\u30eb\u304c\u7570\u306a\u308a\u3001\u57fa\u76e4\u3068\u306a\u308bAlpine\u30a4\u30e1\u30fc\u30b8\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u671f\u9593\u306e\u307f\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u304c\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://alpinelinux.org/releases/\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5b9f\u969b\u306b\u306f\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001MariaDB\u30b3\u30f3\u30c6\u30ca\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u306e\u307f\u5b9f\u884c\u3057\u3001\u672c\u756a\u74b0\u5883\u3067\u306fDBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u304c\u63d0\u4f9b\u3059\u308bManaged Cloud Databases\u3092\u5229\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/mariadb/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"MariaDB\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c83306
\u3067\u3059\u3002
Lagoon\u304cMariaDB\u30b3\u30f3\u30c6\u30ca\u306e\u5b9f\u884c\u65b9\u6cd5\u3092\u6700\u9069\u306b\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001lagoon.type: mariadb
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001DBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306f\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u3067\u5229\u7528\u53ef\u80fd\u306a\u5834\u5408\u3001\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u5185\u3067MariaDB\u3092\u78ba\u5b9f\u306b\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306f\u3001lagoon.type: mariadb-single
\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002MariaDB\u30b3\u30f3\u30c6\u30ca\u306b\u5bfe\u3057\u3066\u306f\u3001\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u5e38\u306b/var/lib/mysql
\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002
\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 readiness-probe.sh
\u30b9\u30af\u30ea\u30d7\u30c8\u3001MariaDB \u30b3\u30f3\u30c6\u30ca\u306e\u6e96\u5099\u5b8c\u4e86\u72b6\u614b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/mariadb/#docker-composeyml-snippet","title":"docker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.yml mariadb:\nimage: uselagoon/mariadb-10.6-drupal:latest\nlabels:\n# Lagoon\u306bMariaDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u308b\nlagoon.type: mariadb\nports:\n# \u30dd\u30fc\u30c83306\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u3067\u516c\u958b\u3057\u3001`docker-compose port mariadb 3306`\u3067\u305d\u308c\u3092\u898b\u3064\u3051\u308b\n- \"3306\"\nvolumes:\n# MariaDB\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9\u306b\u540d\u524d\u4ed8\u304d\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\n- db:/var/lib/mysql\n
"},{"location":"ja/docker-images/mariadb/#included-tools","title":"\u30c4\u30fc\u30eb","text":" mysqltuner.pl
- \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u306b\u4fbf\u5229\u306aPerl\u30b9\u30af\u30ea\u30d7\u30c8\u3002 mysql-backup.sh
- \u958b\u767a\u74b0\u5883\u3067 MySQL \u306e\u65e5\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u81ea\u52d5\u5316\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3002 pwgen
- \u30e9\u30f3\u30c0\u30e0\u3067\u8907\u96d1\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u751f\u6210\u3059\u308b\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u3002
"},{"location":"ja/docker-images/mariadb/#included-mycnf-configuration-file","title":"my.cnf
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Lagoon\u3067\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3055\u308c\u305f \u30c7\u30d5\u30a9\u30eb\u30c8 \u306eMariaDB\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u4ed8\u5c5e\u3057\u3066\u3044\u307e\u3059\u3002\u4e00\u90e8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
"},{"location":"ja/docker-images/mariadb/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u74b0\u5883\u5909\u6570\u540d \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e MARIADB_DATABASE lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d MARIADB_USER lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc MARIADB_PASSWORD lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 MARIADB_ROOT_PASSWORD Lag00n MariaDB\u306e\u30eb\u30fc\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 MARIADB_CHARSET utf8mb4 \u30b5\u30fc\u30d0\u30fc\u306e\u6587\u5b57\u30bb\u30c3\u30c8\u3092\u8a2d\u5b9a\u3059\u308b MARIADB_COLLATION utf8mb4_bin \u30b5\u30fc\u30d0\u30fc\u306e\u7167\u5408\u9806\u5e8f\u3092\u8a2d\u5b9a\u3059\u308b MARIADB_MAX_ALLOWED_PACKET 64M max_allowed_packet
\u306e\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\u3059\u308b MARIADB_INNODB_BUFFER_POOL_SIZE 256M MariaDB InnoDB\u30d0\u30c3\u30d5\u30a1\u30d7\u30fc\u30eb\u306e\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\u3057\u307e\u3059 MARIADB_INNODB_BUFFER_POOL_INSTANCES 1 InnoDB\u30d0\u30c3\u30d5\u30a1\u30d7\u30fc\u30eb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u6570 MARIADB_INNODB_LOG_FILE_SIZE 64M InnoDB\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u30b5\u30a4\u30ba MARIADB_LOG_SLOW (\u8a2d\u5b9a\u306a\u3057) \u9045\u3044\u30af\u30a8\u30ea\u306e\u4fdd\u5b58\u3092\u5236\u5fa1\u3059\u308b\u5909\u6570 MARIADB_LOG_QUERIES (\u8a2d\u5b9a\u306a\u3057) \u3059\u3079\u3066\u306e\u30af\u30a8\u30ea\u306e\u4fdd\u5b58\u3092\u5236\u5fa1\u3059\u308b\u5909\u6570 BACKUPS_DIR /var/lib/mysql/backup \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9 MARIADB_DATA_DIR /var/lib/mysql MariaDB\u306e\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3002\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u3053\u306e\u5024\u3092\u5909\u66f4\u3059\u308b\u3068\u30c7\u30fc\u30bf\u640d\u5931\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff01 MARIADB_COPY_DATA_DIR_SOURCE (\u8a2d\u5b9a\u306a\u3057) Mariadb\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u3001\u8a2d\u5b9a\u3055\u308c\u305fARIADB_DATA_DIR
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u30c7\u30fc\u30bf\u3092\u30b3\u30d4\u30fc\u3059\u308b\u969b\u306b\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u306b\u3064\u3044\u3066\u30bb\u30eb\u540d\u3057\u307e\u3059\u3002\u3053\u306e\u30d1\u30b9\u3092\u5229\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u3042\u3089\u304b\u3058\u3081MariaDB\u306b\u6295\u5165\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305f\u3060\u3057\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u306fSQL\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u306a\u304f\u3001\u5b9f\u969b\u306eMariaDB\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001\u30b3\u30d4\u30fc\u5148\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u65e2\u5b58\u306eMySQL\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306b\u306e\u307f\u3001\u30c7\u30fc\u30bf\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002 LAGOON_ENVIRONMENT_TYPE
\u5909\u6570\u304c production
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306f MARIADB_INNODB_BUFFER_POOL_SIZE=1024
\u304a\u3088\u3073 MARIADB_INNODB_LOG_FILE_SIZE=256
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u6700\u9069\u5316\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/mongodb/","title":"MongoDB","text":"MongoDB\u306f\u3001\u6c4e\u7528\u7684\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u578b\u5206\u6563\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3042\u308a\u3001\u73fe\u4ee3\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u8005\u3084\u30af\u30e9\u30a6\u30c9\u6642\u4ee3\u306e\u30cb\u30fc\u30ba\u306b\u5408\u308f\u305b\u3066\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30c7\u30fc\u30bf\u306f JSON\u306e\u3088\u3046\u306a\u5f62\u5f0f\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u4fdd\u5b58\u3055\u308c\u307e\u3059
- \u51fa\u5178: mongodb.com
"},{"location":"ja/docker-images/mongodb/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":"4.0 Dockerfile - uselagoon/mongo-4
\u3053\u306eDockerfile\u306f\u3001\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eMongoDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/mongodb/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u3082\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3001Kubernetes\u3084OpenShift\u3067\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/docker-images/mysql/","title":"MySQL","text":"MySQL\u306f\u4eba\u6c17\u306e\u3042\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0(RDBMS)\u3067\u3059\u3002
Lagoon\u306e MySQl
\u30a4\u30e1\u30fc\u30b8\u306eDockerfile\u306f\u3001\u516c\u5f0f\u306e\u30a2\u30c3\u30d7\u30b9\u30c8\u30ea\u30fc\u30e0docker \u30a4\u30e1\u30fc\u30b8mysql
(Oracle Linux variant)\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eMariaDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
- 8.0 Dockerfile (2026\u5e744\u6708\u307e\u3067\u5ef6\u9577\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mysql-8.0
- 8.4 Dockerfile (2032\u5e744\u6708\u307e\u3067\u5ef6\u9577\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mysql-8.4
\u60c5\u5831
\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fMariaDB\u30a4\u30e1\u30fc\u30b8\u306e\u5b8c\u5168\u306a\u4ee3\u66ff\u54c1\u3068\u3057\u3066\u4f5c\u3089\u308c\u305f\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u306e\u305f\u3081\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3067\u52d5\u4f5c\u3055\u305b\u308b\u306b\u306f\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u5fc5\u8981\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/docker-images/mysql/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"MySQL\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c83306
\u3067\u3059\u3002
Lagoon\u304cMySQL\u30b3\u30f3\u30c6\u30ca\u306e\u5b9f\u884c\u65b9\u6cd5\u3092\u6700\u9069\u306b\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001lagoon.type: mariadb
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001DBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306f\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u3067\u5229\u7528\u53ef\u80fd\u306a\u5834\u5408\u3001\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u5185\u3067MySQL\u3092\u78ba\u5b9f\u306b\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306f\u3001lagoon.type: mariadb-single
\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002MySQL\u30b3\u30f3\u30c6\u30ca\u306b\u5bfe\u3057\u3066\u306f\u3001\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u5e38\u306b/var/lib/mysql
\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002
\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 readiness-probe.sh
\u30b9\u30af\u30ea\u30d7\u30c8\u3001MariaDB \u30b3\u30f3\u30c6\u30ca\u306e\u6e96\u5099\u5b8c\u4e86\u72b6\u614b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/mysql/#docker-composeyml-snippet-for-non-drupal-projects","title":"\u975eDrupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306edocker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.yml mariadb:\nimage: uselagoon/mysql-8.4:latest\nlabels:\n# Lagoon\u306bMariaDB\u4e92\u63db\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u308b\nlagoon.type: mariadb\nports:\n# \u30dd\u30fc\u30c83306\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u3067\u516c\u958b\u3057\u3001`docker-compose port mysql 3306`\u3067\u305d\u308c\u3092\u898b\u3064\u3051\u308b\n- \"3306\"\nvolumes:\n# MySQL\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9\u306b\u540d\u524d\u4ed8\u304d\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\n- db:/var/lib/mysql\n
"},{"location":"ja/docker-images/mysql/#docker-composeyml-snippet-for-drupal-projects","title":"Drupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306edocker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.yml mariadb:\nimage: uselagoon/mysql-8.4:latest\nlabels:\n# Lagoon\u306bMariaDB\u4e92\u63db\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u308b\nlagoon.type: mariadb\nports:\n# \u30dd\u30fc\u30c83306\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u3067\u516c\u958b\u3057\u3001`docker-compose port mysql 3306`\u3067\u305d\u308c\u3092\u898b\u3064\u3051\u308b\n- \"3306\"\nenvironment:\n# Lagoon\u3067Drupal\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u671f\u5f85\u3059\u308b\u8a8d\u8a3c\u60c5\u5831\u3068\u4e00\u81f4\u3059\u308b\u3088\u3046\u306b\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8a8d\u8a3c\u60c5\u5831\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u307e\u3059\u3002\n- MYSQL_DATABASE=drupal\n- MYSQL_USER=drupal\n- MYSQL_PASSWORD=drupal\nvolumes:\n# MySQL\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9\u306b\u540d\u524d\u4ed8\u304d\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\n- db:/var/lib/mysql\n
"},{"location":"ja/docker-images/mysql/#included-tools","title":"\u30c4\u30fc\u30eb","text":" mysqltuner.pl
- \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u306b\u4fbf\u5229\u306aPerl\u30b9\u30af\u30ea\u30d7\u30c8\u3002 mysql-backup.sh
- \u958b\u767a\u74b0\u5883\u3067 MySQL \u306e\u65e5\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u81ea\u52d5\u5316\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3002 pwgen
- \u30e9\u30f3\u30c0\u30e0\u3067\u8907\u96d1\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u751f\u6210\u3059\u308b\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u3002
"},{"location":"ja/docker-images/mysql/#included-mycnf-configuration-file","title":"my.cnf
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Lagoon\u3067\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3055\u308c\u305f \u30c7\u30d5\u30a9\u30eb\u30c8 \u306eMariaDB\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u4e00\u90e8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
"},{"location":"ja/docker-images/mysql/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u74b0\u5883\u5909\u6570\u540d \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e MYSQL_DATABASE lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d MYSQL_USER lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc MYSQL_PASSWORD lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 MYSQL_ROOT_PASSWORD Lag00n MariaDB\u306e\u30eb\u30fc\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 MYSQL_CHARSET utf8mb4 \u30b5\u30fc\u30d0\u30fc\u306e\u6587\u5b57\u30bb\u30c3\u30c8\u3092\u8a2d\u5b9a\u3059\u308b MYSQL_COLLATION utf8mb4_bin \u30b5\u30fc\u30d0\u30fc\u306e\u7167\u5408\u9806\u5e8f\u3092\u8a2d\u5b9a\u3059\u308b MYSQL_MAX_ALLOWED_PACKET 64M max_allowed_packet
\u306e\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\u3059\u308b MYSQL_INNODB_BUFFER_POOL_SIZE 256M MySQL InnoDB\u30d0\u30c3\u30d5\u30a1\u30d7\u30fc\u30eb\u306e\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\u3057\u307e\u3059 MYSQL_INNODB_BUFFER_POOL_INSTANCES 1 InnoDB\u30d0\u30c3\u30d5\u30a1\u30d7\u30fc\u30eb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u6570 MYSQL_INNODB_LOG_FILE_SIZE 64M InnoDB\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u30b5\u30a4\u30ba MYSQL_LOG_SLOW (\u8a2d\u5b9a\u306a\u3057) \u9045\u3044\u30af\u30a8\u30ea\u306e\u4fdd\u5b58\u3092\u5236\u5fa1\u3059\u308b\u5909\u6570 MYSQL_LOG_QUERIES (\u8a2d\u5b9a\u306a\u3057) \u3059\u3079\u3066\u306e\u30af\u30a8\u30ea\u306e\u4fdd\u5b58\u3092\u5236\u5fa1\u3059\u308b\u5909\u6570 BACKUPS_DIR /var/lib/mysql/backup \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9 MYSQL_DATA_DIR /var/lib/mysql MySQL\u306e\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3002\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u3053\u306e\u5024\u3092\u5909\u66f4\u3059\u308b\u3068\u30c7\u30fc\u30bf\u640d\u5931\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff01 MARIADB_COPY_DATA_DIR_SOURCE (\u8a2d\u5b9a\u306a\u3057) MySQL\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u3001\u8a2d\u5b9a\u3055\u308c\u305fMYSQL_DATA_DIR
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u30c7\u30fc\u30bf\u3092\u30b3\u30d4\u30fc\u3059\u308b\u969b\u306b\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u306b\u3064\u3044\u3066\u30bb\u30eb\u540d\u3057\u307e\u3059\u3002\u3053\u306e\u30d1\u30b9\u3092\u5229\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u3042\u3089\u304b\u3058\u3081MySQL\u306b\u6295\u5165\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305f\u3060\u3057\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u306fSQL\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u306a\u304f\u3001\u5b9f\u969b\u306eMySQL\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001\u30b3\u30d4\u30fc\u5148\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u65e2\u5b58\u306eMySQL\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306b\u306e\u307f\u3001\u30c7\u30fc\u30bf\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002 LAGOON_ENVIRONMENT_TYPE
\u5909\u6570\u304c production
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306f MYSQL_INNODB_BUFFER_POOL_SIZE=1024
\u304a\u3088\u3073 MYSQL_INNODB_LOG_FILE_SIZE=256
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u6700\u9069\u5316\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/nginx/","title":"NGINX","text":"Lagoon\u306e nginx
\u30a4\u30e1\u30fc\u30b8Dockerfile\u3067\u3059\u3002\u516c\u5f0f\u306eopenresty/openresty
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001Lagoon\u5185\u306e\u3042\u3089\u3086\u308b\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u306e\u30d9\u30fc\u30b9\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/nginx/#lagoon","title":"Lagoon\u306e\u8abf\u6574\u4e8b\u9805","text":"NGINX\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f 8080
\u30dd\u30fc\u30c8\u3067\u3059\u3002
\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 /etc/nginx/*
\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u306b\u3088\u3063\u3066 envplate
\u3092\u901a\u3058\u3066\u51e6\u7406\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/nginx/#nginx-static-filesconf","title":"NGINX
\u8a2d\u5b9a(static-files.conf
)","text":"\u8b66\u544a
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f NGINX
\u306f\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u306e\u307f\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3084PHP\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u5fc5\u8981\u306a\u3044\u9759\u7684\u30b5\u30a4\u30c8\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059:\u4f8b\u3048\u3070\u3001\u9759\u7684\u30b5\u30a4\u30c8\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc\u306e Hugo\u3001Jekyll\u3001Gatsby \u306a\u3069\u3067\u3059\u3002
PHP\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001php-fpm
\u30a4\u30e1\u30fc\u30b8\u3092\u53c2\u7167\u3057\u3001nginx
\u3068php-fpm
\u3092\u4e00\u7dd2\u306b\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u30b3\u30f3\u30c6\u30f3\u30c4\u306f\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u30d3\u30eb\u30c9\u3057\u3001nginx
\u30b3\u30f3\u30c6\u30ca\u306b\u6295\u5165\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/nginx/#_1","title":"\u30d8\u30eb\u30d1\u30fc","text":""},{"location":"ja/docker-images/nginx/#redirects-mapconf","title":"redirects-map.conf
","text":"\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u3001redirects-map.conf
\u30d5\u30a1\u30a4\u30eb\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3092\u4f7f\u7528\u3057\u3066\u3001\u30de\u30fc\u30b1\u30c6\u30a3\u30f3\u30b0\u30c9\u30e1\u30a4\u30f3\u3092\u30b5\u30d6\u30b5\u30a4\u30c8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u305f\u308a\u3001www\u306a\u3057\u3092www\u4ed8\u304d\u306b\u3059\u308b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u304c\u591a\u3044\u5834\u5408\u306f\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306bredirects-map.conf
\u3092\u30b3\u30fc\u30c9\u306e\u96a3\u306b\u4fdd\u5b58\u3059\u308b\u3053\u3068\u3092\u63a8\u5968\u3057\u307e\u3059\u3002
\u6ce8\u610f:
\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u304c\u5c11\u306a\u3044\u5834\u5408\u306f\u3001nginx.dockerfile
\u306eRUN
\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u4fbf\u5229\u306a\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002
\u4ee5\u4e0b\u306f\u3001www.example.com
\u3092example.com
\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4fdd\u6301\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3059\u4f8b\u3067\u3059:
RedirectRUN echo \"~^www.example.com http://example.com\\$request_uri;\" >> /etc/nginx/redirects-map.conf\n
\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u7a2e\u985e\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001redirects-map.conf
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
redirects-map.conf
\u3092\u914d\u7f6e\u3057\u305f\u3089\u3001\u30d3\u30eb\u30c9\u306b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u308a\u8fbc\u3080\u305f\u3081\u306b\u3001nginx.dockerfile
\u306b\u3082\u305d\u308c\u3092\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
nginx.dockerfileCOPY redirects-map.conf /etc/nginx/redirects-map.conf\n
"},{"location":"ja/docker-images/nginx/#_2","title":"\u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c","text":"BASIC_AUTH_USERNAME
\u304a\u3088\u3073 BASIC_AUTH_PASSWORD
\u74b0\u5883\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c\u306f\u81ea\u52d5\u7684\u306b\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002
\u8b66\u544a
\u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c\u306e\u81ea\u52d5\u8a2d\u5b9a\u306f\u3001\u5229\u4fbf\u6027\u306e\u305f\u3081\u306b\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3084\u6a5f\u5bc6\u30c7\u30fc\u30bf\u3092\u4fdd\u8b77\u3059\u308b\u305f\u3081\u306e\u5b89\u5168\u306a\u65b9\u6cd5\u3068\u306f\u307f\u306a\u3055\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/docker-images/nginx/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e BASIC_AUTH restricted \u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c\u3092\u7121\u52b9\u306b\u3059\u308b\u306b\u306f off
\u306b\u8a2d\u5b9a\u3057\u307e\u3059 BASIC_AUTH_USERNAME (\u8a2d\u5b9a\u306a\u3057) \u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c\u306e\u30e6\u30fc\u30b6\u30fc\u30cd\u30fc\u30e0 BASIC_AUTH_PASSWORD (\u8a2d\u5b9a\u306a\u3057) \u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c\u306e\u30d1\u30b9\u30ef\u30fc\u30c9(\u975e\u6697\u53f7\u5316) FAST_HEALTH_CHECK (\u8a2d\u5b9a\u306a\u3057) \u7279\u5b9a\u306e\u30e6\u30fc\u30b6\u30fc\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8(StatusCake\u3001Pingdom\u3001Site25x7\u3001Uptime\u3001nagios)\u304b\u3089\u306eGET\u30ea\u30af\u30a8\u30b9\u30c8\u306f\u3001\u8efd\u91cf\u306aLagoon\u30b5\u30fc\u30d3\u30b9\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u306b\u306f\u3001true
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002"},{"location":"ja/docker-images/nodejs/","title":"Node.js","text":"Lagoon\u306e Node.js
Docker\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002\u516c\u5f0f\u306eNode Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/nodejs/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":"Node.js\u306e\u30a4\u30e1\u30fc\u30b8\u306f2\u3064\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\u3002\u901a\u5e38\u306enode:version
\u30a4\u30e1\u30fc\u30b8\u3068node:version-builder
\u3067\u3059\u3002
node:version-builder
\u306b\u306f\u3001Node.js\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30d3\u30eb\u30c9\u3059\u308b\u969b\u306b\u5fc5\u8981\u306a\u8ffd\u52a0\u30c4\u30fc\u30eb(\u30d3\u30eb\u30c9\u30e9\u30a4\u30d6\u30e9\u30ea\u3001npm\u3001Yarn\u306a\u3069)\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306a\u30ea\u30b9\u30c8\u306b\u3064\u3044\u3066\u306f\u3001Dockerfile\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- 12 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/node-12
- 14 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/node-14
- 16 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/node-16
- 18 Dockerfile (2025\u5e744\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/node-18
- 20 Dockerfile (2026\u5e744\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/node-20
- 22 Dockerfile (2027\u5e744\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/node-22
\u30d2\u30f3\u30c8
Lagoon\u306f\u3001\u516c\u5f0f\u306b\u30a2\u30ca\u30a6\u30f3\u30b9\u3055\u308c\u305f\u7d42\u4e86\u65e5(EOL)\u306e\u5f8c\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3001EOL\u306b\u9054\u3057\u305fNode.js\u30a4\u30e1\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://nodejs.org/en/about/releases/\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/docker-images/nodejs/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"Node.js\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c83000
\u3067\u3059\u3002
Lagoon\u3067\u306f\u3001lagoon.type: node-persistent
\u3092\u4f7f\u7528\u3057\u3066\u3001\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002\u8a73\u7d30\u306f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u4ee5\u4e0b\u306e\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059:
lagoon.persistent
= \u30b3\u30f3\u30c6\u30ca\u5185\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059 - \u4f8b\u3048\u3070\u3001/app/files lagoon.persistent.size
= Lagoon\u306b\u5bfe\u3057\u3001\u3053\u306e\u30d1\u30b9\u306b\u5272\u308a\u5f53\u3066\u308b\u30b9\u30c8\u30ec\u30fc\u30b8\u5bb9\u91cf\u3092\u6307\u5b9a\u3057\u307e\u3059 - \u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5171\u6709\u3059\u308b\u8907\u6570\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u3092\u4f7f\u7528\u3057\u307e\u3059
lagoon.persistent.name
= (\u30aa\u30d7\u30b7\u30e7\u30f3)\u8907\u6570\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5171\u6709\u3059\u308b\u5834\u5408\u3001\u5225\u306e\u540d\u524d\u4ed8\u304d\u30b5\u30fc\u30d3\u30b9\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306bLagoon\u306b\u6307\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/nodejs/#docker-composeyml-snippet","title":"docker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.yml node:\nbuild:\n# \u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0\u306b\u3042\u308bDockerfile\u304b\u3089\u30d3\u30eb\u30c9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# Lagoon\u306b\u5bfe\u3057\u3066\u3001Node.js\u30b5\u30fc\u30d3\u30b9\u3067\u3042\u308b\u3053\u3068\u3001/app/files\u306b500MB\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\nlagoon.type: node-persistent\nlagoon.persistent: /app/files\nlagoon.persistent.size: 500Mi\n\u30dd\u30fc\u30c8:\n# \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u307f\u9069\u7528\u3055\u308c\u308b\u8a2d\u5b9a\u3067\u3059\n# \u30dd\u30fc\u30c83000\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3057\u3001\n# `docker-compose port node 3000`\u3067\u30dd\u30fc\u30c8\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n- \"3000\"\n\u30dc\u30ea\u30e5\u30fc\u30e0:\n# \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u307f\u9069\u7528\u3055\u308c\u308b\u8a2d\u5b9a\u3067\u3059\n# files\u3068\u3044\u3046\u540d\u524d\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u5b9a\u7fa9\u3055\u308c\u305f\u30d1\u30b9\u306b\u3092\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u672c\u756a\u74b0\u5883\u3068\u540c\u3058\u72b6\u614b\u3092\u518d\u73fe\u3059\u308b\u305f\u3081\u306b\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3067\u5229\u7528\u3055\u308c\u307e\u3059\u3002\n- files:/app/files\n
"},{"location":"ja/docker-images/opensearch/","title":"OpenSearch","text":"OpenSearch\u306f\u3001\u30c7\u30fc\u30bf\u3092\u7c21\u5358\u306b\u53d6\u308a\u8fbc\u307f\u3001\u691c\u7d22\u3001\u53ef\u8996\u5316\u3001\u5206\u6790\u3059\u308b\u305f\u3081\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u4e3b\u5c0e\u306eApache2.0\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u63a1\u7528\u3057\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u691c\u7d22\u304a\u3088\u3073\u5206\u6790\u30b9\u30a4\u30fc\u30c8\u3067\u3059\u3002
- \u51fa\u5178: https://opensearch.org/
"},{"location":"ja/docker-images/opensearch/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 2 Dockerfile -
uselagoon/opensearch-2
"},{"location":"ja/docker-images/opensearch/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"OpenSearch \u306e\u4e00\u90e8\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8\u5024 \u8aac\u660e OPENSEARCH_JAVA_OPTS -Xms512m -Xmx512m OpenSearch\u30b3\u30f3\u30c6\u30ca\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u4e21\u65b9\u306e\u5024\u306f\u540c\u3058\u5024\u3067\u306a\u3051\u308c\u3070\u3001OpenSearch\u306f\u6b63\u5e38\u306b\u8d77\u52d5\u3057\u307e\u305b\u3093\u3002"},{"location":"ja/docker-images/opensearch/#_1","title":"\u65e2\u77e5\u306e\u554f\u984c","text":"Linux\u30d9\u30fc\u30b9\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u3001vm.max_map_count
\u8a2d\u5b9a\u304c\u4f4e\u3044\u305f\u3081\u306b\u3001OpenSearch\u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5\u304c\u5931\u6557\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002
bash title=\"\u30a8\u30e9\u30fc\" opensearch_1 | ERROR: [1] bootstrap checks failed opensearch_1 | [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
\u3053\u306e\u554f\u984c\u306e\u89e3\u6c7a\u7b56\u306f\u3053\u3053\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059.
"},{"location":"ja/docker-images/php-cli/","title":"PHP-CLI","text":"Lagoon\u306e php-cli
Docker\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002Lagoon\u306e php-fpm
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3001\u65e5\u5e38\u7684\u306a\u64cd\u4f5c\u306b\u5fc5\u8981\u306a\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u304c\u3059\u3079\u3066\u63c3\u3063\u3066\u3044\u307e\u3059\u3002
cli
\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u8d77\u52d5\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca(\u307e\u305f\u306f\u30dd\u30c3\u30c9)\u306fComposer\u3084Node.js\u30d9\u30fc\u30b9\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30fc\u30c9\u30d3\u30eb\u30c9\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002
\u307e\u305f\u3001MariaDB\u3068PostgreSQL\u4e21\u65b9\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9cli
\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
\u60c5\u5831
\u3053\u306eDockerfile\u306f\u3001Lagoon\u5185\u3067\u306e\u3042\u3089\u3086\u308bcli
\u30cb\u30fc\u30ba\u306e\u57fa\u76e4\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/php-cli/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 7.3 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-7.3-cli
- 7.4 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-7.4-cli
- 8.0 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-8.0-cli
- 8.1 Dockerfile (2024\u5e7411\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.1-cli
- 8.2 Dockerfile (2025\u5e7412\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.2-cli
- 8.3 Dockerfile (2026\u5e7412\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.3-cli
\u3059\u3079\u3066\u306ePHP\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u3001\u305d\u308c\u305e\u308c\u306eDockerfiles\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/php-cli/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 COMPOSER_ALLOW_SUPERUSER=1
\u306f\u3001root\u3068\u3057\u3066Composer\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u95a2\u3059\u308b\u8b66\u544a\u3092\u524a\u9664\u3057\u307e\u3059\u3002 80-shell-timeout.sh
\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u304cKubernetes\u74b0\u5883\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3001\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306ecli
\u30dd\u30c3\u30c9\u306b\u5bfe\u3057\u306610\u5206\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 cli
\u30b3\u30f3\u30c6\u30ca\u306f\u3001Lagoon\u306b\u3088\u3063\u3066\u6ce8\u5165\u3055\u308c\u308b\u304b\u3001SSH_PRIVATE_KEY
\u74b0\u5883\u5909\u6570\u3067\u5b9a\u7fa9\u3055\u308c\u305fSSH\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/php-cli/#cli","title":"CLI\u30c4\u30fc\u30eb","text":"\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u308bCLI\u30c4\u30fc\u30eb\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059:
composer
\u30d0\u30fc\u30b8\u30e7\u30f31.9.0 ( COMPOSER_VERSION
\u304a\u3088\u3073COMPOSER_HASH_SHA256
\u7d4c\u7531\u3067\u5909\u66f4\u53ef\u80fd) node.js
\u30d0\u30fc\u30b8\u30e7\u30f317 (2022\u5e743\u6708\u73fe\u5728) npm
yarn
mariadb-client
postgres ql-client
"},{"location":"ja/docker-images/php-cli/#nodejs","title":"Node.js\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u5909\u66f4","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306fnodejs-current
\u30d1\u30c3\u30b1\u30fc\u30b8(2022\u5e743\u6708\u6642\u70b9\u3067v17)\u304c\u642d\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5225\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u73fe\u5728\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u524a\u9664\u3057\u3066\u76ee\u7684\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Node.js 16\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u306b\u306f\u3001Dockerfile\u3092\u6b21\u306e\u3088\u3046\u306b\u5909\u66f4\u3057\u307e\u3059\u3002
Node.js\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u66f4\u65b0RUN apk del nodejs-current \\\n&& apk add --no-cache nodejs=~16\n
"},{"location":"ja/docker-images/php-cli/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002php-fpm\u74b0\u5883\u5909\u6570\u3082\u9069\u7528\u3055\u308c\u307e\u3059\u3002
\u540d\u524d \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e MARIADB_MAX_ALLOWED_PACKET 64M MySql\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u6700\u5927\u8a31\u5bb9\u30d1\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002"},{"location":"ja/docker-images/php-fpm/","title":"PHP-FPM","text":"Lagoon\u306e php-fpm
Docker\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002\u516c\u5f0f\u306ePHP Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
PHP-FPM(FastCGI Process Manager)\u306f\u3001FastCGI \u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u5229\u7528\u3057\u305f PHP \u306e\u5b9f\u88c5\u306e\u3072\u3068\u3064\u3067\u3001\u69d8\u3005\u306a\u898f\u6a21\u306e\u30b5\u30a4\u30c8\u3001\u7279\u306b\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u304c\u591a\u3044\u30b5\u30a4\u30c8\u5411\u3051\u306b\u4fbf\u5229\u306a\u8ffd\u52a0\u6a5f\u80fd\u3092\u5099\u3048\u3066\u3044\u307e\u3059\u3002
- \u51fa\u5178: https://php-fpm.org/
FastCGI\u306f\u3001\u30b5\u30fc\u30d0\u30fc\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u6642\u9593\u306e\u304b\u304b\u308b\u30b3\u30fc\u30c9\u3092\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u30ed\u30fc\u30c9\u3055\u308c\u308b\u6bce\u5ea6\u3067\u306f\u306a\u304f\u3001\u4e00\u5ea6\u3060\u3051\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u4ed5\u7d44\u307f\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u524a\u6e1b\u3057\u307e\u3059\u3002
\u60c5\u5831
Dockerfile\u306f\u3001Lagoon\u5185\u3067PHP
\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306e\u30d9\u30fc\u30b9\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u60f3\u5b9a\u3067\u3059\u3002\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u81ea\u4f53\u304c\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3092\u4f5c\u6210\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001php-fpm
\u306b\u3088\u308bFastCGI\u30ea\u30b9\u30ca\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002php-fpm
\u30d7\u30fc\u30eb\u306e\u8a2d\u5b9a\u3092\u8abf\u6574\u3059\u308b\u5fc5\u8981\u304c\u751f\u3058\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/docker-images/php-fpm/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 7.3 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-7.3-fpm
- 7.4 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-7.4-fpm
- 8.0 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-8.0-fpm
- 8.1 Dockerfile (2024\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.1-fpm
- 8.2 Dockerfile (2025\u5e7412\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.2-fpm
- 8.3 Dockerfile (2026\u5e7412\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.3-fpm
\u3059\u3079\u3066\u306ePHP\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u305d\u308c\u305e\u308c\u306eDockerfiles\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
\u30d2\u30f3\u30c8
Lagoon\u306f\u3001\u516c\u5f0f\u306b\u30a2\u30ca\u30a6\u30f3\u30b9\u3055\u308c\u305f\u7d42\u4e86\u65e5(EOL)\u306e\u5f8c\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3001EOL\u306b\u9054\u3057\u305fPHP\u30a4\u30e1\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://www.php.net/supported-versions.php\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/docker-images/php-fpm/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 /usr/local/etc/php/php.ini
\u304a\u3088\u3073 /usr/local/etc/php-fpm.conf
\u30d5\u30a1\u30a4\u30eb\u3001/usr/local/etc/php-f pm.d/
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u5168\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3092\u901a\u3057\u3066envplate
\u3067\u51e6\u7406\u3055\u308c\u307e\u3059\u3002 - \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b
PHP
\u62e1\u5f35\u6a5f\u80fd\u306b\u3064\u3044\u3066\u306f\u3001Dockerfile\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u3055\u3089\u306a\u308b\u62e1\u5f35\u6a5f\u80fd\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u306b\u306f\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u3082\u3068\u306bDockerfile\u3092\u62e1\u5f35\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u62e1\u5f35\u6a5f\u80fd\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306f\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8How to install more PHP extensions.\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/docker-images/php-fpm/#php","title":"PHP\u8a2d\u5b9a","text":"PHP
\u8a2d\u5b9a\u306b\u306f\u3001PHP
\u30d7\u30fc\u30eb\u8a2d\u5b9a\u306e\u4f5c\u6210\u3092\u5bb9\u6613\u306b\u3059\u308b\u305f\u3081\u306e\u9069\u5207\u306a\u5024\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u305d\u306e\u4e00\u90e8\u306e\u30ea\u30b9\u30c8\u3067\u3059\u3002\u8a73\u7d30\u306f/usr/local/etc/php.ini
\u3001/usr/local/etc/php-fpm.conf
\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044:
\u5024 \u8a73\u7d30 max_execution_time = 900
PHP_MAX_EXECUTION_TIME
\u3067\u5909\u66f4\u53ef\u80fd realpath_cache_size = 256k
\u5927\u898f\u6a21\u306aPHP\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6271\u3046\u305f\u3081\u306e\u8a2d\u5b9a memory_limit = 400M
\u5927\u898f\u6a21\u306aPHP\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6271\u3046\u305f\u3081\u306e\u8a2d\u5b9a(PHP_MEMORY_LIMIT
\u3067\u5909\u66f4\u53ef\u80fd) opcache.memory_consumption = 265
\u5927\u898f\u6a21\u306aPHP\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6271\u3046\u305f\u3081\u306e\u8a2d\u5b9a opcache.enable_file_override = 1
\u3068 opcache.huge_code_pages = 1
\u3088\u308a\u9ad8\u901f\u306aPHP\u306e\u305f\u3081\u306e\u8a2d\u5b9a display_errors = Off
\u3068 display_startup_errors = Off
\u5b9f\u7528\u7684\u306aproduction\u8a2d\u5b9a (PHP_DISPLAY_ERRORS
\u304a\u3088\u3073 PHP_DISPLAY_STARTUP_ERRORS
\u3067\u5909\u66f4\u53ef\u80fd)\u3002 upload_max_filesize = 2048M
\u5927\u5bb9\u91cf\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u305f\u3081\u306e\u8a2d\u5b9a apc.shm_size = 32m
\u3068 apc.enabled = 1
PHP_APC_SHM_SIZE
\u304a\u3088\u3073 PHP_APC_ENABLED
\u3067\u5909\u66f4\u53ef\u80fd \u307e\u305f\u3001php-fpm
\u306e\u30a8\u30e9\u30fc\u30ed\u30b0\u306f stderr
\u306b\u8a18\u9332\u3055\u308c\u307e\u3059\u3002
\ud83d\udca1 \u3053\u308c\u3089\u306e\u8a2d\u5b9a\u306e\u3044\u305a\u308c\u3082\u6c17\u306b\u5165\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u6b21\u306e3\u3064\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059:
- \u8a2d\u5b9a\u5024\u304c\u74b0\u5883\u5909\u6570\u3067\u5909\u66f4\u3067\u304d\u308b\u5834\u5408\u306f\u3001\u74b0\u5883\u5909\u6570\u3092\u4f7f\u3063\u3066\u304f\u3060\u3055\u3044(\u3053\u308c\u304c\u63a8\u5968\u3055\u308c\u308b\u65b9\u6cd5\u3067\u3059\u3002\u74b0\u5883\u5909\u6570\u306e\u8868 \u306e\u8a73\u7d30\u306f\u4ee5\u4e0b\u306e\u8868\u306b\u307e\u3068\u3081\u3066\u3042\u308a\u307e\u3059\u306e\u3067\u3001\u53c2\u7167\u304f\u3060\u3055\u3044\u3002)
- \u4ee5\u4e0b\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u3042\u308b
php_admin_value
\u304a\u3088\u3073php_admin_flag
\u3092\u4f7f\u3063\u3066\u3001\u72ec\u81ea\u306e\u30ab\u30b9\u30bf\u30e0fpm-pool
\u8a2d\u5b9a\u3092\u4f5c\u6210\u3057\u3001\u305d\u308c\u3092\u9069\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 - \u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001
PHP \u3092 Apache \u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u3057\u3066\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8
\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306fApache\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u3057\u3066\u306ePHP\u5b9f\u884c\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u307e\u3059\u304c\u3001php-fpm
\u306b\u3082\u5f53\u3066\u306f\u307e\u308a\u307e\u3059\u3002 \u91cd\u8981: - \u72ec\u81ea\u306e
php-fpm
\u30d7\u30fc\u30eb\u3092\u9069\u7528\u3057\u305f\u3044\u5834\u5408\u306f\u3001/usr/local/etc/php-fpm.d/www.conf
\u30d5\u30a1\u30a4\u30eb\u3092\u81ea\u5206\u306e\u8a2d\u5b9a\u3067\u4e0a\u66f8\u304d\u3059\u308b\u304b\u3001\u5225\u306e\u540d\u524d\u3092\u4ed8\u3051\u305f\u3044\u5834\u5408\u306f\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u64cd\u4f5c\u3092\u884c\u308f\u306a\u3044\u3068\u3001\u6700\u521d\u304b\u3089\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u30d7\u30fc\u30eb\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002 PHP_INI_SYSTEM
\u5909\u66f4\u53ef\u80fd\u30e2\u30fc\u30c9\u306ePHP\u306e\u8a2d\u5b9a\u5024\u306f\u3001fpm-pool
\u8a2d\u5b9a\u3067\u306f\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u3046\u3044\u3063\u305f\u8a2d\u5b9a\u5024\u306f\u3001\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u74b0\u5883\u5909\u6570\u3092\u4f7f\u3046\u304b\u3001\u307e\u305f\u306f: - \u72ec\u81ea\u306e
php.ini
\u307e\u305f\u306fphp-fpm.conf
\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059(\u3053\u306e\u65b9\u6cd5\u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093)
"},{"location":"ja/docker-images/php-fpm/#fpm-pool","title":"\u30c7\u30d5\u30a9\u30eb\u30c8\u306efpm-pool","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u3001fpm-pool
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb(php-fpm.d/www.conf
)\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306ffpm-pool
\u3092\u4f5c\u6210\u3057\u3001\u30dd\u30fc\u30c89000\u3067\u30ea\u30c3\u30b9\u30f3\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u307b\u3068\u3093\u3069\u306ePHP\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30cb\u30fc\u30ba\u3092\u6700\u521d\u304b\u3089\u30ab\u30d0\u30fc\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3067\u3059\u3002\u3082\u3061\u308d\u3093\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u72ec\u81ea\u306e\u8a2d\u5b9a\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306e\u8aac\u660e:
- IPv4\u3068IPv6\u3067\u30dd\u30fc\u30c89000\u3067\u30ea\u30c3\u30b9\u30f3\u3057\u307e\u3059\u3002
- pm
dynamic
\u3092\u4f7f\u7528\u3057\u30012\u304b\u308950\u307e\u3067\u306e\u5b50\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 - \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u9632\u3050\u305f\u3081\u306b\u3001500\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u5f8c\u306b
php-fpm
\u30d7\u30fc\u30eb\u306e\u5b50\u30d7\u30ed\u30bb\u30b9\u3092\u518d\u751f\u6210\u3057\u307e\u3059\u3002 /ping
\u3078\u306efastcgi\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5bfe\u3057\u3066pong
\u3067\u5fdc\u7b54\u3057\u307e\u3059(\u30d7\u30fc\u30eb\u304c\u8d77\u52d5\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306e\u81ea\u52d5\u30c6\u30b9\u30c8\u306b\u4fbf\u5229)\u3002 catch_workers_output = yes
\u306b\u3088\u308a\u3001PHP\u306e\u30a8\u30e9\u30fc\u3092\u78ba\u8a8d\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u3002 clear_env = no
\u306b\u3088\u308a\u3001\u901a\u5e38\u306e Docker \u74b0\u5883\u5909\u6570\u3092\u4f7f\u3063\u3066 PHP \u74b0\u5883\u5909\u6570\u3092\u6ce8\u5165\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b
"},{"location":"ja/docker-images/php-fpm/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u4e00\u90e8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e NEWRELIC_ENABLED false NewRelic\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002\u6709\u52b9\u306b\u3059\u308b\u306b\u306fNEWRELIC_LICENSE
\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3059\u3002 NEWRELIC_LICENSE (\u8a2d\u5b9a\u306a\u3057) \u4f7f\u7528\u3059\u308bNewRelic\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3002\u91cd\u8981:NewRelic\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306fNEWRELIC_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 NEWRELIC_BROWSER_MONITORING_ENABLED true NewRelic\u30d6\u30e9\u30a6\u30b6\u76e3\u8996\u7528\u306eJavaScript\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u306e\u81ea\u52d5\u633f\u5165\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002\u91cd\u8981:NewRelic\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306fNEWRELIC_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 NEWRELIC_DISTRIBUTED_TRACING_ENABLED false \u5206\u6563\u30c8\u30ec\u30fc\u30b9\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002\u91cd\u8981:NewRelic\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001NEWRELIC_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 PHP_APC_ENABLED 1 APC\u3092\u7121\u52b9\u306b\u3059\u308b\u306b\u306f0
\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 PHP_APC_SHM_SIZE 32m \u5404\u5171\u6709\u30e1\u30e2\u30ea\u30bb\u30b0\u30e1\u30f3\u30c8\u306e\u30b5\u30a4\u30ba\u3002 PHP_DISPLAY_ERRORS Off \u30a8\u30e9\u30fc\u3092\u8868\u793a\u3055\u308c\u308b\u304b\u975e\u8868\u793a\u306b\u3059\u308b\u304b\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_DISPLAY_STARTUP_ERRORS Off \u8d77\u52d5\u6642\u306e\u30a8\u30e9\u30fc\u3092\u8868\u793a\u3059\u308b\u304b\u975e\u8868\u793a\u3059\u308b\u304b\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_ERROR_REPORTING Production E_ALL & ~E _DEPRECATED & ~E_STRICT
Development: E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
PHP\u306b\u4f7f\u7528\u3055\u308c\u308bdesired logging\u30ec\u30d9\u30eb\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_FPM_PM_MAX_CHILDREN 50 \u5b50\u30d7\u30ed\u30bb\u30b9\u306e\u6700\u5927\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3002 PHP_FPM_PM_MAX_REQUESTS 500 \u5404\u5b50\u30d7\u30ed\u30bb\u30b9\u304c\u518d\u751f\u6210\u3055\u308c\u308b\u524d\u306b\u5b9f\u884c\u3059\u308b\u3079\u304d\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_FPM_PM_MAX_SPARE_SERVERS 2 \u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306e\u30b5\u30fc\u30d0\u30fc\u30d7\u30ed\u30bb\u30b9\u306e\u6700\u5927\u8a31\u5bb9\u6570\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_FPM_PM_MIN_SPARE_SERVERS 2 \u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306e\u30b5\u30fc\u30d0\u30fc\u30d7\u30ed\u30bb\u30b9\u306e\u6700\u5c0f\u8a31\u5bb9\u6570\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_FPM_PM_PROCESS_IDLE_TIMEOUT 60s \u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306e\u30d7\u30ed\u30bb\u30b9\u304c\u7d42\u4e86\u3055\u308c\u308b\u307e\u3067\u306e\u79d2\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_FPM_PM_START_SERVERS 2 \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u5b50\u30d7\u30ed\u30bb\u30b9\u306e\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_MAX_EXECUTION_TIME 900 \u5404\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u6700\u5927\u5b9f\u884c\u6642\u9593(\u79d2)\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_MAX_FILE_UPLOADS 20 \u540c\u6642\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u308b\u30d5\u30a1\u30a4\u30eb\u306e\u6700\u5927\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_MAX_INPUT_VARS 2000 \u53d7\u3051\u5165\u308c\u53ef\u80fd\u306a\u5165\u529b\u5909\u6570\u306e\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_MEMORY_LIMIT 400M \u30b9\u30af\u30ea\u30d7\u30c8\u304c\u6d88\u8cbb\u3067\u304d\u308b\u30e1\u30e2\u30ea\u306e\u6700\u5927\u91cf\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 XDEBUG_ENABLE (\u8a2d\u5b9a\u306a\u3057) xdebug
\u62e1\u5f35\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001true
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 BLACKFIRE_ENABLED (\u8a2d\u5b9a\u306a\u3057) blackfire
\u62e1\u5f35\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f true
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 BLACKFIRE_SERVER_ID (\u8a2d\u5b9a\u306a\u3057) Blackfire.io\u304c\u63d0\u4f9b\u3059\u308bBlackfire\u30b5\u30fc\u30d0\u30fcID\u3002BLACKFIRE_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 BLACKFIRE_SERVER_TOKEN (\u8a2d\u5b9a\u306a\u3057) Blackfire.io\u304c\u63d0\u4f9b\u3059\u308bBlackfire\u30b5\u30fc\u30d0\u30fc\u30c8\u30fc\u30af\u30f3\u3002BLACKFIRE_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 BLACKFIRE_LOG_LEVEL 3 blackfire\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u30ed\u30b0\u30ec\u30d9\u30eb\u3092\u5909\u66f4\u3057\u307e\u3059\u3002\u5229\u7528\u53ef\u80fd\u306a\u5024:\u30ed\u30b0\u306e\u5197\u9577\u6027\u30ec\u30d9\u30eb (4: \u30c7\u30d0\u30c3\u30b0, 3: \u60c5\u5831, 2: \u8b66\u544a, 1: \u30a8\u30e9\u30fc)
\u8a73\u7d30\u306f\u3001blackfire.io\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002"},{"location":"ja/docker-images/postgres/","title":"PostgreSQL","text":"Lagoon PostgreSQL Docker\u30a4\u30e1\u30fc\u30b8\u3002\u516c\u5f0fPostgreSQL Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/postgres/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 11 (\u4e92\u63db\u6027\u306e\u305f\u3081\u3060\u3051\u306b\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u306b\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093) -
uselagoon/postgres-11
- 12 Dockerfile (2024\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/postgres-12
- 13 Dockerfile (2025\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/postgres-13
- 14 Dockerfile (2026\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/postgres-14
- 15 Dockerfile (2027\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/postgres-15
- 16 Dockerfile (2028\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/postgres-16
\u30d2\u30f3\u30c8
Lagoon\u306f\u3001\u516c\u5f0f\u306b\u30a2\u30ca\u30a6\u30f3\u30b9\u3055\u308c\u305f\u7d42\u4e86\u65e5(EOL)\u306e\u5f8c\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3001EOL\u306b\u9054\u3057\u305fPostgreSQL\u30a4\u30e1\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://www.postgresql.org/support/versioning\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/docker-images/postgres/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"Postgres\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c85432
\u3067\u3059\u3002
Lagoon\u304cPostgres\u30b3\u30f3\u30c6\u30ca\u306e\u5b9f\u884c\u65b9\u6cd5\u3092\u6700\u9069\u306b\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001lagoon.type: postgres
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001DBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306f\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u3067\u5229\u7528\u53ef\u80fd\u306a\u5834\u5408\u3001\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u5185\u3067Postgres\u3092\u78ba\u5b9f\u306b\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306f\u3001lagoon.type: postgres-single
\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002Postgres\u30b3\u30f3\u30c6\u30ca\u306b\u5bfe\u3057\u3066\u306f\u3001\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u5e38\u306b/var/lib/postgresql/data
\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/postgres/#docker-composeyml-snippet","title":"docker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.ymlpostgres:\nimage: uselagoon/postgres-14-drupal:latest\nlabels:\n# Lagoon\u306bPostgres\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u308b\nlagoon.type: postgres\nports:\n# \u30dd\u30fc\u30c85432\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u3067\u516c\u958b\u3057\u3001\n# `docker-compose port postgres 5432`\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\n- \"5432\"\nvolumes:\n# Postgres\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9\u306b\u540d\u524d\u4ed8\u304d\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\n- db:/var/lib/postgresql/data\n
"},{"location":"ja/docker-images/postgres/#_1","title":"\u30d2\u30f3\u30c8\uff06\u30b3\u30c4","text":"\u30b3\u30f3\u30c6\u30ca\u8d77\u52d5\u76f4\u5f8c\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u305f\u3081\u306eSQL\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3089\u306e.sql
\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30f3\u30c6\u30ca\u306edocker-entrypoint-initdb.d
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308b .sql
\u30d5\u30a1\u30a4\u30eb\u306f\u3001PostgreSQL\u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5\u6642\u306b\u81ea\u52d5\u7684\u306b\u5b9f\u884c\u3055\u308c\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u521d\u671f\u5316\u51e6\u7406\u306e\u4e00\u90e8\u3068\u3057\u3066\u52d5\u4f5c\u3057\u307e\u3059\u3002
\u8b66\u544a
\u3053\u308c\u3089\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001\u7a7a\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u3055\u308c\u305f\u5834\u5408\u306b\u306e\u307f\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066\u306f\u52d5\u4f5c\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/docker-images/python/","title":"Python","text":"Lagoon python
Docker image\u3002\u3053\u308c\u306f\u516c\u5f0f\u306ePython Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/python/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 2.7 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/python-2.7
- 3.7 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/python-3.7
- 3.8 Dockerfile (2024\u5e7410\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/python-3.8
- 3.9 Dockerfile (2025\u5e7410\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/python-3.9
- 3.10 Dockerfile (2026\u5e7410\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/python-3.10
- 3.11 Dockerfile (2027\u5e7410\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/python-3.11
- 3.12 Dockerfile (2028\u5e7410\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8)-
uselagoon/python-3.12
\u30d2\u30f3\u30c8
Lagoon\u306f\u3001\u516c\u5f0f\u306b\u30a2\u30ca\u30a6\u30f3\u30b9\u3055\u308c\u305f\u7d42\u4e86\u65e5(EOL)\u306e\u5f8c\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3001EOL\u306b\u9054\u3057\u305fPython\u30a4\u30e1\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://devguide.python.org/versions/#versions\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/docker-images/python/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"Python\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c88800
\u3067\u3059\u3002
Lagoon\u3067\u306f\u3001lagoon.type: python-persistent
\u3092\u4f7f\u7528\u3057\u3066\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002
\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u4ee5\u4e0b\u306e\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059: lagoon.persistent
= \u30b3\u30f3\u30c6\u30ca\u5185\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059 - \u4f8b\u3048\u3070/app/files lagoon.persistent.size
= Lagoon\u306b\u5bfe\u3057\u3066\u3001\u3053\u306e\u30d1\u30b9\u306b\u5272\u308a\u5f53\u3066\u308b\u30b9\u30c8\u30ec\u30fc\u30b8\u5bb9\u91cf\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
\u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5171\u6709\u3059\u308b\u8907\u6570\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u3092\u4f7f\u7528\u3057\u307e\u3059 lagoon.persistent.name
=(\u30aa\u30d7\u30b7\u30e7\u30f3)\u8907\u6570\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5171\u6709\u3059\u308b\u5834\u5408\u3001\u5225\u306e\u540d\u524d\u4ed8\u304d\u30b5\u30fc\u30d3\u30b9\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306bLagoon\u306b\u6307\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/python/#docker-composeyml-snippet","title":"docker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.ymlpython:\nbuild:\n# \u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0\u306b\u3042\u308bDockerfile\u3092\u4f7f\u7528\u3057\u3066\u30d3\u30eb\u30c9\u3092\u884c\u3046\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# Lagoon\u306b\u5bfe\u3057\u3001Python\u30b5\u30fc\u30d3\u30b9\u3067\u3042\u308b\u3053\u3068\u3068\u3001/app/files\u306b500MB\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\nlagoon.type: python-persistent\nlagoon.persistent: /app/files\nlagoon.persistent.size: 500Mi\nports:\n# \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u307f\u9069\u7528\u3055\u308c\u308b\u8a2d\u5b9a\u3067\u3059\n# \u30dd\u30fc\u30c88800\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3057\u3001\n# `docker compose port node 8800`\u3067\u30dd\u30fc\u30c8\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n- \"8800\"\nvolumes:\n# \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u307f\u9069\u7528\u3055\u308c\u308b\u8a2d\u5b9a\u3067\u3059\n# files\u3068\u3044\u3046\u540d\u524d\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u5b9a\u7fa9\u3055\u308c\u305f\u30d1\u30b9\u306b\u3092\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u672c\u756a\u74b0\u5883\u3068\u540c\u3058\u72b6\u614b\u3092\u518d\u73fe\u3059\u308b\u305f\u3081\u306b\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3067\u5229\u7528\u3055\u308c\u307e\u3059\u3002\n- files:/app/files\n
"},{"location":"ja/docker-images/rabbitmq/","title":"RabbitMQ","text":"Lagoon RabbitMQ Dockerfile\u3067\u3001\u7ba1\u7406\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u3059\u3002docker-hub\u306b\u3042\u308b\u516c\u5f0f\u306erabbitmq:3-management
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eRabbitMQ\u30ad\u30e5\u30fc\u30d6\u30ed\u30fc\u30ab\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u3060\u3051\u3067\u306a\u304f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u9ad8\u53ef\u7528\u6027\u30ad\u30e5\u30fc\u30b5\u30dd\u30fc\u30c8(\u30df\u30e9\u30fc\u30ea\u30f3\u30b0\u30ad\u30e5\u30fc)\u3092\u5099\u3048\u305f\u30af\u30e9\u30b9\u30bf\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3068\u3057\u3066\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001RabbitMQ\u30d6\u30ed\u30fc\u30ab\u30fc\u306f\u30b7\u30f3\u30b0\u30eb\u30ce\u30fc\u30c9\u3067\u8d77\u52d5\u3057\u307e\u3059\u3002\u30af\u30e9\u30b9\u30bf\u3092\u8d77\u52d5\u3059\u308b\u5834\u5408\u306f\u3001rabbitmq
\u30a4\u30e1\u30fc\u30b8\u306b\u52a0\u3048\u3066rabbitmq_peer_discovery_k8s
\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\u7d44\u307f\u8fbc\u307e\u308c\u305frabbitmq-cluster
Docker\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/docker-images/rabbitmq/#_1","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 3.10 Dockerfile (2023\u5e747\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/rabbitmq
"},{"location":"ja/docker-images/rabbitmq/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 /etc/rabbitmq/definitions.json
\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3092\u6301\u3064envplate
\u3092\u901a\u3057\u3066\u51e6\u7406\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/rabbitmq/#rabbitmqdefinitionsjson","title":"RabbitMQ\u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30ad\u30fc\u30de(definitions.json)","text":" - \u30df\u30e9\u30fc\u30ea\u30f3\u30b0\u30ad\u30e5\u30fc\u306e\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u306b\u306f\u3001\u5c11\u306a\u304f\u3068\u3082\u4e00\u3064\u306e
policy
\u304c\u5fc5\u8981\u3067\u3059\u3002 definitions.json
\u30b9\u30ad\u30fc\u30de\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u5b9f\u884c\u3001virtualhost
(vhost
)\u3001\u7ba1\u7406UI\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306eusername
\u3001password
\u3001permissions
\u3001policies
\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306e\u6700\u5c0f\u9650\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u8d77\u52d5\u6642\u306blagoon-ha
\u3068\u3044\u3046\u540d\u524d\u306e\u30dd\u30ea\u30b7\u30fc\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u304c\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u30ad\u30e5\u30fc\u540d\u306e\u30d1\u30bf\u30fc\u30f3\u306b\u4e00\u81f4\u3057\u306a\u3044\u305f\u3081\u3001\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
definitions.json\"policies\":[\n{\"vhost\":\"${RABBITMQ_DEFAULT_VHOST}\",\"name\":\"lagoon-ha\",\"pattern\":\"${RABBITMQ_DEFAULT_HA_PATTERN}\", \"definition\":{\"ha-mode\":\"exactly\",\"ha-params\":2,\"ha-sync-mode\":\"automatic\",\"ha-sync-batch-size\":5}}\n]\n
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001ha-mode
\u306fexactly
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u304a\u308a\u3001\u30ad\u30e5\u30fc(mirrors)\u306e\u30df\u30e9\u30fc\u30ea\u30f3\u30b0\u30ce\u30fc\u30c9\u306e\u6b63\u78ba\u306a\u6570\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002\u30ce\u30fc\u30c9\u306e\u6570\u306f ha-params
\u3067\u5236\u5fa1\u3055\u308c\u307e\u3059\u3002
\u8a73\u7d30\u306a\u60c5\u5831\u3084\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u306f\u3001\u516c\u5f0f\u306e RabbitMQ \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/docker-images/rabbitmq/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e RABBITMQ_DEFAULT_USER guest \u7ba1\u7406UI\u3078\u306e\u30a2\u30af\u30bb\u30b9\u7528\u306e\u30e6\u30fc\u30b6\u540d RABBITMQ_DEFAULT_PASS guest \u7ba1\u7406UI\u3078\u306e\u30a2\u30af\u30bb\u30b9\u7528\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 RABBITMQ_DEFAULT_VHOST / RabbitMQ\u306e\u30e1\u30a4\u30f3\u306e\u4eee\u60f3\u30db\u30b9\u30c8 RABBITMQ_DEFAULT_HA_PATTERN ^$ \u30df\u30e9\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u305f\u30ad\u30e5\u30fc\u3092\u4e00\u81f4\u3055\u305b\u308b\u305f\u3081\u306e\u6b63\u898f\u8868\u73fe"},{"location":"ja/docker-images/redis/","title":"Redis","text":"Lagoon Redis
\u30a4\u30e1\u30fc\u30b8Dockerfile \u306f\u3001\u516c\u5f0f redis:alpine
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eRedis ephemeral \u30b5\u30fc\u30d0\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 5 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/redis-5
\u307e\u305f\u306fuselagoon/redis-5-persistent
- 6 Dockerfile -
uselagoon/redis-6
\u307e\u305f\u306fuselagoon/redis-6-persistent
- 7 Dockerfile -
uselagoon/redis-7
\u307e\u305f\u306fuselagoon/redis-7-persistent
"},{"location":"ja/docker-images/redis/#_1","title":"\u4f7f\u7528\u65b9\u6cd5","text":"Redis\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Ephemeral(\u4e00\u6642\u7684)\u3068Persistent(\u6c38\u7d9a\u7684)\u306e2\u7a2e\u985e\u306e\u30bf\u30a4\u30d7\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#ephemeral","title":"Ephemeral(\u4e00\u6642\u7684)","text":"Ephemeral\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4e00\u6642\u7684\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u304a\u308a\u3001\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u30c7\u30fc\u30bf\u306f\u4fdd\u6301\u3055\u308c\u307e\u305b\u3093\u3002
\u30e1\u30e2\u30ea\u5185(RAM)\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u5927\u304d\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u6271\u3046\u5834\u5408\u306f\u3001\u6700\u521d\u306b\u8abf\u6574\u3057\u305f\u3044\u306e\u304cMAXMEMORY
\u5909\u6570\u3067\u3059\u3002\u3053\u306e\u5909\u6570\u306f\u3001Redis\u304c\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30a2\u30a4\u30c6\u30e0\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30e1\u30e2\u30ea(RAM)\u306e\u6700\u5927\u91cf\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#persistent","title":"Persistent (\u6c38\u7d9a\u7684)","text":"Persistent\u306aRedis\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u30c7\u30fc\u30bf\u3092\u4fdd\u6301\u3057\u3001\u30ad\u30e5\u30fc\u3084\u6c38\u7d9a\u5316\u304c\u5fc5\u8981\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
Redis\u30b3\u30f3\u30c6\u30ca\u304c\u518d\u8d77\u52d5\u3057\u3066\u30c7\u30a3\u30b9\u30af\u304b\u3089\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3080\u9593\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u4e88\u671f\u3057\u306a\u3044\u526f\u4f5c\u7528\u304c\u751f\u3058\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u901a\u5e38\u306f\u30e1\u30e2\u30ea\u5185\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30b7\u30ca\u30ea\u30aa\u3067Persistent Redis\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u306f\u304a\u52e7\u3081\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/docker-images/redis/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 /etc/redis/*
\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3092\u901a\u3057\u3066envplate
\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#redisconf","title":"redis.conf
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Lagoon\u3067\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3055\u308c\u305f \u30c7\u30d5\u30a9\u30eb\u30c8 \u306eRedis\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u4e00\u90e8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 -1 \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u6570(-1\u306f\u7121\u5236\u9650) \u30ed\u30b0\u30ec\u30d9\u30eb \u901a\u77e5 \u30ed\u30b0\u306e\u30ec\u30d9\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059 \u6700\u5927\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf 100mb \u6700\u5927\u30e1\u30e2\u30ea\u5bb9\u91cf \u6700\u5927\u30e1\u30e2\u30ea\u30dd\u30ea\u30b7\u30fc allkeys-lru Redis\u304c\u6700\u5927\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306b\u9054\u3057\u305f\u3068\u304d\u306b\u30ad\u30fc\u3092\u8ffd\u3044\u51fa\u3059\u305f\u3081\u306e\u30dd\u30ea\u30b7\u30fc REDIS_PASSWORD \u7121\u52b9 \u8a8d\u8a3c\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002"},{"location":"ja/docker-images/redis/#_2","title":"\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u57fa\u3065\u3044\u3066\u3001\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 Redis\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8a73\u7d30\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u3061\u3089\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/docker-images/redis/#redis_1","title":"Redis \u6c38\u7d9a\u5316","text":"Lagoon\u306e redis
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u305fLagoon\u306e redis-persistent
Docker\u30a4\u30e1\u30fc\u30b8\u306f\u3001Redis\u30b5\u30fc\u30d3\u30b9\u3092persistent
\u30e2\u30fc\u30c9\u3067\u4f7f\u7528\u3059\u308b\u5834\u5408(\u3064\u307e\u308a\u3001\u30ad\u30fc\u304c\u30c7\u30a3\u30b9\u30af\u306b\u4fdd\u5b58\u3055\u308c\u308b\u6c38\u7d9a\u5316\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408)\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
redis
\u3068\u306e\u9055\u3044\u306f\u3001FLAVOR
\u74b0\u5883\u5909\u6570\u306e\u307f\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u4f7f\u7528\u3055\u308c\u308bredis\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5fdc\u3058\u3066\u3001\u305d\u308c\u305e\u308c\u306eRedis\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#_3","title":"\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":"Lagoon\u306eRedis\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3059\u3079\u3066redis-cli
\u30b3\u30de\u30f3\u30c9\u304c\u4e8b\u524d\u306b\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3092\u4f7f\u7528\u3057\u3066\u3001Redis \u30b5\u30fc\u30d3\u30b9\u306b\u60c5\u5831\u3092\u554f\u3044\u5408\u308f\u305b\u305f\u308a\u3001\u8a2d\u5b9a\u5024\u3092\u52d5\u7684\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u3053\u3053\u306e\u624b\u9806\u3092\u4f7f\u7528\u3057\u3066\u3001pod
\u5024\u3068\u3057\u3066redis
\u3092\u6307\u5b9a\u3057\u3066Redis\u30dd\u30c3\u30c9\u306bSSH\u3067\u63a5\u7d9a\u3057\u3001\u63a5\u7d9a\u3057\u305f\u3089\u30bf\u30fc\u30df\u30ca\u30eb\u304b\u3089\u5b9f\u884c\u3059\u308b\u3060\u3051\u3067\u3059\u3002
"},{"location":"ja/docker-images/redis/#_4","title":"\u6700\u5927\u30e1\u30e2\u30ea\u30dd\u30ea\u30b7\u30fc","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Lagoonredis
\u30a4\u30e1\u30fc\u30b8\u306fallkeys-lru
\u30dd\u30ea\u30b7\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30dd\u30ea\u30b7\u30fc\u306f\u3001Redis\u30b5\u30fc\u30d3\u30b9\u304cmaxmemory
\u5236\u9650\u306b\u9054\u3057\u305f\u5834\u5408\u3001\u6700\u5f8c\u306b\u4f7f\u7528\u3055\u308c\u305f\u30ad\u30fc\u304b\u3089\u9806\u306b\u3001Redis\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u4efb\u610f\u306e\u30ad\u30fc\u3092\u8ffd\u3044\u51fa\u3059\u3053\u3068\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002
\u4e00\u822c\u7684\u306a\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u306f\u3001Drupal\u304cRedis\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u5404\u30ad\u30fc\u306bTTL
\u5024\u3092\u8a2d\u5b9a\u3057\u306a\u3044\u5834\u5408\u304c\u3042\u308b\u305f\u3081\u3001\u3053\u308c\u304c\u7406\u60f3\u7684\u306a\u8a2d\u5b9a\u3067\u3059\u3002maxmemory-policy
\u304cvolatile-lru
\u306e\u3088\u3046\u306a\u3082\u306e\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u3066\u3001Drupal\u304c\u3053\u308c\u3089\u306eTTL
\u30bf\u30b0\u3092\u63d0\u4f9b\u3057\u306a\u3044\u5834\u5408\u3001Redis\u30b3\u30f3\u30c6\u30ca\u304c\u3044\u3063\u3071\u3044\u306b\u306a\u308a\u3001\u4efb\u610f\u306e\u30ad\u30fc\u306e\u8ffd\u3044\u51fa\u3057\u304c\u5b8c\u5168\u306b\u3067\u304d\u306a\u304f\u306a\u308a\u3001\u65b0\u3057\u3044\u30ad\u30e3\u30c3\u30b7\u30e5\u30ad\u30fc\u306e\u53d7\u3051\u5165\u308c\u3082\u5b8c\u5168\u306b\u505c\u6b62\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002
Redis\u306emaxmemory\u30dd\u30ea\u30b7\u30fc\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u60c5\u5831\u306f\u3001Redis\u306e\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
\u6ce8\u610f\u3057\u3066\u9032\u3081\u3066\u304f\u3060\u3055\u3044
\u3053\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\u3068\u3001Redis\u304c\u5b8c\u5168\u306b\u3044\u3063\u3071\u3044\u306b\u306a\u308a\u3001\u7d50\u679c\u3068\u3057\u3066\u969c\u5bb3\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#redismaxmemory","title":"Redis\u306emaxmemory
\u5024\u306e\u8abf\u6574","text":"Redis\u306b\u5272\u308a\u5f53\u3066\u308b\u6700\u9069\u306a\u30e1\u30e2\u30ea\u91cf\u3092\u898b\u3064\u3051\u308b\u306e\u306f\u3001\u306a\u304b\u306a\u304b\u96e3\u3057\u3044\u4f5c\u696d\u3067\u3059\u3002Redis\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30e1\u30e2\u30ea\u30b5\u30a4\u30ba\u3092\u8abf\u6574\u3059\u308b\u524d\u306b\u3001\u901a\u5e38\u901a\u308a\u306e\u4f7f\u7528\u3067\u3001\u5c11\u306a\u304f\u3068\u30821\u65e5\u9593\u306f\u901a\u5e38\u901a\u308a\u306b\u5b9f\u884c\u3055\u305b\u308b\u306e\u304c\u8ce2\u660e\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u30e1\u30e2\u30ea\u5024\u3092\u8abf\u6574\u3059\u308b\u969b\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u9ad8\u30ec\u30d9\u30eb\u306a\u30dd\u30a4\u30f3\u30c8\u304c\u3042\u308a\u307e\u3059\uff1a
- \u6700\u521d\u306b\u78ba\u8a8d\u3059\u308b\u3079\u304d\u3053\u3068\u306f \u73fe\u5728Redis\u304c\u4f7f\u7528\u3057\u3066\u3044\u308b\u30e1\u30e2\u30ea\u306e\u5272\u5408\u3067\u3059\u3002
- \u3053\u306e\u5272\u5408\u304c
50\uff05
\u672a\u6e80\u306e\u5834\u5408\u306f\u3001maxmemory
\u306e\u5024\u309225\uff05\u6e1b\u3089\u3059\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u3053\u306e\u5272\u5408\u304c
50\uff05
\u304b\u308975\uff05
\u306e\u9593\u3067\u3042\u308c\u3070\u3001\u554f\u984c\u306a\u304f\u7a3c\u50cd\u3057\u3066\u3044\u307e\u3059\u3002 - \u3053\u306e\u5024\u304c
75\uff05
\u3092\u8d85\u3048\u308b\u5834\u5408\u3001maxmemory
\u3092\u5897\u3084\u3059\u5fc5\u8981\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3001\u4ed6\u306e\u5909\u6570\u3092\u78ba\u8a8d\u3059\u308b\u4fa1\u5024\u304c\u3042\u308a\u307e\u3059\u3002
- Redis\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u7387\u304c\u9ad8\u3044\u3068\u5224\u65ad\u3057\u305f\u5834\u5408\u3001\u6b21\u306b\u30ad\u30fc\u306e\u8ffd\u3044\u51fa\u3057\u56de\u6570\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044\u3002
- \u30ad\u30fc\u306e\u8ffd\u3044\u51fa\u3057\u56de\u6570\u304c\u591a\u304f\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u7387\u304c
95\uff05
\u3092\u8d85\u3048\u3066\u3044\u308b\u5834\u5408\u306f\u3001Redis\u306emaxmemory
\u8a2d\u5b9a\u3092\u9ad8\u304f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 - \u30ad\u30fc\u306e\u8ffd\u3044\u51fa\u3057\u56de\u6570\u304c\u591a\u304f\u306a\u3044\u3088\u3046\u3067\u3001\u5fdc\u7b54\u6642\u9593\u304c\u59a5\u5f53\u306a\u5834\u5408\u306f\u3001\u5358\u306b Redis \u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30e1\u30e2\u30ea\u3092\u60f3\u5b9a\u901a\u308a\u306b\u7ba1\u7406\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#_5","title":"\u30b3\u30de\u30f3\u30c9\u4f8b","text":"\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001Redis\u30b5\u30fc\u30d3\u30b9\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059:
- Redis\u30b5\u30fc\u30d3\u30b9\u306b\u95a2\u3059\u308b\u3059\u3079\u3066\u306e\u60c5\u5831\u3092\u8868\u793a:
redis-cli info
- \u30b5\u30fc\u30d3\u30b9\u306e\u30e1\u30e2\u30ea\u60c5\u5831\u3092\u8868\u793a:
redis-cli info memory
- \u30b5\u30fc\u30d3\u30b9\u306e\u30ad\u30fc\u30b9\u30da\u30fc\u30b9\u60c5\u5831\u3092\u8868\u793a:
redis-cli info keyspace
- \u30b5\u30fc\u30d3\u30b9\u306e\u7d71\u8a08\u60c5\u5831\u3092\u8868\u793a:
redis-cli info stats
Redis\u30b5\u30fc\u30d3\u30b9\u306e\u5024\u3092\u3001Redis\u30b5\u30fc\u30d3\u30b9\u3092\u518d\u8d77\u52d5\u305b\u305a\u306b\u52d5\u7684\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u305f\u3060\u3057\u3001\u3053\u308c\u3089\u306e\u52d5\u7684\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u5024\u306f\u3001\u30dd\u30c3\u30c9\u304c\u518d\u8d77\u52d5\u3057\u305f\u5834\u5408 (\u30c7\u30d7\u30ed\u30a4\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3001\u307e\u305f\u306f\u5358\u306b\u30ce\u30fc\u30c9\u9593\u3067\u30b7\u30e3\u30c3\u30d5\u30eb\u3055\u308c\u305f\u5834\u5408\u306b\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059) \u306b\u306f\u6c38\u7d9a\u5316\u3055\u308c\u306a\u3044\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
maxmemory
\u8a2d\u5b9a\u5024\u3092\u52d5\u7684\u306b500mb
\u306b\u8a2d\u5b9a: config set maxmemory 500mb
maxmemory-policy
\u8a2d\u5b9a\u5024\u3092\u52d5\u7684\u306bvolatile-lru
\u306b\u8a2d\u5b9a: config set maxmemory-policy volatile-lru
"},{"location":"ja/docker-images/ruby/","title":"Ruby","text":"Lagoon ruby
Docker\u30a4\u30e1\u30fc\u30b8\u3002\u516c\u5f0f\u306ePython Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/ruby/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 3.0 (\u4e92\u63db\u6027\u306e\u305f\u3081\u3060\u3051\u306b\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u306b\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093) -
uselagoon/ruby-3.0
- 3.1 Dockerfile (2025\u5e743\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/ruby-3.1
- 3.2 Dockerfile (2026\u5e743\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/ruby-3.2
- 3.3 Dockerfile (2027\u5e743\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/ruby-3.3
\u30d2\u30f3\u30c8
Lagoon\u306f\u3001\u516c\u5f0f\u306b\u30a2\u30ca\u30a6\u30f3\u30b9\u3055\u308c\u305f\u7d42\u4e86\u65e5(EOL)\u306e\u5f8c\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3001EOL\u306b\u9054\u3057\u305fRuby\u30a4\u30e1\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://www.ruby-lang.org/en/downloads/releases/\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/docker-images/ruby/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"ruby\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c83000
\u3067\u3059\u3002
Lagoon\u306b\u306fRuby\u30b5\u30fc\u30d3\u30b9\u5c02\u7528\u306e\u4e8b\u524d\u5b9a\u7fa9\u3055\u308c\u305f\u578b\u306f\u3042\u308a\u307e\u305b\u3093\u3002lagoon.type: generic
\u3092\u4f7f\u7528\u3057\u3066\u69cb\u6210\u3057\u3001lagoon.port: 3000 \u3067\u30dd\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/docker-images/ruby/#docker-composeyml-snippet","title":"docker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.ymlruby:\nbuild:\n# \u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0\u306b\u3042\u308bDockerfile\u3092\u4f7f\u7528\u3057\u3066\u30d3\u30eb\u30c9\u3092\u884c\u3046\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# Lagoon\u306b\u3053\u308c\u304c\u4e00\u822c\u7684\u306a\u30b5\u30fc\u30d3\u30b9\u3067\u3001\u30dd\u30fc\u30c83000\u3092\u516c\u958b\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u4f1d\u3048\u307e\u3059\nlagoon.type: generic\nlagoon.port: 3000\nports:\n# \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u307f\u9069\u7528\u3055\u308c\u308b\u8a2d\u5b9a\u3067\u3059\n# \u30dd\u30fc\u30c83000\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3057\u3001\n# `docker-compose port node 3000`\u3067\u30dd\u30fc\u30c8\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n- \"3000\"\n
"},{"location":"ja/docker-images/solr/","title":"Solr","text":"Lagoon Solr
\u30a4\u30e1\u30fc\u30b8\u306eDockerfile\u3002\u516c\u5f0f\u306esolr:<version>-alpine
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001\u521d\u671f\u30b3\u30a2mycore
\u3092\u6301\u3064\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eSolr\u30b5\u30fc\u30d0\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/solr/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 5.5 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059)
- 6.6 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059)
- 7.7 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059)
- 7 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/solr-7
- 8 Dockerfile -
uselagoon/solr-8
- 9 Dockerfile -
uselagoon/solr-9
"},{"location":"ja/docker-images/solr/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 10-solr-port.sh
\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001Solr
\u30dd\u30fc\u30c8\u306e\u4fee\u6b63\u3068\u78ba\u8a8d\u3092\u884c\u3044\u307e\u3059\u3002 20-solr-datadir.sh
\u306f\u3001Solr
\u306e\u8a2d\u5b9a\u304cLagoon\u306b\u9069\u5408\u3057\u3066\u3044\u308b\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u3053\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30d1\u30b9\u3092\u8a2d\u5b9a\u3057\u3001\u6b63\u3057\u3044\u30ed\u30c3\u30af\u30bf\u30a4\u30d7\u3092\u69cb\u6210\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/solr/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u4e00\u90e8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3092\u901a\u3058\u3066\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e SOLR_JAVA_MEM 512M \u30c7\u30d5\u30a9\u30eb\u30c8\u306eJava HEAP\u30b5\u30a4\u30ba(\u4f8b. SOLR_JAVA_MEM=\"-Xms10g -Xmx10g\"
) SOLR_DATA_DIR /var/solr Solr\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3002\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u3053\u308c\u3092\u5909\u66f4\u3059\u308b\u3068\u30c7\u30fc\u30bf\u304c\u5931\u308f\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff01 SOLR_COPY_DATA_DIR_SOURCE (\u8a2d\u5b9a\u306a\u3057) \u8d77\u52d5\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u5b9a\u7fa9\u6e08\u307f\u306eSOLR_DATA_DIR
\u306b\u30b3\u30d4\u30fc\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u3067\u3059\u3002\u65e2\u5b58\u306e\u30b3\u30a2\u3092\u4f7f\u3063\u3066 Solr \u3092\u4e8b\u524d\u306b\u8a2d\u5b9a\u3057\u3066\u304a\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30b9\u30af\u30ea\u30d7\u30c8\u306f\u5b9f\u969b\u306e Solr \u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u30b3\u30d4\u30fc\u306f\u3001\u5b9b\u5148\u306b Solr \u30b3\u30a2\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306e\u307f\u884c\u308f\u308c\u307e\u3059\u3002"},{"location":"ja/docker-images/varnish/","title":"Varnish","text":"Lagoon\u306e Varnish
\u30a4\u30e1\u30fc\u30b8Dockerfile\u3067\u3059\u3002 \u516c\u5f0f Varnish
\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/varnish/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 5(\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059)-
uselagoon/varnish-5
- 6.0 LTS Dockerfile -
uselagoon/varnish-6
- 7 Dockerfile -
uselagoon/varnish-7
"},{"location":"ja/docker-images/varnish/#included-varnish-modules","title":"Varnish\u30e2\u30b8\u30e5\u30fc\u30eb","text":" vbox-dynamic
- DNS \u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u3068 SRV \u30ec\u30b3\u30fc\u30c9\u304b\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u691c\u51fa\u306b\u3088\u308b\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u30d0\u30c3\u30af\u30a8\u30f3\u30c9 vbox-bodyaccess
- \u30ea\u30af\u30a8\u30b9\u30c8\u30dc\u30c7\u30a3\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b Varnish vmod
"},{"location":"ja/docker-images/varnish/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/varnish/#included-defaultvcl-configuration-file","title":"default.vcl
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Lagoon\u3067\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3055\u308c\u305f\u30c7\u30d5\u30a9\u30eb\u30c8\u306evcl
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059(\u74b0\u5883\u5909\u6570\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044)\u3002
"},{"location":"ja/docker-images/varnish/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e VARNISH_BACKEND_HOST NGINX \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30db\u30b9\u30c8 VARNISH_BACKEND_PORT 8080 \u30c7\u30d5\u30a9\u30eb\u30c8\u306eVarnish\u30dd\u30fc\u30c8 VARNISH_SECRET lagoon_default_secret \u7ba1\u7406\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308bVarnish\u30b7\u30fc\u30af\u30ec\u30c3\u30c8 LIBVMOD_DYNAMIC_VERSION 5.2 vmod-dynamic
\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d0\u30fc\u30b8\u30e7\u30f3 LIBVMOD_BODYACCESS_VERSION 5.0 vmod-bodyaccess
\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d0\u30fc\u30b8\u30e7\u30f3 HTTP_RESP_HDR_LEN 8k \u4efb\u610f\u306eHTTP\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u306e\u6700\u5927\u9577 HTTP_RESP_SIZE 32k \u51e6\u7406\u53ef\u80fd\u306aHTTP\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u6700\u5927\u30d0\u30a4\u30c8\u6570 NUKE_LIMIT 150 \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30dc\u30c7\u30a3\u306e\u305f\u3081\u306e\u7a7a\u304d\u3092\u4f5c\u308b\u305f\u3081\u306b\u524a\u9664\u3092\u8a66\u307f\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u6700\u5927\u6570 CACHE_TYPE malloc varnish\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30bf\u30a4\u30d7 CACHE_SIZE 100M \u30ad\u30e3\u30c3\u30b7\u30e5\u30b5\u30a4\u30ba LISTEN 8080 \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30b5\u30fc\u30d0\u30fc\u30dd\u30fc\u30c8 MANAGEMENT_LISTEN 6082 \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u7ba1\u7406\u30ea\u30b9\u30cb\u30f3\u30b0\u30dd\u30fc\u30c8"},{"location":"ja/installing-lagoon/add-group/","title":"\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0","text":"\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0 lagoon add group -N groupname\n
"},{"location":"ja/installing-lagoon/add-project/","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8ffd\u52a0","text":""},{"location":"ja/installing-lagoon/add-project/#lagoon","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092Lagoon\u306b\u8ffd\u52a0\u3059\u308b","text":" -
\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8ffd\u52a0lagoon add project \\\n--gitUrl <YOUR-GITHUB-REPO-URL> \\\n--openshift 1 \\\n--productionEnvironment <YOUR-PROD-ENV> \\\n--branches <THE-BRANCHES-YOU-WANT-TO-DEPLOY> \\\n--project <YOUR-PROJECT-NAME>\n
--openshift
\u306e\u5024\u306f\u3001\u3042\u306a\u305f\u306eKubernetes\u30af\u30e9\u30b9\u30bf\u306eID\u3067\u3059\u3002 - \u672c\u756a\u74b0\u5883\u306f\u3001\u672c\u756a\u74b0\u5883\u3068\u3057\u3066\u4f7f\u7528\u3057\u305f\u3044\u30d6\u30e9\u30f3\u30c1\u306e\u540d\u524d\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002
- \u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u30d6\u30e9\u30f3\u30c1\u306f\u3001\u6b21\u306e\u3088\u3046\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059:
\u201c^(main|develop)$\u201d
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u306f\u4f55\u3067\u3082\u826f\u3044 - \u201c\u4f1a\u793e\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8,\u201d \u201c\u4f8b,\u201d \u306a\u3069\u3067\u3059\u3002
-
Lagoon UI\u306b\u79fb\u52d5\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u30ea\u30b9\u30c8\u306b\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u306f\u305a\u3067\u3059\uff01
"},{"location":"ja/installing-lagoon/add-project/#git","title":"\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u8ffd\u52a0\u3059\u308b","text":"Lagoon\u306f\u5404\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u308c\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3068\u3057\u3066\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3001Lagoon\u304c\u30b3\u30fc\u30c9\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-
\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ad\u30fc\u306e\u53d6\u5f97lagoon get project-key --project <YOUR-PROJECT-NAME>\n
-
\u30ad\u30fc\u3092\u30b3\u30d4\u30fc\u3057\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3068\u3057\u3066\u4fdd\u5b58\u3057\u307e\u3059\u3002
GitHub GitLab Bitbucket
"},{"location":"ja/installing-lagoon/add-project/#gitwebhooks","title":"Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306bwebhooks\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u8ffd\u52a0\u3059\u308b","text":"Lagoon\u304c\u30b3\u30fc\u30c9\u306e\u66f4\u65b0\u6642\u306b\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u308b\u3088\u3046\u306b\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u63a5\u7d9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-
Lagoon\u30af\u30e9\u30b9\u30bf\u306ewebhook\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
- \u30da\u30a4\u30ed\u30fc\u30c9URL:
<LAGOON-WEBHOOK-INGRESS>
- \u30b3\u30f3\u30c6\u30f3\u30c4\u30bf\u30a4\u30d7: JSON
- \u30a2\u30af\u30c6\u30a3\u30d6: \u30a2\u30af\u30c6\u30a3\u30d6(\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u6709\u52b9/\u7121\u52b9\u3092\u5207\u308a\u66ff\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059)
- \u30a4\u30d9\u30f3\u30c8: \u95a2\u9023\u3059\u308b\u30a4\u30d9\u30f3\u30c8\u3092\u9078\u629e\u3059\u308b\u304b\u3001\u5168\u3066\u3092\u9078\u629e\u3057\u307e\u3059\u3002\u901a\u5e38\u306f\u30d7\u30c3\u30b7\u30e5\u3001\u30d6\u30e9\u30f3\u30c1\u306e\u4f5c\u6210/\u524a\u9664\u304c\u5fc5\u8981\u3067\u3059
GitHub GitLab Bitbucket
"},{"location":"ja/installing-lagoon/create-user/","title":"Lagoon\u30e6\u30fc\u30b6\u30fc\u306e\u4f5c\u6210","text":" -
Lagoon CLI\u3092\u4f7f\u3063\u3066\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059:
\u30e6\u30fc\u30b6\u30fc\u306e\u8ffd\u52a0lagoon add user --email user@example.com --firstName MyFirstName --lastName MyLastName\n
-
\u3042\u306a\u305f\u306e\u30e1\u30fc\u30eb\u306b\u79fb\u52d5\u3057\u3001\u30e1\u30fc\u30eb\u5185\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u30ea\u30bb\u30c3\u30c8\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
- \u6307\u793a\u306b\u5f93\u3063\u3066\u4f5c\u6210\u3057\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u3067Lagoon UI\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059\u3002
- \u30e6\u30fc\u30b6\u30fc\u306eSSH\u516c\u958b\u9375\u3092\u8a2d\u5b9a\u304b\u3089\u8ffd\u52a0\u3057\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/deploy-project/","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b","text":" -
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306e\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u30c7\u30d7\u30ed\u30a4lagoon deploy branch -p <\u3042\u306a\u305f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d> -b <\u3042\u306a\u305f\u306e\u30d6\u30e9\u30f3\u30c1\u540d>\n
-
Lagoon\u306eUI\u306b\u79fb\u52d5\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u78ba\u8a8d\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044 - \u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u74b0\u5883\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u306f\u305a\u3067\u3059\uff01
- \u30af\u30e9\u30b9\u30bf\u5185\u306ePods\u30ea\u30b9\u30c8\u3092\u78ba\u8a8d\u3057\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3057\u305f\u308a\u3001\u30b5\u30fc\u30d3\u30b9\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u305f\u308a\u3059\u308b\u30d3\u30eb\u30c9Pod\u304c\u898b\u3048\u308b\u306f\u305a\u3067\u3059\u3002\u5168\u3066\u306epods\u3092\u898b\u308b
kubectl get pods --all-namespaces | grep lagoon-build\n
"},{"location":"ja/installing-lagoon/gitlab/","title":"GitLab","text":"*\u307b\u3068\u3093\u3069\u306e*\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u3053\u308c\u306fLagoon\u3068GitLab\u3092\u30e6\u30fc\u30b6\u30fc\u304a\u3088\u3073\u30b0\u30eb\u30fc\u30d7\u8a8d\u8a3c\u306e\u305f\u3081\u306b\u7d71\u5408\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
- \u7ba1\u7406\u8005\u6a29\u9650\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u306eGitLab\u3067\u30d1\u30fc\u30bd\u30ca\u30eb\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
your-gitlab.com/admin/hooks
\u306e\u4e0b\u306b\u30b7\u30b9\u30c6\u30e0\u30d5\u30c3\u30af\u3092\u4f5c\u6210\u3057\u3001webhookhandler.lagoon.example.com
\u306b\u30dd\u30a4\u30f3\u30c8\u3057\u3001\u30e9\u30f3\u30c0\u30e0\u306a\u79d8\u5bc6\u306e\u30c8\u30fc\u30af\u30f3\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 - \u300c\u30ea\u30dd\u30b8\u30c8\u30ea\u66f4\u65b0\u30a4\u30d9\u30f3\u30c8\u300d\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002
-
lagoon-core-values.yml
\u3092\u66f4\u65b0\u3057\u307e\u3059:
lagoon-core-values.ymlapi:\nadditionalEnvs:\nGITLAB_API_HOST: <<GitLab\u306eURL \u4f8b: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << API\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u6301\u3064\u30d1\u30fc\u30bd\u30ca\u30eb\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3 >>\nGITLAB_SYSTEM_HOOK_TOKEN: << \u30b7\u30b9\u30c6\u30e0\u30d5\u30c3\u30af\u79d8\u5bc6\u30c8\u30fc\u30af\u30f3 >>\nwebhook-haondler:\nadditionalEnvs:\nGITLAB_API_HOST: <<GitLab\u306eURL \u4f8b: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << API\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u6301\u3064\u30d1\u30fc\u30bd\u30ca\u30eb\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3 >>\nGITLAB_SYSTEM_HOOK_TOKEN: << \u30b7\u30b9\u30c6\u30e0\u30d5\u30c3\u30af\u79d8\u5bc6\u30c8\u30fc\u30af\u30f3 >>\nwebhooks2tasks:\nadditionalEnvs:\nGITLAB_API_HOST: <<GitLab\u306eURL \u4f8b: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << Personal API\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u6301\u3064\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3 >>\nGITLAB_SYSTEM_HOOK_TOKEN: << \u30b7\u30b9\u30c6\u30e0\u30d5\u30c3\u30af\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30c8\u30fc\u30af\u30f3 >>\n
-
lagoon-core
helmchart\u3092Helm\u3067\u66f4\u65b0\u3057\u307e\u3059\u3002
- \u3059\u3067\u306bKeycloak\u306b\u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u305d\u308c\u3089\u3092\u524a\u9664\u3057\u307e\u3059\u3002
- API\u30dd\u30c3\u30c9\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:GitLab\u3068\u540c\u671f
yarn sync:gitlab:all\n
"},{"location":"ja/installing-lagoon/install-harbor/","title":"Harbor\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":" -
Helm\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0\u3057\u307e\u3059:
Helm\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0helm repo add harbor https://helm.goharbor.io\n
-
\u3042\u306a\u305f\u306e\u7279\u5b9a\u306e\u72b6\u6cc1\u306b\u6700\u9069\u306aHarbor\u306e\u8a2d\u5b9a\u3092\u8003\u616e\u3057\u3066\u304f\u3060\u3055\u3044 - \u8a73\u7d30\u306a\u63a8\u5968\u4e8b\u9805\u306b\u3064\u3044\u3066\u306f\u5f7c\u3089\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044:
- \u753b\u50cf\u306eblob(
imageChartStorage
)\u306b\u306fS3\u4e92\u63db\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002 - Postgres\u30b5\u30fc\u30d3\u30b9(
database.type
)\u306b\u306f\u30de\u30cd\u30fc\u30b8\u30c9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002 - \u9ad8\u8ca0\u8377\u30b7\u30ca\u30ea\u30aa\u3067\u306f\u3001\u30de\u30cd\u30fc\u30b8\u30c9Redis\u30b5\u30fc\u30d3\u30b9(
redis.type
)\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002
-
\u8a2d\u5b9a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306bharbor-values.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u30d7\u30ed\u30ad\u30b7\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u6ce8\u91c8\u306f\u5927\u304d\u306a\u753b\u50cf\u306e\u30d7\u30c3\u30b7\u30e5\u306b\u5f79\u7acb\u3061\u307e\u3059:
harbor-values.ymlexpose:\ningress:\nannotations:\nkubernetes.io/tls-acme: \"true\"\nnginx.ingress.kubernetes.io/proxy-buffering: \"off\"\nnginx.ingress.kubernetes.io/proxy-request-buffering: \"off\"\nhosts:\ncore: harbor.lagoon.example.com\ntls:\nenabled: true\ncertSource: secret\nsecret:\nsecretName: harbor-harbor-ingress\nexternalURL: https://harbor.lagoon.example.com\nharborAdminPassword: <\u3042\u306a\u305f\u306eHarbor\u7ba1\u7406\u8005\u30d1\u30b9\u30ef\u30fc\u30c9>\nchartmuseum:\nenabled: false\nclair:\nenabled: false\nnotary:\nenabled: false\ntrivy:\nenabled: false\njobservice:\njobLogger: stdout\n
-
\u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308bHarbor\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u8981\u4ef6\u3092\u78ba\u8a8d\u3057\u306a\u304c\u3089\u3001Harbor\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
Harbor\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebhelm upgrade --install --create-namespace \\\n--namespace harbor --wait \\\n-f harbor-values.yml \\\nharbor harbor/harbor\n
-
harbor.yml
\u3067\u8a2d\u5b9a\u3057\u305fURL\u3067Harbor\u3092\u8a2a\u308c\u307e\u3059\u3002
- \u30e6\u30fc\u30b6\u30fc\u540d:admin
- \u30d1\u30b9\u30ef\u30fc\u30c9:
Harbor\u306e\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u53d6\u5f97kubectl -n harbor get secret harbor-core -o jsonpath=\"{.data.HARBOR_ADMIN_PASSWORD}\" | base64 --decode\n
-
\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306eLagoon Remote values.yml
\u3068harbor-values.yml
\u306b\u4e0a\u8a18\u306eHarbor\u306e\u8cc7\u683c\u60c5\u5831\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/install-lagoon-remote/","title":"Lagoon Remote\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u6b21\u306b\u3001Lagoon Remote\u3092Lagoon\u540d\u524d\u7a7a\u9593\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002RabbitMQ\u30b5\u30fc\u30d3\u30b9\u304c\u30d6\u30ed\u30fc\u30ab\u30fc\u3068\u306a\u308a\u307e\u3059\u3002
-
\u524d\u306e\u4e8c\u3064\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u540c\u69d8\u306b\u3001\u8a2d\u5b9a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306blagoon-remote-values.yml
\u3092\u4f5c\u6210\u3057\u3001\u5024\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002
- rabbitMQPassword
RabbitMQ password\u3092\u53d6\u5f97kubectl -n lagoon-core get secret lagoon-core-broker -o jsonpath=\"{.data.RABBITMQ_PASSWORD}\" | base64 --decode\n
- rabbitMQHostname
lagoon-remote-values.ymllagoon-core-broker.lagoon-core.svc.local\n
- taskSSHHost
SSH Host\u3092\u66f4\u65b0kubectl get service lagoon-core-broker-amqp-ext \\\n-o custom-columns=\"NAME:.metadata.name,IP ADDRESS:.status.loadBalancer.ingress[*].ip,HOSTNAME:.status.loadBalancer.ingress[*].hostname\"\n
- harbor-password
Harbor secret\u3092\u53d6\u5f97kubectl -n harbor get secret harbor-harbor-core -o jsonpath=\"{.data.HARBOR_ADMIN_PASSWORD}\" | base64 --decode\n
-
Harbor\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u30b9\u30c6\u30c3\u30d7\u304b\u3089Harbor\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
lagoon-remote-values.ymllagoon-build-deploy:\nenabled: true\nextraArgs:\n- \"--enable-harbor=true\"\n- \"--harbor-url=https://harbor.lagoon.example.com\"\n- \"--harbor-api=https://harbor.lagoon.example.com/api/\"\n- \"--harbor-username=admin\"\n- \"--harbor-password=<from harbor-harbor-core secret>\"\nrabbitMQUsername: lagoon\nrabbitMQPassword: <from lagoon-core-broker secret>\nrabbitMQHostname: lagoon-core-broker.lagoon-core.svc.cluster.local\nlagoonTargetName: <name of lagoon remote, can be anything>\ntaskSSHHost: <IP of ssh service loadbalancer>\ntaskSSHPort: \"22\"\ntaskAPIHost: \"api.lagoon.example.com\"\ndbaas-operator:\nenabled: true\nmariadbProviders:\nproduction:\nenvironment: production\nhostname: 172.17.0.1.nip.io\nreadReplicaHostnames:\n- 172.17.0.1.nip.io\npassword: password\nport: '3306'\nuser: root\ndevelopment:\nenvironment: development\nhostname: 172.17.0.1.nip.io\nreadReplicaHostnames:\n- 172.17.0.1.nip.io\npassword: password\nport: '3306'\nuser: root\n
-
ssh-core service account
-
Lagoon Remote\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b:
Lagoon remote\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebhelm upgrade --install --create-namespace \\\n--namespace lagoon \\\n-f lagoon-remote-values.yml \\\nlagoon-remote lagoon/lagoon-remote\n
"},{"location":"ja/installing-lagoon/lagoon-backups/","title":"Lagoon\u30d0\u30c3\u30af\u30a2\u30c3\u30d7","text":"Lagoon\u306f\u3001K8up\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059:https://k8up.io\u3002Lagoon\u306fK8up\u3068\u5bc6\u63a5\u306b\u7d71\u5408\u3055\u308c\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3080\u3057\u308d\u3001Lagoon\u306f\u305d\u306e\u30ea\u30bd\u30fc\u30b9\u3092K8up\u304c\u81ea\u52d5\u7684\u306b\u767a\u898b\u3057\u3066\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3067\u304d\u308b\u3088\u3046\u306b\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002
Lagoon\u306fK8up 1.x\u3068\u5e83\u7bc4\u306b\u30c6\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u307e\u30602.x\u3068\u306f\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u30021.1.0\u30c1\u30e3\u30fc\u30c8\u30d0\u30fc\u30b8\u30e7\u30f3(\u30a2\u30d7\u30ea\u30d0\u30fc\u30b8\u30e7\u30f3v1.2.0)\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002
-
\u30dd\u30ea\u30b7\u30fc\u3092\u6301\u3064\u65b0\u3057\u3044AWS\u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
example K8up IAM user{\n\"Version\":\"2012-10-17\",\n\"Statement\":[\n{\n\"Sid\":\"VisualEditor0\",\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:ListAllMyBuckets\",\n\"s3:CreateBucket\",\n\"s3:GetBucketLocation\"\n],\n\"Resource\":\"*\"\n},\n{\n\"Sid\":\"VisualEditor1\",\n\"Effect\":\"Allow\",\n\"Action\":\"s3:ListBucket\",\n\"Resource\":\"arn:aws:s3:::baas-*\"\n},\n{\n\"Sid\":\"VisualEditor2\",\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:PutObject\",\n\"s3:GetObject\",\n\"s3:AbortMultipartUpload\",\n\"s3:DeleteObject\",\n\"s3:ListMultipartUploadParts\"\n],\n\"Resource\":\"arn:aws:s3:::baas-*/*\"\n}\n]\n}\n
-
\u3042\u306a\u305f\u306e\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306b\u5408\u308f\u305b\u3066k8up-values.yml
\u3092\u4f5c\u6210\u3057\u307e\u3059:
k8up-values.ymlk8up:\nenvVars:\n- name: BACKUP_GLOBALS3ENDPOINT\nvalue: 'https://s3.eu-west-1.amazonaws.com'\n- name: BACKUP_GLOBALS3BUCKET\nvalue: ''\n- name: BACKUP_GLOBALKEEPJOBS\nvalue: '1'\n- name: BACKUP_GLOBALSTATSURL\nvalue: 'https://backup.lagoon.example.com'\n- name: BACKUP_GLOBALACCESSKEYID\nvalue: ''\n- name: BACKUP_GLOBALSECRETACCESSKEY\nvalue: ''\n- name: BACKUP_BACKOFFLIMIT\nvalue: '2'\n- name: BACKUP_GLOBALRESTORES3BUCKET\nvalue: ''\n- name: BACKUP_GLOBALRESTORES3ENDPOINT\nvalue: 'https://s3.eu-west-1.amazonaws.com'\n- name: BACKUP_GLOBALRESTORES3ACCESSKEYID\nvalue: ''\n- name: BACKUP_GLOBALRESTORES3SECRETACCESSKEY\nvalue: ''\ntimezone: Europe/Zurich\n
-
K8up\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb:
K8up\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u30b9\u30c6\u30c3\u30d71helm repo add appuio https://charts.appuio.ch\n
K8up\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u30b9\u30c6\u30c3\u30d7 2kubectl apply -f https://github.com/vshn/k8up/releases/download/v1.2.0/k8up-crd.yaml\n
K8up\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30b9\u30c6\u30c3\u30d73helm upgrade --install --create-namespace \\\n--namespace k8up \\\n-f k8up-values.yaml \\\n--version 1.1.0 \\\nk8up appuio/k8up\n
-
lagoon-core-values.yml
\u3092\u66f4\u65b0\u3057\u307e\u3059:
lagoon-core-values.ymls3BAASAccessKeyID: <<Access Key ID for restore bucket>>\ns3BAASSecretAccessKey: <<Access Key Secret for restore bucket>>\n
-
lagoon-core
\u3092\u518d\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/lagoon-cli/","title":"Lagoon CLI\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":" - \u3042\u306a\u305f\u306e\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u306b\u5bfe\u5fdc\u3059\u308b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001https://github.com/uselagoon/lagoon-cli#install\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002macOS\u3068Linux\u3067\u306f\u3001Homebrew\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
brew tap uselagoon/lagoon-cli
brew install lagoon
-
CLI\u306fLagoon\u3068\u3069\u306e\u3088\u3046\u306b\u901a\u4fe1\u3059\u308b\u304b\u3092\u77e5\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
Lagoon config lagoon config add \\\n--graphql https://YOUR-API-URL/graphql \\\n--ui https://YOUR-UI-URL \\\n--hostname YOUR.SSH.IP \\\n--lagoon YOUR-LAGOON-NAME \\\n--port 22\n
-
SSH\u30ad\u30fc\u3067\u8a8d\u8a3c\u3057\u3066Lagoon\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002
- Lagoon UI(URL\u306f
values.yml
\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059)\u306b\u79fb\u52d5\u3057\u3001\u8a2d\u5b9a\u306b\u9032\u307f\u307e\u3059\u3002 - \u516c\u958bSSH\u30ad\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
-
amazee.io\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u4f7f\u7528\u3057\u3088\u3046\u3068\u3059\u308b\u306e\u3092\u9632\u3050\u305f\u3081\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306eLagoon\u3092_\u3042\u306a\u305f\u306e_ Lagoon\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
Lagoon config lagoon config default --lagoon <YOUR-LAGOON-NAME>\n
-
lagoon login
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002Lagoon\u306fSSH\u306b\u63a5\u7d9a\u3057\u3001\u516c\u958b/\u79d8\u5bc6\u30ad\u30fc\u30da\u30a2\u306b\u5bfe\u3057\u3066\u8a8d\u8a3c\u3092\u884c\u3044\u3001\u30e6\u30fc\u30b6\u30fc\u540d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002
-
lagoon whoami
\u3092\u901a\u3058\u3066\u691c\u8a3c\u3057\u307e\u3059\u3002\u305d\u308c\u304c \u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u307e\u3059\u3002
\u60c5\u5831
\u4e00\u822c\u7684\u306b\u306fLagoon\u7ba1\u7406\u8005\u30ed\u30fc\u30eb\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u6700\u521d\u306b\u59cb\u3081\u308b\u305f\u3081\u306b\u306f\u7ba1\u7406\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u7406\u60f3\u7684\u306b\u306f\u3001\u7ba1\u7406\u8005\u3067\u306f_\u306a\u3044_\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u3059\u3050\u306b\u4f5c\u6210\u3057\u3066\u4f5c\u696d\u3092\u884c\u3044\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/lagoon-core/","title":"Lagoon Core\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":""},{"location":"ja/installing-lagoon/lagoon-core/#install-the-helm-chart","title":"Helm\u30c1\u30e3\u30fc\u30c8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":" -
Lagoon Charts\u30ea\u30dd\u30b8\u30c8\u30ea\u3092Helm\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u8ffd\u52a0\u3057\u307e\u3059:
Lagoon Charts\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u8ffd\u52a0helm repo add lagoon https://uselagoon.github.io/lagoon-charts/\n
-
\u4f5c\u6210\u3059\u308b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002values.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3067\u3053\u306e\u30d1\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u4f5c\u6210\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b
values.yml
\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8URL\u3092\u66f4\u65b0\u3057\u307e\u3059(\u305d\u308c\u3089\u3092api.lagoon.example.com
\u304b\u3089\u3042\u306a\u305f\u306e\u5024\u306b\u5909\u66f4\u3057\u307e\u3059)\u3002 \u4f8b: https://github.com/uselagoon/lagoon-charts/blob/main/charts/lagoon-core/ci/linter-values.yaml -
\u6b21\u306b\u3001values.yml
\u3092\u6307\u5b9a\u3057\u3066helm upgrade --install
\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:
values.yml\u3092\u4f7f\u7528\u3057\u3066Helm\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9helm upgrade --install --create-namespace --namespace lagoon-core -f values.yml lagoon-core lagoon/lagoon-core`\n
-
Lagoon Core\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3057\u305f\uff01
\u8b66\u544a
\u6642\u3005\u3001Docker Hub\u306e\u30d7\u30eb\u5236\u9650\u306b\u906d\u9047\u3057\u307e\u3059\u3002\u3053\u308c\u304c\u7d9a\u304f\u5834\u5408\u306f\u3001\u79c1\u305f\u3061\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u4ed6\u306e\u5834\u6240\u306b\u79fb\u52d5\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/lagoon-core/#configure-keycloak","title":"Keycloak \u3092\u69cb\u6210\u3059\u308b","text":"Keycloak \u306e values.yml
\u3067\u5b9a\u7fa9\u3057\u305f URL \u3067 Keycloak \u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002
- \u300c\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059
- \u30e6\u30fc\u30b6\u30fc\u540d:
admin
- \u30d1\u30b9\u30ef\u30fc\u30c9:
lagoon-core-keycloak
\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3001\u30ad\u30fc\u5024 KEYCLOAK_ADMIN_PASSWORD
\u3092\u4f7f\u7528\u3057\u307e\u3059 - \u6b21\u306e\u3088\u3046\u306b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u53d6\u5f97\u3057\u307e\u3059: \u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u53d6\u5f97
kubectl -n lagoon-core get secret lagoon-core-keycloak -o jsonpath=\"{.data.KEYCLOAK_ADMIN_PASSWORD}\" | base64 --decode\n
-
\u53f3\u4e0a\u306e \u30e6\u30fc\u30b6\u30fc \u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
1. \u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u7ba1\u7406 \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
2. \u4f5c\u6210\u3057\u305f\u7ba1\u7406\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u306e \u30e1\u30fc\u30eb \u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
3. \u4fdd\u5b58\u3057\u307e\u3059\u3002
-
Realm Lagoon -> Realm Settings -> Email \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
1. Keycloak \u306e\u30e1\u30fc\u30eb \u30b5\u30fc\u30d0\u30fc\u3092\u8a2d\u5b9a\u3057\u3001\u300cTest connection\u300d\u30dc\u30bf\u30f3\u3067\u63a5\u7d9a\u3092\u30c6\u30b9\u30c8\u3057\u307e\u3059\u3002
-
Realm Lagoon -> Realm Settings -> Login \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
1. \u300cForgot Password\u300d\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002
2. \u4fdd\u5b58\u3057\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/lagoon-core/#log-in-to-the-ui","title":"UI \u306b\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059\u3002","text":"\u3053\u308c\u3067\u3001UI \u306e values.yml
\u3067\u5b9a\u7fa9\u3057\u305f URL \u3067 Lagoon UI \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002
- \u30e6\u30fc\u30b6\u30fc\u540d:
lagoonadmin
- \u30b7\u30fc\u30af\u30ec\u30c3\u30c8:
lagoon-core-keycloak
\u30b7\u30fc\u30af\u30ec\u30c3\u30c8 \u30ad\u30fc\u5024: LAGOON-CORE-KEYCLOAK
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 - \u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002 \u79d8\u5bc6\u3092\u53d6\u5f97\u3059\u308b
kubectl -n lagoon-core get secret lagoon-core-keycloak -o jsonpath=\"{.data.KEYCLOAK_LAGOON_ADMIN_PASSWORD}\" | base64 --decode\n
"},{"location":"ja/installing-lagoon/lagoon-files/","title":"Lagoon\u30d5\u30a1\u30a4\u30eb","text":"Lagoon\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306a\u3069\u306e\u30bf\u30b9\u30af\u306e\u30d5\u30a1\u30a4\u30eb\u51fa\u529b\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001S3\u4e92\u63db\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u30db\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002
-
\u30dd\u30ea\u30b7\u30fc\u3092\u6301\u3064\u65b0\u3057\u3044AWS\u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059:
\u4f8b:\u30d5\u30a1\u30a4\u30ebIAM\u30e6\u30fc\u30b6\u30fc{\n\"Version\":\"2012-10-17\",\n\"Statement\":[\n{\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:ListBucket\",\n\"s3:GetBucketLocation\",\n\"s3:ListBucketMultipartUploads\"\n],\n\"Resource\":\"arn:aws:s3:::S3_BUCKET_NAME\"\n},\n{\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:PutObject\",\n\"s3:GetObject\",\n\"s3:DeleteObject\",\n\"s3:ListMultipartUploadParts\",\n\"s3:AbortMultipartUpload\"\n],\n\"Resource\":\"arn:aws:s3:::S3_BUCKET_NAME/*\"\n}\n]\n}\n
-
lagoon-core-values.yml
\u3092\u66f4\u65b0\u3057\u307e\u3059:
lagoon-core-values.ymls3FilesAccessKeyID: <<\u30a2\u30af\u30bb\u30b9\u30ad\u30fcID>>\ns3FilesBucket: <<Lagoon\u30d5\u30a1\u30a4\u30eb\u7528\u306e\u30d0\u30b1\u30c3\u30c8\u540d>>\ns3FilesHost: <<S3\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8(\u4f8b:\"https://s3.eu-west-1.amazonaws.com\")>>\ns3FilesSecretAccessKey: <<\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u30b7\u30fc\u30af\u30ec\u30c3\u30c8>>\ns3FilesRegion: <<S3\u30ea\u30fc\u30b8\u30e7\u30f3>>\n
-
\u3082\u3057\u3082\u3042\u306a\u305f\u304c lagoon-core
\u306e\u524d\u306bingress-nginx
\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u63d0\u6848\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u3088\u308a\u5927\u304d\u306a\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059:
lagoon-core-values.ymlcontroller:\nconfig:\nclient-body-timeout: '600' # \u6700\u5927600\u79d2\u306e\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\nproxy-send-timeout: '1800' # \u6700\u592730\u5206\u306e\u63a5\u7d9a - \u30a6\u30a7\u30d6\u30bd\u30b1\u30c3\u30c8\u306b\u5fc5\u8981\nproxy-read-timeout: '1800' # \u6700\u592730\u5206\u306e\u63a5\u7d9a - \u30a6\u30a7\u30d6\u30bd\u30b1\u30c3\u30c8\u306b\u5fc5\u8981\nproxy-body-size: 1024m # 1GB\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\nproxy-buffer-size: 64k # \u5927\u304d\u306a\u30d0\u30c3\u30d5\u30a1\n
"},{"location":"ja/installing-lagoon/lagoon-logging/","title":"Lagoon\u30ed\u30ae\u30f3\u30b0","text":"Lagoon\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3001\u30b3\u30f3\u30c6\u30ca\u3001\u30eb\u30fc\u30bf\u30fc\u306e\u30ed\u30b0\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306bOpenSearch\u3068\u7d71\u5408\u3057\u307e\u3059\u3002Lagoon\u30ed\u30ae\u30f3\u30b0\u306f\u3001Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304b\u3089\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3001\u30eb\u30fc\u30bf\u30fc\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u30ed\u30b0\u3092\u53ce\u96c6\u3057\u3001\u305d\u308c\u3089\u3092\u30ed\u30b0\u96c6\u7d04\u5668\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002\u305d\u308c\u306f\u5404lagoon-remote
\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u3055\u3089\u306b\u3001\u305d\u308c\u306flagoon-core
\u30b5\u30fc\u30d3\u30b9\u304b\u3089\u30ed\u30b0\u3092\u53ce\u96c6\u3059\u308b\u305f\u3081\u306blagoon-core
\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3079\u304d\u3067\u3059\u3002\u3053\u308c\u306fLagoonLogs
\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30ed\u30ae\u30f3\u30b0\u6982\u8981:Lucid Chart
\u53c2\u7167:Logging\u3002
Lagoon\u30ed\u30ae\u30f3\u30b0\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u306f\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044:https://github.com/uselagoon/lagoon-charts/tree/main/charts/lagoon-logging
-
lagoon-logging-values.yaml
\u3092\u4f5c\u6210\u3057\u307e\u3059:
lagoon-logging-values.yamltls:\ncaCert: |\n<< content of ca.pem from Logs-Concentrator>>\nclientCert: |\n<< content of client.pem from Logs-Concentrator>>\nclientKey: |\n<< content of client-key.pem from Logs-Concentrator>>\nforward:\nusername: <<Username for Lagoon Remote 1>>\npassword: <<Password for Lagoon Remote 1>>\nhost: <<ExternalIP of Logs-Concentrator Service LoadBalancer>>\nhostName: <<Hostname in Server Cert of Logs-Concentrator>>\nhostPort: '24224'\nselfHostname: <<Hostname in Client Cert of Logs-Concentrator>>\nsharedKey: <<Generated ForwardSharedKey of Logs-Concentrator>>\ntlsVerifyHostname: false\nclusterName: <<Short Cluster Identifier>>\nlogsDispatcher:\nserviceMonitor:\nenabled: false\nlogging-operator:\nmonitoring:\nserviceMonitor:\nenabled: false\nlagoonLogs:\nenabled: true\nrabbitMQHost: lagoon-core-broker.lagoon-core.svc.cluster.local\nrabbitMQUser: lagoon\nrabbitMQPassword: <<RabbitMQ Lagoon Password>>\nexcludeNamespaces: {}\n
-
lagoon-logging
\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059:
Install lagoon-logginghelm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com\n\nhelm upgrade --install --create-namespace \\\n--namespace lagoon-logging \\\n-f lagoon-logging-values.yaml \\\nlagoon-logging lagoon/lagoon-logging\n
"},{"location":"ja/installing-lagoon/lagoon-logging/#logging-nginx-in-gress","title":"Logging NGINX In gress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9","text":"lagoon-logging
\u5185\u306eingress-nginx
\u304b\u3089\u30ed\u30b0\u304c\u5fc5\u8981\u306a\u5834\u5408:
- ingress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306f
ingress-nginx
\u3068\u3044\u3046\u540d\u524d\u7a7a\u9593\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 -
\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u3092ingress-nginx
\u306b\u8ffd\u52a0\u3057\u307e\u3059:
ingress-nginx log-format-upstreamcontroller:\nconfig:\nlog-format-upstream: >-\n{\n\"time\": \"$time_iso8601\",\n\"remote_addr\": \"$remote_addr\",\n\"x-forwarded-for\": \"$http_x_forwarded_for\",\n\"true-client-ip\": \"$http_true_client_ip\",\n\"req_id\": \"$req_id\",\n\"remote_user\": \"$remote_user\",\n\"bytes_sent\": $bytes_sent,\n\"request_time\": $request_time,\n\"status\": \"$status\",\n\"host\": \"$host\",\n\"request_proto\": \"$server_protocol\",\n\"request_uri\": \"$uri\",\n\"request_query\": \"$args\",\n\"request_length\": $request_length,\n\"request_time\": $request_time,\n\"request_method\": \"$request_method\",\n\"http_referer\": \"$http_referer\",\n\"http_user_agent\": \"$http_user_agent\",\n\"namespace\": \"$namespace\",\n\"ingress_name\": \"$ingress_name\",\n\"service_name\": \"$service_name\",\n\"service_port\": \"$service_port\"\n}\n
-
\u3042\u306a\u305f\u306e\u30ed\u30b0\u304c\u6d41\u308c\u59cb\u3081\u308b\u306f\u305a\u3067\u3059\uff01
"},{"location":"ja/installing-lagoon/logs-concentrator/","title":"\u30ed\u30b0\u96c6\u7d04\u5668","text":"\u30ed\u30b0\u96c6\u7d04\u5668\u306f\u3001Lagoon\u30af\u30e9\u30b9\u30bf\u304b\u3089\u9001\u4fe1\u3055\u308c\u308b\u30ed\u30b0\u3092\u53ce\u96c6\u3057\u3001\u305d\u308c\u3089\u306b\u8ffd\u52a0\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u4ed8\u52a0\u3057\u3066\u304b\u3089Elasticsearch\u306b\u633f\u5165\u3057\u307e\u3059\u3002
- ReadMe\u306b\u5f93\u3063\u3066\u8a3c\u660e\u66f8\u3092\u4f5c\u6210\u3057\u307e\u3059:https://github.com/uselagoon/lagoon-charts/tree/main/charts/lagoon-logs-concentrator
-
logs-concentrator-values.yml
\u3092\u4f5c\u6210\u3057\u307e\u3059:
logs-concentrator-values.ymltls:\ncaCert: |\n<<ca.pem\u306e\u5185\u5bb9>>\nserverCert: |\n<<server.pem\u306e\u5185\u5bb9\nserverKey: |\n<<server-key.pem\u306e\u5185\u5bb9>>\nelasticsearchHost: elasticsearch-opendistro-es-client-service.elasticsearch.svc.cluster.local\nelasticsearchAdminPassword: <<ElasticSearch\u7ba1\u7406\u8005\u30d1\u30b9\u30ef\u30fc\u30c9>>\nforwardSharedKey: <<\u30e9\u30f3\u30c0\u30e0\u306a32\u6587\u5b57\u306e\u30d1\u30b9\u30ef\u30fc\u30c9>>\nusers:\n- username: <<Lagoon\u30ea\u30e2\u30fc\u30c81\u306e\u30e6\u30fc\u30b6\u30fc\u540d>>\npassword: <<Lagoon\u30ea\u30e2\u30fc\u30c81\u306e\u30e9\u30f3\u30c0\u30e0\u30d1\u30b9\u30ef\u30fc\u30c9>>\nservice:\ntype: LoadBalancer\nserviceMonitor:\nenabled: false\n
-
\u30ed\u30b0\u96c6\u7d04\u5668\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059:
Install logs-concentrator
helm upgrade --install --create-namespace ```\n--namespace lagoon-logs-concentrator \\\n-f logs-concentrator-values.yaml \\\nlagoon-logs-concentrator lagoon/lagoon-logs-concentrator\n
\u3053\u306e\u30c6\u30ad\u30b9\u30c8\u306f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b3\u30fc\u30c9\u3067\u3042\u308a\u3001\u7279\u5b9a\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u7ffb\u8a33\u306f\u9069\u7528\u3055\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/installing-lagoon/opendistro/","title":"OpenDistro","text":"OpenDistro\u30af\u30e9\u30b9\u30bf\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u306b\u306f\u3001Lagoon\u304c\u305d\u308c\u3068\u5b89\u5168\u306b\u901a\u4fe1\u3067\u304d\u308b\u3088\u3046\u306bTLS\u3068\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3044\u304f\u3064\u304b\u306eJSON\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 - \u3053\u308c\u3089\u3092\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30d7\u30ed\u30bb\u30b9\u5168\u4f53\u3092\u901a\u3058\u3066\u4f5c\u6210\u3057\u3066\u304d\u305f\u5024\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u540c\u3058\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u7f6e\u3044\u3066\u304f\u3060\u3055\u3044\u3002
OpenDistro Helm\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://opendistro.github.io/for-elasticsearch-docs/docs/install/helm/\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/installing-lagoon/opendistro/#_1","title":"\u30ad\u30fc\u3068\u8a3c\u660e\u66f8\u306e\u4f5c\u6210","text":" - \u8a3c\u660e\u66f8\u306e\u751f\u6210
\u6ce8\u610f:
CFSSL\u306fCloudFlare\u306ePKI/TLS\u30b9\u30a4\u30b9\u30a2\u30fc\u30df\u30fc\u30ca\u30a4\u30d5\u3067\u3059\u3002\u3053\u308c\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3067\u3042\u308a\u3001TLS\u8a3c\u660e\u66f8\u306e\u7f72\u540d\u3001\u691c\u8a3c\u3001\u30d0\u30f3\u30c9\u30eb\u5316\u3092\u884c\u3046HTTP API\u30b5\u30fc\u30d0\u3067\u3059\u3002\u30d3\u30eb\u30c9\u306b\u306fGo 1.12+\u304c\u5fc5\u8981\u3067\u3059\u3002
1. CFSSL\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059: https://github.com/cloudflare/cfssl 2. CA\u3092\u751f\u6210\u3057\u307e\u3059\u3002\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u3067\u3059:
ca-csr.json{\n\"CN\": \"ca.elasticsearch.svc.cluster.local\",\n\"hosts\": [\n\"ca.elasticsearch.svc.cluster.local\"\n],\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n},\n\"ca\": {\n\"expiry\": \"87600h\"\n}\n}\n
-
\u6b21\u306e2\u3064\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059 :
\u8a3c\u660e\u66f8\u306e\u751f\u6210cfssl gencert -initca ca-csr.json | cfssljson -bare ca -\nrm ca.csr\n
ca-key.pem
\u3068ca.pem
\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u304c\u3042\u306a\u305f\u306eCA\u30ad\u30fc\u3068\u81ea\u5df1\u7f72\u540d\u8a3c\u660e\u66f8\u3067\u3059\u3002
-
\u6b21\u306b\u3001\u30ce\u30fc\u30c9\u306e\u30d4\u30fc\u30ea\u30f3\u30b0\u8a3c\u660e\u66f8\u3092\u751f\u6210\u3057\u307e\u3059\u3002\u6b21\u306e2\u3064\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u3067\u3059:
ca-config.json{\n\"signing\": {\n\"default\": {\n\"expiry\": \"87600h\"\n},\n\"profiles\": {\n\"peer\": {\n\"expiry\": \"87600h\",\n\"usages\": [\n\"signing\",\n\"key encipherment\",\n\"server auth\",\n\"client auth\"\n]\n},\n\"client\": {\n\"expiry\": \"87600h\",\n\"usages\": [\n\"signing\",\n\"key encipherment\",\n\"client auth\"\n]\n}\n}\n}\n}\n
node.json{\n\"hosts\": [\n\"node.elasticsearch.svc.cluster.local\"\n],\n\"CN\": \"node.elasticsearch.svc.cluster.local\",\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n}\n}\n
-
\u6b21\u306e2\u3064\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u8a3c\u660e\u66f8\u30ad\u30fc\u306e\u751f\u6210cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer node.json | cfssljson -bare node\nrm node.csr\n
node.pem
\u3068node-key.pem
\u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u3053\u308c\u304cES\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u30ce\u30fc\u30c9\u3067\u4f7f\u7528\u3055\u308c\u308b\u30d4\u30a2\u8a3c\u660e\u66f8\u306b\u306a\u308a\u307e\u3059\u3002
-
\u6b21\u306b\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30ad\u30fc\u3092Java\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u5f62\u5f0f\u306b\u5909\u63db\u3057\u307e\u3059:
\u30ad\u30fc\u5f62\u5f0f\u306e\u5909\u63dbopenssl pkey -in node-key.pem -out node-key.pkcs8\n
-
\u6b21\u306b\u3001\u7ba1\u7406\u8005\u8a3c\u660e\u66f8\u3092\u751f\u6210\u3057\u307e\u3059\u3002\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u3067\u3059:
admin.json{\n\"CN\": \"admin.elasticsearch.svc.cluster.local\",\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n}\n}\n
-
\u6b21\u306e2\u3064\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u7ba1\u7406\u8005\u8a3c\u660e\u66f8\u30ad\u30fc\u306e\u751f\u6210cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client admin.json | cfssljson -bare admin\nrm admin.csr\n
admin.pem
\u3068admin-key.pem
\u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u3053\u308c\u304copendistro-security\u30d7\u30e9\u30b0\u30a4\u30f3\u3067\u7ba1\u7406\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u8a3c\u660e\u66f8\u306b\u306a\u308a\u307e\u3059\u3002
-
\u6b21\u306b\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30ad\u30fc\u3092Java\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u5f62\u5f0f\u306b\u5909\u63db\u3057\u307e\u3059:
\u30ad\u30fc\u5f62\u5f0f\u306e\u5909\u63dbopenssl pkey -in admin-key.pem -out admin-key.pkcs8\n
"},{"location":"ja/installing-lagoon/opendistro/#opendistro_1","title":"OpenDistro\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u30ad\u30fc\u3068\u8a3c\u660e\u66f8\u3092\u624b\u306b\u5165\u308c\u305f\u306e\u3067\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u7d9a\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
-
\u30cf\u30c3\u30b7\u30e5\u5316\u3055\u308c\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u751f\u6210\u3057\u307e\u3059\u3002
elasticsearch-secrets-values.yaml
\u306b\u306f2\u3064\u306e\u30cf\u30c3\u30b7\u30e5\u5316\u3055\u308c\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u5fc5\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u305d\u308c\u3089\u3092\u4f5c\u6210\u3057\u307e\u3059(2\u56de\u5b9f\u884c\u3057\u3001\u30e9\u30f3\u30c0\u30e0\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3001\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u30cf\u30c3\u30b7\u30e5\u5316\u3055\u308c\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u4e21\u65b9\u3092\u4fdd\u5b58\u3057\u307e\u3059)\u3002
\u30cf\u30c3\u30b7\u30e5\u5316\u3055\u308c\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u751f\u6210docker run --rm -it docker.io/amazon/opendistro-for-elasticsearch:1.12.0 sh -c \"chmod +x /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh; /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh\"\n
-
secrets\u3092\u4f5c\u6210\u3057\u307e\u3059:
elasticsearch-secrets-values.yaml
\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306egist\u3092\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044:https://gist.github.com/Schnitzel/43f483dfe0b23ca0dddd939b12bb4b0b
-
\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067secrets\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059:
secrets\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebhelm repo add incubator https://charts.helm.sh/incubator`\nhelm upgrade --namespace elasticsearch --create-namespace --install elasticsearch-secrets incubator/raw --values elasticsearch-secrets-values.yaml `\n
-
\u3042\u306a\u305f\u306f\u5fc5\u8981\u3068\u3059\u308b\u3067\u3057\u3087\u3046 elasticsearch-values.yaml
\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u4f8b\u3068\u3057\u3066\u3053\u306egist\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044:(\u3059\u3079\u3066\u306e<\\>\u306b\u5024\u3092\u57cb\u3081\u3066\u304f\u3060\u3055\u3044)https://gist.github.com/Schnitzel/1e386654b6abf75bf4d66a544db4aa6a
-
Elasticsearch\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb:
Elasticsearch\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebhelm upgrade --namespace elasticsearch --create-namespace --install elasticsearch opendistro-es-X.Y.Z.tgz --values elasticsearch-values.yaml\n
-
Elasticsearch\u5185\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u6b21\u306e\u3088\u3046\u306b\u8a2d\u5b9a:
\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8a2d\u5b9akubectl exec -n elasticsearch -it elasticsearch-opendistro-es-master-0 -- bash\nchmod +x /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh\n/usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh -nhnv -cacert /usr/share/elasticsearch/config/admin-root-ca.pem -cert /usr/share/elasticsearch/config/admin-crt.pem -key /usr/share/elasticsearch/config/admin-key.pem -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/\n
-
lagoon-core-values.yaml
\u3092\u6b21\u306e\u3088\u3046\u306b\u66f4\u65b0:
lagoon-core-values.yamlelasticsearchURL: http://elasticsearch-opendistro-es-client-service.elasticsearch.svc.cluster.local:9200\nkibanaURL: https://<<Kibana Public URL>>\nlogsDBAdminPassword: \"<<PlainText Elasticsearch Admin Password>>\"\n
-
\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8Lagoon Core:
Rollout Lagoon Corehelm upgrade --install --create-namespace --namespace lagoon-core -f values.yaml lagoon-core lagoon/lagoon-core\n
-
\u3059\u3079\u3066\u306eLagoon\u30b0\u30eb\u30fc\u30d7\u3092Opendistro Elasticsearch\u3068\u540c\u671f\u3055\u305b\u308b
Sync groupskubectl -n lagoon-core exec -it deploy/lagoon-core-api -- sh\nyarn run sync:opendistro-security\n
"},{"location":"ja/installing-lagoon/querying-graphql/","title":"GraphQL\u3067\u306e\u30af\u30a8\u30ea","text":" -
GraphQL\u30af\u30a8\u30ea\u306e\u9001\u53d7\u4fe1\u306b\u306f\u30a2\u30d7\u30ea\u304c\u5fc5\u8981\u3067\u3059\u3002GraphiQL\u3092\u63a8\u5968\u3057\u307e\u3059\u3002
- Homebrew\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001
brew install --cask graphiql
\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002
-
Lagoon Core\u306bKubernetes\u30af\u30e9\u30b9\u30bf\u306b\u3064\u3044\u3066\u901a\u77e5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002GraphQL\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059:https://<YOUR-API-URL>/graphql
-
HTTP\u30d8\u30c3\u30c0\u30fc\u3092\u7de8\u96c6\u306b\u79fb\u52d5\u3057\u3001\u30d8\u30c3\u30c0\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
- \u30d8\u30c3\u30c0\u30fc\u540d:
Authorization
- \u5024:
Bearer YOUR-TOKEN-HERE
- \u30db\u30fc\u30e0\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306bLagoon CLI\u304c
.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30c8\u30fc\u30af\u30f3\u3092\u30b3\u30d4\u30fc\u3057\u3066\u3001\u3053\u3053\u3067\u306e\u5024\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 - \u4fdd\u5b58\u3002
-
\u3053\u308c\u3067\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3059\u308b\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\u3002\u6b21\u306e\u30c6\u30b9\u30c8\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3057\u3066\u3001\u3059\u3079\u3066\u304c\u6b63\u3057\u304f\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059:
Get all projectsquery allProjects {allProjects {name } }\n
-
\u3053\u308c\u306b\u3088\u308a\u3001\u6b21\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u5f97\u3089\u308c\u308b\u306f\u305a\u3067\u3059:
API Response {\n \"data\": {\n \"allProjects\": []\n }\n }\n
\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306eGraphQL\u306b\u3064\u3044\u3066\u306e\u30da\u30fc\u30b8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
-
\u6b63\u3057\u3044\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u5f97\u3089\u308c\u305f\u3089\u3001\u5909\u7570\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-
\u6b21\u306e\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u7a81\u7136\u5909\u7570\u3092\u8ffd\u52a0mutation addKubernetes {\naddKubernetes(input:\n{\nname: \"<TARGET-NAME-FROM-REMOTE-VALUES.yml>\",\nconsoleUrl: \"<URL-OF-K8S-CLUSTER>\",\ntoken: \"xxxxxx\u201d\nrouterPattern: \"${environment}.${project}.lagoon.example.com\"\n}){id}\n}\n
name
: lagoon-remote-values.yml
\u304b\u3089\u53d6\u5f97 consoleUrl
: Kubernetes\u30af\u30e9\u30b9\u30bf\u306eAPI\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3002values.yml
\u304b\u3089\u53d6\u5f97 -
token
: ssh-core
\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u7528\u306e\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97
\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97kubectl -n lagoon get secret/lagoon-remote-ssh-core-token -o json | jq -r '.data.token | @base64d'\n
\u60c5\u5831
GraphQL\u306e\u8a8d\u8a3c\u30c8\u30fc\u30af\u30f3\u306e\u6709\u52b9\u671f\u9650\u306f\u975e\u5e38\u306b\u77ed\u3044\u305f\u3081\u3001\u65b0\u3057\u3044\u30c8\u30fc\u30af\u30f3\u3092\u751f\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002lagoon login
\u3092\u5b9f\u884c\u3057\u3001\u65b0\u3057\u3044\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3092cat\u30b3\u30de\u30f3\u30c9\u3067\u8868\u793a\u3057\u3001HTTP\u30d8\u30c3\u30c0\u30fc\u306e\u53e4\u3044\u30c8\u30fc\u30af\u30f3\u3092\u65b0\u3057\u3044\u3082\u306e\u306b\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/installing-lagoon/requirements/","title":"\u65e2\u5b58\u306eKubernetes\u30af\u30e9\u30b9\u30bf\u30fc\u3078\u306eLagoon\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":""},{"location":"ja/installing-lagoon/requirements/#requirements","title":"\u5fc5\u8981\u6761\u4ef6","text":" - Kubernetes 1.23+(Kubernetes 1.21\u3082\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u30011.23\u3092\u63a8\u5968\u3057\u307e\u3059)
- Helm\u3001Helm Charts\u3001kubectl\u306b\u7cbe\u901a\u3057\u3066\u3044\u308b\u3053\u3068\u3002
- Ingress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3001\u6211\u3005\u306fingress-nginx\u3092\u63a8\u5968\u3057\u3001ingress-nginx\u540d\u524d\u7a7a\u9593\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068
- Cert manager(TLS\u7528) - letsencrypt\u306e\u4f7f\u7528\u3092\u5f37\u304f\u63a8\u5968\u3057\u307e\u3059
- StorageClasses(\u30c7\u30d5\u30a9\u30eb\u30c8\u3068\u3057\u3066RWO\u3001\u6c38\u7d9a\u30bf\u30a4\u30d7\u7528\u306bRWM)
\u6ce8\u610f:
\u3053\u308c\u306f\u591a\u304f\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u5fc5\u8981\u3067\u3042\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3057\u3066\u304a\u308a\u3001\u4eca\u5f8c\u3059\u3050\u306b\u884c\u3046\u4e88\u5b9a\u306e\u30ed\u30fc\u30c9\u30de\u30c3\u30d7\u306b\u306f\u3001\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306e\u30b9\u30c6\u30c3\u30d7\u6570\u3092\u6e1b\u3089\u3059\u3053\u3068\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/requirements/#specific-requirements-as-of-january-2023","title":"\u7279\u5b9a\u306e\u8981\u4ef6 (2023\u5e741\u6708\u73fe\u5728)","text":""},{"location":"ja/installing-lagoon/requirements/#kubernetes","title":"Kubernetes","text":"Lagoon\u306fKubernetes\u30d0\u30fc\u30b8\u30e7\u30f31.21\u4ee5\u964d\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u7a4d\u6975\u7684\u306bKubernetes 1.24\u306b\u5bfe\u3057\u3066\u30c6\u30b9\u30c8\u3068\u958b\u767a\u3092\u884c\u3063\u3066\u304a\u308a\u3001\u5b9a\u671f\u7684\u306b1.21\u30011.22\u30011.25\u306b\u5bfe\u3057\u3066\u3082\u30c6\u30b9\u30c8\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002
\u6b21\u306e\u5927\u898f\u6a21\u306a\u7834\u58ca\u7684\u5909\u66f4\u306fKubernetes 1.25\u306b\u3042\u308a\u3001\u6211\u3005\u306f\u3053\u308c\u3089\u3092\u4e8b\u524d\u306b\u628a\u63e1\u3059\u308b\u52aa\u529b\u3092\u3057\u307e\u3059\u304c\u3001\u3053\u308c\u306f\u6700\u4f4e\u30b5\u30dd\u30fc\u30c8\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u4e0a\u6607\u3092\u5fc5\u8981\u3068\u3059\u308b\u3067\u3057\u3087\u3046\u3002 Lagoon\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3002
"},{"location":"ja/installing-lagoon/requirements/#ingress-nginx","title":"ingress-nginx","text":"Lagoon\u306f\u73fe\u5728\u3001\u5358\u4e00\u306e ingress-nginx
\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u307f\u306b\u5bfe\u5fdc\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u904e\u53bb\u306b\u306f IngressClass
\u306e\u5b9a\u7fa9\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
\u6700\u8fd1\u306e ingress-nginx
\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc(\u30d0\u30fc\u30b8\u30e7\u30f34\u4ee5\u964d\u3001Kubernetes 1.22\u304c\u5fc5\u8981)\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002ingress-nginx
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002
nginx-ingress
\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 - Helm\u306e\u5024\u3067 .controller.ingressClassResource.default: true
\u3092\u8a2d\u5b9a\u3057\u307e\u3059 nginx-ingress
\u306f IngressClass
\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044Ingress\u3092\u76e3\u8996\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 - Helm\u306e\u5024\u3067 .controller.watchIngressWithoutClass: true
\u3092\u8a2d\u5b9a\u3057\u307e\u3059
\u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u65b0\u3057\u3044Ingress\u3092 IngressClass
\u3068\u3057\u3066\u81ea\u8eab\u3067\u4f5c\u6210\u3057\u3001IngressClass
\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u65e2\u5b58\u306eIngress\u3092\u51e6\u7406\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
\u4ed6\u306e\u8a2d\u5b9a\u3082\u53ef\u80fd\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u30c6\u30b9\u30c8\u306f\u884c\u308f\u308c\u3066\u3044\u307e\u305b\u3093\u3002
"},{"location":"ja/installing-lagoon/requirements/#harbor","title":"Harbor","text":"\u73fe\u5728\u3001Harbor \u306e\u30d0\u30fc\u30b8\u30e7\u30f3 2.1 \u304a\u3088\u3073 2.2+ \u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30ed\u30dc\u30c3\u30c8 \u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5\u306f 2.2 \u3067\u5909\u66f4\u3055\u308c\u3001Lagoon \u30ea\u30e2\u30fc\u30c8 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u3053\u308c\u3089\u306e\u30c8\u30fc\u30af\u30f3\u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002\u3064\u307e\u308a\u3001Harbor \u306f lagoon-core
\u3067\u306f\u306a\u304f lagoon-build-deploy
\u306e\u8cc7\u683c\u60c5\u5831\u3092\u4f7f\u7528\u3057\u3066\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
2.6.0 \u4ee5\u964d\u306e Harbor \u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u3001Helm \u30c1\u30e3\u30fc\u30c8 1.10.0 \u4ee5\u4e0a\u3068\u3068\u3082\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/requirements/#k8up-for-backups","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u7528\u306e k8up","text":"Lagoon \u306b\u306f\u3001K8up \u30d0\u30c3\u30af\u30a2\u30c3\u30d7 \u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306e\u69cb\u6210\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u307e\u3059\u3002 Lagoon \u3067\u306f\u3001\u4e8b\u524d\u30d0\u30c3\u30af\u30a2\u30c3\u30d7 \u30dd\u30c3\u30c9\u3001\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3001\u4fdd\u6301\u671f\u9593\u3092\u8a2d\u5b9a\u3057\u3001K8up \u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3068\u5fa9\u5143\u3092\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002\u73fe\u5728\u3001Lagoon \u306f\u3001v2 \u4ee5\u964d\u306e\u540d\u524d\u7a7a\u9593\u306e\u5909\u66f4\u306b\u3088\u308a\u3001K8up \u306e 1.x \u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u307f\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u4fee\u6b63\u306b\u53d6\u308a\u7d44\u3093\u3067\u3044\u307e\u3059\u3002
\u30d0\u30b0 k8up v2
Lagoon \u306f\u3001\u540d\u524d\u7a7a\u9593\u306e\u5909\u66f4\u306b\u3088\u308a\u3001\u73fe\u5728 K8up v2 \u4ee5\u964d\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093 (\u3053\u3061\u3089)\u3002
K8up \u30d0\u30fc\u30b8\u30e7\u30f3 1.2.0 \u3092 Helm Chart 1.1.0 \u3068\u3068\u3082\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/requirements/#storage-provisioners","title":"\u30b9\u30c8\u30ec\u30fc\u30b8\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc","text":"Lagoon \u306f\u3001\u307b\u3068\u3093\u3069\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306b\u5bfe\u3057\u3066\u30c7\u30d5\u30a9\u30eb\u30c8\u306e standard
StorageClass
\u3092\u5229\u7528\u3057\u3001\u307b\u3068\u3093\u3069\u306e Kubernetes \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u5185\u90e8\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc\u3067\u5341\u5206\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u53ef\u80fd\u306a\u5834\u5408\u306f\u52d5\u7684\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3068\u62e1\u5f35\u304c\u53ef\u80fd\u306b\u306a\u308b\u3088\u3046\u306b\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u307e\u305f\u3001Lagoon\u3067\u306f\u3001\u6c38\u7d9a\u7684\u306a\u30dd\u30c3\u30c9\u30ec\u30d7\u30ea\u30ab(\u30ce\u30fc\u30c9\u9593)\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b\u3001'bulk'\u3068\u547c\u3070\u308c\u308bStorageClass
\u304c\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u306eStorageClass
\u306fReadWriteMany
(RWX)\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u53ef\u80fd\u306a\u9650\u308a\u52d5\u7684\u306a\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3068\u62e1\u5f35\u6027\u304c\u3042\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes \u3092\u53c2\u7167\u3057\u3001\u4e92\u63db\u6027\u306e\u3042\u308b\u30c9\u30e9\u30a4\u30d0\u306e\u5b8c\u5168\u306a\u30ea\u30b9\u30c8\u306b\u3064\u3044\u3066\u306fproduction drivers list\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u73fe\u5728\u3001\u79c1\u305f\u3061\u306f(\u73fe\u5728\u306f\u5ec3\u6b62\u3055\u308c\u3066\u3044\u308b)EFS Provisioner\u306e\u6307\u793a\u3060\u3051\u3092\u542b\u3081\u3066\u3044\u307e\u3059\u3002\u672c\u756a\u306eEFS CSI driver\u306f\u3001120\u4ee5\u4e0a\u306ePVC\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3059\u308b\u969b\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u30a2\u30c3\u30d7\u30b9\u30c8\u30ea\u30fc\u30e0\u3067\u306e\u53ef\u80fd\u306a\u4fee\u6b63\u3092\u3053\u3053\u3068\u3053\u3053\u3067\u5f85\u3063\u3066\u3044\u307e\u3059 - \u3057\u304b\u3057\u3001\u4ed6\u306e\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30d0\u30a4\u30c0\u306eCSI\u30c9\u30e9\u30a4\u30d0\u3082\u52d5\u4f5c\u3059\u308b\u306f\u305a\u3067\u3001NFS\u4e92\u63db\u306e\u30b5\u30fc\u30d0\u3068\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc\u3092\u5099\u3048\u305f\u8a2d\u5b9a\u3082\u540c\u69d8\u3067\u3059\u3002
"},{"location":"ja/installing-lagoon/requirements/#kubernetes_1","title":"\u3069\u308c\u304f\u3089\u3044 Kubernetes\u306e\u7d4c\u9a13/\u77e5\u8b58\u306f\u5fc5\u8981\u3067\u3059\u304b\uff1f","text":"Lagoon\u306f\u3001\u975e\u5e38\u306b\u9ad8\u5ea6\u306aKubernetes\u3068\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u306e\u6982\u5ff5\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001Lagoon\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3084\u8a2d\u5b9a\u306b\u5b8c\u5168\u306a\u719f\u77e5\u304c\u5fc5\u8981\u306a\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u554f\u984c\u306e\u8a3a\u65ad\u3084\u8ca2\u732e\u306f\u3001\u5341\u5206\u306a\u77e5\u8b58\u304c\u306a\u3051\u308c\u3070\u96e3\u3057\u304f\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
\u6307\u6a19\u3068\u3057\u3066\u3001Certified Kubernetes Administrator\u306e\u30ab\u30ea\u30ad\u30e5\u30e9\u30e0\u306b\u5bfe\u3059\u308b\u5feb\u9069\u3055\u3092\u6700\u4f4e\u9650\u3068\u3057\u3066\u63d0\u6848\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/update-lagoon/","title":"\u66f4\u65b0","text":" -
Helm\u3092\u4f7f\u7528\u3057\u3066\u6700\u65b0\u306e\u30c1\u30e3\u30fc\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002
\u6700\u65b0\u306e\u30c1\u30e3\u30fc\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9helm repo update\n
-
helm diff
\u3092\u4f7f\u3063\u3066\u5909\u66f4\u70b9\u3092\u78ba\u8a8d\u3057\u307e\u3059(https://github.com/databus23/helm-diff)\u3002
\u5909\u66f4\u70b9\u3092\u78ba\u8a8dhelm diff upgrade --install --create-namespace --namespace lagoon-core \\\n-f values.yml lagoon-core lagoon/lagoon-core\n
-
\u4efb\u610f\u306eHelm\u64cd\u4f5c\u524d\u306b\u3001Lagoon\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u53d6\u308a\u307e\u3059\u3002 \u307e\u305f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u30b9\u30af\u30ea\u30d7\u30c8\u304cinitContainers\u3067\u5b9f\u884c\u3055\u308c\u308b\u306e\u3092\u652f\u63f4\u3059\u308b\u305f\u3081\u306b\u3001API\u3092\u5358\u4e00\u306e\u30dd\u30c3\u30c9\u306b\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u3082\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
-
Helm\u3092\u4f7f\u7528\u3057\u3066\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u5b9f\u884chelm upgrade --install --create-namespace --namespace lagoon-core \\\n-f values.yaml lagoon-core lagoon/lagoon-core\n
-
(Lagoon v2.11.0\u4ee5\u964d\u3001\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u4e0d\u8981\u306b\u306a\u308a\u307e\u3057\u305f) Lagoon Core\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u5834\u5408\u3001\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u5f8c\u306e\u79fb\u884c\u3092\u884c\u3046\u305f\u3081\u306brerun_initdb.sh
\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884ckubectl --namespace lagoon-core exec -it lagoon-core-api-db-0 -- \\\nsh -c /rerun_initdb.sh\n
-
API\u30dd\u30c3\u30c9\u3092\u5143\u306e\u6570\u306b\u623b\u3057\u3066\u30b9\u30b1\u30fc\u30eb\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002 \u30ec\u30d9\u30eb\u3002
-
Lagoon Core\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3001OpenSearch\u306e\u30b0\u30eb\u30fc\u30d7/\u30e6\u30fc\u30b6\u30fc\u540c\u671f\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u308b\u5834\u5408\u3001OpenSearch\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u66f4\u65b0\u3059\u308b\u305f\u3081\u306bsync:opendistro-security
\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u5168\u4f53\u306e\u30b0\u30eb\u30fc\u30d7\u69cb\u9020\u306e\u540c\u671f\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u5834\u5408\u3001\u4e00\u5ea6\u306b1\u3064\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u540c\u671f\u3059\u308b\u305f\u3081\u306bGROUP_REGEX=<group-to-sync
\u3067\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u4ed8\u3051\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u5b9f\u884ckubectl --namespace lagoon-core exec -it deploy/lagoon-core-api -- \\\nsh -c yarn sync:opendistro-security\n
\u8ffd\u52a0\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u306b\u3064\u3044\u3066\u306f\u3001https://github.com/uselagoon/lagoon/releases\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/installing-lagoon/update-lagoon/#database-backups","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7","text":"Lagoon Core\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u524d\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u4f5c\u6210\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u305d\u308c\u3089\u3092\u4f7f\u7528\u3057\u3066\u5fa9\u5143\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5f8c\u3067\u305d\u308c\u3089\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/update-lagoon/#api-db","title":"API DB","text":"API DB\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7kubectl --namespace lagoon-core exec -it lagoon-core-api-db-0 -- \\\nsh -c 'mysqldump --max-allowed-packet=500M --events \\\n --routines --quick --add-locks --no-autocommit \\\n --single-transaction infrastructure | gzip -9 > \\\n /var/lib/mysql/backup/$(date +%Y-%m-%d_%H%M%S).infrastructure.sql.gz'\n
"},{"location":"ja/installing-lagoon/update-lagoon/#keycloak-db","title":"Keycloak DB","text":"Keycloak DB\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7kubectl --namespace lagoon-core exec -it lagoon-core-keycloak-db-0 -- \\\nsh -c 'mysqldump --max-allowed-packet=500M --events \\\n --routines --quick --add-locks --no-autocommit \\\n --single-transaction keycloak | gzip -9 > \\\n /var/lib/mysql/backup/$(date +%Y-%m-%d_%H%M%S).keycloak.sql.gz'\n
"},{"location":"ja/interacting/graphql-queries/#running-graphql-queries","title":"GraphQL\u30af\u30a8\u30ea\u306e\u5b9f\u884c","text":"Lagoon\u3067\u306e\u76f4\u63a5\u7684\u306aAPI\u306e\u76f8\u4e92\u4f5c\u7528\u306f\u3001GraphQL\u3092\u7d4c\u7531\u3057\u3066\u884c\u308f\u308c\u307e\u3059\u3002
API\u3068\u306e\u8a8d\u8a3c\u3092\u884c\u3046\u305f\u3081\u306b\u306f\u3001\u79c1\u305f\u3061\u304c\u7ba1\u7406\u8005\u3068\u3057\u3066GraphQL API\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308bJWT(JSON Web Token)\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u306e\u30c8\u30fc\u30af\u30f3\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001Kubernetes UI\u7d4c\u7531\u3001\u307e\u305f\u306fkubectl\u3092\u4f7f\u7528\u3057\u3066storage-calculator
\u30dd\u30c3\u30c9\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304d\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
JWT\u30c8\u30fc\u30af\u30f3\u306e\u751f\u6210./create_jwt.py\n
\u3053\u308c\u306b\u3088\u308aJWT\u30c8\u30fc\u30af\u30f3\u3067\u3042\u308b\u9577\u3044\u6587\u5b57\u5217\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u30af\u30a8\u30ea\u3092\u9001\u4fe1\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u3068\u306a\u308b\u306e\u3067\u3001\u30e1\u30e2\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002
\u307e\u305f\u3001API\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306eURL\u3082\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306fKubernetes UI\u306e\"Ingresses\"\u306e\u4e0b\u3001\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u306ekubectl\u3092\u7d4c\u7531\u3057\u3066\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8URL\u3082\u5fc5\u8981\u306b\u306a\u308b\u306e\u3067\u3001\u30e1\u30e2\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002
GraphQL\u30af\u30a8\u30ea\u3092\u4f5c\u6210\u3057\u9001\u4fe1\u3059\u308b\u306b\u306f\u3001\u81ea\u52d5\u88dc\u5b8c\u6a5f\u80fd\u306a\u3069\u3092\u5099\u3048\u305f\u30c7\u30b9\u30af\u30c8\u30c3\u30d7GraphQL\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\u3042\u308bGraphiQL.app\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u6b21\u306e\u624b\u9806\u306b\u9032\u3080\u306b\u306f\u3001\u3053\u306e\u30a2\u30d7\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u8d77\u52d5\u3057\u307e\u3059\u3002
\"GraphQL Endpoint\"\u306e\u4e0b\u306b/graphql
\u3092\u672b\u5c3e\u306b\u4ed8\u3051\u305fAPI\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8URL\u3092\u5165\u529b\u3057\u307e\u3059\u3002\u6b21\u306b\"Edit HTTP Headers\"\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u65b0\u3057\u3044\u30d8\u30c3\u30c0\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059:
- \"\u30d8\u30c3\u30c0\u30fc\u540d\":
Authorization
- \"\u30d8\u30c3\u30c0\u30fc\u5024\":
Bearer [JWT\u30c8\u30fc\u30af\u30f3]
(\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044 JWT\u30c8\u30fc\u30af\u30f3\u306b\u30b9\u30da\u30fc\u30b9\u304c\u306a\u3044\u3053\u3068(\u30b9\u30da\u30fc\u30b9\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3068\u52d5\u4f5c\u3057\u307e\u305b\u3093)
ESC\u30ad\u30fc\u3092\u62bc\u3057\u3066HTTP\u30d8\u30c3\u30c0\u30fc\u30aa\u30fc\u30d0\u30fc\u30ec\u30a4\u3092\u9589\u3058\u3001\u6700\u521d\u306eGraphQL\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\uff01
\u3053\u308c\u3092\u5de6\u30d1\u30cd\u30eb\u306b\u5165\u529b\u3057\u307e\u3059
\u30af\u30a8\u30ea\u306e\u5b9f\u884cquery allProjects{\nallProjects {\nname\n}\n}\n
\u305d\u3057\u3066\u3001\u25b6\ufe0f\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u304b(\u307e\u305f\u306fCTRL+ENTER\u3092\u62bc\u3059)\u3002
\u3059\u3079\u3066\u304c\u3046\u307e\u304f\u3044\u3051\u3070\u3001\u6700\u521d\u306eGraphQL\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u3059\u3050\u306b\u53f3\u306e\u30da\u30a4\u30f3\u306b\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/interacting/graphql-queries/#creating-the-first-project","title":"\u6700\u521d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210","text":"Lagoon\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306e\u6700\u521d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3057\u3087\u3046\uff01\u3053\u308c\u306b\u306f\u3001create-project.gql
\u306eGraphQL\u30af\u30a8\u30ea\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
\u5404\u30af\u30a8\u30ea(mutation {
\u3067\u59cb\u307e\u308b\u30d6\u30ed\u30c3\u30af)\u306b\u3064\u3044\u3066\u3001TODO\u30b3\u30e1\u30f3\u30c8\u3067\u30de\u30fc\u30af\u3055\u308c\u305f\u7a7a\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u3059\u3079\u3066\u57cb\u3081\u3066\u3001GraphiQL.app\u3067\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u305d\u308c\u305e\u308c1\u3064\u305a\u3064\u4f5c\u6210\u3055\u308c\u307e\u3059:
kubernetes
: Lagoon\u304c\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304dKubernetes(\u307e\u305f\u306fOpenshift)\u30af\u30e9\u30b9\u30bf\u3002Lagoon\u306f\u81ea\u8eab\u306eKubernetes\u30af\u30e9\u30b9\u30bf\u306b\u3060\u3051\u3067\u306a\u304f\u3001\u4efb\u610f\u306eKubernetes\u306b\u3082\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002 \u4e16\u754c\u4e2d\u306e\u3069\u3053\u3067\u3082\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002 project
: \u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308bLagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3001\u30eb\u30fc\u30c8\u306b\u30b3\u30df\u30c3\u30c8\u3055\u308c\u305f .lagoon.yml
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u6301\u3064Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u3059\u3002
"},{"location":"ja/interacting/graphql-queries/#allowing-access-to-the-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u8a31\u53ef","text":"Lagoon\u3067\u306f\u3001\u5404\u958b\u767a\u8005\u306f\u81ea\u5206\u306eSSH\u30ad\u30fc\u3067\u8a8d\u8a3c\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u6c7a\u307e\u308a\u307e\u3059:
- \u81ea\u5206\u304c\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3064\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u898b\u3066\u7de8\u96c6\u3067\u304d\u308bLagoon API\u3002
- \u81ea\u5206\u304c\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3064\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u3078\u306e\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u30a2\u30af\u30bb\u30b9\u3002
- \u30ea\u30af\u30a8\u30b9\u30c8\u30ed\u30b0\u3001\u30b3\u30f3\u30c6\u30ca\u30ed\u30b0\u3001Lagoon\u30ed\u30b0\u306a\u3069\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308bLagoon\u306e\u30ed\u30b0\u30b7\u30b9\u30c6\u30e0\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8a31\u53ef\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u307e\u305aAPI\u306b\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
API\u306b\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0mutation {\naddGroup (\ninput: {\n# TODO: \u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7\u306e\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n}\n) {\nid\nname\n}\n}\n
\u6b21\u306b\u3001API\u306b\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
API\u306b\u65b0\u898f\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0mutation {\naddUser(\ninput: {\nemail: \"michael.schmid@example.com\"\nfirstName: \"Michael\"\nlastName: \"Schmid\"\ncomment: \"CTO\"\n}\n) {\n# TODO: \u8fd4\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fcID\u3092\u30e1\u30e2\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002\nid\n}\n}\n
\u305d\u308c\u304b\u3089\u3001\u305d\u306e API\u306b\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0:
API\u306bSSH\u516c\u958b\u9375\u3092\u8ffd\u52a0\u3059\u308bmutation {\naddSshKey(\ninput: {\n# TODO: name\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u4e0b\u3055\u3044\u3002\n# \u3053\u308c\u306fSSH\u30ad\u30fc\u306e\u975e\u4e00\u610f\u306a\u8b58\u5225\u5b50\u3067\u3059\u3002\nname: \"\"\n# TODO: keyValue\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u4e0b\u3055\u3044\u3002\n# \u3053\u308c\u306f\u5b9f\u969b\u306eSSH\u516c\u958b\u9375\u3067\u3059(\u6700\u521d\u306e\u30bf\u30a4\u30d7\u3068\u6700\u5f8c\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u9664\u3044\u3066\u3001\u4f8b `AAAAB3NzaC1yc2EAAAADAQ...3QjzIOtdQERGZuMsi0p`)\u3002\nkeyValue: \"\"\n# TODO: keyType\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u4e0b\u3055\u3044\u3002\n# \u6709\u52b9\u306a\u5024\u306f\u3001SSH_RSA\u3001SSH_ED25519\u3001ECDSA_SHA2_NISTP256/384/521\u306e\u3044\u305a\u308c\u304b\u3067\u3059\u3002\nkeyType: SSH_RSA\nuser: {\n# TODO: userId\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u4e0b\u3055\u3044\u3002\n# \u3053\u308c\u306faddUser\u30af\u30a8\u30ea\u304b\u3089\u53d6\u5f97\u3057\u305f\u30e6\u30fc\u30b6\u30fcID\u3067\u3059\u3002\nid:\"0\",\nemail:\"michael.schmid@example.com\"\n}\n}\n) {\nid\n}\n}\n
\u30ad\u30fc\u3092\u8ffd\u52a0\u3057\u305f\u5f8c\u3001\u30e6\u30fc\u30b6\u30fc\u3092\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
\u30e6\u30fc\u30b6\u30fc\u3092\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3059\u308bmutation {\naddUserToGroup (\ninput: {\nuser: {\n#TODO: \u30e6\u30fc\u30b6\u30fc\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nemail: \"\"\n}\ngroup: {\n#TODO: \u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3057\u305f\u3044\u30b0\u30eb\u30fc\u30d7\u306e\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n}\n#TODO: \u30e6\u30fc\u30b6\u30fc\u306e\u5f79\u5272\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 .\nrole: OWNER\n}\n) {\nid\nname\n}\n}\n
\u3053\u308c\u3089\u306e\u30af\u30a8\u30ea\u306e\u4e00\u90e8\u307e\u305f\u306f\u5168\u90e8\u3092\u5b9f\u884c\u3057\u305f\u5f8c\u3001\u30e6\u30fc\u30b6\u30fc\u306fSSH\u7d4c\u7531\u3067\u30c8\u30fc\u30af\u30f3\u3092\u4f5c\u6210\u3057\u305f\u308a\u3001\u30b3\u30f3\u30c6\u30ca\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u308a\u3059\u308b\u6a29\u9650\u304c\u4ed8\u4e0e\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/interacting/graphql-queries/#adding-notifications-to-the-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u901a\u77e5\u3092\u8ffd\u52a0\u3059\u308b","text":"\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u4e2d\u306b\u4f55\u304c\u8d77\u3053\u3063\u3066\u3044\u308b\u306e\u304b\u3092\u77e5\u308a\u305f\u3044\u5834\u5408\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u901a\u77e5\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u307e\u3059:
- \u30d7\u30c3\u30b7\u30e5\u901a\u77e5
- \u30d3\u30eb\u30c9\u958b\u59cb\u60c5\u5831
- \u30d3\u30eb\u30c9\u6210\u529f\u307e\u305f\u306f\u5931\u6557\u30e1\u30c3\u30bb\u30fc\u30b8
- \u305d\u306e\u4ed6\u591a\u6570\uff01
\u901a\u77e5\u306f\u3001\u5fc5\u8981\u306a\u60c5\u5831\u306e\u70b9\u3067\u304b\u306a\u308a\u7570\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u5404\u901a\u77e5\u30bf\u30a4\u30d7\u306b\u306f\u72ec\u81ea\u306e\u5909\u7570\u304c\u3042\u308a\u307e\u3059\u3002
\u30e6\u30fc\u30b6\u30fc\u3068\u540c\u69d8\u306b\u3001\u307e\u305a\u901a\u77e5\u3092\u8ffd\u52a0\u3057\u307e\u3059:
\u901a\u77e5\u3092\u8ffd\u52a0\u3059\u308bmutation {\naddNotificationSlack(\ninput: {\n# TODO: \u540d\u524d\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u901a\u77e5\u306e\u305f\u3081\u306e\u81ea\u8eab\u306e\u8b58\u5225\u5b50\u3067\u3059\u3002\nname: \"\"\n# TODO: \u30c1\u30e3\u30f3\u30cd\u30eb\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u9001\u4fe1\u3055\u308c\u308b\u30c1\u30e3\u30f3\u30cd\u30eb\u3067\u3059\u3002\nchannel: \"\"\n# TODO: \u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u9001\u4fe1\u3055\u308c\u308b\u3079\u304d\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u306eURL\u3067\u3001\u901a\u5e38\u306f\u30c1\u30e3\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u304b\u3089\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002\nwebhook: \"\"\n}\n) {\nid\n}\n}\n
\u901a\u77e5\u304c\u4f5c\u6210\u3055\u308c\u305f\u5f8c\u3001 \u3053\u308c\u3067\u3001\u79c1\u305f\u3061\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u901a\u77e5\u3092\u5272\u308a\u5f53\u3066\u308bmutation {\naddNotificationToProject(\ninput: {\nnotificationType: SLACK\n# TODO: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3067\u3059\u3002\nproject: \"\"\n# TODO: \u901a\u77e5\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u901a\u77e5\u306e\u540d\u524d\u3067\u3059\u3002\nnotificationName: \"\"\n# TODO: \u30aa\u30d7\u30b7\u30e7\u30f3\n# \u8208\u5473\u306e\u3042\u308b\u901a\u77e5\u30af\u30e9\u30b9\u306e\u7a2e\u985e\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067DEPLOYMENT\u306b\u306a\u308a\u307e\u3059\ncontentType: DEPLOYMENT/PROBLEM\n# TODO: \u30aa\u30d7\u30b7\u30e7\u30f3\n# contentType PROBLEM\u306b\u95a2\u9023\u3057\u3066\u3001\u6211\u3005\u304c\u901a\u77e5\u3092\u53d7\u3051\u305f\u3044\u554f\u984c\u306e\u7a2e\u985e\u306e\u95be\u5024\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\nnotificationSeverityThreshold: \"NONE/UNKNOWN/NEGLIGIBLE/LOW/MEDIUM/HIGH/CRITICAL\n}\n) {\nid\n}\n}\n
\u3053\u308c\u3067\u3001\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3054\u3068\u306b\u3001\u5b9a\u7fa9\u3057\u305f\u30c1\u30e3\u30f3\u30cd\u30eb\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u3051\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/graphql-queries/#example-graphql-queries","title":"GraphQL\u30af\u30a8\u30ea\u306e\u4f8b","text":""},{"location":"ja/interacting/graphql-queries/#adding-a-new-kubernetes-target","title":"\u65b0\u3057\u3044Kubernetes\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u8ffd\u52a0","text":"\u6ce8\u610f:
Lagoon\u3067\u306f\u3001addKubernetes
\u3068addOpenshift
\u306e\u3069\u3061\u3089\u3082Kubernetes\u3068OpenShift\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u4e21\u65b9\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u3069\u3061\u3089\u3082\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u3059\u3002
Lagoon\u304c\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u30af\u30e9\u30b9\u30bf\u3002
Kubernetes\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u8ffd\u52a0mutation {\naddKubernetes(\ninput: {\n# TODO: \u540d\u524d\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30af\u30e9\u30b9\u30bf\u306e\u4e00\u610f\u306e\u8b58\u5225\u5b50\u3067\u3059\u3002\nname: \"\"\n# TODO: consoleUrl\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306fKubernetes\u30af\u30e9\u30b9\u30bf\u306eURL\u3067\u3059\nconsoleUrl: \"\"\n# TODO: \u30c8\u30fc\u30af\u30f3\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u3001\u3053\u306e\u30af\u30e9\u30b9\u30bf\u3067\u4f5c\u6210\u3055\u308c\u305f`lagoon`\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30c8\u30fc\u30af\u30f3\u3067\u3059(\u3053\u308c\u306f\u3001Lagoon\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6642\u306b\u3082\u4f7f\u7528\u3057\u305f\u306e\u3068\u540c\u3058\u30c8\u30fc\u30af\u30f3\u3067\u3059)\u3002\ntoken: \"\"\n}\n){\nname\nid\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#adding-a-group-to-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3059\u308b","text":"\u3053\u306e\u30af\u30a8\u30ea\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u305d\u306e\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u5f7c\u3089\u306f\u305d\u306e\u30b0\u30eb\u30fc\u30d7\u3067\u306e\u5f79\u5272\u306b\u57fa\u3065\u3044\u3066\u5909\u66f4\u3092\u52a0\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3059\u308bmutation {\naddGroupsToProject (\ninput: {\nproject: {\n#TODO: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n}\ngroups: {\n#TODO: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3055\u308c\u308b\u30b0\u30eb\u30fc\u30d7\u306e\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n}\n}\n) {\nid\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#adding-a-new-project","title":"\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8ffd\u52a0\u3059\u308b","text":"\u3053\u306e\u30af\u30a8\u30ea\u306f\u3001\u65b0\u3057\u3044Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30eb\u30fc\u30c8\u306b\u30b3\u30df\u30c3\u30c8\u3055\u308c\u305f.lagoon.yml
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u6301\u3064Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u3059\u3002
\u3082\u3057 privateKey
\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u3042\u308b\u5834\u5408\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u65b0\u3057\u3044SSH\u30ad\u30fc\u304c\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u307e\u3059\u3002
\u5225\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304b\u3089\u30ad\u30fc\u3092\u518d\u5229\u7528\u3057\u305f\u3044\u5834\u5408\u306f\u3001addProject
\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u30ad\u30fc\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8ffd\u52a0mutation {\naddProject(\ninput: {\n# TODO: \u540d\u524d\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3067\u3059\u3002\nname: \"\"\n# TODO: \u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ad\u30fc\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044(\u6539\u884c\u306f '\\n' \u3067\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044)\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ad\u30fc\u3067\u3001Git\u306e\u30b3\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\nprivateKey: \"\"\n# TODO: Kubernetes\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u308bKubernetes\u307e\u305f\u306fOpenShift\u306eID\u3067\u3059\u3002\nkubernetes: 0\n# TODO: \u540d\u524d\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3067\u3059\u3002\ngitUrl: \"\"\n# TODO: \u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30d6\u30e9\u30f3\u30c1\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nbranches: \"\"\n# TODO: \u672c\u756a\u74b0\u5883\u3092\u5b9a\u7fa9\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nproductionEnvironment: \"\"\n}\n) {\nname\nkubernetes {\nname\nid\n}\ngitUrl\nbranches\npullrequests\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#list-projects-and-groups","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30b0\u30eb\u30fc\u30d7\u306e\u30ea\u30b9\u30c8","text":"\u3053\u308c\u306f\u3001\u79c1\u305f\u3061\u306eLagoon\u5185\u306b\u5b58\u5728\u3059\u308b\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u6982\u8981\u3092\u898b\u308b\u305f\u3081\u306e\u826f\u3044\u30af\u30a8\u30ea\u3067\u3059\u3002
\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u3001\u304a\u3088\u3073\u30b0\u30eb\u30fc\u30d7\u306e\u6982\u8981\u3092\u53d6\u5f97query {\nallProjects {\nname\ngitUrl\n}\nallKubernetes {\nname\nid\n}\nallGroups{\nid\nname\nmembers {\n# \u3053\u308c\u306f\u3053\u306e\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u8868\u793a\u3057\u307e\u3059\u3002\nuser {\nid\nfirstName\nlastName\n}\nrole\n}\ngroups {\nid\nname\n}\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#single-project","title":"\u5358\u4e00\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8","text":"\u5358\u4e00\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a73\u3057\u304f\u898b\u308b\u5834\u5408\u3001\u3053\u306e\u30af\u30a8\u30ea\u304c\u975e\u5e38\u306b\u6709\u7528\u3067\u3042\u308b\u3053\u3068\u304c\u8a3c\u660e\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a73\u3057\u304f\u898b\u308bquery {\nprojectByName(\n# TODO: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n) {\nid\nbranches\ngitUrl\npullrequests\nproductionEnvironment\nnotifications(type: SLACK) {\n... on NotificationSlack {\nname\nchannel\nwebhook\nid\n}\n}\nenvironments {\nname\ndeployType\nenvironmentType\n}\nkubernetes {\nid\n}\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#querying-a-project-by-its-git-url","title":"Git URL\u306b\u3088\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30af\u30a8\u30ea","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3092\u899a\u3048\u3066\u3044\u306a\u3044\u304c\u3001Git URL\u306f\u77e5\u3063\u3066\u3044\u308b\u5834\u5408\uff1f\u3082\u3046\u63a2\u3059\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3001\u305d\u306e\u305f\u3081\u306eGraphQL\u30af\u30a8\u30ea\u304c\u3042\u308a\u307e\u3059:
Git URL\u306b\u3088\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30af\u30a8\u30eaquery {\nprojectByGitUrl(gitUrl: \"git@server.com:org/repo ```\n.git\") {\nname\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#updating-objects","title":"\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u66f4\u65b0","text":"Lagoon GraphQL API\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8868\u793a\u3057\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u30d1\u30c3\u30c1\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 \u3092\u4f7f\u7528\u3057\u3066\u65e2\u5b58\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u66f4\u65b0\u3059\u308b\u80fd\u529b\u3082\u3042\u308a\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30d6\u30e9\u30f3\u30c1\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002
\u30c7\u30d7\u30ed\u30a4\u30d6\u30e9\u30f3\u30c1\u306e\u66f4\u65b0\u3002mutation {\nupdateProject(\ninput: { id: 109, patch: { branches: \"^(prod|stage|dev|update)$\" } }\n) {\nid\n}\n}\n
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u672c\u756a\u74b0\u5883\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002
\u8b66\u544a
\u3053\u306e\u5909\u66f4\u3092\u30b3\u30f3\u30c6\u30ca\u306b\u53cd\u6620\u3055\u305b\u308b\u306b\u306f\u3001\u518d\u30c7\u30d7\u30ed\u30a4\u304c\u5fc5\u8981\u3067\u3059\u3002
\u672c\u756a\u74b0\u5883\u306e\u66f4\u65b0 mutation {\nupdateProject(\ninput: { id: 109, patch: { productionEnvironment: \"main\" } }\n) {\nid\n}\n}\n
\u307e\u305f\u3001\u4e00\u5ea6\u306b\u8907\u6570\u306e\u5909\u66f4\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u672c\u756a\u74b0\u5883\u306e\u66f4\u65b0\u3068\u30c7\u30d7\u30ed\u30a4\u30d6\u30e9\u30f3\u30c1\u306e\u8a2d\u5b9a\u3002mutation {\nupdateProject(\ninput: {\nid: 109\npatch: {\nproductionEnvironment: \"main\"\nbranches: \"^(prod|stage|dev|update)$\"\n}\n}\n) {\nid\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#deleting-environments","title":"\u74b0\u5883\u306e\u524a\u9664","text":"Lagoon GraphQL API\u3092\u4f7f\u7528\u3057\u3066\u3001\u74b0\u5883\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u74b0\u5883\u3002\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3068\u74b0\u5883\u540d\u3092\u77e5\u3063\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u74b0\u5883\u3092\u524a\u9664\u3059\u308bmutation {\ndeleteEnvironment(\ninput: {\n# TODO: name\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u74b0\u5883\u540d\u3067\u3059\u3002\nname: \"\"\n# TODO: project\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3067\u3059\u3002\nproject: \"\"\nexecute:true\n}\n)\n}\n
"},{"location":"ja/interacting/graphql-queries/#querying-a-project-to-see-what-groups-and-users-are-assigned","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30b0\u30eb\u30fc\u30d7\u3068\u30e6\u30fc\u30b6\u30fc\u3092\u78ba\u8a8d\u3059\u308b","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3069\u306e\u30b0\u30eb\u30fc\u30d7\u3068\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u304b\u898b\u305f\u3044\u3067\u3059\u304b\uff1f\u5f7c\u3089\u306e\u5f79\u5272\u306f\u4f55\u304b\u77e5\u308a\u305f\u3044\u3067\u3059\u304b\uff1f\u305d\u306e\u305f\u3081\u306e\u30af\u30a8\u30ea\u304c\u3042\u308a\u307e\u3059\uff01\u4e0b\u8a18\u306e\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u691c\u7d22\u3057\u3001\u305d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30b0\u30eb\u30fc\u30d7\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u5f79\u5272\u3092\u8868\u793a\u3067\u304d\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30b0\u30eb\u30fc\u30d7\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u5f79\u5272\u3092\u30af\u30a8\u30ea\u3059\u308bquery search{\nprojectByName(\n#TODO: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n) {\nid,\nbranches,\nproductionEnvironment,\npullrequests,\ngitUrl,\nkubernetes {\nid\n},\ngroups{\nid\nname\ngroups {\nid\nname\n}\nmembers {\nrole\nuser {\nid\nemail\n}\n}\n}\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#maintaining-project-metadata","title":"\u7dad\u6301 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30e1\u30bf\u30c7\u30fc\u30bf","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30e1\u30bf\u30c7\u30fc\u30bf\u306f\u3001\u4efb\u610f\u306e\u30ad\u30fc/\u5024\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u3088\u3063\u3066\u554f\u3044\u5408\u308f\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u7a2e\u985e\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u3001\u307e\u305f\u306f\u5f8c\u3067\u554f\u3044\u5408\u308f\u305b\u308b\u305f\u3081\u306e\u4efb\u610f\u306e\u30ab\u30c6\u30b4\u30ea\u30fc\u306b\u3088\u3063\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5206\u985e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/graphql-queries/#addupdate-metadata-on-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u8ffd\u52a0/\u66f4\u65b0\u3059\u308b","text":"\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u66f4\u65b0\u306f\u30ad\u30fc/\u5024\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306fUPSERT
\u3068\u3057\u3066\u52d5\u4f5c\u3057\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u65e2\u306b\u30ad\u30fc\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u306f\u5024\u304c\u66f4\u65b0\u3055\u308c\u3001\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306f\u633f\u5165\u3055\u308c\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u4efb\u610f\u306e\u6570\u306ek/v\u30da\u30a2\u3092\u4fdd\u5b58\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u30ad\u30fc/\u5024\u306e\u30da\u30a2\u3092\u8ffd\u52a0\u3059\u308bmutation {\nupdateProjectMetadata(\ninput: { id: 1, patch: { key: \"type\", value: \"saas\" } }\n) {\nid\nmetadata\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#query-for-projects-by-metadata","title":"\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u3088\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30af\u30a8\u30ea","text":"\u30af\u30a8\u30ea\u306fkey
\u306e\u307f(\u4f8b:\u7279\u5b9a\u306e\u30ad\u30fc\u304c\u5b58\u5728\u3059\u308b\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8fd4\u3059)\u307e\u305f\u306fkey
\u3068value
\u306e\u4e21\u65b9(\u30ad\u30fc\u3068\u5024\u306e\u4e21\u65b9\u304c\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059)\u306b\u3088\u3063\u3066\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
version
\u30bf\u30b0\u3092\u6301\u3064\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8:
\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u3088\u308b\u30af\u30a8\u30eaquery projectsByMetadata {\nprojectsByMetadata(metadata: [{key: \"version\"] ) {\nid\nname\n}\n}\n
\u7279\u306b\u30d0\u30fc\u30b8\u30e7\u30f38
\u306eversion
\u30bf\u30b0\u3092\u6301\u3064\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8:
\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u3088\u308b\u30af\u30a8\u30eaquery projectsByMetadata {\nprojectsByMetadata(metadata: [{key: \"version\", value: \"8\"] ) {\nid\nname\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#removing-metadata-on-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u524a\u9664\u3059\u308b","text":"\u30e1\u30bf\u30c7\u30fc\u30bf\u306f\u30ad\u30fc\u3054\u3068\u306b\u524a\u9664\u3067\u304d\u307e\u3059\u3002\u4ed6\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u30ad\u30fc/\u5024\u306e\u30da\u30a2\u306f\u6b8b\u308a\u307e\u3059\u3002
\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u524a\u9664\u3059\u308bmutation {\nremoveProjectMetadataByKey (\ninput: { id: 1, key: \"version\" }\n) {\nid\nmetadata\n}\n}\n
"},{"location":"ja/interacting/graphql/#graphql-api","title":"GraphQL API\u3078\u306e\u63a5\u7d9a","text":"Lagoon\u3067\u306eAPI\u3068\u306e\u3084\u308a\u3068\u308a\u306fGraphQL\u3092\u901a\u3058\u3066\u884c\u3044\u307e\u3059\u3002API\u306b\u8a8d\u8a3c\u3059\u308b\u305f\u3081\u306b\u306f\u3001JWT(JSON Web Token)\u304c\u5fc5\u8981\u3067\u3001\u3053\u308c\u306b\u3088\u308aSSH\u516c\u958b\u9375\u3092\u901a\u3058\u3066API\u306b\u5bfe\u3059\u308b\u8a8d\u8a3c\u304c\u884c\u308f\u308c\u307e\u3059\u3002
\u3053\u306e\u30c8\u30fc\u30af\u30f3\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001token
\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3063\u3066\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059:
\u30c8\u30fc\u30af\u30f3\u306e\u53d6\u5f97ssh -p [PORT] -t lagoon@[HOST] token\n
amazee.io\u306e\u4f8b:
amazee.io\u30c8\u30fc\u30af\u30f3\u306e\u53d6\u5f97ssh -p 32222 -t lagoon@ssh.lagoon.amazeeio.cloud token\n
\u3053\u308c\u306b\u3088\u308a\u9577\u3044\u6587\u5b57\u5217\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u304cJWT\u30c8\u30fc\u30af\u30f3\u3067\u3059\u3002
\u307e\u305f\u3001API\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306eURL\u3082\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306b\u3064\u3044\u3066\u306fLagoon\u306e\u7ba1\u7406\u8005\u306b\u5c0b\u306d\u3066\u304f\u3060\u3055\u3044\u3002
amazee.io\u3067\u306f\u3053\u308c\u306fhttps://api.lagoon.amazeeio.cloud/graphql
\u3067\u3059\u3002
\u3055\u3066\u3001GraphQL\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002\u6280\u8853\u7684\u306b\u306f\u3053\u308c\u306f\u5358\u306a\u308bHTTP\u3067\u3059\u304c\u3001\u6211\u3005\u306fGraphiQL\u3092\u63a8\u5968\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u7d20\u6575\u306aUI\u3092\u5099\u3048\u3066\u304a\u308a\u3001\u30aa\u30fc\u30c8\u30b3\u30f3\u30d7\u30ea\u30fc\u30c8\u3067GraphQL\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u8d77\u52d5\u3057\u307e\u3059\u3002 [GraphiQL App]
API\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8URL\u3092\u5165\u529b\u3057\u307e\u3059\u3002\u6b21\u306b\"Edit HTTP Headers\"\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u65b0\u3057\u3044\u30d8\u30c3\u30c0\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059:
- \"Header name\":
Authorization
- \"Header value\":
Bearer [jwt token]
( JWT\u30c8\u30fc\u30af\u30f3\u306b\u30b9\u30da\u30fc\u30b9\u304c\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u305d\u308c\u306f\u52d5\u4f5c\u3057\u307e\u305b\u3093)
HTTP\u30d8\u30c3\u30c0\u30fc\u30aa\u30fc\u30d0\u30fc\u30ec\u30a4\u3092\u9589\u3058\u307e\u3059(ESC\u30ad\u30fc\u3092\u62bc\u3057\u307e\u3059)\u3002\u3053\u308c\u3067\u3042\u306a\u305f\u306f\u521d\u3081\u3066\u306eGraphQL\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3046\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\uff01
\u5de6\u5074\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u6b21\u306e\u5185\u5bb9\u3092\u5165\u529b\u3057\u307e\u3059:
\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3059\u308bquery whatIsThere {\nallProjects {\nid\ngitUrl\nname\nbranches\npullrequests\nproductionEnvironment\nenvironments {\nname\nenvironmentType\n}\n}\n}\n
\u305d\u3057\u3066\u3001\u25b6\ufe0f\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u304b(\u307e\u305f\u306fCTRL+ENTER\u3092\u62bc\u3059)\u3002
\u3059\u3079\u3066\u3046\u307e\u304f\u3044\u3051\u3070\u3001\u521d\u3081\u3066\u306eGraphQL\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/interacting/graphql/#_1","title":"\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3","text":"Lagoon\u306eGraphQL API\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8868\u793a\u3057\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u65e2\u5b58\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u66f4\u65b0\u3059\u308b\u6a5f\u80fd\u3082\u6301\u3063\u3066\u3044\u307e\u3059\u3002Lagoon\u306e\u3059\u3079\u3066\u306eGraphQL\u306f\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002
\u60c5\u5831
GraphQL\u306e\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u30af\u30a8\u30ea\u306f\u3001\u30c7\u30fc\u30bf\u30b9\u30c8\u30a2\u306e\u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3001\u5024\u3092\u8fd4\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3001\u30c7\u30fc\u30bf\u306e\u633f\u5165\u3001\u66f4\u65b0\u3001\u524a\u9664\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u30b9\u30ad\u30fc\u30de\u306e\u4e00\u90e8\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30d6\u30e9\u30f3\u30c1\u3092\u66f4\u65b0\u3057\u307e\u3059:
\u30c7\u30d7\u30ed\u30a4\u30d6\u30e9\u30f3\u30c1\u3092\u66f4\u65b0mutation editProjectBranches {\nupdateProject(input:{id:109, patch:{branches:\"^(prod|stage|dev|update)$\"}}) {\nid\n}\n}\n
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u88fd\u54c1\u74b0\u5883\u3092\u66f4\u65b0\u3057\u307e\u3059:
\u8b66\u544a
\u3059\u3079\u3066\u306e\u5909\u66f4\u304c\u30b3\u30f3\u30c6\u30ca\u306b\u53cd\u6620\u3055\u308c\u308b\u3088\u3046\u306b\u3001\u518d\u30c7\u30d7\u30ed\u30a4\u304c\u5fc5\u8981\u3067\u3059\u3002
\u88fd\u54c1\u74b0\u5883\u306e\u66f4\u65b0mutation editProjectProductionEnvironment {\nupdateProject(input:{id:109, patch:{productionEnvironment:\"prod\"}}) {\nid\n}\n}\n
\u307e\u305f\u3001\u8907\u6570\u306e\u5909\u66f4\u3092\u4e00\u3064\u306e\u30af\u30a8\u30ea\u306b\u307e\u3068\u3081\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
\u8907\u6570\u306e\u5909\u66f4mutation editProjectProductionEnvironmentAndBranches {\nupdateProject(input:{id:109, patch:{productionEnvironment:\"prod\", branches:\"^(prod|stage|dev|update)$\"}}) {\nid\n}\n}\n
"},{"location":"ja/interacting/lagoon-ui/","title":"LagoonUI","text":"Lagoon UI\u306f\u3001Lagoon\u3068\u306e\u6700\u521d\u306e\u63a5\u70b9\u3067\u3059\u3002\u30a2\u30af\u30bb\u30b9\u306b\u95a2\u3059\u308b\u554f\u984c\u304c\u3042\u308b\u5834\u5408\u306f\u3001Lagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
UI\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u7d44\u7e54\u306b\u95a2\u3059\u308b\u3055\u307e\u3056\u307e\u306a\u30bf\u30b9\u30af\u3092\u5b8c\u4e86\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7d44\u7e54\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306f\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\u3001UI\u3067\u7d44\u7e54\u3068\u4f55\u304c\u3067\u304d\u308b\u304b\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/interacting/organizations/","title":"UI\u3067\u7d44\u7e54\u3068\u5171\u540c\u4f5c\u696d\u3059\u308b","text":"\u4ee5\u4e0b\u306b\u3001Lagoon UI\u3067\u30b0\u30eb\u30fc\u30d7\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u304a\u3088\u3073\u5f79\u5272\u306b\u95a2\u9023\u3059\u308b\u6709\u7528\u306a\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u30ac\u30a4\u30c9\u3092\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/interacting/organizations/#log-in-and-find-organizations","title":"\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u7d44\u7e54\u3092\u63a2\u3059","text":""},{"location":"ja/interacting/organizations/#view-who-has-access-to-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3064\u4eba\u3092\u78ba\u8a8d\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#add-user-to-group-with-role","title":"\u30e6\u30fc\u30b6\u30fc\u3092\u30ed\u30fc\u30eb\u4ed8\u304d\u306e\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#remove-a-user-from-a-group","title":"\u30e6\u30fc\u30b6\u30fc\u3092\u30b0\u30eb\u30fc\u30d7\u304b\u3089\u524a\u9664\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#change-a-user-role","title":"\u30e6\u30fc\u30b6\u30fc\u306e\u30ed\u30fc\u30eb\u3092\u5909\u66f4\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#add-an-email-notification-to-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30e1\u30fc\u30eb\u901a\u77e5\u3092\u8ffd\u52a0\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#add-a-group-to-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#add-a-user-with-organization-owner-privileges","title":"\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc\u6a29\u9650\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#create-a-new-project-add-a-group-and-create-a-production-environment","title":"\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3057\u3001\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b","text":""},{"location":"ja/interacting/rbac/","title":"\u30ed\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1 (RBAC)","text":"Lagoon \u30d0\u30fc\u30b8\u30e7\u30f3 1.0 \u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u65b9\u6cd5\u304c\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u306f\u30b0\u30eb\u30fc\u30d7\u7d4c\u7531\u3067\u51e6\u7406\u3055\u308c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f 1 \u3064\u307e\u305f\u306f\u8907\u6570\u306e\u30b0\u30eb\u30fc\u30d7\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306f\u30ed\u30fc\u30eb\u3092\u6301\u3064\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002\u30b0\u30eb\u30fc\u30d7\u306f\u30b5\u30d6\u30b0\u30eb\u30fc\u30d7\u5185\u306b\u30cd\u30b9\u30c8\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u5909\u66f4\u306b\u3088\u308a\u3001\u67d4\u8edf\u6027\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u3001Lagoon \u5185\u3067\u5b9f\u969b\u306e\u30c1\u30fc\u30e0\u3092\u518d\u73fe\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#roles","title":"\u5f79\u67c4","text":"\u30e6\u30fc\u30b6\u30fc\u3092\u30b0\u30eb\u30fc\u30d7\u306b\u5272\u308a\u5f53\u3066\u308b\u3068\u304d\u306f\u3001\u3053\u306e\u30b0\u30eb\u30fc\u30d7\u5185\u3067\u305d\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u30b0\u30eb\u30fc\u30d7 \u30ed\u30fc\u30eb\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u73fe\u5728\u5b58\u5728\u3059\u308b 5 \u3064\u306e\u30b0\u30eb\u30fc\u30d7 \u30ed\u30fc\u30eb\u306e\u305d\u308c\u305e\u308c\u304c\u3001\u30b0\u30eb\u30fc\u30d7\u3068\u30b0\u30eb\u30fc\u30d7\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3059\u308b\u7570\u306a\u308b\u6a29\u9650\u3092\u30e6\u30fc\u30b6\u30fc\u306b\u4ed8\u4e0e\u3057\u307e\u3059\u3002\u73fe\u5728 Lagoon \u306b\u3042\u308b\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u30ed\u30fc\u30eb\u3068\u30b0\u30eb\u30fc\u30d7 \u30ed\u30fc\u30eb\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002
"},{"location":"ja/interacting/rbac/#platform-wide-roles","title":"\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u30ed\u30fc\u30eb","text":""},{"location":"ja/interacting/rbac/#platform-wide-admin","title":"\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u7ba1\u7406\u8005","text":"\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u7ba1\u7406\u8005\u306f\u3001Lagoon \u5168\u4f53\u306e\u3059\u3079\u3066\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u524a\u9664\u3059\u308b\u306a\u3069\u306e\u5371\u967a\u306a\u5909\u66f4\u3082\u542b\u307e\u308c\u307e\u3059\u3002\u975e\u5e38\u306b\u614e\u91cd\u306b\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/interacting/rbac/#platform-wide-owner","title":"\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u6240\u6709\u8005","text":"\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u30aa\u30fc\u30ca\u30fc\u306f\u3001\u30b0\u30eb\u30fc\u30d7\u30aa\u30fc\u30ca\u30fc\u306e\u5f79\u5272\u3068\u540c\u69d8\u306b\u3059\u3079\u3066\u306eLagoon\u30b0\u30eb\u30fc\u30d7\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u3059\u3079\u3066\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304c\u3001\u5404\u30b0\u30eb\u30fc\u30d7\u306b\u30e6\u30fc\u30b6\u30fc\u3092\u5272\u308a\u5f53\u3066\u305f\u304f\u306a\u3044\u5834\u5408\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#organization-roles","title":"\u7d44\u7e54\u306e\u5f79\u5272","text":""},{"location":"ja/interacting/rbac/#organization-owner","title":"\u7d44\u7e54\u306e\u6240\u6709\u8005","text":"\u7d44\u7e54\u306e\u6240\u6709\u8005\u306e\u30ed\u30fc\u30eb\u306b\u3088\u308a\u3001\u7d44\u7e54\u5185\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u901a\u77e5\u3092\u4f5c\u6210\u304a\u3088\u3073\u524a\u9664\u3067\u304d\u307e\u3059\u3002
\u5f7c\u3089\u306f\u30e6\u30fc\u30b6\u30fc\u3092\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3057\u3001\u305d\u306e\u30b0\u30eb\u30fc\u30d7\u5185\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u30ed\u30fc\u30eb\u3092\u5909\u66f4\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30b0\u30eb\u30fc\u30d7\u306b\u95a2\u9023\u4ed8\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc\u306f\u8ab0\u304c\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3063\u3066\u3044\u308b\u304b\u3092\u660e\u78ba\u306b\u628a\u63e1\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u3092\u8fc5\u901f\u306b\u8ffd\u52a0\u30fb\u524a\u9664\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc\u306f\u3001Slack\u3084\u305d\u306e\u4ed6\u306e\u901a\u77e5\u3092\u76f4\u63a5\u4f5c\u6210\u3057\u3001\u305d\u308c\u3089\u306e\u901a\u77e5\u3092Lagoon\u7ba1\u7406\u8005\u306e\u52a9\u3051\u3092\u501f\u308a\u305a\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002
\u7d44\u7e54\u306e\u6240\u6709\u8005\u306f\u3001\u7d44\u7e54\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306b\u4ed6\u306e\u6240\u6709\u8005\u3001\u7ba1\u7406\u8005\u3001\u307e\u305f\u306f\u95b2\u89a7\u8005\u3092\u8ffd\u52a0\u304a\u3088\u3073\u524a\u9664\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u6ce8\u610f
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u3053\u306e\u30ed\u30fc\u30eb\u306f\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u74b0\u5883\u3092\u4f5c\u6210\u3057\u305f\u308a\u3001\u30c7\u30d7\u30ed\u30a4\u3092\u30c8\u30ea\u30ac\u30fc\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u5f7c\u3089\u306f\u81ea\u5206\u81ea\u8eab\u3092\u3001\u305d\u306e\u6a29\u9650\u3092\u4ed8\u4e0e\u3059\u308b\u30ed\u30fc\u30eb\u3092\u6301\u3064\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u3001\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30fc\u30ca\u30fc\u3068\u3057\u3066\u8ffd\u52a0\u3055\u308c\u308b\u3053\u3068\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#organization-admin","title":"\u7d44\u7e54\u7ba1\u7406\u8005","text":"\u7d44\u7e54\u7ba1\u7406\u8005\u306e\u5f79\u5272\u306f\u7d44\u7e54\u6240\u6709\u8005\u3068\u540c\u3058\u3067\u3059\u304c\u3001\u3053\u306e\u5f79\u5272\u3067\u306f\u7d44\u7e54\u306e\u6240\u6709\u8005\u3001\u7ba1\u7406\u8005\u3001\u307e\u305f\u306f\u95b2\u89a7\u8005\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
"},{"location":"ja/interacting/rbac/#organization-viewer","title":"\u7d44\u7e54\u306e\u30d3\u30e5\u30fc\u30a2","text":"\u7d44\u7e54\u306e\u30d3\u30e5\u30fc\u30ef\u30fc\u306f\u3001\u81ea\u7d44\u7e54\u5185\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u3068\u30e6\u30fc\u30b6\u30fc\u306e\u30a2\u30af\u30bb\u30b9\u3001\u901a\u77e5\u3092\u8868\u793a\u3059\u308b\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#group-roles","title":"\u30b0\u30eb\u30fc\u30d7\u306e\u30ed\u30fc\u30eb","text":""},{"location":"ja/interacting/rbac/#owner","title":"\u30aa\u30fc\u30ca\u30fc","text":"\u30aa\u30fc\u30ca\u30fc\u306e\u30ed\u30fc\u30eb\u306f\u3001\u30b0\u30eb\u30fc\u30d7\u3068\u305d\u306e\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u5168\u3066\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5f7c\u3089\u306f\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3057\u3001\u7ba1\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3053\u306e\u30ed\u30fc\u30eb\u306b\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3001\u306a\u305c\u306a\u3089\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u672c\u756a\u74b0\u5883\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u3089\u3067\u3059\u3002
"},{"location":"ja/interacting/rbac/#maintainer","title":"\u30e1\u30f3\u30c6\u30ca","text":"\u30e1\u30f3\u30c6\u30ca\u306e\u30ed\u30fc\u30eb\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u81ea\u4f53\u3084\u672c\u756a\u74b0\u5883\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3092\u9664\u3044\u3066\u3001\u30b0\u30eb\u30fc\u30d7\u3068\u305d\u306e\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u4f55\u3067\u3082\u3067\u304d\u307e\u3059\u3002\u5f7c\u3089\u306f\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3057\u3001\u7ba1\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#developer","title":"\u958b\u767a\u8005","text":"\u958b\u767a\u8005\u30ed\u30fc\u30eb\u306f\u958b\u767a\u74b0\u5883\u3078\u306eSSH\u30a2\u30af\u30bb\u30b9\u306e\u307f\u304c\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30ed\u30fc\u30eb\u306f\u3001\u672c\u756a\u74b0\u5883\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3001\u66f4\u65b0\u3001\u524a\u9664\u3092\u884c\u3046\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u672c\u756a\u74b0\u5883\u3092\u30bd\u30fc\u30b9\u3068\u3057\u3066\u540c\u671f\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u3059\u304c\u3001\u5b9b\u5148\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u7ba1\u7406\u3082\u884c\u3048\u307e\u305b\u3093\u3002
\u91cd\u8981
\u3053\u306e\u30ed\u30fc\u30eb\u306f\u3001Git\u30d7\u30c3\u30b7\u30e5\u306b\u3088\u3063\u3066\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u308b\u305f\u3081\u3001\u672c\u756a\u74b0\u5883\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u9632\u3050\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002Git\u30b5\u30fc\u30d0\u30fc\u304c\u3053\u308c\u3089\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u672c\u756a\u74b0\u5883\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u306b\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u306e\u3092\u9632\u3050\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#reporter","title":"\u30ec\u30dd\u30fc\u30bf\u30fc","text":"\u30ec\u30dd\u30fc\u30bf\u30fc\u306e\u30ed\u30fc\u30eb\u306f\u3001\u95b2\u89a7\u30a2\u30af\u30bb\u30b9\u306e\u307f\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u5f7c\u3089\u306fSSH\u7d4c\u7531\u3067\u74b0\u5883\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u308a\u3001\u305d\u308c\u3089\u3092\u5909\u66f4\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u5f7c\u3089\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u30af\u30ea\u30a2\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30ed\u30fc\u30eb\u306f\u4e3b\u306b\u3001\u30b9\u30c6\u30fc\u30af\u30db\u30eb\u30c0\u30fc\u304cLagoon UI\u3068\u30ed\u30b0\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#guest","title":"\u30b2\u30b9\u30c8","text":"\u30b2\u30b9\u30c8\u306e\u30ed\u30fc\u30eb\u306f\u3001\u4e0a\u8a18\u306e\u30ec\u30dd\u30fc\u30bf\u30fc\u306e\u30ed\u30fc\u30eb\u3068\u540c\u7b49\u306e\u6a29\u9650\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002
\u4ee5\u4e0b\u306f\u305d\u306e\u8868\u3067\u3059\u3002 \u5f7c\u3089\u304c\u6301\u3064\u30ed\u30fc\u30eb\u3068\u30a2\u30af\u30bb\u30b9\u3092\u30ea\u30b9\u30c8\u3057\u307e\u3059:
"},{"location":"ja/interacting/rbac/#lagoon-100-rbac-permission-matrix","title":"Lagoon 1.0.0 RBAC \u6a29\u9650\u30de\u30c8\u30ea\u30c3\u30af\u30b9","text":"\u81ea\u5206\u81ea\u8eab\u30b2\u30b9\u30c8\u958b\u767a\u8005\u30e1\u30f3\u30c6\u30ca\u30fc\u30aa\u30fc\u30ca\u30fc\u7d44\u7e54\u30d3\u30e5\u30fc\u30a2\u7d44\u7e54\u30aa\u30fc\u30ca\u30fc\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u6240\u6709\u8005\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u7ba1\u7406\u8005 \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID userCanSshToEnvironment environment ssh:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID userCanSshToEnvironment environment ssh:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u7bc4\u56f2 \u5c5e\u6027 addOrUpdateEnvironmentStorage environment storage addNotificationSlack notification add updateNotificationSlack notification update deleteNotificationSlack notification delete addKubernetes kubernetes add updateKubernetes kubernetes update deleteKubernetes kubernetes delete getAllOpenshifts openshift viewAll getAllProjects project viewAll addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID allEnvironments environment viewAll getEnvironmentStorageMonthByEnvironmentId environment storage getEnvironmentHoursMonthByEnvironmentId environment storage getEnvironmentHitsMonthByEnvironmentId environment storage addOrUpdateEnvironmentStorage environment storage addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add getAllOrganizations organization viewAll addOrganization add viewAll updateOrganization update viewAll deleteOrganization delete viewAll getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 getEnvironmentStorageMonthByEnvironmentId environment storage getEnvironmentHoursMonthByEnvironmentId environment storage getEnvironmentHitsMonthByEnvironmentId environment storage getAllOpenshifts openshift viewAll addOrUpdateEnvironmentStorage environment storage addNotificationSlack notification add updateNotificationSlack notification update deleteNotificationSlack notification delete addKubernetes kubernetes add updateKubernetes kubernetes update deleteKubernetes kubernetes delete getAllProjects project viewAll addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add getAllOrganizations organization viewAll addOrganization add viewAll updateOrganization update viewAll deleteOrganization delete viewAll getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId"},{"location":"ja/interacting/ssh/","title":"SSH","text":"Lagoon\u3067\u306f\u3001SSH\u3092\u901a\u3058\u3066\u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u81ea\u4f53\u306b\u306fSSH\u30b5\u30fc\u30d0\u30fc\u306f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u4ee3\u308f\u308a\u306bSSH\u3092\u4f7f\u3063\u3066Lagoon\u306b\u63a5\u7d9a\u3057\u3001\u305d\u3053\u304b\u3089Kubernetes API\u3092\u901a\u3058\u3066\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u63a5\u7d9a\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
"},{"location":"ja/interacting/ssh/#ssh_1","title":"SSH\u30a2\u30af\u30bb\u30b9\u306e\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3059\u308b","text":""},{"location":"ja/interacting/ssh/#ssh_2","title":"SSH\u30ad\u30fc\u306e\u751f\u6210","text":"\u540c\u3058\u30ad\u30fc\u3092\u8907\u6570\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u9593\u3067\u5171\u6709\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u5404\u30c7\u30d0\u30a4\u30b9\u3054\u3068\u306b\u5225\u3005\u306eSSH\u30ad\u30fc\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u5404\u30b7\u30b9\u30c6\u30e0\u3067\u306eSSH\u30ad\u30fc\u306e\u751f\u6210\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u4ee5\u4e0b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/interacting/ssh/#osxmac","title":"OSX(Mac)","text":"Mac
"},{"location":"ja/interacting/ssh/#linuxubuntu","title":"Linux(Ubuntu)","text":"Linux
"},{"location":"ja/interacting/ssh/#ssh_3","title":"SSH\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8","text":""},{"location":"ja/interacting/ssh/#osxmac_1","title":"OSX(Mac)","text":"OSX\u306f\u3001\u8d77\u52d5\u6642\u306b\u8a2d\u5b9a\u3055\u308c\u305fSSH\u30ad\u30fc\u3092\u30ed\u30fc\u30c9\u3059\u308b\u3088\u3046\u306bSSH\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u3053\u308c\u306b\u3088\u308a\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306e\u8a2d\u5b9a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u3061\u3089\u306e\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044:https://www.backarapper.com/add-ssh-keys-to-ssh-agent-on-startup-in-macos/
"},{"location":"ja/interacting/ssh/#linux","title":"Linux","text":"Linux\u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u306f\u3001ssh-agent
\u306e\u4f7f\u7528\u65b9\u6cd5\u306b\u3088\u308a\u307e\u3059\u3002\u4e00\u822c\u7684\u306a\u30ac\u30a4\u30c9\u306f\u3053\u3053\u306b\u3042\u308a\u307e\u3059:https://www.ssh.com/academy/ssh/agent
"},{"location":"ja/interacting/ssh/#windows_1","title":"Windows","text":"\u6700\u8fd1\u3067\u306fWindows\u3067\u306eSSH\u30ad\u30fc\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u3001\u73fe\u5728\u3067\u306f\u30cd\u30a4\u30c6\u30a3\u30d6\u306b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002Windows 10\u306eSSH\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u306e\u4fbf\u5229\u306a\u30ac\u30a4\u30c9\u306f\u3053\u3053\u306b\u3042\u308a\u307e\u3059:https://richardballard.co.uk/ssh-keys-on-windows-10/
"},{"location":"ja/interacting/ssh/#ssh_4","title":"SSH\u30ad\u30fc\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9","text":""},{"location":"ja/interacting/ssh/#ui","title":"UI\u3092\u901a\u3058\u3066","text":"SSH\u30ad\u30fc\u3092UI\u3092\u901a\u3058\u3066\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002\u901a\u5e38\u901a\u308a\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u53f3\u4e0a\u306e\u89d2\u306b\u3042\u308b\u8a2d\u5b9a\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059:
\u6b21\u306b\u3001SSH\u30ad\u30fc\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u308b\u30da\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u3001\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30ad\u30fc\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u30ad\u30fc\u3092\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306b\u8cbc\u308a\u4ed8\u3051\u3001\u540d\u524d\u3092\u4ed8\u3051\u3066\u300c\u8ffd\u52a0\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u305d\u308c\u3060\u3051\u3067\u3059\uff01\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u8ffd\u52a0\u306e\u30ad\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
"},{"location":"ja/interacting/ssh/#_1","title":"\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u7d4c\u7531","text":"\u30e6\u30fc\u30b6\u30fc\u306bSSH\u30ad\u30fc\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306eLagoon API\u3092GraphQL\u7d4c\u7531\u3067\u4f7f\u7528\u3059\u308b\u4e00\u822c\u7684\u306a\u4f8b\u306f\u3001\u3053\u3061\u3089\u306b\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/interacting/ssh/#ssh_5","title":"\u30dd\u30c3\u30c9\u3078\u306eSSH\u63a5\u7d9a","text":""},{"location":"ja/interacting/ssh/#_2","title":"\u63a5\u7d9a","text":"\u63a5\u7d9a\u306f\u76f4\u63a5\u7684\u3067\u3001\u6b21\u306e\u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3044\u307e\u3059:
SSHssh -p [PORT] -t [PROJECT-ENVIRONMENT-NAME]@[HOST]\n
PORT
- \u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u306eSSH\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u30dd\u30fc\u30c8(amazee.io\u306e\u5834\u5408:22
)\u3002 HOST
- \u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u306eSSH\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u30db\u30b9\u30c8(amazee.io\u306e\u5834\u5408ssh.example.com
)\u3002 PROJECT-ENVIRONMENT-NAME
- \u63a5\u7d9a\u3057\u305f\u3044\u74b0\u5883\u3002\u3053\u308c\u306f\u901a\u5e38PROJECTNAME-ENVIRONMENT
\u306e\u30d1\u30bf\u30fc\u30f3\u3067\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
\u4f8b\u3048\u3070:
SSH examplessh -p 22 -t drupal-example-main@ssh.example.com\n
\u3053\u308c\u306b\u3088\u308a\u3001main
\u74b0\u5883\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8drupal-example
\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002
"},{"location":"ja/interacting/ssh/#_3","title":"\u30dd\u30c3\u30c9/\u30b5\u30fc\u30d3\u30b9\u3001\u30b3\u30f3\u30c6\u30ca\u5b9a\u7fa9","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u306f\u30bf\u30a4\u30d7cli
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3057\u3088\u3046\u3068\u3057\u307e\u3059\u3002\u4ed6\u306e\u30dd\u30c3\u30c9/\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3067\u304d\u307e\u3059:
SSH to another servicessh -p [PORT] -t [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8-\u74b0\u5883\u540d]@[\u30db\u30b9\u30c8] service=[\u30b5\u30fc\u30d3\u30b9\u540d]\n
\u3042\u306a\u305f\u306e\u30dd\u30c3\u30c9/\u30b5\u30fc\u30d3\u30b9\u306b\u8907\u6570\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001Lagoon\u306f\u3042\u306a\u305f\u3092\u6700\u521d\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u63a5\u7d9a\u3057\u305f\u3044\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
\u30b3\u30f3\u30c6\u30ca\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002ssh -p [\u30dd\u30fc\u30c8] -t [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8-\u74b0\u5883\u540d]@[\u30db\u30b9\u30c8] service=[\u30b5\u30fc\u30d3\u30b9\u540d] container=[\u30b3\u30f3\u30c6\u30ca\u540d]\n
\u4f8b\u3048\u3070\u3001nginx
\u30dd\u30c3\u30c9\u5185\u306ephp
\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3059\u308b\u306b\u306f:
SSH to php containerssh -p 22 -t drupal-example-main@sssh.example.com service=nginx container=php\n
"},{"location":"ja/interacting/ssh/#_4","title":"\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30d4\u30fc","text":"\u4e00\u822c\u7684\u306a\u30b1\u30fc\u30b9\u3067\u3001\u30d5\u30a1\u30a4\u30eb\u3092cli
\u30dd\u30c3\u30c9\u306b\u30b3\u30d4\u30fc\u3059\u308b\u3053\u3068\u306f\u3001\u901a\u5e38\u306eSSH\u4e92\u63db\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066\u9054\u6210\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/ssh/#scp","title":"scp","text":"Copy file with scpscp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P 22 [\u30ed\u30fc\u30ab\u30eb\u30d1\u30b9] [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d]-[\u74b0\u5883\u540d]@ssh.example.com:[\u30ea\u30e2\u30fc\u30c8\u30d1\u30b9]\n
"},{"location":"ja/interacting/ssh/#rsync","title":"rsync","text":"Copy files with rsyncrsync --rsh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 22' [\u30ed\u30fc\u30ab\u30eb\u30d1\u30b9] [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d]-[\u74b0\u5883\u540d]@ssh.example.com:[\u30ea\u30e2\u30fc\u30c8\u30d1\u30b9]\n
"},{"location":"ja/interacting/ssh/#tar","title":"tar","text":"Bashssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P 22 [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d]-[\u74b0\u5883\u540d]@ssh.example.com tar -zcf - [\u30ea\u30e2\u30fc\u30c8\u30d1\u30b9] | tar -zxf - -C /tmp/\n
"},{"location":"ja/interacting/ssh/#cli","title":"\u975eCLI\u30dd\u30c3\u30c9/\u30b5\u30fc\u30d3\u30b9\u306e\u6307\u5b9a","text":"\u307e\u308c\u306a\u30b1\u30fc\u30b9\u3067\u3001\u975eCLI\u30b5\u30fc\u30d3\u30b9\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 service=...
\u304a\u3088\u3073/\u307e\u305f\u306fcontainer=...
\u5f15\u6570\u306f\u30b3\u30d4\u30fc\u30b3\u30de\u30f3\u30c9\u306b\u3042\u308a\u307e\u3059\u3002
tar
\u3092ssh
\u63a5\u7d9a\u3092\u901a\u3057\u3066\u30d1\u30a4\u30d7\u3059\u308b\u3053\u3068\u306f\u6700\u3082\u5358\u7d14\u306a\u65b9\u6cd5\u3067\u3001\u901a\u5e38\u306etar
\u30d5\u30e9\u30b0\u3092\u7528\u3044\u3066\u30d5\u30a1\u30a4\u30eb\u3084\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u30b3\u30d4\u30fc\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059:
Bashssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P 32222 [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d]-[\u74b0\u5883\u540d]@ssh.example.com service=solr tar -zcf - [\u30ea\u30e2\u30fc\u30c8\u30d1\u30b9] | tar -zxf - -C /tmp/\n
\u307e\u305f\u3001Lagoon\u306eSSH\u30b5\u30fc\u30d3\u30b9\u306b\u5fc5\u8981\u306a\u5f62\u3067ssh
\u306e\u5f15\u6570\u3092\u4e26\u3079\u66ff\u3048\u308b\u30e9\u30c3\u30d1\u30fc\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u7528\u3044\u3066rsync
\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
Bash#!/usr/bin/env sh\nsvc=$1 user=$3 host=$4\nshift 4\nexec ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 22 -l \"$user\" \"$host\" \"$svc\" \"$@\"\n
\u305d\u308c\u3092\u5b9f\u884c\u53ef\u80fd\u306a\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8rsh.sh
\u306b\u5165\u308c\u3066\u3001rsync
\u30b3\u30de\u30f3\u30c9\u3067service=...
\u3092\u6307\u5b9a\u3057\u307e\u3059:
rsync to non-CLI podrsync --rsh=\"/path/to/rsh.sh service=cli\" /tmp/foo [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d]-[\u74b0\u5883\u540d]@sssh.example.com:/tmp/foo\n
\u3053\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001container=...
\u5f15\u6570\u3082\u51e6\u7406\u3059\u308b\u3088\u3046\u306b\u8abf\u6574\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/efs-provisioner/","title":"EFS\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc","text":"\u60c5\u5831
\u3053\u308c\u306fAWS\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u306e\u307f\u9069\u7528\u3055\u308c\u307e\u3059\u3002
-
Helm\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0\u3057\u307e\u3059:
Helm\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0helm repo add stable https://charts.helm.sh/stable\n
-
\u8a2d\u5b9a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306befs-provisioner-values.yml
\u3092\u4f5c\u6210\u3057\u3001\u5024\u3092\u66f4\u65b0\u3057\u307e\u3059:
efs-provisioner-values.ymlefsProvisioner:\nefsFileSystemId: <efsFileSystemId>\nawsRegion: <awsRegion>\npath: /\nprovisionerName: example.com/aws-efs\nstorageClass:\nname: bulk\nisDefault: false\nreclaimPolicy: Delete\nmountOptions: []\nglobal:\ndeployEnv: prod\n
-
EFS\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059:
EFS\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebhelm upgrade --install --create-namespace \\\n--namespace efs-provisioner --wait \\\n-f efs-provisioner-values.yaml \\\nefs-provisioner stable/efs-provisioner\n
"},{"location":"ja/lagoonizing/","title":"\u65e2\u5b58\u306e\u30b5\u30a4\u30c8\u3092Lagoonizing","text":"\u300cLagoonizing\u300d\u3068\u306f\u3001\u65e2\u5b58\u306e\u30b5\u30a4\u30c8\u3092Lagoon\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9069\u5fdc\u3055\u305b\u308b\u3053\u3068\u3067\u3001\u901a\u5e38\u306f\u96e3\u3057\u304f\u306a\u3044\u4f5c\u696d\u3067\u3059\uff08\u305f\u3060\u3057\u3001\u30b5\u30a4\u30c8\u3084\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306b\u3088\u308a\u7570\u306a\u308a\u307e\u3059\uff09\u3002\u300cLagoonizing\u300d\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u624b\u9806\u304c\u5fc5\u8981\u3068\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u7c21\u5358\u306b\u3059\u308b\u305f\u3081\u306e\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u306e\u30ac\u30a4\u30c9\u3092\u307e\u3068\u3081\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_1","title":"\u8981\u4ef6","text":"\u3042\u306a\u305f\u306e\u30b7\u30b9\u30c6\u30e0\u304c\u30ed\u30fc\u30ab\u30eb\u3067Lagoon\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u8981\u4ef6\u3092\u6e80\u305f\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#_2","title":"\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883","text":"\u30ed\u30fc\u30ab\u30eb\u3067\u306e\u958b\u767a\u74b0\u5883\u306e\u8a2d\u5b9a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002Pygmy\u307e\u305f\u306fLando\u306e\u3044\u305a\u308c\u304b\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#git","title":"\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3068Git","text":"Lagoon\u3068\u306e\u3084\u308a\u53d6\u308a\u306b\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304c\u5fc5\u8981\u3067\u3059\u3057\u3001Git\u3082\u4f7f\u7528\u3057\u307e\u3059\u306e\u3067\u3001\u3053\u308c\u3089\u304c\u6e96\u5099\u3067\u304d\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#_3","title":"\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3","text":"\u30bf\u30b9\u30af\u306e\u5b9f\u884c\u306b\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002OS\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30c4\u30fc\u30eb\u3092\u542b\u3081\u3001\u4f55\u3092\u4f7f\u7528\u3057\u3066\u3044\u305f\u3060\u3044\u3066\u3082\u69cb\u3044\u307e\u305b\u3093\u3002\u4ee5\u4e0b\u306b\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u793a\u3057\u307e\u3059:
- iTerm2 (Mac)
- PowerShell (Windows)
- Fish (Mac, Windows, Linux)
- Tabby (Mac, Windows, Linux)
"},{"location":"ja/lagoonizing/#git_1","title":"Git\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u307e\u3060Git\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001 \u4f55\u3089\u304b\u306e\u5f62\u3067Git\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5fc5\u8981\u3068\u306a\u308a\u307e\u3059\u3002\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3001GUI\u3001\u4f55\u3067\u3082\u69cb\u3044\u307e\u305b\u3093(\u79c1\u305f\u3061\u306e\u4f8b\u3067\u306f\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3092\u4f7f\u7528\u3057\u307e\u3059)\u3002\u4ee5\u4e0b\u306b\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u793a\u3057\u307e\u3059:
- Git\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb (Mac\u3001Windows\u3001Linux)
- SourceTree (Mac\u3001Windows)
- GitHub Desktop (Mac\u3001Windows)
- GitKraken (Mac\u3001Windows\u3001Linux - \u516c\u958b\u30ea\u30dd\u30b8\u30c8\u30ea\u306f\u7121\u6599)
"},{"location":"ja/lagoonizing/#lagoon","title":"Lagoon\u7ba1\u7406\u8005\u304c\u5fc5\u8981\u3068\u3059\u308b\u3082\u306e","text":"Lagoon\u3092\u8a2d\u5b9a\u3059\u308bLagoon\u7ba1\u7406\u8005\u306f\u3001\u5404\u7a2e\u60c5\u5831\u304c\u5fc5\u8981\u3068\u306a\u308a\u307e\u3059\u3002\u8a73\u7d30\u306f\u3053\u3061\u3089\u3002
"},{"location":"ja/lagoonizing/#webhooks","title":"Webhooks\u306e\u8a2d\u5b9a","text":"\u6b21\u306b\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u305f\u3081\u306ewebhooks\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u624b\u9806\u306f\u3053\u3061\u3089\u304b\u3089\u3054\u78ba\u8a8d\u3044\u305f\u3060\u3051\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#docker-composeyml","title":"docker-compose.yml
","text":"docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u3001Lagoon\u306b\u304a\u3044\u3066\u4ee5\u4e0b\u306e\u76ee\u7684\u3067\u4f7f\u7528\u3055\u308c\u307e\u3059:
- \u3069\u306e\u30b5\u30fc\u30d3\u30b9/\u30b3\u30f3\u30c6\u30ca\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u304b\u3092\u5b66\u3076\u3002
- \u30b3\u30f3\u30c6\u30ca\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u3069\u306e\u3088\u3046\u306b\u30d3\u30eb\u30c9\u3055\u308c\u308b\u304b\u3092\u5b9a\u7fa9\u3059\u308b\u3002
- \u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u306a\u3069\u306e\u8ffd\u52a0\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3059\u308b\u3002
\u3055\u3089\u306b\u8a73\u3057\u3044\u60c5\u5831\u306fdocker-compose.yml
\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044.
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u3092Lagoon\u306b\u5bfe\u5fdc\u3055\u305b\u308b\u305f\u3081\u306b\u4f5c\u6210\u30fb\u8a2d\u5b9a\u3059\u308b2\u3064\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u3046\u3061\u306e1\u3064\u3067\u3059\u3002
Docker-compose
(\u30c4\u30fc\u30eb)\u306f\u3001YAML\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u3092\u53b3\u683c\u306b\u691c\u8a3c\u3059\u308b\u306e\u3067\u3001\u30b5\u30fc\u30d3\u30b9\u5b9a\u7fa9\u306e\u30e9\u30d9\u30eb\u5185\u3067\u306e\u307f\u8a2d\u5b9a\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u8b66\u544a
Lagoon\u306fdocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30e9\u30d9\u30eb\u3001\u30b5\u30fc\u30d3\u30b9\u540d\u3001\u30a4\u30e1\u30fc\u30b8\u540d\u3001\u30d3\u30eb\u30c9\u5b9a\u7fa9\u306e\u307f\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002\u30dd\u30fc\u30c8\u3001\u74b0\u5883\u5909\u6570\u3001\u30dc\u30ea\u30e5\u30fc\u30e0\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u30ea\u30f3\u30af\u3001\u30e6\u30fc\u30b6\u30fc\u306a\u3069\u306e\u5b9a\u7fa9\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u610f\u56f3\u7684\u306a\u3082\u306e\u3067\u3001docker-compose
\u30d5\u30a1\u30a4\u30eb\u306f\u3042\u306a\u305f\u306e\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002Lagoon\u306flagoon.type
\u304b\u3089\u3042\u306a\u305f\u304c\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u3044\u308b\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30d7\u3092\u5b66\u3073\u3001\u305d\u306e\u7d50\u679c\u3001\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u5fc5\u8981\u3068\u3059\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u30dd\u30fc\u30c8\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u305d\u306e\u4ed6\u306e\u8ffd\u52a0\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u77e5\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u57fa\u672c\u7684\u306a\u30b5\u30fc\u30d3\u30b9\u306e\u8a2d\u5b9a\u65b9\u6cd5\u3092\u3044\u304f\u3064\u304b\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u4f8b\u3067\u306f\u3001Drupal\u3001Laravel\u3001\u305d\u306e\u4ed6\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30de\u30cd\u30b8\u30e1\u30f3\u30c8\u30b7\u30b9\u30c6\u30e0\u306a\u3069\u3001\u591a\u304f\u306e\u30b7\u30b9\u30c6\u30e0\u306b\u5fc5\u8981\u306aNGINX\u3001PHP\u3001MariaDB\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
\u4ee5\u4e0b\u306f\u3001Drupal\u7528\u306edocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306e\u4f8b\u3067\u3059:
docker-compose.ymlversion: '2.3'\nx-lagoon-project:\n# Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\uff08\u3053\u3053\u3092\u7de8\u96c6\u3059\u308b\u5834\u5408\u306f\u3001&lagoon-project\u3092\u4fdd\u6301\u3057\u3066\u304f\u3060\u3055\u3044\uff09\n&lagoon-project drupal-example\nx-volumes:\n&default-volumes\n# Docker\u30b3\u30f3\u30c6\u30ca\u306b\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u30de\u30a6\u30f3\u30c8\u3057\u305f\u3044\u3059\u3079\u3066\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u5b9a\u7fa9\u3057\u307e\u3059\nvolumes:\n- .:/app:delegated\nx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# \u30ed\u30fc\u30ab\u30eb\u3067\u4f7f\u7528\u3059\u308b\u30eb\u30fc\u30c8\u3002pygmy\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30eb\u30fc\u30c8\u306f *\u5fc5\u305a* .docker.amazee.io\u3067\u7d42\u308f\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n# \u30b7\u30b9\u30c6\u30e0\u3092\u672c\u756a\u74b0\u5883\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3055\u305b\u305f\u3044\u5834\u5408\u306f\u4ee5\u4e0b\u306e\u884c\u306e\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\n#LAGOON_ENVIRONMENT_TYPE: production\n# xdebug\u3092\u6709\u52b9\u306b\u3057\u3001`docker-compose up -d`\u3067\u518d\u8d77\u52d5\u3057\u305f\u3044\u5834\u5408\u306f\u4ee5\u4e0b\u306e\u884c\u306e\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\n#XDEBUG_ENABLE: \"true\"\nx-user:\n&default-user\n# \u30b3\u30f3\u30c6\u30ca\u304c\u5b9f\u884c\u3059\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30e6\u30fc\u30b6\u30fc\u3002Linux\u4e0a\u3067id `1000`\u4ee5\u5916\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u3057\u3066\u5b9f\u884c\u3059\u308b\u5834\u5408\u306b\u306f\u3053\u308c\u3092\u5909\u66f4\u3057\u307e\u3059\u3002\nuser: '1000'\nservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.name: nginx\nlagoon.persistent: /app/web/sites/default/files/\nmariadb:\nimage: uselagoon/mariadb-10.11-drupal\nlabels:\nlagoon.type: mariadb\n
\u305d\u308c\u305e\u308c\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u4f55\u3092\u610f\u5473\u3059\u308b\u304b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002
"},{"location":"ja/lagoonizing/#_4","title":"\u57fa\u672c\u8a2d\u5b9a","text":"x-lagoon-project
: \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30de\u30b7\u30f3\u540d\u3067\u3059\u3001\u3053\u3053\u3067\u5b9a\u7fa9\u3057\u307e\u3059\u3002\"drupal-example\"\u3068\u3044\u3046\u4f8b\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
x-volumes
: \u3053\u308c\u306fLagoon\u306b\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3059\u308b\u3082\u306e\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f/app
\u306b\u5b58\u5728\u3057\u307e\u3059\u304c\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3092\u8ffd\u52a0\u307e\u305f\u306f\u5909\u66f4\u3067\u304d\u307e\u3059\u3002
x-environment
:
- \u3053\u3053\u3067\u30ed\u30fc\u30ab\u30eb\u958b\u767aURL\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002Pygmy\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001
.docker.amazee.io.
\u3067\u7d42\u308f\u3089\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 - \u672c\u756a\u74b0\u5883\u3068\u5168\u304f\u540c\u3058\u74b0\u5883\u3092\u518d\u73fe\u3057\u305f\u3044\u5834\u5408\u306f\u3001
LAGOON_ENVIRONMENT_TYPE: production
\u306e\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - x-debug\u3092\u6709\u52b9\u306b\u3057\u305f\u3044\u5834\u5408\u306f\u3001
DEBUG_ENABLE: \"true\"
\u306e\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002
x-user
: \u3053\u308c\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u307b\u3068\u3093\u3069\u3042\u308a\u307e\u305b\u3093\u304c\u3001Linux\u3092\u4f7f\u7528\u3057\u3066\u3044\u30661000\u4ee5\u5916\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u3057\u3066\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306f\u5909\u66f4\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#services","title":"services
","text":"services
\u306f\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002docker-compose
\u306f\u305d\u308c\u3089\u3092\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3073\u307e\u3059\u304c\u3001\u5b9f\u969b\u306b\u306f\u30b3\u30f3\u30c6\u30ca\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002\u4eca\u5f8c\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u3067\u3053\u308c\u3089\u3092\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3073\u307e\u3059\u3002
\u30b5\u30fc\u30d3\u30b9\u306e \u540d\u524d (\u4e0a\u8a18\u306e\u4f8b\u3067\u306f nginx
\u3001php
\u3001mariadb
) \u306f\u3001\u751f\u6210\u3055\u308c\u308b Kubernetes \u30dd\u30c3\u30c9 (\u3053\u308c\u3082\u5225\u306e\u7528\u8a9e\u3067\u3059\u304c\u3001\u3053\u3053\u3067\u306f\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3073\u307e\u3059) \u306e\u540d\u524d\u3068\u3057\u3066 Lagoon \u306b\u3088\u3063\u3066\u4f7f\u7528\u3055\u308c\u3001\u3055\u3089\u306b\u5b9a\u7fa9\u3055\u308c\u305f lagoon.type
\u306b\u57fa\u3065\u3044\u3066\u4f5c\u6210\u3055\u308c\u308b\u8ffd\u52a0\u306e Kubernetes \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3068\u3057\u3066\u3082\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u3001\u30eb\u30fc\u30c8\u3001\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#docker-images","title":"Docker \u30a4\u30e1\u30fc\u30b8","text":"\u30c7\u30d7\u30ed\u30a4\u6bce\u306b\u30b5\u30fc\u30d3\u30b9\u7528\u306eDockerfile\u3092Lagoon\u304c\u30d3\u30eb\u30c9\u3059\u308b\u3088\u3046\u8a2d\u5b9a\u3057\u305f\u3044\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3067\u304d\u307e\u3059:
build
- context
: Docker \u306e build
\u30b3\u30de\u30f3\u30c9\u306b\u6e21\u3059\u3079\u304d\u30d3\u30eb\u30c9\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u30d1\u30b9\u3002 - dockerfile
: \u30d3\u30eb\u30c9\u3059\u308b Dockerfile \u306e\u5834\u6240\u3068\u540d\u524d\u3002
\u6ce8\u610f
Lagoon \u306f build: <Dockerfile>
\u306e\u77ed\u7e2e\u5f62\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u3089\u305a\u3001\u3053\u306e\u5f62\u5f0f\u306e\u5b9a\u7fa9\u304c\u898b\u3064\u304b\u308b\u3068\u30d3\u30eb\u30c9\u306b\u5931\u6557\u3057\u307e\u3059\u3002
image
- Dockerfile \u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u306a\u304f\u3001\u65e2\u5b58\u306e Dockerfile \u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001image
\u3067\u5b9a\u7fa9\u3057\u307e\u3059\u3002
\u3053\u306e\u4f8b\u3067\u306f\u3001\u73fe\u5728\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002NGINX \u306f nginx.dockerfile
\u3092\u30d3\u30eb\u30c9\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3001PHP \u306f php.dockerfile
\u3092\u30d3\u30eb\u30c9\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002MariaDB \u306f uselagoon/mariadb-10.11-drupal
\u306e\u65e2\u5b58\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002Docker \u30a4\u30e1\u30fc\u30b8\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089 \u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#types","title":"\u30bf\u30a4\u30d7","text":"Lagoon\u306f\u3001\u6b63\u3057\u3044Kubernetes\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30d7\u3092\u77e5\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u3053\u308c\u306f lagoon.type
\u30e9\u30d9\u30eb\u3092\u4ecb\u3057\u3066\u884c\u308f\u308c\u307e\u3059\u3002\u9078\u629e\u3067\u304d\u308b\u30bf\u30a4\u30d7\u306f\u591a\u5c90\u306b\u308f\u305f\u308a\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u30bf\u30a4\u30d7\u3068\u8ffd\u52a0\u7684\u306a\u8a2d\u5b9a\u53ef\u80fd\u6027\u3092\u898b\u308b\u305f\u3081\u306b\u3001\u516c\u958b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 Service Types \u3092\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002
\u4f8b\u3067\u306f\u3001PHP\u3068NGINX\u306e\u30b5\u30fc\u30d3\u30b9\u306f nginx-php-persistent
\u3068\u3057\u3066\u30bf\u30a4\u30d7\u306e\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30dd\u30c3\u30c9\u3068\u547c\u3070\u308c\u308b\u3082\u306e\u3067\u3059\u3002
"},{"location":"ja/lagoonizing/#_5","title":"\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30dd\u30c3\u30c9","text":"Kubernetes\u306f\u5358\u72ec\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u4e00\u3064\u307e\u305f\u306f\u8907\u6570\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u542b\u3080\u30dd\u30c3\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002\u901a\u5e38\u3001Lagoon\u306f\u5b9a\u7fa9\u3055\u308c\u305f docker-compose
\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3057\u3066\u3001\u4e00\u3064\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u542b\u3080\u5358\u4e00\u306e\u30dd\u30c3\u30c9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u4e00\u90e8\u306e\u30b1\u30fc\u30b9\u3067\u306f\u3001\u4e92\u3044\u306b\u4f9d\u5b58\u5ea6\u304c\u9ad8\u3044\u305f\u3081\u3001\u4e8c\u3064\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u5358\u4e00\u306e\u30dd\u30c3\u30c9\u5185\u306b\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002Drupal\u306e\u3088\u3046\u306a\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306ePHP\u30b3\u30fc\u30c9\u3092\u542b\u3080PHP\u3068NGINX\u30b3\u30f3\u30c6\u30ca\u304c\u305d\u306e\u4f8b\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u30b1\u30fc\u30b9\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066Lagoon\u306b\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u4e00\u7dd2\u306b\u914d\u7f6e\u3055\u308c\u308b\u3079\u304d\u304b\u3092\u6307\u793a\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059:
- \u4e8c\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u5fc5\u8981\u306a
lagoon.type
\u3092\u6307\u5b9a\u3057\u3066\u3001\u305d\u308c\u305e\u308c\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\uff08\u3053\u306e\u4f8b\u3067\u306f\u3001NGINX\u3068PHP\u306e\u30b5\u30fc\u30d3\u30b9\u306bnginx-php-persistent
\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\uff09\u3002 - \u4e8c\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u306e
lagoon.name
\u30e9\u30d9\u30eb\u3092\u4e00\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u4e00\u81f4\u3055\u305b\u3066\u30ea\u30f3\u30af\u3057\u307e\u3059\uff08\u4f8b\u3067\u306flagoon.name: nginx
\u306b\u3088\u308a\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\uff09\u3002
\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u306f nginx
\u3068 php
\u306e\u30b5\u30fc\u30d3\u30b9\u304c nginx
\u3068\u547c\u3070\u308c\u308b\u30dd\u30c3\u30c9\u306b\u7d50\u5408\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3057\u307e\u3059\u3002
Lagoon\u306f2\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u3046\u3061\u3069\u3061\u3089\u304c\u500b\u3005\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3067\u3042\u308b\u304b(\u3053\u306e\u5834\u5408\u306f nginx
\u3068 php
)\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u4e00\u81f4\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u306e\u30b5\u30fc\u30d3\u30b9\u540d\u3092\u691c\u7d22\u3059\u308b\u3053\u3068\u3067\u884c\u3044\u307e\u3059\u3002 nginx-php-persistent
\u306f\u3001 docker-compose.yml
\u306e\u4e2d\u3067 nginx
\u3068\u3044\u3046\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u3068 php
\u3068\u3044\u3046\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u3059\u3002
\u30b5\u30fc\u30d3\u30b9\u540d\u3092\u5909\u66f4\u3057\u305f\u3044\u5834\u5408\u3084\u3001nginx-php-persistent
\u30bf\u30a4\u30d7\u306e\u8907\u6570\u306e\u30dd\u30c3\u30c9\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001lagoon.deployment.servicetype
\u3068\u3044\u3046\u8ffd\u52a0\u306e\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u5b9f\u969b\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002
\u4ee5\u4e0b\u306b\u3001\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30dd\u30c3\u30c9\u3092\u3088\u308a\u8a73\u7d30\u306b\u8a2d\u5b9a\u3059\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059:
docker-compose.ymlnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # \u3053\u308c\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001Lagoon\u306f\u30b3\u30f3\u30c6\u30ca\u306e\u540d\u524d\u3001\u3053\u306e\u5834\u5408\u306fnginx\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\nlagoon.deployment.servicetype: nginx\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092Lagoon\u306enginx\u30dd\u30c3\u30c9\u306e\u4e00\u90e8\u306b\u3057\u305f\u3044\u3067\u3059\u3002\nlagoon.deployment.servicetype: php\n
docker-compose.yml\u3067\u3067\u304d\u308b\u3053\u3068\u306f\u3082\u3063\u3068\u3042\u308a\u307e\u3059\u304c\u3001\u30b5\u30fc\u30d3\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u6700\u3082\u91cd\u8981\u306a\u90e8\u5206\u3067\u3059\u3002docker-compose.yml
\u306b\u95a2\u3059\u308b\u6211\u3005\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u4ed6\u306b\u4f55\u304c\u3067\u304d\u308b\u304b\u3092\u5b66\u3093\u3067\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#lagoonyml","title":".lagoon.yml
","text":".lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u306e\u4e2d\u5fc3\u3068\u306a\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3001\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u542b\u3093\u3067\u3044\u307e\u3059:
- \u30b5\u30a4\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u30eb\u30fc\u30c8\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
- \u30d7\u30ec\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
- \u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b\u3002
- SSL\u8a3c\u660e\u66f8\u3092\u8a2d\u5b9a\u3059\u308b\u3002
- \u74b0\u5883\u306e\u305f\u3081\u306ecron\u30b8\u30e7\u30d6\u3092\u8ffd\u52a0\u3059\u308b\u3002
.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30eb\u30fc\u30c8\u306b\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u4ee5\u4e0b\u306f\u3001Drupal\u30b5\u30a4\u30c8\u7528\u306e\u69d8\u3005\u306a\u8a2d\u5b9a\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u793a\u3059.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u306e\u4f8b\u3067\u3059:
.lagoon.ymldocker-compose-yaml: docker-compose.yml\nenvironment_variables:\ngit_sha: 'true'\ntasks:\npre-rollout:\n- run:\nname: drush sql-dump\ncommand: mkdir -p /app/web/sites/default/files/private/ && drush sql-dump --ordered-dump --gzip --result-file=/app/web/sites/default/files/private/pre-deploy-dump.sql.gz\nservice: cli\npost-rollout:\n- run:\nname: drush cim\ncommand: drush -y cim\nservice: cli\nshell: bash\n- run:\nname: drush cr\ncommand: drush -y cr\nservice: cli\nroutes:\ninsecure: Redirect\nenvironments:\nmain:\nmonitoring_urls:\n- \"www.example.com\"\n- \"www.example.com/special_page\"\nroutes:\n- nginx:\n- example.com\n- example.net\n- \"www.example.com\":\ntls-acme: 'true'\ninsecure: Redirect\nhsts: max-age=31536000\n- \"example.ch\":\nAnnotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # 1\u6642\u9593\u306b1\u56decron\u3092\u5b9f\u884c\u3057\u307e\u3059\ncommand: drush cron\nservice: cli\nstaging:\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # 1\u6642\u9593\u306b1\u56decron\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\ncommand: drush cron\nservice: cli\n
"},{"location":"ja/lagoonizing/#_6","title":"\u4e00\u822c\u8a2d\u5b9a","text":""},{"location":"ja/lagoonizing/#docker-compose-yaml","title":"docker-compose-yaml
","text":"\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30d3\u30eb\u30c9\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u3069\u306edocker-compose
YAML\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3079\u304d\u304b\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u30b3\u30f3\u30c6\u30ca\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u304b\u3092\u5224\u65ad\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306fdocker-compose.yml
\u3067\u3059\u304c\u3001\u7279\u5b9a\u306eLagoon docker-compose
YAML\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u306a\u5834\u5408\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#environment_variablesgit_sha","title":"environment_variables.git_sha
","text":"\u3053\u306e\u8a2d\u5b9a\u306b\u3088\u308a\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f Git SHA \u3092\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u633f\u5165\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u5024\u3092 true
\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001SHA \u304c\u74b0\u5883\u5909\u6570 LAGOON_GIT_SHA
\u3068\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#tasks","title":"\u30bf\u30b9\u30af","text":"\u30d3\u30eb\u30c9\u30d5\u30ed\u30fc\u306e\u4e2d\u3067\u5b9f\u884c\u3055\u308c\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u306b\u3088\u3063\u3066\u3001\u7570\u306a\u308b\u30bf\u30a4\u30d7\u306e\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\uff1a
"},{"location":"ja/lagoonizing/#pre-rollout-tasks-pre_rolloutirun","title":"\u30d7\u30ec\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af - pre_rollout.[i].run
","text":"pre_rollout
\u30bf\u30b9\u30af\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u30bf\u30b9\u30af\u306f\u3001\u65b0\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u304c\u6b63\u5e38\u306b\u30d3\u30eb\u30c9\u3055\u308c\u305f \u5f8c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u4f55\u3089\u304b\u306e\u5f62\u3067\u5909\u66f4\u3055\u308c\u308b \u524d \u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306b\u3088\u308a\u3001\u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e\u4f8b\u306e\u3088\u3046\u306b\u3001\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u306e\u5b9f\u884c\u524d\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30c0\u30f3\u30d7\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3067\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#post-rollout-tasks-post_rolloutirun","title":"\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af - post_rollout.[i].run
","text":"\u3053\u3053\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u6761\u4ef6\u304c\u6e80\u305f\u3055\u308c\u305f\u5f8c\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u306e\u3042\u308b\u30bf\u30b9\u30af\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\uff1a
- \u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u6b63\u5e38\u306b\u30d3\u30eb\u30c9\u3055\u308c\u305f
- \u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u65b0\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u3067\u66f4\u65b0\u3055\u308c\u305f
- \u5b9f\u884c\u4e2d\u306e\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u6e96\u5099\u72b6\u614b\u30c1\u30a7\u30c3\u30af\u306b\u5408\u683c\u3057\u305f
post_rollout
\u30bf\u30b9\u30af\u306e\u4e00\u822c\u7684\u306a\u7528\u9014\u306b\u306f\u3001drush updb
\u3001drush cim
\u306e\u5b9f\u884c\u3001\u307e\u305f\u306f\u3055\u307e\u3056\u307e\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30a2\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001drush cim
\u3068 drush cr
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
name
- name \u306f\u3001\u30ed\u30b0\u3067\u5404\u30bf\u30b9\u30af\u3092\u8b58\u5225\u3057\u3084\u3059\u304f\u3059\u308b\u305f\u3081\u306e\u4efb\u610f\u306e\u30e9\u30d9\u30eb\u3067\u3059\u3002
command
- \u3053\u3053\u3067\u306f\u3001\u5b9f\u884c\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3001\u5404\u30b3\u30f3\u30c6\u30ca\u306e
WORKDIR
\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002Lagoon \u30a4\u30e1\u30fc\u30b8\u306e\u5834\u5408\u3001\u3053\u308c\u306f /app
\u3067\u3059\u3002\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u7279\u5b9a\u306e\u5834\u6240\u306b cd
\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u306e\u70b9\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
service
- \u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u3002\u79c1\u305f\u3061\u306edrupal-example\u306b\u5f93\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u308c\u306fCLI\u30b3\u30f3\u30c6\u30ca\u306b\u306a\u308a\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001\u305d\u308c\u306f\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u306e\u30b3\u30fc\u30c9\u3001\u30d5\u30a1\u30a4\u30eb\u3001\u305d\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u3092\u5168\u3066\u6301\u3063\u3066\u3044\u308b\u304b\u3089\u3067\u3059\u3002\u901a\u5e38\u3001\u3053\u308c\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
shell
\u30bf\u30b9\u30af\u306e\u5b9f\u884c\u306b\u4f7f\u7528\u3059\u308b\u30b7\u30a7\u30eb\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f sh
\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u304c\u3001\u30b3\u30f3\u30c6\u30ca\u306b\u4ed6\u306e\u30b7\u30a7\u30eb(bash\u306a\u3069)\u304c\u3042\u308b\u5834\u5408\u3001\u3053\u3053\u3067\u305d\u308c\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u5185\u3067\u3044\u304f\u3064\u304b\u306e\u5c0f\u3055\u306aif/else bash\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306b\u4fbf\u5229\u3067\u3059\u3002(\u4e0a\u8a18\u306e\u4f8b\u3067\u8907\u6570\u884c\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u66f8\u304f\u65b9\u6cd5\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044)\u3002
"},{"location":"ja/lagoonizing/#routes","title":"\u30eb\u30fc\u30c8","text":""},{"location":"ja/lagoonizing/#routesautogenerateenabled","title":"routes.autogenerate.enabled
","text":"\u3053\u308c\u306b\u3088\u308a\u3001\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u3092\u5b8c\u5168\u306b\u7121\u52b9\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u74b0\u5883\u3054\u3068\u306e\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u3092\u7121\u52b9\u306b\u3059\u308b\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u8a73\u7d30\u306f\u4e0b\u8a18\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#routesautogenerateinsecure","title":"routes.autogenerate.insecure
","text":"\u3053\u308c\u306b\u3088\u308a\u3001\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u306e\u52d5\u4f5c\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u74b0\u5883\u3054\u3068\u306e\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff08\u8a73\u7d30\u306f\u5f8c\u8ff0\uff09\u3002\u3053\u308c\u306f\u4e0a\u8a18\u306e\u4f8b\u3067\u4f7f\u7528\u3057\u3066\u3044\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3001insecure: Redirect
\u3068\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
\u4ee5\u4e0b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u3059:
Allow
- HTTP\u3068HTTPS\u306e\u4e21\u65b9\u306e\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059(\u3053\u308c\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3059)\u3002
Redirect
- \u3059\u3079\u3066\u306eHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092HTTPS\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002
None
- HTTP\u306e\u30eb\u30fc\u30c8\u306f\u4f5c\u6210\u3055\u308c\u305a\u3001\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3082\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/lagoonizing/#_7","title":"\u74b0\u5883","text":"\u74b0\u5883\u540d\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u307e\u305f\u306f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u4e00\u81f4\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5404\u74b0\u5883\u306f\u7570\u306a\u308b\u8a2d\u5b9a\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u4f8b\u3067\u306f\u3001main\u3068staging\u306e\u74b0\u5883\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_8","title":"\u7279\u5b9a\u306e\u30d1\u30b9\u306e\u76e3\u8996","text":"UptimeRobot\u304c\u30af\u30e9\u30b9\u30bf\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001Lagoon\u306f\u5404\u30eb\u30fc\u30c8/\u30a4\u30f3\u30b0\u30ec\u30b9\u306bstakater/IngressControllerMonitor
\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u6ce8\u5165\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u52d5\u4f5c\u306f\u30eb\u30fc\u30c8\u306e\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u3092\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u7279\u5b9a\u306e\u30eb\u30fc\u30c8\u3092\u76e3\u8996\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001\u30eb\u30fc\u30c8\u306e\u4ed5\u69d8\u306bmonitoring-path
\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3053\u308c\u3092\u4e0a\u66f8\u304d\u3067\u304d\u307e\u3059\u3002\u4e00\u822c\u7684\u306a\u4f7f\u7528\u6cd5\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30d0\u30a4\u30d1\u30b9\u3059\u308b\u76e3\u8996\u7528\u306e\u30d1\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u30b5\u30a4\u30c8\u306e\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u76e3\u8996\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002
.lagoon.yml\u306e\u4f8b - \"www.example.com\":\nmonitoring-path: \"/bypass-cache\"\n
"},{"location":"ja/lagoonizing/#environmentsnameroutes","title":"environments.[name].routes
","text":"\u30eb\u30fc\u30c8\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u74b0\u5883\u304c\u5fdc\u7b54\u3059\u308b\u30c9\u30e1\u30a4\u30f3\u540d\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u901a\u5e38\u3001\u672c\u756a\u74b0\u5883\u7528\u306e\u30eb\u30fc\u30c8\u306e\u307f\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u74b0\u5883\u306f\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u304c\u3001\u672c\u756a\u4ee5\u5916\u306e\u74b0\u5883\u304c\u72ec\u81ea\u306e\u30c9\u30e1\u30a4\u30f3\u540d\u3092\u5fc5\u8981\u3068\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u6307\u5b9a\u3057\u3001DNS\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3067\u305d\u306e\u30c9\u30e1\u30a4\u30f3\u3092\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u540d\u3078\u306eCNAME\u3068\u3057\u3066\u8ffd\u52a0\u3067\u304d\u307e\u3059\uff08\u3053\u308c\u3089\u306e\u30eb\u30fc\u30c8\u306f\u30c7\u30d7\u30ed\u30a4\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u516c\u958b\u3055\u308c\u307e\u3059\uff09\u3002
\u74b0\u5883\u8a2d\u5b9a\u306e\u5f8c\u306b\u8a18\u8ff0\u3055\u308c\u308b\u6700\u521d\u306e\u8981\u7d20\u306f\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u30b5\u30fc\u30d3\u30b9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u4f8b\u3067\u306fNGINX\u304c\u30bf\u30fc\u30b2\u30c3\u30c8\u30b5\u30fc\u30d3\u30b9\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u53d7\u4fe1\u3057\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u8ee2\u9001\u3059\u308b\u304b\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
\u6700\u3082\u30b7\u30f3\u30d7\u30eb\u306a\u30eb\u30fc\u30c8\u306f\u3001\u4e0a\u8a18\u306e\u30b5\u30f3\u30d7\u30eb.lagoon.yml
\u306b\u3042\u308bexample.com
\u306e\u4f8b\u3067\u3059\u3002\u8ffd\u52a0\u306e\u8a2d\u5b9a\u304c\u306a\u3044\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30eb\u30fc\u30c8\u306bLet's Encrypt\u8a3c\u660e\u66f8\u304c\u5fc5\u8981\u3067\u3001HTTPS\u304b\u3089HTTP\u3078\u306e\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u304c\u4e0d\u8981\u3067\u3042\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_9","title":"\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3","text":"\u60c5\u5831
\u30eb\u30fc\u30c8/\u30a4\u30f3\u30b0\u30ec\u30b9\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3001nginx-ingress
\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u30af\u30e9\u30b9\u30bf\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306f\u3001Lagoon\u7ba1\u7406\u8005\u306b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3001nginx-ingress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308bYAML\u30de\u30c3\u30d7\u5f62\u5f0f\u3067\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u7c21\u5358\u306a\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306b\u4fbf\u5229\u3067\u3059:
\u4f8b\u3048\u3070\u3001example.ch
\u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092https://www.example.ch
\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u3001\u30d5\u30a9\u30eb\u30c0\u3084\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u7dad\u6301\u3057\u305f\u3044\u5834\u5408\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059:
(example.com/folder?query -> https://www.example.ch/folder?query)
.lagoon.yml \u306e\u4f8b - \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\n
\u3082\u3061\u308d\u3093\u3001Lagoon\u3067\u30db\u30b9\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u4ed6\u306eURL\u3078\u306e\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3082\u53ef\u80fd\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001example.de
\u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092https://www.google.com
\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u5834\u5408:
.lagoon.yml \u306e\u4f8b - \"example.de\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.google.com\n
"},{"location":"ja/lagoonizing/#ssl-tls-acme","title":"SSL\u8a2d\u5b9a - tls-acme
","text":"tls-acme : \u2018true\u2019
- Lagoon\u306b\u305d\u306e\u30eb\u30fc\u30c8\u306b\u5bfe\u3057\u3066Let's Encrypt\u8a3c\u660e\u66f8\u3092\u767a\u884c\u3059\u308b\u3088\u3046\u6307\u793a\u3057\u307e\u3059\u3002\u3053\u308c\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3059\u3002
- Let's Encrypt\u304c\u4e0d\u8981\u306a\u5834\u5408\u3001\u3053\u308c\u3092
tls-acme: \u2018false\u2019
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002
insecure
Allow
\uff1aHTTP\u3068HTTPS\u4e21\u65b9\u306e\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09\u3002 Redirect
\uff1aHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092HTTPS\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002 None
\uff1aHTTP\u30eb\u30fc\u30c8\u306f\u4f5c\u6210\u3055\u308c\u305a\u3001\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3082\u884c\u308f\u308c\u307e\u305b\u3093\u3002
None
- HTTP\u306e\u30eb\u30fc\u30c8\u306f\u4f5c\u6210\u3055\u308c\u305a\u3001\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3082\u884c\u308f\u308c\u307e\u305b\u3093\u3002
Hsts
max-age=31536000;includeSubDomains;preload
\u306e\u3088\u3046\u306a\u5024\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002 - \u30b9\u30da\u30fc\u30b9\u3084\u4ed6\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
max-age
\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u307f\u304c\u5fc5\u9808\u3067\u3059\u3002\u3053\u308c\u306fHSTS\u30dd\u30ea\u30b7\u30fc\u306e\u6709\u52b9\u671f\u9593\u3092\u79d2\u5358\u4f4d\u3067\u6307\u5b9a\u3057\u307e\u3059\u3002
Info
\u8a3c\u660e\u66f8\u8a8d\u8a3c\u5c40(CA)\u306b\u3088\u3063\u3066\u7f72\u540d\u3055\u308c\u305f SSL \u8a3c\u660e\u66f8\u304b\u3089 Let's Encrypt \u8a3c\u660e\u66f8\u306b\u5207\u308a\u66ff\u3048\u308b\u4e88\u5b9a\u304c\u3042\u308b\u5834\u5408\u306f\u3001Lagoon \u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u79fb\u884c\u3092\u76e3\u7763\u3057\u3066\u3082\u3089\u3046\u306e\u304c\u6700\u5584\u3067\u3059\u3002
"},{"location":"ja/lagoonizing/#environmentsnametypes","title":"environments.[name].types
","text":"Lagoon \u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306e lagoon.type
\u30e9\u30d9\u30eb\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u3069\u306e\u30bf\u30a4\u30d7\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u304b\u3092\u5224\u65ad\u3057\u307e\u3059(docker-compose.yml \u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u7d30\u3092\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u7279\u5b9a\u306e\u74b0\u5883\u3067\u306e\u307f\u30bf\u30a4\u30d7\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#service-name-service-type","title":"`service-name: service-type","text":" service-name
\u306fdocker-compose.yml
\u304b\u3089\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3067\u3059\u3002 service-type
\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u4f7f\u7528\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30d7\u3067\u3059\u3002
\u4f8b\u3048\u3070\u3001main
\u3068\u3044\u3046\u540d\u524d\u306e\u672c\u756a\u74b0\u5883\u7528\u306bMariaDB-Galera\u306e\u9ad8\u53ef\u7528\u6027\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f7f\u7528\u3057\u305f\u3044\u5834\u5408:
.lagoon.yml \u4f8benvironments:\nmain:\ntypes:\nmariadb: mariadb-galera\n
"},{"location":"ja/lagoonizing/#environmentsnametemplates","title":"environments.[name].templates
","text":"Lagoon\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306elagoon.template
\u30e9\u30d9\u30eb\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u30b5\u30fc\u30d3\u30b9\u306b\u30ab\u30b9\u30bf\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059(docker-compose.yml\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u7279\u5b9a\u306e\u74b0\u5883\u3067\u306e\u307f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u5834\u5408:
"},{"location":"ja/lagoonizing/#service-name-template-file","title":"service-name: template-file
","text":" service-name
\u306f\u3001docker-compose.yml
\u304b\u3089\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3067\u3059\u3002 template-file
\u306f\u3001\u3053\u306e\u74b0\u5883\u3067\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u4f7f\u7528\u3059\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30d1\u30b9\u3068\u540d\u524d\u3067\u3059\u3002
.lagoon.yml \u4f8benvironments:\nmain:\ntemplates:\nmariadb: mariadb.main.deployment.yml\n
"},{"location":"ja/lagoonizing/#environmentsnamerollouts","title":"environments.[name].rollouts
","text":"Lagoon\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306elagoon.rollout
\u30e9\u30d9\u30eb\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u30b5\u30fc\u30d3\u30b9\u306b\u30ab\u30b9\u30bf\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059(docker-compose.yml\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u3059\u3079\u3066\u306e\u74b0\u5883\u306b\u5bfe\u3057\u3066\u3067\u306f\u306a\u304f\u3001\u3072\u3068\u3064\u306e\u74b0\u5883\u306b\u5bfe\u3057\u3066\u3060\u3051\u30bf\u30a4\u30d7\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#service-name-rollout-type","title":"service-name: rollout-type
","text":" service-name
\u306f\u4e0a\u66f8\u304d\u3057\u305f\u3044docker-compose.yml
\u306e\u30b5\u30fc\u30d3\u30b9\u540d\u3067\u3059\u3002 rollout-type
\u306f\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u306e\u30bf\u30a4\u30d7\u3067\u3059\u3002\u53ef\u80fd\u306a\u5024\u306b\u3064\u3044\u3066\u306fdocker-compose.yml\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
.lagoon.yml \u4f8benvironments:\nmain:\nrollouts:\nmariadb: statefulset\n
"},{"location":"ja/lagoonizing/#cron-environmentsnamecronjobs","title":"Cron\u30b8\u30e7\u30d6 - environments.[name].cronjobs
","text":"\u901a\u5e38\u3001\u5168\u3066\u306e\u74b0\u5883\u3067\u540c\u3058Cron\u30b8\u30e7\u30d6\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u671b\u307e\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u306e\u305f\u3081\u3001\u5404\u74b0\u5883\u3067\u5b9f\u884c\u3057\u305f\u3044\u30b8\u30e7\u30d6\u3092\u660e\u793a\u7684\u306b\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3068\u3057\u3066\u30011\u6642\u9593\u306b1\u56de\u5b9f\u884c\u3059\u308bdrush cron\u30b8\u30e7\u30d6\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
name
- Cron\u30b8\u30e7\u30d6\u306e\u76ee\u7684\u3092\u8b58\u5225\u3059\u308b\u305f\u3081\u306e\u308f\u304b\u308a\u3084\u3059\u3044\u540d\u524d\u3002
schedule
- Cron\u30b8\u30e7\u30d6\u306e\u5b9f\u884c\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002\u6a19\u6e96\u7684\u306acron\u8a18\u6cd5\u306b\u5f93\u3044\u307e\u3059\u3002\u69cb\u6587\u304c\u4e0d\u660e\u306a\u5834\u5408\u306f\u3001Crontab Generator\u304c\u5f79\u7acb\u3061\u307e\u3059\u3002
- \u5206
M
\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u6bce\u6642\u9593\u30e9\u30f3\u30c0\u30e0\u306a\u5206\uff08\u6bce\u6642\u540c\u3058\u5206\uff09\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002M/15
\u3068\u3059\u308b\u306815\u5206\u3054\u3068\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u304c\u3001\u6642\u9593\u304b\u3089\u306e\u30aa\u30d5\u30bb\u30c3\u30c8\u306f\u30e9\u30f3\u30c0\u30e0\u3067\u3059\uff08\u4f8b\uff1a6, 21, 36, 51\uff09\u3002 - \u6642
H
\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u6bce\u65e5\u30e9\u30f3\u30c0\u30e0\u306a\u6642\u9593\uff08\u6bce\u65e5\u540c\u3058\u6642\u9593\uff09\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002H(2-4)
\u3068\u3059\u308b\u3068\u30012\u6642\u304b\u30894\u6642\u306e\u9593\u306b1\u56de\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002
command
- \u5b9f\u884c\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3002\u30bf\u30b9\u30af\u3068\u540c\u69d8\u306b\u3001\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u30b5\u30fc\u30d3\u30b9\u306e
WORKDIR
\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002Lagoon\u306e\u30a4\u30e1\u30fc\u30b8\u3067\u306f\u3001\u3053\u308c\u306f /app
\u3067\u3059\u3002
service
- \u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b5\u30fc\u30d3\u30b9\u3002\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3053\u308c\u306fCLI\u30b5\u30fc\u30d3\u30b9\u3067\u3059\u3002
.lagoon.yml
\u3067\u3067\u304d\u308b\u3053\u3068\u306f\u307e\u3060\u305f\u304f\u3055\u3093\u3042\u308a\u307e\u3059\u3002\u8a73\u7d30\u306f .lagoon.yml
\u306b\u3064\u3044\u3066\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 \u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#drupal","title":"Drupal\u7279\u6709\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7","text":"Drupal\u30b5\u30a4\u30c8\u3092Lagoon\u306b\u79fb\u884c\u3059\u308b\u5834\u5408\u3001\u5168\u3066\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u3044\u304f\u3064\u304bDrupal\u7279\u6709\u306e\u30bf\u30b9\u30af\u3092\u5b8c\u4e86\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_10","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u66f4\u65b0\u3067\u3059\u3002Lagoon\u306f\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u74b0\u5883\u56fa\u6709\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u6a5f\u5bc6\u60c5\u5831\u304c\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3055\u308c\u308b\u3053\u3068\u306f\u306a\u304f\u3001\u3059\u3079\u3066\u5b89\u5168\u306b\u30b3\u30df\u30c3\u30c8\u3067\u304d\u307e\u3059\u3002\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u69d8\u3005\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f8b\u304c\u3042\u308a\u307e\u3059\u3002\u65b0\u898f\u306b\u59cb\u3081\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u3089\u306e\u4f7f\u7528\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u306f\u3001\u985e\u4f3c\u306e\u3082\u306e\u3092\u9078\u3093\u3067\u95a2\u9023\u3059\u308b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u74b0\u5883\u5909\u6570\u306e\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001\u74b0\u5883\u5909\u6570\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
\u30ea\u30dd\u30b8\u30c8\u30ea\u304b\u3089\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3057\u3001\u30b5\u30a4\u30c8\u3067\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u8a2d\u5b9a\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\uff08\u4f8b\uff1a\u3059\u3079\u3066\u306e\u30b5\u30a4\u30c8\u304cSolr\u3084Redis\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff09\u3002\u7279\u5b9a\u306e\u74b0\u5883\u30bf\u30a4\u30d7\uff08\u958b\u767a\u74b0\u5883\u3067\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u7121\u52b9\u5316\u306a\u3069\uff09\u306e\u8a2d\u5b9a\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001\u8ffd\u52a0\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\uff08\u4f8b\u793a\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\uff09\u3002\u30d5\u30a1\u30a4\u30eb\u306f\u4ee5\u4e0b\u306e\u9806\u5e8f\u3067\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3059\uff1a
settings.php all.settings.php\n all.services.yml\n production.settings.php\n production.services.yml\n development.settings.php\n development.services.yml\n settings.local.php\n services.local.yml\n
"},{"location":"ja/lagoonizing/#gitignore","title":".gitignore
\u306e\u8a2d\u5b9a\u3092\u66f4\u65b0\u3059\u308b","text":".gitignore
\u304c\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30df\u30c3\u30c8\u3092\u8a31\u53ef\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002Drupal\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067sites/*/settings*.php
\u3068sites/*/services*.yml
\u3092.gitignore
\u306b\u542b\u3081\u3066\u3044\u307e\u3059\u3002Lagoon\u3067\u306f\u6a5f\u5bc6\u60c5\u5831\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u4fdd\u5b58\u3057\u306a\u3044\u306e\u3067\u3001\u3053\u308c\u3089\u3092\u524a\u9664\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#drupalwebroot","title":"Drupal\u306eWebroot\u306b\u3064\u3044\u3066\u306e\u6ce8\u610f\u70b9","text":"\u6b8b\u5ff5\u306a\u304c\u3089\u3001Drupal\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u30a6\u30a7\u30d6\u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0\u540d\u3092\u6a19\u6e96\u5316\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3088\u3063\u3066\u306fDrupal\u3092/web
\u5185\u306b\u3001\u4ed6\u306f/docroot
\u3084\u4ed6\u306e\u5834\u6240\u306b\u914d\u7f6e\u3057\u3066\u3044\u307e\u3059\u3002Lagoon Drupal\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u3001Drupal\u304c/web
\u5185\u306b\u3042\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u3082\u3057\u3042\u306a\u305f\u306eDrupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u7570\u306a\u308b\u5834\u5408\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u9069\u5b9c\u8abf\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#_11","title":"\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9\u3059\u308b","text":"\u307e\u305a\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
build your imagesdocker-compose build\n
\u3053\u308c\u306b\u306f\u6570\u5206\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u3001\u9577\u3044\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u8fd4\u3063\u3066\u304d\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u3082\u306e\u306b\u306a\u308b\u306f\u305a\u3067\u3059\u3002
\u3053\u308c\u306b\u3088\u308a\u3001docker-compose\u306fdocker-compose.yml
\u5185\u3067build:
\u5b9a\u7fa9\u304c\u3042\u308b\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3057\u307e\u3059\u3002\u901a\u5e38\u3001Drupal\u306e\u5834\u5408\u3001\u3053\u308c\u306b\u306fcli
\u3001nginx
\u3001php
\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u7279\u5b9a\u306e\u30d3\u30eb\u30c9\u30b3\u30de\u30f3\u30c9\uff08composer install
\u306a\u3069\uff09\u3092\u5b9f\u884c\u3057\u305f\u308a\u3001\u7279\u5b9a\u306e\u74b0\u5883\u5909\u6570\uff08WEBROOT
\u306a\u3069\uff09\u3092\u30a4\u30e1\u30fc\u30b8\u306b\u6ce8\u5165\u3057\u305f\u308a\u3059\u308b\u305f\u3081\u306b\u884c\u3044\u307e\u3059\u3002
\u901a\u5e38\u3001 Drupal\u306e\u30b3\u30fc\u30c9\u3092\u7de8\u96c6\u3059\u308b\u305f\u3073\u306b\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093(\u30b3\u30fc\u30c9\u306f\u30db\u30b9\u30c8\u304b\u3089\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u307e\u3059)\u3001\u3057\u304b\u3057\u518d\u30d3\u30eb\u30c9\u306f\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u3055\u3089\u306b\u3001Lagoon\u306f\u30c7\u30d7\u30ed\u30a4\u4e2d\u306b\u5168\u304f\u540c\u3058Docker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u306e\u3067\u3001docker-compose build
\u3092\u518d\u5ea6\u5b9f\u884c\u3059\u308b\u3060\u3051\u3067\u3001\u30d3\u30eb\u30c9\u304c\u30c7\u30d7\u30ed\u30a4\u4e2d\u306b\u3082\u6a5f\u80fd\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_12","title":"\u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5","text":"\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u305f\u306e\u3067\u3001\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3067\u304d\u307e\u3059:
start the containersdocker-compose up -d\n
\u6b21\u306e\u3088\u3046\u306a\u5fdc\u7b54\u304c\u8868\u793a\u3055\u308c\u307e\u3059:
containers started\u279c lagoon-test git:(main) docker compose up -d\nRecreating lagoon-test_cli_1 ... done\nStarting lagoon-test_redis_1 ... done\nStarting lagoon-test_solr_1 ... done\nStarting lagoon-test_mariadb_1 ... done\nRecreating lagoon-test_php_1 ... done\nRecreating lagoon-test_nginx_1 ... done\nRecreating lagoon-test_varnish_1 ... done\n
\u3053\u308c\u306b\u3088\u308a\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002\u30b3\u30de\u30f3\u30c9\u304c\u5b8c\u4e86\u3057\u305f\u5f8c\u3001docker compose ps
\u3067\u78ba\u8a8d\u3057\u3066\u3001\u3059\u3079\u3066\u5b8c\u5168\u306b\u8d77\u52d5\u3057\u3001\u30af\u30e9\u30c3\u30b7\u30e5\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5fdc\u7b54\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308b\u306f\u305a\u3067\u3059:
view running containers\u279c lagoon-test git:(main) docker compose ps\nName Command State Ports\n----------------------------------------------------------------------------------------\nlagoon-test_cli_1 /sbin/tini -- /lagoon/entr ... Up 9000/tcp\nlagoon-test_mariadb_1 /sbin/tini -- /lagoon/entr ... Up 0.0.0.0:32768->3306/tcp\nlagoon-test_nginx_1 /sbin/tini -- /lagoon/entr ... Up 8080/tcp\nlagoon-test_php_1 /sbin/tini -- /lagoon/entr ... Up 9000/tcp\nlagoon-test_redis_1 /sbin/tini -- /lagoon/entr ... Up 6379/tcp\nlagoon-test_solr_1 /sbin/tini -- /lagoon/entr ... Up 0.0.0.0:32769->8983/tcp\n
\u554f\u984c\u304c\u3042\u308b\u5834\u5408\u306f\u3001 docker-compose logs -f [servicename]
\u3092\u4f7f\u7528\u3057\u3066\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#composer-installcomposer","title":"composer install
\u306e\u518d\u5b9f\u884c\uff08Composer\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u307f\uff09","text":"Drupal 8\u4ee5\u964d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u3001Composer\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u306f\u305a\u3067\u3059\u3002\u5168\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002cli\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3057\u3001composer install
\u3092\u5b9f\u884c\u3057\u307e\u3059\uff1a
re-run composer installdocker-compose exec cli bash\n[drupal-example]cli-drupal:/app$ composer install\n
\u3053\u308c\u306f\u5947\u5999\u306b\u805e\u3053\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u30d3\u30eb\u30c9\u6bb5\u968e\u3067\u3059\u3067\u306bcomposer install
\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u304b\u3089\u3067\u3059\u3002\u518d\u5ea6\u5b9f\u884c\u3059\u308b\u7406\u7531\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a
- \u30db\u30b9\u30c8\u4e0a\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3057\u3001\u3059\u3050\u306b\u30b3\u30f3\u30c6\u30ca\u3067\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e
docker-composer.yml
\u306f\u30d5\u30a9\u30eb\u30c0\u5168\u4f53\u3092\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059\uff08\u3053\u308c\u306fvolumes
\u30bb\u30af\u30b7\u30e7\u30f3\u306e.:/app:delegated
\u3067\u884c\u308f\u308c\u307e\u3059\uff09\u3002\u3053\u308c\u306f\u3001Docker\u30d3\u30eb\u30c9\u4e2d\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u5168\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u304c\u30db\u30b9\u30c8\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u4e0a\u66f8\u304d\u3055\u308c\u308b\u3053\u3068\u3082\u610f\u5473\u3057\u307e\u3059\u3002 - \u30ed\u30fc\u30ab\u30eb\u3067\u306f\u3001\u304a\u305d\u3089\u304f
composer.json
\u306erequire-dev
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u4f9d\u5b58\u95a2\u4fc2\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u3044\u3067\u3057\u3087\u3046\u304c\u3001\u672c\u756a\u30c7\u30d7\u30ed\u30a4\u3067\u306f\u305d\u308c\u3089\u306f\u4e0d\u8981\u306a\u30b9\u30da\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3060\u3051\u3067\u3059\u3002\u305d\u306e\u305f\u3081\u3001Dockerfile\u3067\u306fcomposer install --no-dev
\u3092\u5b9f\u884c\u3057\u3001\u624b\u52d5\u3067composer install
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u5168\u3066\u304c\u4e0a\u624b\u304f\u3044\u3063\u305f\u5834\u5408\u3001docker-compose.yml
\u3067\u5b9a\u7fa9\u3055\u308c\u305fLAGOON_ROUTE
\uff08\u4f8b\uff1ahttp://drupal.docker.amazee.io
\uff09\u3092\u958b\u304f\u3068\u3001Drupal\u306e\u30a8\u30e9\u30fc\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044 - \u4eca\u306e\u3068\u3053\u308d\u3053\u308c\u3067\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u6700\u3082\u91cd\u8981\u306a\u306e\u306f\u3001Drupal\u30b5\u30a4\u30c8\u3092\u8aad\u307f\u8fbc\u3082\u3046\u3068\u3057\u3066\u3044\u308b\u3053\u3068\u3067\u3059\u3002
500\u307e\u305f\u306f\u540c\u69d8\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001Composer\u3067\u5168\u3066\u304c\u6b63\u3057\u304f\u8aad\u307f\u8fbc\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#drupal_1","title":"\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u78ba\u8a8d\u3068Drupal\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u6700\u5f8c\u306bDrupal\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u6642\u304c\u6765\u307e\u3057\u305f\u304c\u3001\u305d\u306e\u524d\u306b\u5168\u3066\u304c\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002\u305d\u306e\u305f\u3081\u306bDrush\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002drush status
\u3092\u5b9f\u884c\u3057\u307e\u3059\uff1a
run drush statusdocker-compose exec cli bash\n[drupal-example]cli-drupal:/app$ drush status\n
\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u7d50\u679c\u3092\u8fd4\u3059\u306f\u305a\u3067\u3059:
drush status results[drupal-example]cli-drupal:/app$ drush status\n[notice] Missing database table: key_value\nDrupal version : 8.6.1\nSite URI : http://drupal.docker.amazee.io\nDatabase driver : mysql\nDatabase hostname : mariadb\nDatabase port : 3306\nDatabase username : drupal\nDatabase name : drupal\nPHP binary : /usr/local/bin/php\nPHP config : /usr/local/etc/php/php.ini\nPHP OS : Linux\nDrush script : /app/vendor/drush/drush/drush\nDrush version : 9.4.0\nDrush temp : /tmp\nDrush configs : /home/.drush/drush.yml\n /app/vendor/drush/drush/drush.yml\nDrupal root : /app/web\nSite path : sites/default\n
\u60c5\u5831
\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u9032\u3080\u524d\u306b\u3001\u516c\u958b\u9375\u306b\u3064\u3044\u3066pygmy\u306b\u4f1d\u3048\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002Permission denied (publickey)
\u3068\u3044\u3046\u30a8\u30e9\u30fc\u304c\u8868\u793a\u3055\u308c\u305f\u5834\u5408\u306f\u3001\u3053\u3061\u3089\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044:pygmy - ssh\u30ad\u30fc\u306e\u8ffd\u52a0\u3002
\u3053\u308c\u3067Drupal\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u6642\u304c\u6765\u307e\u3057\u305f\uff08\u4ee3\u308f\u308a\u306b\u65e2\u5b58\u306eSQL\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002\u305f\u3060\u3057\u3001\u6700\u521d\u306f\u30af\u30ea\u30fc\u30f3\u306aDrupal\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3001\u5168\u3066\u304c\u52d5\u4f5c\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\uff09\u3002
drush si\u306e\u5b9f\u884c
[drupal-example]cli-drupal:/app$ drush site-install\n
\u3053\u308c\u306b\u3088\u308a\u3001\u6b21\u306e\u3088\u3046\u306a\u51fa\u529b\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059: drush si\u306e\u7d50\u679c[drupal-example]cli-drupal:/app$ drush site-install\nYou are about to DROP all tables in your 'drupal' database. Do you want to continue? (y/n): y\nStarting Drupal installation. This takes a while. Consider using the --notify global option.\nInstallation complete. User name: admin User password: arbZJekcqh\nCongratulations, you installed Drupal!\n
\u3053\u308c\u3067LAGOON_ROUTE
\u3067\u5b9a\u7fa9\u3055\u308c\u305fURL\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u65b0\u3057\u304f\u30af\u30ea\u30fc\u30f3\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305fDrupal\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059 - \u304a\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307e\u3059\uff01
"},{"location":"ja/lagoonizing/#_13","title":"\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u306e\u30a4\u30f3\u30dd\u30fc\u30c8","text":"\u65e2\u5b58\u306eDrupal\u30b5\u30a4\u30c8\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30ed\u30fc\u30ab\u30eb\u30b5\u30a4\u30c8\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u3044\u3067\u3057\u3087\u3046\u3002\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u306f\u591a\u6570\u3042\u308a\u307e\u3059\u304c\u3001\u73fe\u5728\u306e\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30d7\u30ed\u30d0\u30a4\u30c0\u306bDrush\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\uff1a
drush sql-dump[your-existing-site]$ drush sql-dump --result-file=dump.sql\nDatabase dump saved to dump.sql [success]\n
\u3053\u308c\u3067\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5168\u4f53\u3092\u542b\u3080dump.sql\u30d5\u30a1\u30a4\u30eb\u304c\u3067\u304d\u307e\u3057\u305f\u3002\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30ab\u30eb\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30d4\u30fc\u3057\u3001CLI\u306b\u63a5\u7d9a\u3059\u308b\u3068\u3001\u305d\u3053\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\uff1a
dump file
[drupal-example] docker compose exec cli bash\n[drupal-example]cli-drupal:/app$ ls -l dump.sql\n-rw-r--r-- 1 root root 5281 Dec 19 12:46 dump.sql\n
\u3053\u308c\u3067\u3001\u73fe\u5728\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u524a\u9664\u3057\u305f\u5f8c\u306b\u30c0\u30f3\u30d7\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\uff08\u307e\u3060cli\u306b\u63a5\u7d9a\u3057\u305f\u307e\u307e\u3067\u3059\uff09\uff1a dump existing db and import dump file[drupal-example]cli-drupal:/app$ drush sql-drop\nDo you really want to drop all tables in the database drupal? (y/n): y\n[drupal-example]cli-drupal:/app$ drush sql-cli < dump.sql\n
"},{"location":"ja/lagoonizing/#drupal_2","title":"Drupal\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea","text":"Drupal\u30b5\u30a4\u30c8\u306b\u306f\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3082\u542b\u307e\u308c\u307e\u3059\u3002\u65e2\u5b58\u306e\u30b5\u30a4\u30c8\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u79fb\u884c\u3059\u308b\u306b\u306f\u3001\u6b63\u3057\u3044\u30d5\u30a9\u30eb\u30c0\uff08\u304a\u305d\u3089\u304fweb/sites/default/files
\u3001sites/default/files
\u3001\u307e\u305f\u306f\u985e\u4f3c\u306e\u3082\u306e\uff09\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3059\u308b\u3060\u3051\u3067\u3059\u3002\u30a6\u30a7\u30d6\u30eb\u30fc\u30c8\u3068\u3057\u3066\u8a2d\u5b9a\u3057\u305f\u3082\u306e\u3092\u899a\u3048\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044 - \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3088\u3063\u3066\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_14","title":"\u30c7\u30d7\u30ed\u30a4","text":"\u3053\u306e\u30ac\u30a4\u30c9\u306e\u5168\u3066\u306e\u624b\u9806\u3092\u5b8c\u4e86\u3057\u3001Lagoon\u7ba1\u7406\u8005\u304c\u5168\u3066\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u308c\u3070\u3001\u30b5\u30a4\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\uff01
Drupal\u30b5\u30a4\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5834\u5408\u306f\u3001\u3053\u306e\u30c7\u30d7\u30ed\u30a4\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u305d\u308c\u4ee5\u5916\u306e\u5168\u3066\u306e\u30c7\u30d7\u30ed\u30a4\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u306e\u30c7\u30d7\u30ed\u30a4\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/logging/kibana-examples/","title":"Kibana\u306e\u4f8b","text":"Kibana\u306e\u5165\u9580\u30d3\u30c7\u30aa\u3092\u898b\u3066\u3001\u30ed\u30b0\u3092\u6271\u3046\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\u304b\uff1f\u79c1\u305f\u3061\u304c\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\uff01\u3053\u306e\u30da\u30fc\u30b8\u3067\u306f\u3001\u4f7f\u7528\u3067\u304d\u308bKibana\u30af\u30a8\u30ea\u306e\u4f8b\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002\u3053\u308c\u306fKibana 101\u306e\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001Kibana\u3067\u4f55\u304c\u3067\u304d\u308b\u306e\u304b\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002
\u59cb\u3081\u308b\u6e96\u5099\u306f\u3067\u304d\u307e\u3057\u305f\u304b\uff1f\u3000\u3067\u306f\u59cb\u3081\u307e\u3057\u3087\u3046\uff01
\u6ce8\u610f:
\u958b\u59cb\u3059\u308b\u524d\u306b\u30c6\u30ca\u30f3\u30c8\u3092\u9078\u629e\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff01 \u5de6\u5074\u306e\u30e1\u30cb\u30e5\u30fc\u306b\u3042\u308b Tenant
\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u305d\u308c\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30c6\u30ca\u30f3\u30c8\u3092\u9078\u629e\u3057\u305f\u3089\u3001\u518d\u5ea6 Discover
\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u59cb\u3081\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/logging/kibana-examples/#_1","title":"\u30eb\u30fc\u30bf\u30fc\u30ed\u30b0","text":"\u4ee5\u4e0b\u306b\u30012\u3064\u306e\u4e00\u822c\u7684\u306a\u30ed\u30b0\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u4f8b\u3092\u793a\u3057\u307e\u3059:
- \u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u3078\u306e\u30d2\u30c3\u30c8/\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u7dcf\u6570\u3092\u8868\u793a\u3057\u307e\u3059\u3002
- \u7279\u5b9a\u306eIP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u306e\u30d2\u30c3\u30c8/\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6570\u3092\u8868\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/logging/kibana-examples/#_2","title":"\u30b5\u30a4\u30c8\u3078\u306e\u30d2\u30c3\u30c8/\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u7dcf\u6570","text":" - Kibana\u3092\u8d77\u52d5\u3057\u3001
Discovery
\u3092\u9078\u629e\u3057\u307e\u3057\u3087\u3046(\u4ee5\u4e0b\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u306e\uff031) - \u6b21\u306b\u3042\u306a\u305f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30bf\u30fc\u30ed\u30b0\u3067\u3059(\uff032)\u3002
- \u305d\u3053\u304b\u3089\u3001\u3053\u306e\u60c5\u5831\u3092\u5c11\u3057\u7d5e\u308a\u8fbc\u307f\u307e\u3059\u3002\u79c1\u305f\u3061\u306e\u4e3b\u306a\u88fd\u54c1\u74b0\u5883\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3057\u3087\u3046\u3002
-
\u691c\u7d22\u30d0\u30fc(\uff033)\u306b\u5165\u529b\u3057\u307e\u3059:
openshift_project: \"\u672c\u756a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\"
- \u3053\u308c\u306b\u3088\u308a\u3001\u6307\u5b9a\u3055\u308c\u305f\u671f\u9593\u5185\u306e\u672c\u756a\u74b0\u5883\u3078\u306e\u3059\u3079\u3066\u306e\u30d2\u30c3\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059
- \u53f3\u4e0a\u9685\u306e\u30e1\u30cb\u30e5\u30fc (#4) \u3067\u671f\u9593\u3092\u5909\u66f4\u3067\u304d\u307e\u3059\u3002
- \u30a8\u30f3\u30c8\u30ea\u306e\u6a2a\u306b\u3042\u308b\u77e2\u5370\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068 (#5)\u3001\u30a8\u30f3\u30c8\u30ea\u304c\u5c55\u958b\u3055\u308c\u3001\u30ad\u30e3\u30d7\u30c1\u30e3\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u60c5\u5831\u304c\u8868\u793a\u3055\u308c\u307e\u3059
- \u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u30ab\u30fc\u30bd\u30eb\u3092\u5408\u308f\u305b\u3066\u5de6\u5074\u306e\u300c\u8ffd\u52a0\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068 (#6)\u3001\u305d\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059
- \u691c\u7d22\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3001\u7d50\u679c\u3092\u3055\u3089\u306b\u7d5e\u308a\u8fbc\u3080\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/logging/kibana-examples/#ip","title":"\u7279\u5b9a\u306eIP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u306e\u30d2\u30c3\u30c8\u6570/\u30ea\u30af\u30a8\u30b9\u30c8\u6570","text":"\u4e0a\u8a18\u306e\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30b5\u30a4\u30c8\u3078\u306e\u3059\u3079\u3066\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u6982\u8981\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u304c\u3001\u7279\u5b9a\u306eIP\u30a2\u30c9\u30ec\u30b9\u306b\u7d5e\u308a\u8fbc\u307f\u305f\u3044\u5834\u5408\u306f\u3069\u3046\u3067\u3057\u3087\u3046\u304b\uff1f\u4f8b\u3048\u3070\u3001\u3042\u308bIP\u30a2\u30c9\u30ec\u30b9\u304c\u30b5\u30a4\u30c8\u306b\u4f55\u56de\u30a2\u30af\u30bb\u30b9\u3057\u305f\u304b\u3001\u305d\u306eIP\u30a2\u30c9\u30ec\u30b9\u304c\u3069\u306e\u30da\u30fc\u30b8\u3092\u898b\u3066\u3044\u305f\u304b\u3092\u78ba\u8a8d\u3057\u305f\u3044\u5834\u5408\u3067\u3059\u3002\u3053\u306e\u6b21\u306e\u30af\u30a8\u30ea\u304c\u5f79\u7acb\u3061\u307e\u3059\u3002
\u307e\u305a\u3001\u524d\u56de\u3068\u540c\u3058\u30af\u30a8\u30ea\u304b\u3089\u59cb\u3081\u307e\u3059\u304c\u3001\u3044\u304f\u3064\u304b\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
- \u6700\u521d\u306b\u3001\u4ee5\u4e0b\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\uff1a
client_ip
\u304a\u3088\u3073http_request
- \u3053\u308c\u306b\u3088\u308a\u3001\u3059\u3079\u3066\u306eIP\u30a2\u30c9\u30ec\u30b9\u3068\u305d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3057\u305f\u30da\u30fc\u30b8\u306e\u30ea\u30b9\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u6b21\u306f\u3001Amazee.io\u30da\u30fc\u30b8\u306e\u5834\u5408\u306e\u8868\u793a\u5185\u5bb9\u3067\u3059:
![\u3059\u3079\u3066\u306eIP\u30a2\u30c9\u30ec\u30b9\u3068\u305d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3057\u305f\u30da\u30fc\u30b8:]( \u8981\u6c42\u3055\u308c\u305f\u3002](../images/kibana_example2.png)
\u3053\u308c\u306f\u826f\u3055\u305d\u3046\u3067\u3059\u304c\u3001\u7279\u5b9a\u306eIP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3060\u3051\u3092\u8868\u793a\u3057\u305f\u3044\u5834\u5408\u306f\u3069\u3046\u3067\u3057\u3087\u3046\u304b\uff1f\u691c\u7d22\u6761\u4ef6\u306b\u30a2\u30c9\u30ec\u30b9\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002
- \u6b21\u306e\u3088\u3046\u306b\u8ffd\u52a0\u3057\u307e\u3059:
AND client_ip: \"IP\u30a2\u30c9\u30ec\u30b9\"
. - \u3053\u308c\u306b\u3088\u308a\u3001\u305d\u306e\u7279\u5b9a\u306eIP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u306e\u30d2\u30c3\u30c8\u3068\u3001\u305d\u306e\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u30da\u30fc\u30b8\u3060\u3051\u304c\u7d50\u679c\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306famazee.io\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u4f8b\u3067\u3059:
"},{"location":"ja/logging/kibana-examples/#_3","title":"\u30b3\u30f3\u30c6\u30ca\u30ed\u30b0","text":"\u30b3\u30f3\u30c6\u30ca\u30ed\u30b0\u306f\u3001\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ca\u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3059\u308b\u3059\u3079\u3066\u306e\u6a19\u6e96\u51fa\u529b\uff08stdout
\uff09\u304a\u3088\u3073\u6a19\u6e96\u30a8\u30e9\u30fc\uff08stderr
\uff09\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\u3057\u307e\u3059\u3002\u6b21\u306b\u3001\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ca\u304b\u3089\u30ed\u30b0\u3092\u53d6\u5f97\u3057\u3001\u305d\u306e\u30b3\u30f3\u30c6\u30ca\u5185\u306e\u7279\u5b9a\u306e\u30a8\u30e9\u30fc\u756a\u53f7\u3092\u898b\u3064\u3051\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/logging/kibana-examples/#_4","title":"\u30b3\u30f3\u30c6\u30ca\u304b\u3089\u306e\u30ed\u30b0","text":"\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ca\uff08php\u3001nginx\u306a\u3069\uff09\u306e\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u305f\u3044\u3067\u3059\u304b\uff1f\u305d\u306e\u5834\u5408\u306f\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u304c\u5f79\u7acb\u3061\u307e\u3059\uff01\u3053\u3053\u3067\u306fNGINX\u30ed\u30b0\u3092\u78ba\u8a8d\u3059\u308b\u65b9\u6cd5\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3059\u3002
- \u307e\u305a\u3001Kibana\u3092\u958b\u304d\u3001Discover\u3092\u9078\u629e\u3057\u307e\u3059(\u4e0b\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u306e\uff031)\u3002
- \u6b21\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30f3\u30c6\u30ca\u30ed\u30b0\u3092\u9078\u629e\u3057\u307e\u3059(\uff032)\u3002
- \u691c\u7d22\u30d0\u30fc(\uff033)\u306b\u79fb\u52d5\u3057\u3001
kubernetes.container_name: \"nginx\"
\u3068\u5165\u529b\u3057\u307e\u3059\u3002 - \u3053\u308c\u306b\u3088\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u3059\u3079\u3066\u306eNGINX\u30ed\u30b0\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 \u30a8\u30f3\u30c8\u30ea\u306e\u96a3\u306e\u77e2\u5370\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b(\uff034)\u3068\u3001\u305d\u306e\u30a8\u30f3\u30c8\u30ea\u304c\u5c55\u958b\u3055\u308c\u3001\u53ce\u96c6\u3057\u305f\u3059\u3079\u3066\u306e\u60c5\u5831\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
- \u30e1\u30c3\u30bb\u30fc\u30b8\u30d5\u30a3\u30fc\u30eb\u30c9\u3068\u30ec\u30d9\u30eb\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u30d3\u30e5\u30fc\u306b\u8ffd\u52a0\u3057\u307e\u3057\u3087\u3046\u3002\u5de6\u5074\u306e\u300cAdd\u300d\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3053\u3068\u3067\u8ffd\u52a0\u3067\u304d\u307e\u3059(\uff035)\u3002
- \u753b\u9762\u306e\u53f3\u4e0a\u9685(\uff036)\u3067\u6642\u9593\u67a0\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u4f8b\u3067\u306f\u3001\u904e\u53bb4\u6642\u9593\u306e\u30ed\u30b0\u3092\u898b\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/logging/kibana-examples/#_5","title":"\u30ed\u30b0\u306e\u7279\u5b9a\u306e\u30a8\u30e9\u30fc","text":"NGINX\u30b3\u30f3\u30c6\u30ca\u3067\u767a\u751f\u3057\u305f500 Internal Server\u30a8\u30e9\u30fc\u306e\u6570\u3092\u78ba\u8a8d\u3057\u305f\u3044\u3067\u3059\u304b\uff1f\u691c\u7d22\u30af\u30a8\u30ea\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u3088\u3046\u306b\u691c\u7d22\u3057\u307e\u3059:
kubernetes.container_name: \"nginx\" AND message: \"500\"
\u3053\u308c\u306b\u3088\u308a\u3001NGINX\u30b3\u30f3\u30c6\u30ca\u5185\u306e500\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u307f\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u4efb\u610f\u306e\u30b3\u30f3\u30c6\u30ca\u5185\u306e\u4efb\u610f\u306e\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u691c\u7d22\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/logging/kibana-examples/#_6","title":"\u53ef\u8996\u5316","text":"Kibana\u3067\u306f\u3001\u53ef\u8996\u5316\u3084\u30b0\u30e9\u30d5\u3092\u4f5c\u6210\u3059\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u3082\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u4e0a\u8a18\u306e\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u3066\u3001\u6708\u9593\u306e\u30d2\u30c3\u30c8/\u30ea\u30af\u30a8\u30b9\u30c8\u6570\u3092\u8868\u793a\u3059\u308b\u30c1\u30e3\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
- Kibana\u306e\u5de6\u5074\u306b\u3042\u308b\u300cVisualize\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059
- \u9752\u3044\u30d7\u30e9\u30b9\u8a18\u53f7\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059
- \u3053\u306e\u4f8b\u3067\u306f\u3001\u300cVertical Bar\u300d\u30c1\u30e3\u30fc\u30c8\u3092\u9078\u629e\u3057\u307e\u3059
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30bf\u30fc\u30ed\u30b0\u3092\u9078\u629e\u3057\u307e\u3059
- \u300cBuckets\u300d\u306e\u4e0b\u306b\u3042\u308b\u300cX-Axis\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u300cDate Histogram\u300d\u3092\u9078\u629e\u3057\u3001\u9593\u9694\u3092\u300cdaily\uff08\u6bce\u65e5\uff09\u300d\u306b\u8a2d\u5b9a\u3057\u307e\u3059
- \u6210\u529f\u3067\u3059\uff01\u3053\u308c\u3067\u3001\u65e5\u3005\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u8868\u793a\u3059\u308b\u30d0\u30fc\u30c1\u30e3\u30fc\u30c8\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002
\u6ce8\u610f:
\u53f3\u4e0a\u9685\u306e\u30c7\u30fc\u30bf\u306e\u9069\u5207\u306a\u6642\u9593\u67a0\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u4ee5\u4e0b\u306f\u3001\u65e5\u3005\u306e\u30d2\u30c3\u30c8\u6570\u3092\u53ef\u8996\u5316\u3057\u305f\u30c1\u30e3\u30fc\u30c8\u306e\u4f8b\u3067\u3059:
\u307e\u305f\u3001\u53ef\u8996\u5316\uff08\u304a\u3088\u3073\u691c\u7d22\uff09\u3092\u4fdd\u5b58\u3067\u304d\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\uff01\u3053\u308c\u306b\u3088\u308a\u3001\u5c06\u6765\u7684\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306e\u304c\u3055\u3089\u306b\u901f\u304f\u306a\u308a\u307e\u3059\u3002\u5404\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u306f\u72ec\u81ea\u306eKibana\u30c6\u30ca\u30f3\u30c8\u304c\u3042\u308b\u305f\u3081\u3001\u691c\u7d22\u3084\u53ef\u8996\u5316\u304c\u4ed6\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u5171\u6709\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/logging/kibana-examples/#_7","title":"\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":""},{"location":"ja/logging/logging/","title":"\u30ed\u30ae\u30f3\u30b0","text":"Lagoon\u306fKibana\u3092\u4ecb\u3057\u3066\u4ee5\u4e0b\u306e\u30ed\u30b0\u306b\u30a2\u30af\u30bb\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059:
- Kubernetes\u30eb\u30fc\u30bf\u30fc\u304b\u3089\u306e\u30ed\u30b0\u306b\u306f\u3001\u3059\u3079\u3066\u306eHTTP\u304a\u3088\u3073HTTPS\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002:
- \u30bd\u30fc\u30b9IP
- URL
- \u30d1\u30b9
- HTTP\u52d5\u8a5e
- Cookies
- \u30d8\u30c3\u30c0\u30fc
- \u30e6\u30fc\u30b6\u30fc\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8
- \u30b3\u30f3\u30c6\u30ca\u540d
- \u5fdc\u7b54\u30b5\u30a4\u30ba
- \u5fdc\u7b54\u6642\u9593
- \u30b3\u30f3\u30c6\u30ca\u306e\u30ed\u30b0:
stdout
\u3068stderr
\u30e1\u30c3\u30bb\u30fc\u30b8 - \u30b3\u30f3\u30c6\u30ca\u540d
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8
- Lagoon\u306e\u30ed\u30b0:
- Webhooks\u306e\u89e3\u6790
- \u30d3\u30eb\u30c9\u30ed\u30b0
- \u30d3\u30eb\u30c9\u30a8\u30e9\u30fc
- \u305d\u306e\u4ed6\u306eLagoon\u95a2\u9023\u30ed\u30b0
- \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30ed\u30b0:
- Drupal\u306e\u5834\u5408: Drupal Watchdog\u304b\u3089\u306e\u30ed\u30b0\u3092\u53d7\u3051\u53d6\u308b\u305f\u3081\u306b\u3001Lagoon Logs\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
- Laravel\u306e\u5834\u5408: Laravel\u7528Lagoon Logs\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
- \u305d\u306e\u4ed6\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9:
- \u30ed\u30b0\u3092
udp://application-logs.lagoon.svc:5140
\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002 - \u30ed\u30b0\u304cJSON\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u3057\u3066\u69cb\u9020\u5316\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
type
\u30d5\u30a3\u30fc\u30eb\u30c9\u306bKubernetes\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u306e\u540d\u524d\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044($LAGOON_PROJECT-$LAGOON_ENVIRONMENT
)\u3002
\u30ed\u30b0\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u3001Lagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066Kibana\u30eb\u30fc\u30c8\u306eURL\u3092\u53d6\u5f97\u3057\u3066\u304f\u3060\u3055\u3044\uff08amazee.io\u306e\u5834\u5408\u306fhttps://logs.amazeeio.cloud/\u3067\u3059)\u3002
\u5404Lagoon\u30e6\u30fc\u30b6\u30fc\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u306f\u500b\u5225\u306e\u30ed\u30b0\u30a4\u30f3\u304c\u3042\u308a\u3001\u30a2\u30af\u30bb\u30b9\u6a29\u306e\u3042\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30ed\u30b0\u306e\u307f\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
\u5404Lagoon\u30e6\u30fc\u30b6\u30fc\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u307e\u305f\u3001\u72ec\u81ea\u306eKibana Tenant\u3092\u6301\u3063\u3066\u304a\u308a\u3001\u3053\u308c\u306f\u4fdd\u5b58\u3055\u308c\u305f\u691c\u7d22\u3084\u30d3\u30b8\u30e5\u30a2\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3\u304c\u4ed6\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u5171\u6709\u3055\u308c\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
Kibana\u306e\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u77e5\u308a\u305f\u3044\u5834\u5408\u306f\u3001\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044: https://www.elastic.co/webinars/getting-started-kibana
"},{"location":"ja/other-tools/client-libraries/","title":"Lagoon\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30e9\u30a4\u30d6\u30e9\u30ea","text":"Lagoon\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u306e\u30c4\u30fc\u30eb\u958b\u767a\u306b\u8208\u5473\u304c\u3042\u308b\u5834\u5408\u3001\u3044\u304f\u3064\u304b\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u5f79\u7acb\u3064\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/other-tools/client-libraries/#machinery","title":"Machinery","text":"Machinery\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u3001Lagoon\u306e\u30c4\u30fc\u30eb\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4e2d\u3067\u6700\u3082\u7a4d\u6975\u7684\u306b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3001\u958b\u767a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u306f\u3001\u4e3b\u306b(\u3057\u304b\u3057\u6392\u4ed6\u7684\u3067\u306f\u306a\u304f)API\u3068\u306e\u3084\u308a\u53d6\u308a\u306e\u305f\u3081\u306e\u3001\u79c1\u305f\u3061\u306e\u3059\u3079\u3066\u306egolang\u57fa\u76e4\u306e\u30c4\u30fc\u30eb\u30bf\u30a4\u30d7\u306b\u308f\u305f\u308b\u3059\u3079\u3066\u306e\u57fa\u672c\u64cd\u4f5c\u306e\u4e2d\u592e\u30b9\u30c8\u30a2\u3067\u3059\u3002
https://github.com/uselagoon/machinery/
"},{"location":"ja/other-tools/client-libraries/#php","title":"PHP","text":"PHP\u306e\u7d71\u5408\u3092\u63a2\u3057\u3066\u3044\u308b\u306a\u3089\u3001php-sdk\u304c\u3042\u306a\u305f\u306e\u4ed5\u4e8b\u306e\u51fa\u767a\u70b9\u3068\u3057\u3066\u826f\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
https://github.com/uselagoon/lagoon-php-sdk
"},{"location":"ja/other-tools/client-libraries/#_1","title":"\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u30e9\u30a4\u30d6\u30e9\u30ea","text":""},{"location":"ja/other-tools/client-libraries/#ansible","title":"Ansible","text":"Lagoon\u3068\u306e\u3084\u308a\u53d6\u308a\u306e\u305f\u3081\u306e\u983b\u7e41\u306b\u66f4\u65b0\u3055\u308c\u3001\u62e1\u5f35\u3055\u308c\u3066\u3044\u308bAnsible\u30e9\u30a4\u30d6\u30e9\u30ea\u3002
https://github.com/salsadigitalauorg/lagoon_ansible_collection
"},{"location":"ja/resources/faq/","title":"\u3088\u304f\u3042\u308b\u8cea\u554f","text":""},{"location":"ja/resources/faq/#lagoon","title":"Lagoon\u306e\u7ba1\u7406\u8005\u306b\u3069\u306e\u3088\u3046\u306b\u9023\u7d61\u3059\u308c\u3070\u3088\u3044\u3067\u3059\u304b\uff1f","text":"\u5c02\u7528\u306eSlack\u30c1\u30e3\u30cd\u30eb\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u306f\u305a\u306a\u306e\u3067\u3001\u305d\u308c\u3092\u5229\u7528\u3057\u3066\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059 - \u3082\u3057\u306a\u3044\u5834\u5408\u3084\u3001\u3069\u306e\u3088\u3046\u306b\u9023\u7d61\u3059\u308c\u3070\u3088\u3044\u304b\u5fd8\u308c\u3066\u3057\u307e\u3063\u305f\u5834\u5408\u306f\u3001support@amazee.io\u306b\u9023\u7d61\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/resources/faq/#_2","title":"\u30d0\u30b0\u3092\u898b\u3064\u3051\u307e\u3057\u305f\uff01\ud83d\udc1e","text":"\u30d0\u30b0\u3084\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u554f\u984c\u3092\u898b\u3064\u3051\u305f\u5834\u5408\u306f\u3001\u305d\u306e\u5185\u5bb9\u3092support@amazee.io\u306b\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002GitHub\u306e\u554f\u984c\u3068\u3057\u3066\u5831\u544a\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/resources/faq/#amazeeiolagoon","title":"amazee.io\u306eLagoon\u3092\u5229\u7528\u3057\u305f\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30b5\u30fc\u30d3\u30b9\u306b\u8208\u5473\u304c\u3042\u308a\u307e\u3059","text":"\u305d\u308c\u306f\u7d20\u6674\u3089\u3057\u3044\u30cb\u30e5\u30fc\u30b9\u3067\u3059\uff01sales@amazee.io\u307e\u3067\u30e1\u30fc\u30eb\u3067\u304a\u554f\u3044\u5408\u308f\u305b\u3044\u305f\u3060\u3051\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#_3","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u3069\u306e\u3088\u3046\u306b\u5fa9\u5143\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304b\uff1f","text":"\u30d5\u30a1\u30a4\u30eb\u3084\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001\u901a\u5e38\u306f\u6700\u5927\u306724\u6642\u9593\u3054\u3068\u306b\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u30aa\u30d5\u30b5\u30a4\u30c8\u3067\u4fdd\u5b58\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u65e5\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u6700\u59277\u3064\u3001\u9031\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u6700\u59274\u3064\u4fdd\u6301\u3057\u3066\u3044\u307e\u3059\u3002
\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u5fa9\u5143\u3084\u56de\u5fa9\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u304a\u6c17\u8efd\u306b\u30c1\u30b1\u30c3\u30c8\u3092\u63d0\u51fa\u3059\u308b\u304b\u3001\u30c1\u30e3\u30c3\u30c8\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u559c\u3093\u3067\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\uff01
"},{"location":"ja/resources/faq/#_4","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u3092\u3069\u306e\u3088\u3046\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304b\uff1f","text":""},{"location":"ja/resources/faq/#ssl","title":"\u79c1\u306f\u7121\u52b9\u306aSSL\u8a3c\u660e\u66f8\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u3044\u307e\u3059","text":"\u307e\u305a\u6700\u521d\u306b\u8a66\u3059\u3079\u304d\u3053\u3068\u306f\u3001\u79c1\u305f\u3061\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308bSSL\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u53c2\u7167\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002
\u305d\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u3082\u307e\u3060\u30a8\u30e9\u30fc\u304c\u51fa\u308b\u5834\u5408\u306f\u3001\u30c1\u30b1\u30c3\u30c8\u3092\u9001\u4fe1\u3059\u308b\u304b\u3001\u30c1\u30e3\u30c3\u30c8\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u79c1\u305f\u3061\u306f\u3042\u306a\u305f\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u306e\u3092\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#drush-array","title":"Drush\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306b \"Array\" \u30a8\u30e9\u30fc\u304c\u51fa\u3066\u3044\u307e\u3059","text":"\u3053\u308c\u306fDrush\u30d0\u30fc\u30b8\u30e7\u30f38.1.16\u30688.1.17\u3067\u591a\u304f\u898b\u3089\u308c\u305f\u30d0\u30b0\u3067\u3001\u30a8\u30e9\u30fc\u306f\u6b21\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3057\u305f:
Bash\u30b3\u30de\u30f3\u30c9\u3092\u6b63\u5e38\u306b\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f(\u8fd4\u5374:Array [error]\n(\n[default] => Array\n(\n[default] => Array\n(\n[driver] => mysql\n[prefix] => Array\n(\n[default] =>\n)\n, code: 0)\nError: no database record could be found for source @main [error]\n
Drush\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u3068\u3001\u3053\u306e\u554f\u984c\u306f\u89e3\u6d88\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002\u6211\u3005\u306f\u5f37\u304f\u3001\u30d0\u30fc\u30b8\u30e7\u30f38.3\u307e\u305f\u306f\u305d\u308c\u4ee5\u964d\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002Drush\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308c\u3070\u3001\u30b3\u30de\u30f3\u30c9\u306f\u52d5\u4f5c\u3059\u308b\u306f\u305a\u3067\u3059\uff01
"},{"location":"ja/resources/faq/#kibanainternal-server-error","title":"Kibana\u30ed\u30b0\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001Internal Server Error\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059","text":" - Kibana\u306e\u5de6\u5074\u306e\u30e1\u30cb\u30e5\u30fc\u3067\u300c\u30c6\u30ca\u30f3\u30c8\u300d\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
- \u81ea\u5206\u306e\u30c6\u30ca\u30f3\u30c8\u540d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
- \u300c\u30c6\u30ca\u30f3\u30c8\u306e\u5909\u66f4\u300d\u3068\u3042\u306a\u305f\u306e\u30c6\u30ca\u30f3\u30c8\u306e\u540d\u524d\u3068\u3044\u3046\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
- \u300c\u30c7\u30a3\u30b9\u30ab\u30d0\u30fc\u300d\u30bf\u30d6\u306b\u623b\u308a\u3001\u30af\u30a8\u30ea\u3092\u518d\u5ea6\u8a66\u307f\u307e\u3059\u3002
\u3053\u308c\u3067\u30ed\u30b0\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/resources/faq/#ssh","title":"\u4efb\u610f\u306e\u74b0\u5883\u306bSSH\u3067\u63a5\u7d9a\u3067\u304d\u306a\u3044","text":"\u4efb\u610f\u306e\u74b0\u5883\u306bSSH\u3067\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002\u6b21\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u307e\u3059: Permission denied (publickey)
\u3002drush sa
\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30a8\u30a4\u30ea\u30a2\u30b9\u304c\u8fd4\u3055\u308c\u307e\u305b\u3093\u3002
\u3053\u308c\u306f\u901a\u5e38\u3001Pygmy\u306e\u554f\u984c\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002Pygmy\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u3053\u3061\u3089\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:https://pygmystack.github.io/pygmy/troubleshooting/
"},{"location":"ja/resources/faq/#_5","title":"\u30d3\u30eb\u30c9\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/faq/#_6","title":"\u3069\u306e\u3088\u3046\u306b\u3057\u3066\u8ffd\u52a0\u3057\u307e\u3059\u304b \u30af\u30ed\u30f3\u30b8\u30e7\u30d6\u3068\u306f\uff1f","text":""},{"location":"ja/resources/faq/#_7","title":"\u65b0\u3057\u3044\u30eb\u30fc\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\uff1f","text":""},{"location":"ja/resources/faq/#_8","title":"\u30eb\u30fc\u30c8\u3092\u524a\u9664\u3059\u308b\u306b\u306f\uff1f","text":"Lagoon\u306f\u3001.lagoon.yml
\u304b\u3089\u30eb\u30fc\u30c8\u304c\u524a\u9664\u3055\u308c\u305f\u3053\u3068\u3092\u30c7\u30d7\u30ed\u30a4\u6642\u306b\u691c\u51fa\u3057\u307e\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3001\u30eb\u30fc\u30c8\u304c\u81ea\u52d5\u7684\u306b\u524a\u9664\u3055\u308c\u305f\u304b\u3001\u305d\u308c\u3089\u3092\u524a\u9664\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/resources/faq/#pygmy-status","title":"pygmy status
\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30ad\u30fc\u304c\u30ed\u30fc\u30c9\u3055\u308c\u307e\u305b\u3093","text":"SSH\u30ad\u30fc\u3092pygmy\u306b\u30ed\u30fc\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u65b9\u6cd5\u306f\u3053\u3061\u3089:https://pygmystack.github.io/pygmy/ssh_agent
"},{"location":"ja/resources/faq/#drush-sa","title":"drush sa
\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30a8\u30a4\u30ea\u30a2\u30b9\u304c\u8fd4\u3055\u308c\u307e\u305b\u3093","text":"\u3053\u308c\u306f\u901a\u5e38\u3001Pygmy\u306b\u554f\u984c\u304c\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002Pygmy\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u3053\u3061\u3089\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:https://pygmystack.github.io/pygmy/troubleshooting
"},{"location":"ja/resources/faq/#drush","title":"\u300cdrush\u306f\u3088\u308a\u6a5f\u80fd\u7684\u306a\u74b0\u5883\u304c\u5fc5\u8981\u3067\u3059\u300d\u3068\u3044\u3046\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u3001\u30c7\u30d7\u30ed\u30a4\u304c\u5931\u6557\u3059\u308b","text":"\u3053\u308c\u306f\u901a\u5e38\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306e\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/resources/faq/#pygmy","title":"Pygmy\u3092\u8d77\u52d5\u3059\u308b\u3068\u300c\u30a2\u30c9\u30ec\u30b9\u306f\u3059\u3067\u306b\u4f7f\u7528\u4e2d\u300d\u30a8\u30e9\u30fc\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u304b\uff1f","text":"\u30e6\u30fc\u30b6\u30fc\u30e9\u30f3\u30c9\u30d7\u30ed\u30ad\u30b7\u306e\u8d77\u52d5\u30a8\u30e9\u30fc: listen tcp 0.0.0.0:80: bind: address already in use Error: failed to start containers: amazeeio-haproxy
\u3053\u308c\u306f\u65e2\u77e5\u306e\u30a8\u30e9\u30fc\u3067\u3059\uff01\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30dd\u30fc\u30c880\u3067\u3059\u3067\u306b\u4f55\u304b\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u6b21\u306e\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u72af\u4eba\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
netstat -ltnp | grep -w ':80'\n
\u3053\u308c\u306b\u3088\u308a\u3001\u30dd\u30fc\u30c880\u3067\u5b9f\u884c\u4e2d\u306e\u3059\u3079\u3066\u3092\u30ea\u30b9\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002\u30dd\u30fc\u30c880\u3067\u52d5\u4f5c\u3057\u3066\u3044\u308b\u30d7\u30ed\u30bb\u30b9\u3092\u7d42\u4e86\u3055\u305b\u307e\u3059\u3002\u30dd\u30fc\u30c880\u304c\u89e3\u653e\u3055\u308c\u308b\u3068\u3001Pygmy\u306f\u3053\u308c\u4ee5\u4e0a\u306e\u30a8\u30e9\u30fc\u306a\u304f\u8d77\u52d5\u3059\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/resources/faq/#pr","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d6\u30e9\u30f3\u30c1/PR\u74b0\u5883/\u672c\u756a\u74b0\u5883\u3092\u3069\u306e\u3088\u3046\u306b\u5909\u66f4\u3067\u304d\u307e\u3059\u304b\uff1f","text":"\u305d\u306e\u5909\u66f4\u306fLagoon API\u3092\u4f7f\u7528\u3057\u3066\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff01\u3053\u306e\u5909\u66f4\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306fGraphQL\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059.
"},{"location":"ja/resources/faq/#_9","title":"\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/faq/#ssh_1","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/\u30b0\u30eb\u30fc\u30d7\u306b\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc(\u304a\u3088\u3073SSH\u30ad\u30fc)\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":"\u3053\u308c\u306fLagoon API\u3092\u4ecb\u3057\u3066\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u5909\u66f4\u306e\u30b9\u30c6\u30c3\u30d7\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u79c1\u305f\u3061\u306eGraphQL\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#_10","title":"\u74b0\u5883\u306f\u5b8c\u5168\u306b\u524a\u9664\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5927\u304d\u306a\u30b3\u30fc\u30c9\u5909\u66f4\u3092\u5c55\u958b\u3067\u304d\u307e\u3059\u304b\uff1f","text":"\u74b0\u5883\u306f\u5404\u30c7\u30d7\u30ed\u30a4\u3067\u5b8c\u5168\u306b\u30bc\u30ed\u304b\u3089\u69cb\u7bc9\u3055\u308c\u3001\u53e4\u3044\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u3066\u30b3\u30fc\u30c9\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3068\u3001\u65b0\u9bae\u306a\u30af\u30ea\u30fc\u30f3\u306a\u30d3\u30eb\u30c9\u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u518d\u540c\u671f\u3092\u5fd8\u308c\u306a\u3044\u3067\u304f\u3060\u3055\u3044\uff01
GraphQL\u3092\u4ecb\u3057\u3066\u74b0\u5883\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u6307\u793a\u306f\u79c1\u305f\u3061\u306eGraphQL\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#_11","title":"\u65b0\u3057\u3044\u74b0\u5883\u5909\u6570\u3092\u8868\u793a\u3055\u305b\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":"GraphQL\u3092\u4ecb\u3057\u3066\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u74b0\u5883\u306b\u30e9\u30f3\u30bf\u30a4\u30e0\u74b0\u5883\u5909\u6570\u3092\u8ffd\u52a0\u3057\u305f\u3089\u3001\u30c7\u30d7\u30ed\u30a4\u3092\u884c\u3046\u3060\u3051\u3067\u65b0\u3057\u3044\u74b0\u5883\u5909\u6570\u3092\u8868\u793a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3042\u306a\u305f\u306e\u74b0\u5883\u306b\u5909\u66f4\u304c\u53cd\u6620\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#lagoonsftp","title":"Lagoon\u74b0\u5883\u306bSFTP\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u9001\u4fe1/\u53d6\u5f97\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":"\u30af\u30e9\u30a6\u30c9\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u306e\u304a\u5ba2\u69d8\u306f\u3001\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u4f7f\u7528\u3057\u3066Lagoon\u74b0\u5883\u306bSFTP\u3067\u63a5\u7d9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
- \u30b5\u30fc\u30d0\u30fc\u30db\u30b9\u30c8\u540d:
ssh.lagoon.amazeeio.cloud
- \u30dd\u30fc\u30c8: 32222
- \u30e6\u30fc\u30b6\u30fc\u540d: <\u30d7\u30ed\u30b8\u30a7\u30af\u30c8-\u74b0\u5883-\u540d>
\u30e6\u30fc\u30b6\u30fc\u540d\u306f\u3001\u63a5\u7d9a\u3059\u308b\u74b0\u5883\u306e\u540d\u524d\u306b\u306a\u308a\u307e\u3059\u3002\u6700\u3082\u4e00\u822c\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u306f_PROJECTNAME-ENVIRONMENT
_\u3067\u3059\u3002
\u307e\u305f\u3001\u65b0\u3057\u3044Lagoon Sync\u30c4\u30fc\u30eb\u306b\u3064\u3044\u3066\u3082\u30c1\u30a7\u30c3\u30af\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u3053\u3067\u8a73\u7d30\u3092\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059: https://github.com/uselagoon/lagoon-sync
\u8a8d\u8a3c\u306f\u3001SSH\u516c\u958b\u9375\u3068\u79d8\u5bc6\u9375\u306e\u8a8d\u8a3c\u3092\u901a\u3058\u3066\u81ea\u52d5\u7684\u306b\u884c\u308f\u308c\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#lets-encryptssl","title":"Let's Encrypt\u3092\u4f7f\u7528\u3057\u305f\u304f\u306a\u3044\u3002\u79c1\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u3044SSL\u8a3c\u660e\u66f8\u304c\u3042\u308a\u307e\u3059","text":"\u305d\u308c\u306b\u3064\u3044\u3066\u306f\u78ba\u304b\u306b\u304a\u624b\u4f1d\u3044\u3067\u304d\u307e\u3059\u3002\u81ea\u5206\u306eSSL\u8a3c\u660e\u66f8\u3092\u624b\u306b\u5165\u308c\u305f\u3089\u3001\u9060\u616e\u306a\u304f\u30c1\u30b1\u30c3\u30c8\u3092\u63d0\u51fa\u3059\u308b\u304b\u3001\u30c1\u30e3\u30c3\u30c8\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u559c\u3093\u3067\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\uff01\u4ee5\u4e0b\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u9001\u4fe1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
- \u8a3c\u660e\u66f8\u30ad\u30fc (.key)
- \u8a3c\u660e\u66f8\u30d5\u30a1\u30a4\u30eb (.crt)
- \u4e2d\u9593\u8a3c\u660e\u66f8 (.crt)
\u307e\u305f\u3001.lagoon.yml
\u3067tls-acme
\u30aa\u30d7\u30b7\u30e7\u30f3\u3092false\u306b\u8a2d\u5b9a\u3059\u308b\u3002
"},{"location":"ja/resources/faq/#lagoonefsfusesmbetc","title":"Lagoon\u306b\u5916\u90e8\u30dc\u30ea\u30e5\u30fc\u30e0(EFS/Fuse/SMB/etc)\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u3053\u3068\u306f\u53ef\u80fd\u3067\u3059\u304b\uff1f","text":"\u5916\u90e8\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30de\u30a6\u30f3\u30c8\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u5185\u90e8\u3067\u5b8c\u5168\u306b\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001Lagoon\u306f\u3053\u306e\u7a2e\u306e\u63a5\u7d9a\u3092\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u4e00\u90e8\u3068\u3057\u3066\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\u3002
\u958b\u767a\u8005\u306f\u3001\u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30b3\u30f3\u30c6\u30ca\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb(Dockerfile\u7d4c\u7531)\u3057\u3001\u30dc\u30ea\u30e5\u30fc\u30e0\u30de\u30a6\u30f3\u30c8\u304c\u4e8b\u524d\u307e\u305f\u306f\u4e8b\u5f8c\u306e\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u7d4c\u7531\u3067\u63a5\u7d9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3067\u3053\u308c\u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#lagoon_1","title":"Lagoon\u306e\u30d3\u30eb\u30c9\u3092\u505c\u6b62\u3059\u308b\u65b9\u6cd5\u306f\u3042\u308a\u307e\u3059\u304b\uff1f","text":"\u9577\u6642\u9593\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u30d3\u30eb\u30c9\u3092\u505c\u6b62\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u30b5\u30dd\u30fc\u30c8\u306b\u9023\u7d61\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u73fe\u5728\u3001\u30d3\u30eb\u30c9\u306f\u30af\u30e9\u30b9\u30bf\u3078\u306e\u7ba1\u7406\u8005\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u306e\u307f\u304c\u505c\u6b62\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#elasticsearchsolrui92008983","title":"Elasticsearch\\Solr\u30b5\u30fc\u30d3\u30b9\u3092\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3057\u305f\u3002\u30d6\u30e9\u30a6\u30b6\u304b\u3089UI(\u30dd\u30fc\u30c89200/8983)\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u3069\u306e\u3088\u3046\u306b\u53d6\u5f97\u3067\u304d\u307e\u3059\u304b\uff1f","text":"\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u74b0\u5883\u3067\u30a6\u30a7\u30d6\u30b5\u30fc\u30d3\u30b9(NGINX/Varnish/Node.js)\u306e\u307f\u3092\u516c\u958b\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u30ed\u30fc\u30ab\u30eb\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30dd\u30fc\u30c8\u30de\u30c3\u30d4\u30f3\u30b0\u3092docker-compose ps
\u3067\u78ba\u8a8d\u3057\u3066\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002 , \u305d\u3057\u3066 [
http://localhost](http://localhost/)
:` \u3092\u30d6\u30e9\u30a6\u30b6\u3067\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002"},{"location":"ja/resources/faq/#_12","title":"\u3053\u3053\u3067\u306f\u7b54\u3048\u3089\u308c\u306a\u3044\u8cea\u554f\u304c\u3042\u308a\u307e\u3059","text":"
Discord \u307e\u305f\u306f uselagoon@amazee.io \u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u30c1\u30fc\u30e0\u306b\u9023\u7d61\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/resources/glossary/","title":"\u7528\u8a9e\u96c6","text":"\u7528\u8a9e \u5b9a\u7fa9 Access Mode \u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u3069\u306e\u3088\u3046\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u304b\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002 Active/Standby Active/Standby deployments\u306f\u3001\u4e00\u822c\u306bblue/green deployments\u3068\u3082\u547c\u3070\u308c\u3001\u672c\u756a\u74b0\u5883\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30b7\u30fc\u30e0\u30ec\u30b9\u306b\u5207\u308a\u66ff\u3048\u308b\u65b9\u6cd5\u3067\u3059\u3002 Ansible \u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3092\u30b3\u30fc\u30c9\u5316\u53ef\u80fd\u306b\u3059\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30c4\u30fc\u30eb\u30b9\u30a4\u30fc\u30c8\u3002 AWS Amazon Web Services Amazon S3 Glacier \u9577\u671f\u4fdd\u5b58\u306e\u305f\u3081\u306e\u5b89\u5168\u304b\u3064\u4f4e\u30b3\u30b9\u30c8\u306aS3\u30b9\u30c8\u30ec\u30fc\u30b8\u3002 BitBucket Atlassian\u304c\u6240\u6709\u3059\u308bGit\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u3067\u3001\u305d\u306e\u30c4\u30fc\u30eb\u3068\u7d71\u5408\u3057\u307e\u3059\u3002 Brew Homebrew\u306fOSX\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3067\u3059\u3002 CA \u4fe1\u983c\u3067\u304d\u308b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u3042\u308b\u8a3c\u660e\u66f8\u8a8d\u8a3c\u5c40(Certificate Authority)\u306f\u3001Secure Sockets Layer (SSL)\u8a3c\u660e\u66f8\u3092\u767a\u884c\u3057\u307e\u3059\u3002 CDN \u30b3\u30f3\u30c6\u30f3\u30c4\u914d\u4fe1\u30cd\u30c3\u30c8\u30ef\u30fc\u30af - \u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\u306b\u3088\u308b\u30b3\u30f3\u30c6\u30f3\u30c4\u914d\u4fe1 CI \u7d99\u7d9a\u7684\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3 CIDR \u30af\u30e9\u30b9\u30ec\u30b9\u30fb\u30a4\u30f3\u30bf\u30fc\u30c9\u30e1\u30a4\u30f3\u30fb\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0 - IP\u30a2\u30c9\u30ec\u30b9\u306e\u5272\u308a\u5f53\u3066\u65b9\u6cd5 CLI \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9 Cluster \u30b5\u30fc\u30d0\u30fc\u3084VM\u306e\u7d71\u4e00\u3055\u308c\u305f\u30b0\u30eb\u30fc\u30d7\u3067\u3001\u4e00\u7dd2\u306b\u5206\u6563\u7ba1\u7406\u3055\u308c\u3001\u9ad8\u3044\u53ef\u7528\u6027\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u4e00\u3064\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u30b5\u30fc\u30d3\u30b9\u3057\u307e\u3059\u3002 CMS \u30b3\u30f3\u30c6\u30f3\u30c4\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0 Cron job cron\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u306f\u3001Unix\u7cfb\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u306e\u30b8\u30e7\u30d6\u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u3067\u3059\u3002\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u74b0\u5883\u306e\u8a2d\u5b9a\u3068\u7dad\u6301\u3092\u884c\u3046\u30e6\u30fc\u30b6\u30fc\u306f\u3001cron\u3092\u4f7f\u7528\u3057\u3066\u30b8\u30e7\u30d6(cron\u30b8\u30e7\u30d6\u3068\u3082\u547c\u3070\u308c\u308b)\u3092\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3057\u3001\u56fa\u5b9a\u306e\u6642\u9593\u3001\u65e5\u4ed8\u3001\u307e\u305f\u306f\u9593\u9694\u3067\u5b9a\u671f\u7684\u306b\u5b9f\u884c\u3057\u307e\u3059\u3002 Composer \u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc DDEV Drupal\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u4eba\u6c17\u306e\u3042\u308bDocker\u30d9\u30fc\u30b9\u306ePHP\u958b\u767a\u74b0\u5883\u3002 DDoS \u5206\u6563\u578b\u30b5\u30fc\u30d3\u30b9\u62d2\u5426 DNS \u30c9\u30e1\u30a4\u30f3\u30cd\u30fc\u30e0\u30b7\u30b9\u30c6\u30e0 Docker Linux\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u81ea\u52d5\u5316\u3059\u308b\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30b8\u30f3\u3002 Docker Compose YAML\u30d5\u30a1\u30a4\u30eb\u3092\u4ecb\u3057\u3066Docker\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3057\u3001\u5b9f\u884c\u3059\u308b\u30c4\u30fc\u30eb\u3002 Drupal \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0 Drush Drupal\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30b7\u30a7\u30eb\u3002 EC2 Amazon Elastic Compute Cloud Elasticsearch \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u3002\u5206\u6563\u578b\u3001\u30de\u30eb\u30c1\u30c6\u30ca\u30f3\u30c8\u5bfe\u5fdc\u306e\u5168\u6587\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u3092\u63d0\u4f9b\u3057\u3001\u30b9\u30ad\u30fc\u30de\u30d5\u30ea\u30fc\u306eJSON\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3068\u30a6\u30a7\u30d6\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 Galera \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30ca\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u305f\u3081\u306e\u6c4e\u7528\u7684\u306a\u540c\u671f\u30de\u30eb\u30c1\u30de\u30b9\u30bf\u30fc\u8907\u88fd\u30e9\u30a4\u30d6\u30e9\u30ea\u3002 Git \u7121\u6599\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u5206\u6563\u578b\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3002 Git Hash /SHA \u5404\u30b3\u30df\u30c3\u30c8\u3092\u8b58\u5225\u3059\u308b\u751f\u6210\u3055\u308c\u305f\u6587\u5b57\u5217\u3002SHA-1\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3057\u307e\u3059 GitHub Git\u3092\u4f7f\u7528\u3057\u305f\u72ec\u81ea\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u4f1a\u793e\u3002\u30de\u30a4\u30af\u30ed\u30bd\u30d5\u30c8\u306e\u5b50\u4f1a\u793e\u3067\u3001Git\u306e\u5206\u6563\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3068\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u7ba1\u7406\u6a5f\u80fd\u3092\u5168\u3066\u63d0\u4f9b\u3057\u3001\u3055\u3089\u306b\u8ffd\u52a0\u6a5f\u80fd\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002 GitLab CI\u6a5f\u80fd\u3092\u5099\u3048\u305fWeb\u30d9\u30fc\u30b9\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3002 Grafana \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u5206\u6790\u304a\u3088\u3073\u76e3\u8996\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3002 GraphQL API\u306e\u305f\u3081\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u30af\u30a8\u30ea\u3068\u64cd\u4f5c\u8a00\u8a9e\u3001\u304a\u3088\u3073\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u3067\u30af\u30a8\u30ea\u3092\u6e80\u305f\u3059\u305f\u3081\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u3002 Harbor \u30ed\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u3067\u30a4\u30e1\u30fc\u30b8\u3092\u4fdd\u8b77\u3057\u3001\u30a4\u30e1\u30fc\u30b8\u306e\u8106\u5f31\u6027\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u3001\u4fe1\u983c\u3067\u304d\u308b\u30a4\u30e1\u30fc\u30b8\u3068\u3057\u3066\u7f72\u540d\u3059\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u3002 Helm Kubernetes\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3067\u3001Kubernetes\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7ba1\u7406\u3059\u308b\u306e\u3092\u52a9\u3051\u307e\u3059\u3002 Helm Charts Helm Charts\u306f\u3001\u6700\u3082\u8907\u96d1\u306aKubernetes\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3001\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u306e\u3092\u52a9\u3051\u307e\u3059\u3002 HTTP \u30cf\u30a4\u30d1\u30fc\u30c6\u30ad\u30b9\u30c8\u8ee2\u9001\u30d7\u30ed\u30c8\u30b3\u30eb\u3002HTTP\u306fWorld Wide Web\u306b\u3088\u3063\u3066\u4f7f\u7528\u3055\u308c\u308b\u57fa\u790e\u7684\u306a\u30d7\u30ed\u30c8\u30b3\u30eb\u3067\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u3069\u306e\u3088\u3046\u306b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3055\u308c\u3001\u4f1d\u9001\u3055\u308c\u3001Web\u30b5\u30fc\u30d0\u30fc\u3068\u30d6\u30e9\u30a6\u30b6\u304c\u3055\u307e\u3056\u307e\u306a\u30b3\u30de\u30f3\u30c9\u306b\u5bfe\u3057\u3066\u3069\u306e\u3088\u3046\u306a\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u53d6\u308b\u3079\u304d\u304b\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 IAM AWS Identity and Access Management(IAM)\u306f\u3001AWS\u30ea\u30bd\u30fc\u30b9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u5b89\u5168\u306b\u5236\u5fa1\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u30a6\u30a7\u30d6\u30b5\u30fc\u30d3\u30b9\u3067\u3059\u3002 IDE \u7d71\u5408\u958b\u767a\u74b0\u5883\u306f\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u306e\u305f\u3081\u306e\u5305\u62ec\u7684\u306a\u65bd\u8a2d\u3092\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306b\u63d0\u4f9b\u3059\u308b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002IDE\u306b\u306f\u901a\u5e38\u3001\u5c11\u306a\u304f\u3068\u3082\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u30a8\u30c7\u30a3\u30bf\u3001\u30d3\u30eb\u30c9\u81ea\u52d5\u5316\u30c4\u30fc\u30eb\u3001\u30c7\u30d0\u30c3\u30ac\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 Ingress controller Ingress controller\u306f\u3001Kubernetes(\u304a\u3088\u3073\u4ed6\u306e\u30b3\u30f3\u30c6\u30ca\u5316\u3055\u308c\u305f)\u74b0\u5883\u7528\u306e\u7279\u5316\u3057\u305f\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u30fc\u3067\u3059\u3002 IPTables Linux\u30ab\u30fc\u30cd\u30eb\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u3002 Jenkins \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u81ea\u52d5\u5316\u30b5\u30fc\u30d0\u30fc\u3002 JWT JSON Web Token\u3002 k3s \u9ad8\u53ef\u7528\u6027\u3001\u8a8d\u5b9a\u6e08\u307f\u306eKubernetes\u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u3002 k3d k3d\u306f\u3001Docker\u5185\u3067k3s\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u8efd\u91cf\u30e9\u30c3\u30d1\u30fc\u3067\u3059\u3002 k8s Kubernetes\u306e\u6570\u5b57\u8a18\u53f7(K + 8\u6587\u5b57 + s) k8up K8up\u306f\u3001k8s/OpenShift\u30af\u30e9\u30b9\u30bf\u30fc\u4e0a\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u30a2\u30d7\u30ea\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u51e6\u7406\u3059\u308b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u3067\u3059\u3002 Keycloak \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u304a\u3088\u3073\u30a2\u30af\u30bb\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3002 Kibana Elasticsearch\u7528\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u53ef\u8996\u5316\u30d7\u30e9\u30b0\u30a4\u30f3\u3002Elasticsearch\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u4e0a\u3067\u8996\u899a\u5316\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 KinD Docker\u5185\u306eKubernetes - Docker\u30b3\u30f3\u30c6\u30ca\u30fc\u300c\u30ce\u30fc\u30c9\u300d\u3092\u4f7f\u7528\u3057\u3066\u30ed\u30fc\u30ab\u30eb\u306eKubernetes\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u5b9f\u884c\u3059\u308b\u30c4\u30fc\u30eb\u3002Kind\u306f\u4e3b\u306bKubernetes\u81ea\u4f53\u306e\u30c6\u30b9\u30c8\u7528\u306b\u8a2d\u8a08\u3055\u308c\u307e\u3057\u305f\u304c\u3001\u30ed\u30fc\u30b1\u30eb\u958b\u767a\u3084CI\u306b\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 kubectl Kubernetes\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306eKubernetes\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3002 Kubernetes \u30b3\u30f3\u30c6\u30ca\u5316\u3055\u308c\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3001\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3001\u304a\u3088\u3073\u7ba1\u7406\u3092\u81ea\u52d5\u5316\u3059\u308b\u305f\u3081\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30b7\u30b9\u30c6\u30e0\u3002 Lagoon Kubernetes\u306e\u305f\u3081\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30c7\u30ea\u30d0\u30ea\u30fc\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3002 Lagoonize \u3042\u306a\u305f\u306e\u30a2\u30d7\u30ea\u3092Lagoon\u3067\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a\u5909\u66f4\u3002 Lando Docker\u3092\u57fa\u76e4\u306b\u3057\u305f\u7121\u6599\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u3001\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u304a\u3088\u3073DevOps\u30c4\u30fc\u30eb\u3002 Laravel \u30e2\u30c7\u30eb-\u30d3\u30e5\u30fc-\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc(MVC)\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3044\u3001Symfony\u3092\u57fa\u306b\u3057\u305f\u7121\u6599\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9PHP\u30a6\u30a7\u30d6\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3002 Let's Encrypt \u7121\u6599\u306e\u81ea\u52d5\u5316\u3055\u308c\u305f\u30aa\u30fc\u30d7\u30f3\u306a\u8a8d\u8a3c\u5c40(CA)\u3002 MariaDB MySQL\u306e\u95a2\u4fc2\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u958b\u767a\u7248\u3067\u3001\u5546\u696d\u7684\u306b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u304a\u308a\u3001GNU General Public License\u306e\u4e0b\u3067\u7121\u6599\u3067\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3067\u3042\u308b\u3053\u3068\u3092\u7dad\u6301\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002 Master node \u96c6\u5408\u4f53\u306e\u4e2d\u306e\u5358\u4e00\u306e\u30ce\u30fc\u30c9\u3002 \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u5c02\u9580\u7684\u306a\u90e8\u5206\u306b\u5206\u5272\u3059\u308b\u5b9f\u8df5\u3002\u5404\u90e8\u5206\u306fAPI\u3084HTTP\u306e\u3088\u3046\u306aREST\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u4ecb\u3057\u3066\u4e92\u3044\u306b\u901a\u4fe1\u3057\u307e\u3059\u3002 MongoDB MongoDB\u306f\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u6307\u5411\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3059\u3002NoSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d7\u30ed\u30b0\u30e9\u30e0\u3068\u3057\u3066\u5206\u985e\u3055\u308c\u3001MongoDB\u306f\u30b9\u30ad\u30fc\u30de\u4ed8\u304d\u306eJSON\u98a8\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u30de\u30eb\u30c1\u30c6\u30ca\u30f3\u30c8 \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u5358\u4e00\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u30b5\u30fc\u30d0\u30fc\u4e0a\u3067\u52d5\u4f5c\u3057\u3001\u8907\u6570\u306e\u30c6\u30ca\u30f3\u30c8(\u5171\u901a\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u3092\u5171\u6709\u3059\u308b\u30e6\u30fc\u30b6\u30fc\u30b0\u30eb\u30fc\u30d7)\u306b\u30b5\u30fc\u30d3\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306f\u5404\u30c6\u30ca\u30f3\u30c8\u306b\u30ea\u30bd\u30fc\u30b9\u306e\u4e00\u90e8\u3092\u63d0\u4f9b\u3059\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u3066\u3044\u307e\u3059\u3002 MVC \u30e2\u30c7\u30eb-\u30d3\u30e5\u30fc-\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9 - \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30923\u3064\u306e\u4e3b\u8981\u306a\u8ad6\u7406\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8:\u30e2\u30c7\u30eb\u3001\u30d3\u30e5\u30fc\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306b\u5206\u3051\u308b\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30d1\u30bf\u30fc\u30f3\u3002\u3053\u308c\u3089\u306e\u5404\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7279\u5b9a\u306e\u958b\u767a\u5074\u9762\u3092\u51e6\u7406\u3059\u308b\u3088\u3046\u306b\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 MySQL MySQL\u306f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3067\u3059\u3002 NGINX NGINX\u306f\u3001\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3001\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u3001\u30e1\u30fc\u30eb\u30d7\u30ed\u30ad\u30b7\u3001HTTP\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u3057\u3066\u3082\u4f7f\u7528\u3067\u304d\u308b\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3067\u3059\u3002 \u30ce\u30fc\u30c9 \u5358\u4e00\u306eEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9( Node.js \u30d6\u30e9\u30a6\u30b6\u30fc\u306e\u5916\u90e8\u3067JavaScript\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306eJavaScript\u30e9\u30f3\u30bf\u30a4\u30e0\u74b0\u5883\u3002 Open source \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304c\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u4e0b\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u3001\u8457\u4f5c\u6a29\u8005\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u7814\u7a76\u3001\u5909\u66f4\u3001\u304a\u3088\u3073\u4efb\u610f\u306e\u76ee\u7684\u3067\u8ab0\u306b\u3067\u3082\u914d\u5e03\u3059\u308b\u6a29\u5229\u3092\u4ed8\u4e0e\u3059\u308b\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u4e00\u7a2e\u3002\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306f\u3001\u5171\u540c\u306e\u516c\u958b\u65b9\u5f0f\u3067\u958b\u767a\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 OpenSearch \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u4e3b\u5c0e\u306e\u3001Apache 2.0\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u691c\u7d22\u304a\u3088\u3073\u5206\u6790\u30b9\u30a4\u30fc\u30c8\u3067\u3001\u30c7\u30fc\u30bf\u306e\u53d6\u308a\u8fbc\u307f\u3001\u691c\u7d22\u3001\u8996\u899a\u5316\u3001\u5206\u6790\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002 OpenShift Docker\u3068Kubernetes\u3092\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba\u306b\u3082\u305f\u3089\u3059\u30b3\u30f3\u30c6\u30ca\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3002 PHP PHP(Personal Home Page)\u306f\u3001Web\u958b\u767a\u306e\u305f\u3081\u306b\u5143\u3005\u8a2d\u8a08\u3055\u308c\u305f\u6c4e\u7528\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 PhpStorm PHP\u3068Web\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u305f\u3081\u306e\u958b\u767a\u30c4\u30fc\u30eb(IDE)\u3002 Pod \u540c\u3058\u30db\u30b9\u30c8\u4e0a\u306b\u4e00\u7dd2\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u30b3\u30f3\u30c6\u30ca\u306e\u30b0\u30eb\u30fc\u30d7\u3002 Kubernetes\u304c\u6271\u3046\u57fa\u672c\u5358\u4f4d\u3002 PostgreSQL \u62e1\u5f35\u6027\u3068\u6280\u8853\u6a19\u6e96\u306e\u6e96\u62e0\u3092\u5f37\u8abf\u3057\u305f\u7121\u6599\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3002 Public/Private Key \u516c\u958b\u9375/\u79d8\u5bc6\u9375 Puppet \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u8a2d\u5b9a\u7ba1\u7406\u304a\u3088\u3073\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30c4\u30fc\u30eb\u3002 PV PersistentVolume - \u7ba1\u7406\u8005\u304c\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3057\u305f\u3001\u307e\u305f\u306fStorage Classes\u3092\u4f7f\u7528\u3057\u3066\u52d5\u7684\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u305f\u30af\u30e9\u30b9\u30bf\u5185\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u4e00\u90e8\u3002 PVC Persistent Volume Claim - \u30e6\u30fc\u30b6\u30fc\u306b\u3088\u308b\u30b9\u30c8\u30ec\u30fc\u30b8\u8981\u6c42\u3002 Pygmy amazee.io\u304c\u63d0\u4f9b\u3059\u308b\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u30b7\u30b9\u30c6\u30e0\u3002 Python Python\u306f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u3067\u3001\u89e3\u91c8\u3055\u308c\u3001\u9ad8\u30ec\u30d9\u30eb\u3067\u3001\u4e00\u822c\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 RabbitMQ \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u30d6\u30ed\u30fc\u30ab\u30fc\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3002 RBAC \u30ed\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1 RDS \u95a2\u4fc2\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9 Redis \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30a8\u30f3\u30b8\u30f3\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u30d6\u30ed\u30fc\u30ab\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30a4\u30f3\u30e1\u30e2\u30ea\u30c7\u30fc\u30bf\u30b9\u30c8\u30a2\u3002 Restic \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d7\u30ed\u30b0\u30e9\u30e0\u3002 ROX Kubernetes\u306e\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9ReadOnlyMany - \u30dc\u30ea\u30e5\u30fc\u30e0\u306f\u591a\u304f\u306e\u30ce\u30fc\u30c9\u3067\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3068\u3057\u3066\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u3059\u3002 Ruby \u8907\u6570\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d1\u30e9\u30c0\u30a4\u30e0\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u89e3\u91c8\u578b\u306e\u9ad8\u30ec\u30d9\u30eb\u6c4e\u7528\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3002\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u5f37\u8abf\u70b9\u3068\u3057\u3066\u8a2d\u8a08\u3055\u308c\u307e\u3057\u305f\u3002 \u751f\u7523\u6027\u3068\u30b7\u30f3\u30d7\u30eb\u3055\u3002Ruby\u3067\u306f\u3001\u3059\u3079\u3066\u304c\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3042\u308a\u3001\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u306a\u30c7\u30fc\u30bf\u578b\u3082\u4f8b\u5916\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 RWO Kubernetes\u306e\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9ReadWriteOnce - \u30dc\u30ea\u30e5\u30fc\u30e0\u306f\u5358\u4e00\u306e\u30ce\u30fc\u30c9\u306b\u3088\u3063\u3066\u8aad\u307f\u66f8\u304d\u53ef\u80fd\u3068\u3057\u3066\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u3059\u3002ReadWriteOnce\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9\u3067\u306f\u3001\u540c\u3058\u30ce\u30fc\u30c9\u4e0a\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u8907\u6570\u306e\u30dd\u30c3\u30c9\u304c\u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002 RWOP Kubernetes\u306e\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9ReadWriteOncePod - \u30dc\u30ea\u30e5\u30fc\u30e0\u306f\u5358\u4e00\u306ePod\u306b\u3088\u3063\u3066\u8aad\u307f\u66f8\u304d\u53ef\u80fd\u3068\u3057\u3066\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u3059\u3002\u30af\u30e9\u30b9\u30bf\u5168\u4f53\u3067\u305f\u3060\u4e00\u3064\u306e\u30dd\u30c3\u30c9\u306e\u307f\u304c\u305d\u306ePVC\u3092\u8aad\u307f\u66f8\u304d\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u305f\u3044\u5834\u5408\u306f\u3001ReadWriteOncePod\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306fCSI\u30dc\u30ea\u30e5\u30fc\u30e0\u3068Kubernetes\u30d0\u30fc\u30b8\u30e7\u30f31.22+\u3067\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 RWX Kubernetes\u306e\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9ReadWriteMany - \u30dc\u30ea\u30e5\u30fc\u30e0\u306f\u591a\u6570\u306e\u30ce\u30fc\u30c9\u306b\u3088\u3063\u3066\u8aad\u307f\u66f8\u304d\u53ef\u80fd\u3068\u3057\u3066\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u3059\u3002 S3 Amazon Simple Storage Service\u3002 SBOM \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u90e8\u54c1\u8868\u3002 SHA-1 Secure Hash Algorithm 1\u3001\u5165\u529b\u3092\u53d6\u308a\u3001160\u30d3\u30c3\u30c8\u306e\u30cf\u30c3\u30b7\u30e5\u5024(\u901a\u5e38\u306f40\u6841\u306e16\u9032\u6570\u3067\u8868\u793a)\u3092\u751f\u6210\u3059\u308b\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3002\u3053\u308c\u306f\u30a2\u30e1\u30ea\u30ab\u56fd\u5bb6\u5b89\u5168\u4fdd\u969c\u5c40\u306b\u3088\u3063\u3066\u8a2d\u8a08\u3055\u308c\u3001\u7c73\u56fd\u9023\u90a6\u60c5\u5831\u51e6\u7406\u6a19\u6e96\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002 Solr Java\u3067\u66f8\u304b\u308c\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba\u691c\u7d22\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3002 SSH \u30bb\u30ad\u30e5\u30a2 SSL \u30bb\u30ad\u30e5\u30a2\u30bd\u30b1\u30c3\u30c8\u30ec\u30a4\u30e4\u30fc \u30b9\u30c8\u30ec\u30fc\u30b8\u30af\u30e9\u30b9 \u30b9\u30c8\u30ec\u30fc\u30b8\u30af\u30e9\u30b9\u306f\u3001Kubernetes\u306e\u7ba1\u7406\u8005\u304c\u63d0\u4f9b\u3059\u308b\u300c\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u30af\u30e9\u30b9\u300d\u3092\u8a18\u8ff0\u3059\u308b\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u7570\u306a\u308b\u30af\u30e9\u30b9\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u54c1\u8cea\u30ec\u30d9\u30eb\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30dd\u30ea\u30b7\u30fc\u3001\u307e\u305f\u306f\u30af\u30e9\u30b9\u30bf\u30fc\u7ba1\u7406\u8005\u306b\u3088\u3063\u3066\u6c7a\u5b9a\u3055\u308c\u308b\u4efb\u610f\u306e\u30dd\u30ea\u30b7\u30fc\u306b\u30de\u30c3\u30d7\u3055\u308c\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093 Symfony Symfony\u306fPHP\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u518d\u5229\u7528\u53ef\u80fd\u306aPHP\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8/\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30bb\u30c3\u30c8\u3067\u3001Drupal 8\u4ee5\u964d\u306fSymfony\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002 TCP \u30c8\u30e9\u30f3\u30b9\u30df\u30c3\u30b7\u30e7\u30f3\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30d7\u30ed\u30c8\u30b3\u30eb\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u30c7\u30fc\u30bf\u3092\u4ea4\u63db\u3067\u304d\u308b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u4f1a\u8a71\u3092\u78ba\u7acb\u3057\u7dad\u6301\u3059\u308b\u65b9\u6cd5\u3092\u5b9a\u7fa9\u3059\u308b\u6a19\u6e96\u3002 TLS \u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u5c64\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 Trivy CI\u306b\u9069\u3057\u305f\u30b7\u30f3\u30d7\u30eb\u3067\u5305\u62ec\u7684\u306a\u30b3\u30f3\u30c6\u30ca\u306e\u8106\u5f31\u6027\u30b9\u30ad\u30e3\u30ca\u3002 TTL Time to live\u307e\u305f\u306fhop limit\u306f\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u307e\u305f\u306f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5185\u306e\u30c7\u30fc\u30bf\u306e\u5bff\u547d\u307e\u305f\u306f\u751f\u5b58\u671f\u9593\u3092\u5236\u9650\u3059\u308b\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002 Uptime Robot \u30a2\u30c3\u30d7\u30bf\u30a4\u30e0\u76e3\u8996\u30b5\u30fc\u30d3\u30b9\u3002 Varnish \u5f37\u529b\u306a\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306eHTTP\u30a8\u30f3\u30b8\u30f3/\u30ea\u30d0\u30fc\u30b9HTTP\u30d7\u30ed\u30ad\u30b7\u3067\u3001\u30e6\u30fc\u30b6\u304c\u521d\u3081\u3066Web\u30da\u30fc\u30b8\u306e\u30b3\u30d4\u30fc\u3092\u30ad\u30e3\u30c3\u30b7\u30e5(\u307e\u305f\u306f\u4fdd\u5b58)\u3059\u308b\u3053\u3068\u3067Web\u30b5\u30a4\u30c8\u306e\u901f\u5ea6\u3092\u4e0a\u3052\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 VM \u30d0\u30fc\u30c1\u30e3\u30eb\u30de\u30b7\u30f3 Webhook Webhook\u306f\u3001GitHub\u3001GitLab\u3001Bitbucket\u306a\u3069\u306e\u30a2\u30d7\u30ea\u304c\u4ed6\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u5373\u6642\u30c7\u30fc\u30bf\u3092\u63d0\u4f9b\u3057\u3001\u4f55\u304b(\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306a\u3069)\u306b\u5bfe\u3057\u3066\u884c\u52d5\u3092\u8d77\u3053\u3059\u65b9\u6cd5\u3067\u3059\u3002 YAML YAML Ain't Markup Language - YAML\u306f\u4eba\u9593\u304c\u8aad\u307f\u3084\u3059\u3044\u30c7\u30fc\u30bf\u30b7\u30ea\u30a2\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3\u8a00\u8a9e\u3067\u3059\u3002\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3084\u3001\u30c7\u30fc\u30bf\u304c\u4fdd\u5b58\u307e\u305f\u306f\u9001\u4fe1\u3055\u308c\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002"},{"location":"ja/resources/tutorials-and-webinars/","title":"\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3001\u30a6\u30a7\u30d3\u30ca\u30fc\u3001\u30d3\u30c7\u30aa","text":""},{"location":"ja/resources/tutorials-and-webinars/#lagoon","title":"Lagoon\u30a6\u30a7\u30d3\u30ca\u30fc\u5165\u9580","text":"[\u30b9\u30e9\u30a4\u30c9]
"},{"location":"ja/resources/tutorials-and-webinars/#lagoonlando","title":"Lagoon\u3068\u5171\u306b\u9032\u5316\u3059\u308bLando","text":""},{"location":"ja/resources/tutorials-and-webinars/#-lagoon","title":"\u30a6\u30a7\u30d3\u30ca\u30fc - Lagoon\u30a4\u30f3\u30b5\u30a4\u30c8","text":""},{"location":"ja/resources/tutorials-and-webinars/#lagoon_1","title":"Lagoon\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30c7\u30e2","text":""},{"location":"ja/resources/tutorials-and-webinars/#lagoondrupal","title":"Lagoon\u3092\u4f7f\u3063\u3066\u8907\u6570\u306eDrupal\u30b5\u30a4\u30c8\u3092\u7ba1\u7406\u3059\u308b\u65b9\u6cd5","text":"[\u30b9\u30e9\u30a4\u30c9]
"},{"location":"ja/resources/tutorials-and-webinars/#kubernetes101","title":"Kubernetes\u30a6\u30a7\u30d3\u30ca\u30fc101","text":"[\u30b9\u30e9\u30a4\u30c9]
"},{"location":"ja/resources/tutorials-and-webinars/#kubernetes102","title":"Kubernetes\u30a6\u30a7\u30d3\u30ca\u30fc102","text":"[\u30b9\u30e9\u30a4\u30c9]
"},{"location":"ja/resources/tutorials-and-webinars/#11000","title":"\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9:\u79c1\u305f\u3061\u304c\u6708\u306b1\u51041000\u4e07\u56de\u30d2\u30c3\u30c8\u3059\u308b\u5206\u96e2\u578b\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3092\u904b\u55b6\u3059\u308b\u65b9\u6cd5","text":""},{"location":"ja/resources/tutorials-and-webinars/#lagoondrupaldocker","title":"Lagoon:\u30d5\u30ebDrupal\u30b5\u30dd\u30fc\u30c8\u4ed8\u304d\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9Docker\u30d3\u30eb\u30c9\uff06\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30b7\u30b9\u30c6\u30e0","text":""},{"location":"ja/resources/tutorials-and-webinars/#kibana","title":"Kibana\u3067\u5185\u90e8\u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc\u3092\u4fee\u6b63\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#_2","title":"\u65b0\u3057\u3044\u30eb\u30fc\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#_3","title":"\u30d3\u30eb\u30c9\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u306f\u3069\u306e\u3088\u3046\u306b\u78ba\u8a8d\u3057\u307e\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#lagoon_2","title":"Lagoon\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3088\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#_4","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3088\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#_5","title":"\u30af\u30ed\u30f3\u30b8\u30e7\u30d6\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3088\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#kubernetesweb-toby-bellwood-techweek21","title":"Kubernetes\u306bWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b - Toby Bellwood | Techweek21\u30c8\u30fc\u30af","text":""},{"location":"ja/resources/tutorials-and-webinars/#covid-19-sean-hamlin-techweek21","title":"Covid-19\u4e2d\u306b\u524d\u4f8b\u306e\u306a\u3044\u898f\u6a21\u3067\u5bfe\u51e6\u3059\u308b - Sean Hamlin| Techweek21\u30c8\u30fc\u30af","text":""},{"location":"ja/resources/tutorials-and-webinars/#silverstripe-on-lagoon-thom-toogood-techweek21","title":"\u30ed\u30fc\u30ab\u30eb\u304b\u3089\u30e9\u30a4\u30d6\u3078\u306eSilverstripe on Lagoon -Thom Toogood | Techweek21\u30c8\u30fc\u30af","text":""},{"location":"ja/using-lagoon-advanced/","title":"Lagoon\u306e\u9ad8\u5ea6\u306a\u4f7f\u3044\u65b9","text":"\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Lagoon\u306e\u3088\u308a\u9ad8\u5ea6\u306a\u6a5f\u80fd\u3084\u7279\u5fb4\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002Lagoon\u304c\u521d\u3081\u3066\u306e\u65b9\u306f\u3001\u307e\u305aLagoon\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u304b\u3089\u59cb\u3081\u3066\u304f\u3060\u3055\u3044\u3002
\u30b5\u30dd\u30fc\u30c8\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u304b\u3001\u79c1\u305f\u3061\u306eDiscord\u3067\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30e1\u30f3\u30d0\u30fc\u3084\u30e1\u30f3\u30c6\u30ca\u30fc\u306b\u554f\u3044\u5408\u308f\u305b\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/active-standby/#_1","title":"\u8a2d\u5b9a","text":"\u65e2\u5b58\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092Active/Standby\u306b\u5bfe\u5fdc\u3055\u305b\u308b\u305f\u3081\u306b\u306f\u3001Lagoon API\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u3092\u3044\u304f\u3064\u304b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
productionEnviromment
\u306f\u3001\u73fe\u5728\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u74b0\u5883\u306e\u30d6\u30e9\u30f3\u30c1\u540d\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 standbyProductionEnvironment
\u306f\u3001\u73fe\u5728\u30b9\u30bf\u30f3\u30d0\u30a4\u4e2d\u306e\u74b0\u5883\u306e\u30d6\u30e9\u30f3\u30c1\u540d\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u306e\u66f4\u65b0mutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionEnvironment:\"production-brancha\"\nstandbyProductionEnvironment:\"production-branchb\"\n}\n}){\nstandbyProductionEnvironment\nname\nproductionEnvironment\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/active-standby/#lagoonyml-production_routes","title":".lagoon.yml
- production_routes
","text":".lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092Active/Standby\u306b\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u306f\u3001active
\u74b0\u5883\u306b\u30a2\u30bf\u30c3\u30c1\u3057\u305f\u3044\u30eb\u30fc\u30c8\u3068standby
\u74b0\u5883\u306b\u30a2\u30bf\u30c3\u30c1\u3057\u305f\u3044\u30eb\u30fc\u30c8\u3092production_routes
\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002Active/Standby\u306e\u5207\u308a\u66ff\u3048\u6642\u306b\u306f\u3001\u3053\u308c\u3089\u306e\u30eb\u30fc\u30c8\u306f2\u3064\u306e\u74b0\u5883\u9593\u3067\u79fb\u884c\u3057\u307e\u3059\u3002
production-brancha
\u3068production-branchb
\u306e2\u3064\u306eproduction
\u74b0\u5883\u304c\u3042\u308a\u3001\u73fe\u5728\u30a2\u30af\u30c6\u30a3\u30d6\u306aproduction
\u74b0\u5883\u304cproduction-brancha
\u3067\u3042\u308b\u5834\u5408\uff1a
production_routes.active
\u914d\u4e0b\u306e\u30eb\u30fc\u30c8\u306fproduction-brancha
\u306b\u5411\u304b\u308f\u305b\u307e\u3059\u3002 production_routes.standby
\u914d\u4e0b\u306e\u30eb\u30fc\u30c8production-branchb
\u306b\u5411\u304b\u308f\u305b\u307e\u3059\u3002
Active/Standby\u306e\u5207\u308a\u66ff\u3048\u6642\u306b\u306f\u3001\u30eb\u30fc\u30c8\u304c\u5165\u308c\u66ff\u308f\u308a\u307e\u3059:
production_routes.active
\u914d\u4e0b\u306e\u30eb\u30fc\u30c8\u306fproduction-branchb
\u306b\u5411\u304b\u308f\u305b\u307e\u3059\u3002 production_routes.standby
\u914d\u4e0b\u306e\u30eb\u30fc\u30c8\u306fproduction-brancha
\u306b\u5411\u304b\u308f\u305b\u307e\u3059\u3002
.lagoon.ymlproduction_routes:\nactive:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'false'\n- active.example.com:\ntls-acme: 'false'\nstandby:\nroutes:\n- nginx:\n- standby.example.com:\ntls-acme: 'false'\n
\u60c5\u5831
environments..routes
\u30bb\u30af\u30b7\u30e7\u30f3\u914d\u4e0b\u306b\u3042\u308b\u30eb\u30fc\u30c8\u306f\u3001Active/Standby\u306e\u4e00\u90e8\u3068\u3057\u3066\u79fb\u52d5\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u3089\u306e\u30eb\u30fc\u30c8\u306f\u5e38\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u306b\u30a2\u30bf\u30c3\u30c1\u3055\u308c\u307e\u3059\u3002Active/Standby\u306e\u5207\u308a\u66ff\u3048\u4e2d\u306b\u7279\u5b9a\u306e\u30eb\u30fc\u30c8\u3092\u79fb\u884c\u3059\u308b\u5fc5\u7528\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3089\u3092\u74b0\u5883\u30bb\u30af\u30b7\u30e7\u30f3\u304b\u3089\u524a\u9664\u3057\u3001Active\u307e\u305f\u306f\u3001Standby\u30eb\u30fc\u30c8\u56fa\u6709\u306eproduction_routes
\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u914d\u7f6e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 .lagoon.yml
\u306e\u30eb\u30fc\u30c8\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u306f\u3053\u3061\u3089\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/active-standby/#_2","title":"\u5207\u308a\u66ff\u3048\u30a4\u30d9\u30f3\u30c8\u306e\u30c8\u30ea\u30ac\u30fc","text":""},{"location":"ja/using-lagoon-advanced/active-standby/#ui","title":"UI\u7d4c\u7531","text":"\u74b0\u5883\u30eb\u30fc\u30c8\u306e\u5207\u308a\u66ff\u3048\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u306b\u306f\u3001Lagoon UI\u3067Standby
\u74b0\u5883\u3092\u8a2a\u308c\u3001Switch Active/Standby environments
\u3068\u3044\u3046\u30e9\u30d9\u30eb\u306e\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u78ba\u8a8d\u3059\u308b\u3088\u3046\u306b\u6c42\u3081\u3089\u308c\u307e\u3059\u3002
\u78ba\u8a8d\u3059\u308b\u3068\u3001\u30bf\u30b9\u30af\u30da\u30fc\u30b8\u306b\u79fb\u52d5\u3057\u3001\u5207\u308a\u66ff\u3048\u306e\u9032\u6357\u72b6\u6cc1\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/active-standby/#api","title":"API\u7d4c\u7531","text":"\u74b0\u5883\u3092\u5207\u308a\u66ff\u3048\u308b\u30a4\u30d9\u30f3\u30c8\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u306b\u306f\u3001\u6b21\u306eGraphQL mutation\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u304c\u30d7\u30ed\u30bb\u30b9\u3092\u958b\u59cb\u3057\u307e\u3059\u3002
\u30a2\u30af\u30c6\u30a3\u30d6\u30b9\u30bf\u30f3\u30d0\u30a4\u30b9\u30a4\u30c3\u30c1mutation ActiveStandby {\nswitchActiveStandby(\ninput:{\nproject:{\nname:\"drupal-example\"\n}\n}\n){\nid\nremoteId\n}\n}\n
\u5207\u308a\u66ff\u3048\u30a4\u30d9\u30f3\u30c8\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u308b\u3068\u3001\u73fe\u5728\u306e\u30a2\u30af\u30c6\u30a3\u30d6\u74b0\u5883\u306e tasks
\u30bf\u30d6\u306b\u30bf\u30b9\u30af\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\u3053\u3053\u3067\u5207\u308a\u66ff\u3048\u306e\u72b6\u614b\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
remoteId
\u3092\u4f7f\u7528\u3057\u3066\u3001switchActiveStandby
mutation\u304b\u3089\u30bf\u30b9\u30af\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u30bf\u30b9\u30af\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u78ba\u8a8dquery getTask {\ntaskByRemoteId(id: \"<remoteId>\") {\nid\nname\ncreated\nstarted\ncompleted\nstatus\nlogs\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/active-standby/#drush","title":"drush
\u30a8\u30a4\u30ea\u30a2\u30b9","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u4ee5\u4e0b\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u304c\u4f5c\u6210\u3055\u308c\u3001Active/Standby\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u5229\u7528\u3067\u304d\u307e\u3059\u3002
lagoon-production
lagoon-standby
lagoon-production
\u30a8\u30a4\u30ea\u30a2\u30b9\u306fproductionEnvironment
\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30b5\u30a4\u30c8\u3092\u6307\u3057\u3001lagoon-standby
\u306f\u5e38\u306bstandbyProductionEnvironment
\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30b5\u30a4\u30c8\u3092\u6307\u3057\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u66f4\u65b0\u306b\u3088\u3063\u3066\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u305d\u308c\u3089\u3092\u5909\u66f4\u3059\u308b\u3068\u3001\u305d\u308c\u3089\u306b\u4f9d\u5b58\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Drush\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u66f4\u65b0mutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionAlias:\"custom-lagoon-production-alias\"\nstandbyAlias:\"custom-lagoon-standby-alias\"\n}\n}){\nproductionAlias\nname\nstandbyAlias\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/active-standby/#activestandby_1","title":"Active/Standby\u306e\u7121\u52b9\u5316","text":"\u3053\u308c\u30892\u3064\u306e\u30d6\u30e9\u30f3\u30c1\u306e\u3046\u3061\u3001\u3069\u3061\u3089\u3092\u4e3b\u306a\u74b0\u5883\u3068\u3057\u3066\u9032\u3081\u3066\u3044\u304f\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001 \u305d\u308c\u304c\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30d6\u30e9\u30f3\u30c1\u3068\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002(\u4f8b:production-branchb
)
- \u3053\u306e\u73fe\u5728\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30d6\u30e9\u30f3\u30c1\u306e
.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u3001production_routes.active.routes
\u30bb\u30af\u30b7\u30e7\u30f3\u304b\u3089\u30eb\u30fc\u30c8\u3092environments.production-branchb
\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u305d\u306e\u30eb\u30fc\u30c8\u304cproduction-branchb environment
\u306b\u306e\u307f\u95a2\u9023\u4ed8\u3051\u3089\u308c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002 - \u3053\u308c\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001
.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u5b8c\u5168\u306bproduction_routes\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u524a\u9664\u3057\u3001production-branchb\u74b0\u5883\u3092\u518d\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u307e\u3059\u3002 - \u3082\u30461\u3064\u306e\u30d6\u30e9\u30f3\u30c1\u3067\u3042\u308b
production-brancha
\u304c\u5fc5\u8981\u306a\u3044\u5834\u5408\u306f\u524a\u9664\u3057\u3066\u3082\u304b\u307e\u3044\u307e\u305b\u3093\u3002 - Git\u306b\u30d6\u30e9\u30f3\u30c1\u3092\u4fdd\u6301\u3059\u308b\u5834\u5408\u3001\u6df7\u4e71\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u306e
.lagoon.yml
\u304b\u3089\u3082production_routes
\u3092\u524a\u9664\u3057\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u30d6\u30e9\u30f3\u30c1\u306f\u524a\u9664\u3057\u3066\u518d\u30c7\u30d7\u30ed\u30a4(\u3059\u3079\u3066\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306a\u3069\u3092\u6d88\u53bb)\u3059\u308b\u307e\u3067production
\u30bf\u30a4\u30d7\u3068\u3057\u3066\u6b8b\u308a\u307e\u3059\u3002 - \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c
production-branchb
\u306eproduction
\u74b0\u5883\u306e\u307f\u3067\u3001\u4ed6\u306e\u3059\u3079\u3066\u306e\u74b0\u5883\u304cdevelopment
\u74b0\u5883\u3067\u3042\u308b\u72b6\u614b\u306b\u306a\u3063\u305f\u3089\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u66f4\u65b0\u3057\u3066standbyProductionEnvironment
\u3092\u524a\u9664\u3057\u3001\u74b0\u5883\u306eActive/Standby\u30e9\u30d9\u30eb\u3092\u6d88\u53bb\u3057\u307e\u3059\u3002
\u30a2\u30af\u30c6\u30a3\u30d6/\u30b9\u30bf\u30f3\u30d0\u30a4\u3092\u30aa\u30d5\u306b\u3059\u308bmutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionEnvironment:\"production-branchb\"\nstandbyProductionEnvironment:\"\"\n}\n}){\nstandbyProductionEnvironment\nname\nproductionEnvironment\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/active-standby/#_3","title":"\u30ce\u30fc\u30c8","text":"Active/Standby\u30c8\u30ea\u30ac\u30fc\u304c\u5b9f\u884c\u3055\u308c\u305f\u3068\u304d\u3001productionEnvironment
\u3068standbyProductionEnvironments
\u306fLagoon API\u5185\u3067\u5207\u308a\u66ff\u308f\u308a\u307e\u3059\u3002\u4e21\u65b9\u306e\u74b0\u5883\u306f\u307e\u3060production
\u74b0\u5883\u30bf\u30a4\u30d7\u3068\u3057\u3066\u5206\u985e\u3055\u308c\u3066\u3044\u307e\u3059\u3002productionEnvironment
\u306f\u3069\u3061\u3089\u304cactive
\u3068\u30e9\u30d9\u30eb\u4ed8\u3051\u3055\u308c\u3066\u3044\u308b\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002\u74b0\u5883\u30bf\u30a4\u30d7\u306e\u9055\u3044\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306f\u3001environment types
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
GraphQL\u3092\u4f7f\u3063\u3066\u74b0\u5883\u3092\u53d6\u5f97\u3059\u308bquery projectByName {\nprojectByName(name:\"drupal-example\"){\nproductionEnvironment\nstandbyProductionEnvironment\n}\n}\n
\u74b0\u5883\u3092\u5207\u308a\u66ff\u3048\u308b\u524d
\u74b0\u5883\u30af\u30a8\u30ea\u306e\u7d50\u679c{\n\"data\": {\n\"projectByName\": {\n\"productionEnvironment\": \"production-brancha\",\n\"standbyProductionEnvironment\": \"production-branchb\"\n}\n}\n}\n
\u74b0\u5883\u3092\u5207\u308a\u66ff\u3048\u305f\u5f8c
\u74b0\u5883\u30af\u30a8\u30ea\u306e\u7d50\u679c{\n\"data\": {\n\"projectByName\": {\n\"productionEnvironment\": \"production-branchb\",\n\"standbyProductionEnvironment\": \"production-brancha\"\n}\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/blackfire/","title":"\u30d6\u30e9\u30c3\u30af\u30d5\u30a1\u30a4\u30a2","text":""},{"location":"ja/using-lagoon-advanced/blackfire/#blackfire","title":"Blackfire\u306e\u5909\u6570","text":"Lagoon Base Images\u306b\u306f\u3001PHP Images\u306bBlackfire\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u307e\u3059\u3002(PHP images\u3092\u53c2\u7167)
Lagoon\u3067Blackfire\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e3\u3064\u306e\u74b0\u5883\u5909\u6570\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e BLACKFIRE_ENABLED
(\u8a2d\u5b9a\u306a\u3057) TRUE
\u307e\u305f\u306ftrue
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067blackfire
\u62e1\u5f35\u3092\u6709\u52b9\u306b\u3059\u308b\u3002 BLACKFIRE_SERVER_ID
(\u8a2d\u5b9a\u306a\u3057) Blackfire.io\u304b\u3089\u63d0\u4f9b\u3055\u308c\u308bBlackfire Server ID\u306b\u8a2d\u5b9a\u3059\u308b\u3002BLACKFIRE_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002 BLACKFIRE_SERVER_TOKEN
(\u8a2d\u5b9a\u306a\u3057) Blackfire.io\u304b\u3089\u63d0\u4f9b\u3055\u308c\u308bBlackfire Server Token\u306b\u8a2d\u5b9a\u3059\u308b\u3002BLACKFIRE_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002"},{"location":"ja/using-lagoon-advanced/blackfire/#blackfire_1","title":"Blackfire\u306e\u30ed\u30fc\u30ab\u30eb\u4f7f\u7528","text":"Lagoon Images\u3067Blackfire\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u4e0a\u8a18\u306e\u74b0\u5883\u5909\u6570\u3092PHP\u30b3\u30f3\u30c6\u30ca\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306fDrupal\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f8b\u3067\u3059\u3002
docker-compose.ymlservices:\n[[snip]]\nphp:\n[[snip]]\nenvironment:\n<< : *default-environment # \u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u3092\u4e0a\u304b\u3089\u8aad\u307f\u8fbc\u3080\nBLACKFIRE_ENABLED: TRUE\nBLACKFIRE_SERVER_ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\nBLACKFIRE_SERVER_TOKEN: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n
\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u8d77\u52d5\u3057\u305f\u5f8c\u3001Blackfire\u30d6\u30e9\u30a6\u30b6\u30d7\u30e9\u30b0\u30a4\u30f3\u307e\u305f\u306fBlackfire CLI\u3092\u901a\u3058\u3066\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/blackfire/#blackfire_2","title":"Blackfire\u306e\u30ea\u30e2\u30fc\u30c8\u4f7f\u7528","text":"\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305fLagoon\u74b0\u5883\u3067Blackfire\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u540c\u3058\u74b0\u5883\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u6642\u3001Lagoon\u306b\u74b0\u5883\u5909\u6570\u3092\u8ffd\u52a0\u3059\u308b\u65b9\u6cd5\u3067\u8a2d\u5b9a\u3057\u307e\u3059\u3002
\u91cd\u8981
\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u7528\u306bdocker-compose.yml
\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u306fLagoon\u306e\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u3067\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\uff01
"},{"location":"ja/using-lagoon-advanced/blackfire/#_2","title":"\u30c7\u30d0\u30c3\u30b0","text":"PHP\u30b3\u30f3\u30c6\u30ca\u3067\u52d5\u4f5c\u3057\u3066\u3044\u308bBlackfire\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306f\u3001\u901a\u5e38\u306e\u30b3\u30f3\u30c6\u30ca\u30ed\u30b0\u3068\u3057\u3066\u30ed\u30b0\u3092\u51fa\u529b\u3057\u307e\u3059\u3002\u3053\u308c\u306fdocker-compose logs
\u307e\u305f\u306f\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u306eLagoon Logging Infrastructure
\u3092\u901a\u3058\u3066\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30ed\u30b0\u306f\u30ec\u30d9\u30eb3
(\u60c5\u5831)\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u74b0\u5883\u5909\u6570BLACKFIRE_LOG_LEVEL
\u3092\u4f7f\u3063\u3066\u30ec\u30d9\u30eb\u30924
(\u30c7\u30d0\u30c3\u30b0)\u306b\u4e0a\u3052\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u591a\u304f\u306e\u60c5\u5831\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/","title":"\u30ab\u30b9\u30bf\u30e0\u30bf\u30b9\u30af","text":"Lagoon\u3067\u306f\u3001\u74b0\u5883\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u30ec\u30d9\u30eb\u3067\u30ab\u30b9\u30bf\u30e0\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u73fe\u5728\u3001\u3053\u308c\u306fGraphQL API\u3092\u901a\u3058\u3066\u884c\u308f\u308c\u3001UI\u3067\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_2","title":"\u30ab\u30b9\u30bf\u30e0\u30bf\u30b9\u30af\u306e\u5b9a\u7fa9","text":"\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b\u969b\u306b\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u3092\u6c7a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_3","title":"\u3069\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3057\u307e\u3059\u304b\uff1f","text":"\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u5b9f\u884c\u3059\u308b\u30ab\u30b9\u30bf\u30e0\u30bf\u30b9\u30af\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30f3\u30c6\u30ca\u306e\u4e00\u3064\u3067\u30b7\u30a7\u30eb\u304b\u3089\u5b9f\u884c\u3055\u308c\u308b\u3082\u306e\u3067\u3059\u3002
\u4f8b\u3048\u3070\u3001Node.js\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001node
\u30b3\u30f3\u30c6\u30ca\u3067yarn audit
\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306b\u8208\u5473\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u5834\u5408\u30b3\u30de\u30f3\u30c9\u306f\u5358\u7d14\u306byarn audit
\u3068\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_4","title":"\u3053\u306e\u30bf\u30b9\u30af\u306f\u3069\u3053\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u304b\uff1f","text":"\u3053\u306e\u30bf\u30b9\u30af\u304c\u3069\u3053\u3067\u5b9f\u884c\u3055\u308c\u308b\u304b\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u4e8c\u3064\u306e\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u307e\u305a\u3001\u3069\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u74b0\u5883\u3067\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u304b\u3001\u305d\u3057\u3066\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u884c\u3046\u304b\u3067\u3059\u3002
\u305f\u3068\u3048\u3070\u3001yarn audit
\u30bf\u30b9\u30af\u3092\u7279\u5b9a\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8(\u3053\u306e\u4f8b\u3067\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eID\u309242\u3068\u3057\u307e\u3057\u3087\u3046)\u306e\u4efb\u610f\u306e\u74b0\u5883\u3067\u5b9f\u884c\u53ef\u80fd\u306b\u3057\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u308b\u3068\u3057\u307e\u3057\u3087\u3046\u3002\u30bf\u30b9\u30af\u5b9a\u7fa9\u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u306f\u3001\u4e0b\u8a18\u3067\u8aac\u660e\u3059\u308b\u3088\u3046\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eID\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
2\u3064\u76ee\u306e\u8cea\u554f\u306f\u3001\u3069\u306e\u74b0\u5883\u3092\u30bf\u30b9\u30af\u306e\u5bfe\u8c61\u3068\u3059\u308b\u304b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u969b\u306bdocker-compose.yml
\u3067\u3044\u304f\u3064\u304b\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u540d\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30de\u30f3\u30c9\u304c\u5b9f\u969b\u306b\u3069\u3053\u3067\u5b9f\u884c\u3055\u308c\u308b\u304b\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_5","title":"\u3053\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3067\u304d\u308b\u306e\u306f\u8ab0\u3067\u3059\u304b\uff1f","text":"\u30bf\u30b9\u30af\u30b7\u30b9\u30c6\u30e0\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ed\u30fc\u30eb\u306b\u5bfe\u5fdc\u3057\u305f3\u3064\u306e\u30ec\u30d9\u30eb\u304c\u3042\u308a\u307e\u3059\u3002\u30b2\u30b9\u30c8\u3001\u30c7\u30d9\u30ed\u30c3\u30d1\u30fc\u3001\u30e1\u30f3\u30c6\u30ca\u30fc\u3067\u3059\u3002\u6700\u3082\u5236\u9650\u7684\u306a\u3082\u306e\u304b\u3089\u6700\u3082\u5236\u9650\u306e\u5c11\u306a\u3044\u3082\u306e\u307e\u3067\u3001\u5404\u30ed\u30fc\u30eb\u306f\u305d\u308c\u3088\u308a\u4e0b\u306e\u30ed\u30fc\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30bf\u30b9\u30af\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059(\u30c7\u30d9\u30ed\u30c3\u30d1\u30fc\u306f\u30b2\u30b9\u30c8\u306e\u30bf\u30b9\u30af\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u30e1\u30f3\u30c6\u30ca\u30fc\u306f\u3059\u3079\u3066\u306e\u30bf\u30b9\u30af\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_6","title":"\u30bf\u30b9\u30af\u306e\u5b9a\u7fa9","text":"\u30bf\u30b9\u30af\u306faddAdvancedTaskDefinition
\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u3067\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u91cd\u8981\u306a\u3053\u3068\u306f\u3001\u3053\u308c\u306f\u5358\u306b\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b\u3060\u3051\u3067\u547c\u3073\u51fa\u3059\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5358\u306b\u305d\u308c\u3092\u74b0\u5883\u3067\u5b9f\u884c\u53ef\u80fd\u306b\u3059\u308b\u3060\u3051\u3067\u3059\u3002
\u6982\u5ff5\u7684\u306b\u306f\u547c\u3073\u51fa\u3057\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
\u65b0\u3057\u3044\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308bmutation addAdvancedTask {\naddAdvancedTaskDefinition(input:{\nname: string,\nconfirmationText: string,\ntype: [COMMAND|IMAGE],\n[project|environment]: int,\ndescription: string,\nservice: string,\ncommand: string,\nadvancedTaskDefinitionArguments: [\n{\nname: \"ENVIROMENT_VARIABLE_NAME\",\ndisplayName: \"Friendly Name For Variable\",\ntype: [STRING | ENVIRONMENT_SOURCE_NAME | ENVIRONMENT_SOURCE_NAME_EXCLUDE_SELF]\n}\n]\n}) {\n... on AdvancedTaskDefinitionImage {\nid\nname\ndescription\nservice\nimage\nconfirmationText\nadvancedTaskDefinitionArguments {\ntype\nrange\nname\ndisplayName\n}\n...\n}\n... on AdvancedTaskDefinitionCommand {\nid\nname\ndescription\nservice\ncommand\nadvancedTaskDefinitionArguments {\ntype\nrange\nname\ndisplayName\n}\n...\n}\n}\n}\n
\u30d5\u30a3\u30fc\u30eb\u30c9name
\u3068description
\u306f\u7c21\u5358\u3067\u3059\u3002\u3053\u308c\u3089\u306f\u4e3b\u306bUI\u3067\u4f7f\u7528\u3055\u308c\u308b\u30bf\u30b9\u30af\u306e\u540d\u524d\u3068\u8aac\u660e\u3067\u3059\u3002
type
\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u3064\u3044\u3066\u306f\u8aac\u660e\u304c\u5fc5\u8981\u3067\u3059\u3002\u73fe\u6642\u70b9\u3067\u306f\u3001\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u7ba1\u7406\u8005\u306e\u307f\u304cIMAGE
\u30bf\u30a4\u30d7\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u65e2\u5b58\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5bfe\u8c61\u306b\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u3092\u30bf\u30b9\u30af\u3068\u3057\u3066\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u307b\u3068\u3093\u3069\u306e\u30bf\u30b9\u30af\u306fCOMMAND
\u30bf\u30a4\u30d7\u3067\u3059\u3002
[project|environment]
\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u30bb\u30c3\u30c8\u306f\u3001\u30bf\u30b9\u30af\u3092project
\u307e\u305f\u306fenvironment
\u306b\u95a2\u9023\u4ed8\u3051\u308b(\u4f7f\u7528\u3059\u308b\u30ad\u30fc\u306b\u3088\u308a\u307e\u3059)\u3053\u3068\u3067\u3001\u305d\u306e\u5024\u304cid\u306b\u306a\u308a\u307e\u3059\u3002 \u79c1\u305f\u3061\u304cyarn audit
\u306e\u305f\u3081\u306b\u8003\u3048\u3066\u3044\u308b\u30b1\u30fc\u30b9\u3067\u306f\u3001ID\u304c42
\u306eproject
\u3092\u5bfe\u8c61\u3068\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u660e\u793a\u3057\u307e\u3059\u3002
\u79c1\u305f\u3061\u304c\u30bf\u30b9\u30af\u3067\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u3092service
\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u7f6e\u304d\u3001command
\u306f\u79c1\u305f\u3061\u304c\u5b9f\u884c\u3057\u305f\u3044\u5b9f\u969b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_7","title":"\u30bf\u30b9\u30af\u306b\u6e21\u3055\u308c\u308b\u5f15\u6570","text":"Lagoon UI\u7d4c\u7531\u3067\u30bf\u30b9\u30af\u3092\u547c\u3073\u51fa\u3059\u30e6\u30fc\u30b6\u30fc\u306b\u67d4\u8edf\u6027\u3092\u4e0e\u3048\u308b\u305f\u3081\u306b\u3001\u30bf\u30b9\u30af\u5f15\u6570\u306e\u5b9a\u7fa9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5f15\u6570\u306f\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u307e\u305f\u306f\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u3068\u3057\u3066\u8868\u793a\u3055\u308c\u3001\u30bf\u30b9\u30af\u3092\u547c\u3073\u51fa\u3059\u305f\u3081\u306b\u5fc5\u8981\u3067\u3059\u3002
\u4ee5\u4e0b\u306f\u30012\u3064\u306e\u5f15\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306e\u4f8b\u3067\u3059\u3002
\u30bf\u30b9\u30af\u5f15\u6570\u306e\u5b9a\u7fa9advancedTaskDefinitionArguments: [\n{\nname: \"ENV_VAR_NAME_SOURCE\",\ndisplayName: \"Environment source\",\ntype: ENVIRONMENT_SOURCE_NAME\n},\n{\nname: \"ENV_VAR_NAME_STRING\",\ndisplayName: \"Echo value\",\ntype: STRING\n}\n]\n})\n
\u3053\u306e\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u304c\u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u4e21\u65b9\u306e\u30bf\u30a4\u30d7\u306e\u5f15\u6570\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 \u6700\u521d\u306eENV_VAR_NAME_SOURCE
\u306fENVIRONMENT_SOURCE_NAME
\u30bf\u30a4\u30d7\u306e\u4f8b\u3067\u3001UI\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u7570\u306a\u308b\u74b0\u5883\u306e\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u3092\u63d0\u793a\u3057\u307e\u3059\u3002\u30bf\u30b9\u30af\u304c\u8d77\u52d5\u3057\u305f\u74b0\u5883\u3067\u5b9f\u884c\u3055\u308c\u308b\u306e\u3092\u8a31\u53ef\u3057\u305f\u304f\u306a\u3044\u5834\u5408(\u4f8b\u3048\u3070\u3001\u4ed6\u306e\u74b0\u5883\u304b\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u3044\u5834\u5408\u306a\u3069)\u306fENVIRONMENT_SOURCE_NAME_EXCLUDE_SELF
\u3092\u4f7f\u7528\u3057\u3066\u74b0\u5883\u30ea\u30b9\u30c8\u3092\u5236\u9650\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u4e8c\u3064\u76ee\u306eENV_VAR_NAME_STRING
\u306fSTRING
\u578b\u3067\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u3092\u8a18\u5165\u3059\u308b\u3088\u3046\u306b\u4fc3\u3057\u307e\u3059\u3002
\u30e6\u30fc\u30b6\u30fc\u304c\u9078\u629e\u3057\u305f\u5024\u306f\u3001\u30bf\u30b9\u30af\u304c\u5b9f\u884c\u3055\u308c\u305f\u3068\u304d\u306bCOMMAND
\u578b\u306e\u30bf\u30b9\u30af\u3067\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u5229\u7528\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_8","title":"\u30b7\u30b9\u30c6\u30e0\u5168\u4f53\u306e\u30bf\u30b9\u30af","text":"\u30b7\u30b9\u30c6\u30e0\u5168\u4f53\u306e\u30bf\u30b9\u30af\u3092\u767b\u9332\u3067\u304d\u308b\u306e\u306fLagoon\u306e\u7ba1\u7406\u8005\u306e\u307f\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u30bf\u30b9\u30af\u306f\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u8868\u793a\u3055\u308c\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u6301\u3064\u6a29\u9650\u306b\u3088\u3063\u3066\u5236\u9650\u3055\u308c\u307e\u3059\u3002
\u30b7\u30b9\u30c6\u30e0\u5168\u4f53\u306e\u30bf\u30b9\u30af\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u306f\u3001\u4ed6\u306e\u30bf\u30b9\u30af\u30bf\u30a4\u30d7\u3068\u307b\u307c\u540c\u3058\u3067\u3059\u304c\u30012\u3064\u306e\u4f8b\u5916\u304c\u3042\u308a\u307e\u3059\u3002
\u307e\u305a\u3001addAdvancedTaskDefinition
\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u4e2d\u3067systemWide: true
\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
\u6b21\u306b\u3001groupName
\u3001project
\u3001environment
\u3092\u6307\u5b9a\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u305f\u3081\u3001\u6307\u5b9a\u3059\u308b\u3068\u76ee\u7684\u3092\u9038\u8131\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_9","title":"\u78ba\u8a8d","text":"confirmationText
\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u30c6\u30ad\u30b9\u30c8\u304c\u3042\u308b\u3068\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u524d\u306b\u3001UI\u306b\u78ba\u8a8d\u30e2\u30fc\u30c0\u30eb\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_10","title":"\u30bf\u30b9\u30af\u306e\u547c\u3073\u51fa\u3057","text":"\u30bf\u30b9\u30af\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u3068\u3001\u30bf\u30b9\u30af\u306fLagoon UI\u306e\u30bf\u30b9\u30af\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u306b\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002
\u307e\u305f\u3001invokeTask
\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066GraphQL api\u304b\u3089\u3082\u547c\u3073\u51fa\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u30bf\u30b9\u30af\u306e\u547c\u3073\u51fa\u3057mutation invokeTask {\ninvokeRegisteredTask(advancedTaskDefinition: int, environment: int) {\nstatus\n}\n}\n
invokeTask
\u306f\u5e38\u306b\u7279\u5b9a\u306e\u74b0\u5883\u3067\u30bf\u30b9\u30af\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_11","title":"\u4f8b","text":"\u3067\u306f\u3001yarn audit
\u306e\u4f8b\u3092\u8a2d\u5b9a\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002
\u30bf\u30b9\u30af\u5b9a\u7fa9\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3mutation runYarnAudit {\naddAdvancedTaskDefinition(input:{\nname:\"Run yarn audit\",\nproject: 42,\ntype:COMMAND,\npermission:DEVELOPER,\ndescription: \"Runs a 'yarn audit'\",\nservice:\"node\",\ncommand: \"yarn audit\"})\n{\nid\n}\n}\n
\u3053\u308c\u306b\u3088\u308a\u3001\u79c1\u305f\u3061\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8(42)\u306e\u30bf\u30b9\u30af\u304c\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30bf\u30b9\u30af\u5b9a\u7fa9\u306eID\u304c\u8fd4\u3055\u308c\u307e\u3059(\u4f8b\u3048\u3070\u30019
\u3068\u3057\u307e\u3059)
\u3053\u306e\u30bf\u30b9\u30af\u306f\u3001DEVELOPER
\u307e\u305f\u306fMAINTAINER
\u306e\u5f79\u5272\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u304cUI\u304b\u3089\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/deploytarget-configs/","title":"DeployTarget\u8a2d\u5b9a","text":"DeployTarget\u8a2d\u5b9a\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u8907\u6570\u306e\u30af\u30e9\u30b9\u30bf\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u65b9\u6cd5\u3092\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306f\u3001\u672c\u756a\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u5c02\u7528\u306e\u30af\u30e9\u30b9\u30bf\u3068\u3001\u958b\u767a\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u5225\u306e\u30af\u30e9\u30b9\u30bf\u304c\u3042\u308b\u5834\u5408\u306b\u4fbf\u5229\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u306f\u3001\u5358\u306b\u672c\u756a/\u958b\u767a\u306e\u5206\u5272\u306b\u9650\u5b9a\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u305f\u3081\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u7279\u5b9a\u306e\u30af\u30e9\u30b9\u30bf\u3092\u8907\u6570\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3067\u304d\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
DeployTarget\u8a2d\u5b9a\u306e\u57fa\u672c\u7684\u306a\u8003\u3048\u65b9\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u8907\u6570\u306e\u30af\u30e9\u30b9\u30bf\u9593\u3067\u3069\u306e\u3088\u3046\u306b\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u308b\u304b\u3092\u7c21\u5358\u306b\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u3067\u3042\u308a\u3001\u74b0\u5883\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3059\u308b\u65e2\u5b58\u306e\u65b9\u6cd5\u3092\u5229\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/deploytarget-configs/#_1","title":"\u91cd\u8981\u306a\u60c5\u5831","text":"DeployTarget\u8a2d\u5b9a\u3092\u5229\u7528\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3059\u308b\u524d\u306b\u3001\u77e5\u3063\u3066\u304a\u304f\u3079\u304d\u3053\u3068\u304c\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u3002
-
\u74b0\u5883\u306b\u306f\u3069\u306eDeployTarget(Kubernetes\u307e\u305f\u306fOpenShift)\u3067\u4f5c\u6210\u3055\u308c\u305f\u304b\u3092\u8b58\u5225\u3059\u308b\u305f\u3081\u306e\u65b0\u305f\u306a2\u3064\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u5229\u7528\u53ef\u80fd\u306b\u306a\u308a\u307e\u3057\u305f\u3002
kubernetesNamespacePattern
kubernetes
-
\u7279\u5b9a\u306eDeployTarget\u306b\u4e00\u5ea6\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u74b0\u5883\u306f\u3001DeployTarget\u8a2d\u5b9a\u3084\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u304c\u5909\u66f4\u3055\u308c\u3066\u3082\u3001\u5e38\u306b\u3053\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002
- \u3053\u308c\u306b\u3088\u308aDeployTarget\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3057\u3066\u3082\u3001\u7570\u306a\u308b\u30af\u30e9\u30b9\u30bf\u3067\u65b0\u3057\u3044\u74b0\u5883\u304c\u4f5c\u6210\u3055\u308c\u308b\u3053\u3068\u304c\u306a\u304f\u306a\u308a\u3001\u65e2\u5b58\u306e\u74b0\u5883\u306b\u5bfe\u3057\u3066\u4e00\u5b9a\u306e\u5b89\u5168\u6027\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002
- \u3053\u308c\u306fLagoon\u306e\u65b0\u6a5f\u80fd\u3067\u3042\u308a\u3001DeployTarget\u8a2d\u5b9a\u306b\u7279\u5316\u3055\u308c\u305f\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306bDeployTarget\u306e\u8a2d\u5b9a\u304c\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u305d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u65e2\u5b58\u306e\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u3069\u306e\u74b0\u5883\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u304b\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u4ee5\u4e0b\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
branches
pullrequests
kubernetesNamespacePattern
kubernetes
-
DeployTarget\u306e\u8a2d\u5b9a\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3055\u308c\u308b\u3068\u3001\u4eca\u5f8c\u3059\u3079\u3066\u306e\u30c7\u30d7\u30ed\u30a4\u306f\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u306f\u7121\u8996\u3055\u308c\u3001DeployTarget\u306e\u8a2d\u5b9a\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u30e6\u30fc\u30b6\u30fc\u306b\u901a\u77e5\u3059\u308b\u305f\u3081\u306b\u4e0a\u66f8\u304d\u3055\u308c\u307e\u3059\u3002
-
DeployTarget\u306e\u8a2d\u5b9a\u306f\u91cd\u307f\u4ed8\u3051\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u308c\u306f\u5927\u304d\u3044\u91cd\u307f\u306eDeployTarget\u8a2d\u5b9a\u304c\u5c0f\u3055\u3044\u91cd\u307f\u306e\u3082\u306e\u3088\u308a\u512a\u5148\u3055\u308c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
- \u30af\u30a8\u30ea\u3067\u8fd4\u3055\u308c\u308b\u9806\u5e8f\u304c\u3001\u74b0\u5883\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3079\u304d\u5834\u6240\u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u9806\u5e8f\u3067\u3059\u3002
-
Active/Standby\u74b0\u5883\u306f\u3001\u540c\u3058\u30af\u30e9\u30b9\u30bf\u306a\u306e\u3067\u3001DeployTarget\u8a2d\u5b9a\u306f\u305d\u308c\u3089\u306e\u74b0\u5883\u3092\u540c\u3058\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-
Lagoon\u306epromote
\u6a5f\u80fd\u3092\u6d3b\u7528\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u3001DeployTarget\u8a2d\u5b9a\u304cdestination
\u74b0\u5883\u3067\u306f\u7121\u8996\u3055\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
- \u30c7\u30a3\u30b9\u30c6\u30a3\u30cd\u30fc\u30b7\u30e7\u30f3\u74b0\u5883\u306f\u5e38\u306b
source
\u74b0\u5883\u304c\u3042\u308b\u540c\u3058\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u306e\u3067\u3001DeployTarget\u8a2d\u5b9a\u306f\u3053\u306esource
\u74b0\u5883\u306b\u5bfe\u3057\u3066\u6b63\u3057\u304f\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 - \u5b89\u5168\u306e\u305f\u3081\u3001
source
\u3068destination
\u306e\u74b0\u5883\u3092\u540c\u3058DeployTarget\u8a2d\u5b9a\u306e\u30d6\u30e9\u30f3\u30c1\u6b63\u898f\u8868\u73fe\u3067\u5b9a\u7fa9\u3059\u308b\u306e\u304c\u30d9\u30b9\u30c8\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/deploytarget-configs/#_2","title":"\u8a2d\u5b9a","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067DeployTarget\u8a2d\u5b9a\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u69cb\u6210\u3059\u308b\u306b\u306f\u3001\u6700\u521d\u306e\u30b9\u30c6\u30c3\u30d7\u3068\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
\u4ee5\u4e0b\u306eGraphQL\u306e\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u7279\u5b9a\u306e\u4f8b\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8ID 1\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306bDeployTarget\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u540d\u524d\u304cmain
\u3068\u4e00\u81f4\u3059\u308b\u30d6\u30e9\u30f3\u30c1\u306e\u307f\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u3001pullrequests
\u306ffalse
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 \u3053\u308c\u306f\u3001\u4ed6\u306e\u30d6\u30e9\u30f3\u30c1\u304c\u3053\u306e\u7279\u5b9a\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u305a\u3001\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3082\u3053\u306e\u7279\u5b9a\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002 deployTarget
\u306fID 1\u3067\u3001\u3053\u308c\u306fKubernetes\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u7279\u5b9a\u306e\u5730\u57df\u3084\u7279\u5b9a\u306e\u7a2e\u985e\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9(\u88fd\u54c1\u7248\u307e\u305f\u306f\u958b\u767a\u7248)\u5411\u3051\u306b\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
DeployTarget\u306e\u8a2d\u5b9amutation addDeployTargetConfig{\naddDeployTargetConfig(input:{\nproject: 1\nbranches: \"main\"\npullrequests: \"false\"\ndeployTarget: 1\nweight: 1\n}){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n
\u60c5\u5831
deployTarget
\u306fLagoon API\u5185\u306eKubernetes\u307e\u305f\u306fOpenShift ID\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u3067\u3059
\u307e\u305f\u3001\u8907\u6570\u306eDeployTarget\u8a2d\u5b9a\u3092\u69cb\u6210\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002
\u4ee5\u4e0b\u306eGraphQL\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u4f8b\u3067\u306f\u3001\u4e0a\u8a18\u3068\u540c\u3058\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306bDeployTarget\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
\u3053\u308c\u306b\u3088\u308a\u3001^feature/|^(dev|test|develop)$
\u3068\u6b63\u898f\u8868\u73fe\u304c\u30de\u30c3\u30c1\u3059\u308b\u30d6\u30e9\u30f3\u30c1\u306e\u307f\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002\u305d\u3057\u3066\u3001pullrequests
\u306f true
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3059\u3079\u3066\u306e\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u3053\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u5230\u9054\u3057\u307e\u3059\u3002
\u3053\u306e\u4f8b\u3067\u306f\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u3068\u306a\u308b\u30af\u30e9\u30b9\u30bf\u306fID2\u3067\u3001main
\u30d6\u30e9\u30f3\u30c1\u4e0a\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u3082\u306e\u3068\u306f\u5168\u304f\u7570\u306a\u308bKubernetes\u30af\u30e9\u30b9\u30bf\u3067\u3059\u3002
DeployTarget\u306e\u8a2d\u5b9amutation addDeployTargetConfig{\naddDeployTargetConfig(input:{\nproject: 1\nbranches: \"^feature/|^(dev|test|develop)$\"\npullrequests: \"true\"\ndeployTarget: 2\nweight: 1\n}){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n
\u3053\u308c\u3089\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3055\u308c\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u3059\u3079\u3066\u306eDeployTarget\u8a2d\u5b9a\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u53d6\u5f97\u3059\u308bquery deployTargetConfigsByProjectId{\ndeployTargetConfigsByProjectId(project:1){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n# result:\n{\n\"data\": {\n\"deployTargetConfigsByProjectId\": [\n{\n\"id\": 1,\n\"weight\": 1,\n\"branches\": \"main\",\n\"pullrequests\": \"false\",\n\"deployTargetProjectPattern\": null,\n\"deployTarget\": {\n\"name\": \"production-cluster\",\n\"id\": 1\n},\n\"project\": {\n\"name\": \"my-project\"\n}\n},\n{\n\"id\": 2,\n\"weight\": 1,\n\"branches\": \"^feature/|^(dev|test|develop)$\",\n\"pullrequests\": \"true\",\n\"deployTargetProjectPattern\": null,\n\"deployTarget\": {\n\"name\": \"development-cluster\",\n\"id\": 2\n},\n\"project\": {\n\"name\": \"my-project\"\n}\n}\n]\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/nodejs/","title":"Node.js\u306e\u30b0\u30ec\u30fc\u30b9\u30d5\u30eb\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3","text":"Node.js\u306b\u306f\u7d71\u5408\u3055\u308c\u305fWeb\u30b5\u30fc\u30d0\u30fc\u306e\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002\u3055\u3089\u306bExpress\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u62e1\u5f35\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u6b8b\u5ff5\u306a\u304c\u3089\u3001Node.js\u306f\u81ea\u8eab\u306e\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3092\u3046\u307e\u304f\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u30b3\u30f3\u30c6\u30ca\u5316\u3055\u308c\u305f\u30b7\u30b9\u30c6\u30e0\u3067\u591a\u304f\u306e\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3057\u307e\u3059\u3002\u6700\u5927\u306e\u554f\u984c\u306f\u3001Node.js\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3059\u308b\u3088\u3046\u306b\u6307\u793a\u3055\u308c\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u63a5\u7d9a\u3092\u5373\u5ea7\u306b\u3092\u5f37\u5236\u7d42\u4e86\u3057\u9069\u5207\u306b\u505c\u6b62\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u3053\u3068\u3067\u3059\u3002
\u3053\u306e\u30d1\u30fc\u30c8\u3067\u306f\u3001\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3057\u7d42\u3048\u3066\u304b\u3089\u3001\u9069\u5207\u306b\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3059\u308b\u3088\u3046\u306bNode.js\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002
\u4f8b\u3068\u3057\u3066\u3001Express\u3092\u4f7f\u7528\u3057\u305f\u30b7\u30f3\u30d7\u30eb\u306aNode.js\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059:
app.jsconst express = require('express');\nconst app = express();\n// \u5168\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306b5\u79d2\u306e\u30c7\u30a3\u30ec\u30a4\u3092\u8ffd\u52a0\u3002\napp.use((req, res, next) => setTimeout(next, 5000));\napp.get('/', function (req, res) {\nres.send(\"Hello World\");\n})\nconst server = app.listen(3000, function () {\nconsole.log('Example app listening on port 3000!');\n})\n
\u3053\u308c\u306f\u3001Web\u30b5\u30fc\u30d0\u30fc\u304c localhost:3000
\u306b\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u3068\u304d\u306b \"Hello World\" \u3092\u8868\u793a\u3057\u307e\u3059\u3002\u8a08\u7b97\u51e6\u7406\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3059\u308b\u305f\u3081\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u306b5\u79d2\u306e\u9045\u5ef6\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/nodejs/#a","title":"\u30d1\u30fc\u30c8A: \u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5b8c\u4e86\u3092\u8a31\u53ef\u3059\u308b","text":"\u4e0a\u8a18\u306e\u4f8b\u3092\u5b9f\u884c\u3057\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u51e6\u7406\u3055\u308c\u3066\u3044\u308b\u9593(5\u79d2\u4ee5\u5185)\u306bNode.js\u30d7\u30ed\u30bb\u30b9\u3092\u505c\u6b62\u3059\u308b\u3068\u3001Node.js\u30b5\u30fc\u30d0\u30fc\u306f\u3059\u3050\u306b\u63a5\u7d9a\u3092\u5207\u65ad\u3057\u3001\u30d6\u30e9\u30a6\u30b6\u306f\u30a8\u30e9\u30fc\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002
Node.js\u30b5\u30fc\u30d0\u30fc\u306b\u3001\u5b9f\u969b\u306b\u81ea\u8eab\u3092\u505c\u6b62\u3059\u308b\u524d\u306b\u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3064\u3079\u304d\u3060\u3068\u4f1d\u3048\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059:
Graceful Shutdownconst startGracefulShutdown = () => {\nconsole.log('Starting shutdown of express...');\nserver.close(function () {\nconsole.log('Express shut down.');\n});\n}\nprocess.on('SIGTERM', startGracefulShutdown);\nprocess.on('SIGINT', startGracefulShutdown);\n
\u3053\u308c\u306f\u57fa\u672c\u7684\u306b server.close()
\u3092\u547c\u3073\u51fa\u3057\u3001\u3053\u308c\u306b\u3088\u308aNode.js HTTP\u30b5\u30fc\u30d0\u30fc\u306b\u5bfe\u3057\u3066\u4ee5\u4e0b\u306e\u6307\u793a\u304c\u51fa\u3055\u308c\u307e\u3059:
- \u3053\u308c\u4ee5\u4e0a\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u53d7\u3051\u4ed8\u3051\u306a\u3044\u3002
- \u3059\u3079\u3066\u306e\u5b9f\u884c\u4e2d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u5b8c\u4e86\u3059\u308b\u3002
\u3053\u308c\u306f SIGINT
( CTRL + C
\u3092\u62bc\u3057\u305f\u3068\u304d)\u307e\u305f\u306f SIGTERM
(\u30d7\u30ed\u30bb\u30b9\u3092\u7d42\u4e86\u3059\u308b\u305f\u3081\u306e\u6a19\u6e96\u4fe1\u53f7)\u3067\u884c\u3044\u307e\u3059\u3002
\u3053\u306e\u5c0f\u3055\u306a\u8ffd\u52a0\u306b\u3088\u308a\u3001Node.js\u306f\u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3064\u3088\u3046\u306b\u306a\u308a\u3001\u305d\u306e\u5f8c\u81ea\u8eab\u3092\u505c\u6b62\u3057\u307e\u3059\u3002
\u3082\u3057\u79c1\u305f\u3061\u304cNode.js\u3092\u30b3\u30f3\u30c6\u30ca\u5316\u3055\u308c\u305f\u74b0\u5883\u3067\u5b9f\u884c\u3057\u3066\u3044\u306a\u3044\u306a\u3089\u3070\u3001\u304a\u305d\u3089\u304f \u6570\u79d2\u5f8c\u306b\u5b9f\u969b\u306bNode.js\u30b5\u30fc\u30d0\u30fc\u3092\u7d42\u4e86\u3059\u308b\u8ffd\u52a0\u306e\u30b3\u30fc\u30c9\u3092\u542b\u3081\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001\u4e00\u90e8\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u975e\u5e38\u306b\u9577\u304f\u304b\u304b\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u5168\u304f\u505c\u6b62\u3057\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308b\u304b\u3089\u3067\u3059\u3002\u3053\u308c\u306f\u30b3\u30f3\u30c6\u30ca\u5316\u3055\u308c\u305f\u30b7\u30b9\u30c6\u30e0\u5185\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u30b3\u30f3\u30c6\u30ca\u304c\u505c\u6b62\u3057\u306a\u3044\u5834\u5408\u3001Docker\u3068Kubernetes\u306f\u6570\u79d2\u5f8c(\u901a\u5e38\u306f30\u79d2\u5f8c)\u306bSIGKILL
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u30d7\u30ed\u30bb\u30b9\u81ea\u4f53\u3067\u306f\u51e6\u7406\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u79c1\u305f\u3061\u306f\u6c17\u306b\u3059\u308b\u5fc5\u7528\u304c\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-advanced/nodejs/#byarnnpm","title":"\u30d1\u30fc\u30c8B:Yarn\u3068NPM\u306e\u5b50\u751f\u6210\u554f\u984c","text":"\u3082\u3057\u79c1\u305f\u3061\u304c\u30d1\u30fc\u30c8A\u3060\u3051\u3092\u5b9f\u88c5\u3057\u305f\u5834\u5408\u3001\u826f\u3044\u7d4c\u9a13\u3092\u5f97\u3089\u308c\u308b\u3067\u3057\u3087\u3046\u3002\u73fe\u5b9f\u306e\u4e16\u754c\u3067\u306f\u3001\u591a\u304f\u306eNode.js\u30b7\u30b9\u30c6\u30e0\u304cYarn\u3084NPM\u3067\u69cb\u7bc9\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u308c\u3089\u306fNode.js\u306b\u30d1\u30c3\u30b1\u30fc\u30b8\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3060\u3051\u3067\u306a\u304f\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u7ba1\u7406\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u6a5f\u80fd\u3092\u4f7f\u3046\u3068\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8d77\u52d5\u3092\u7c21\u5358\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u591a\u304f\u306epackage.json
\u30d5\u30a1\u30a4\u30eb\u304c\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002
package.json{\n\"name\": \"node\",\n\"version\": \"1.0.0\",\n\"main\": \"index.js\",\n\"license\": \"MIT\",\n\"dependencies\": {\n\"express\": \"^4.15.3\"\n},\n\"scripts\": {\n\"start\": \"node index.js\"\n}\n}\n
\u305d\u3057\u3066\u3001\u5b9a\u7fa9\u3055\u308c\u305fscripts
\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8d77\u52d5\u3059\u308b\u3060\u3051\u3067\u6e08\u307f\u307e\u3059:
\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8d77\u52d5yarn start\n
\u307e\u305f\u306f
\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8d77\u52d5npm start\n
\u3053\u308c\u306f\u4fbf\u5229\u3067\u3001\u958b\u767a\u8005\u3092\u697d\u306b\u3057\u307e\u3059\u3002\u3060\u304b\u3089\u3001\u79c1\u305f\u3061\u306fDockerfiles\u306e\u4e2d\u3067\u3082\u540c\u3058\u3082\u306e\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002
.dockerfileCMD [\"yarn\", \"start\"]\n
\u3057\u304b\u3057\u3001\u3053\u308c\u306b\u306f\u5927\u304d\u306a\u554f\u984c\u304c\u3042\u308a\u307e\u3059:
yarn
\u3084 npm
\u304c SIGINT
\u3084 SIGTERM
\u30b7\u30b0\u30ca\u30eb\u3092\u53d7\u3051\u53d6\u308b\u3068\u3001\u305d\u308c\u3089\u306f\u6b63\u78ba\u306b\u30b7\u30b0\u30ca\u30eb\u3092\u751f\u6210\u3057\u305f\u5b50\u30d7\u30ed\u30bb\u30b9\u306b\u8ee2\u9001\u3057\u307e\u3059\u3002(\u3053\u306e\u5834\u5408\u306f node index.js
)\u3057\u304b\u3057\u3001\u5b50\u30d7\u30ed\u30bb\u30b9\u304c\u505c\u6b62\u3059\u308b\u306e\u3092\u5f85\u3064\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001yarn
/npm
\u306f\u5373\u5ea7\u306b\u81ea\u5206\u81ea\u8eab\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Docker/Kubernetes\u306b\u5bfe\u3057\u3066\u30b3\u30f3\u30c6\u30ca\u304c\u5b8c\u4e86\u3057\u305f\u3068\u3044\u3046\u30b7\u30b0\u30ca\u30eb\u304c\u9001\u3089\u308c\u3001Docker/Kubernetes\u306f\u3059\u3050\u306b\u3059\u3079\u3066\u306e\u5b50\u30d7\u30ed\u30bb\u30b9\u3092\u5f37\u5236\u7d42\u4e86\u3057\u307e\u3059\u3002Yarn\u3068NPM\u306b\u306f\u30aa\u30fc\u30d7\u30f3\u306a\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u6b8b\u5ff5\u306a\u304c\u3089\u307e\u3060\u89e3\u6c7a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
\u3053\u306e\u554f\u984c\u306e\u89e3\u6c7a\u7b56\u306f\u3001Yarn\u3084NPM\u3092\u4f7f\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u59cb\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u76f4\u63a5 node
\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002
.dockerfileCMD [\"node\", \"index.js\"]\n
\u3053\u308c\u306b\u3088\u308a\u3001Node.js\u306f\u9069\u5207\u306b\u7d42\u4e86\u3057\u3001Docker/Kubernetes\u306fNode.js\u304c\u7d42\u4e86\u3059\u308b\u306e\u3092\u5f85\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/private-repositories/","title":"\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ea\u30dd\u30b8\u30c8\u30ea","text":" - \u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u306b\u3001\u3042\u306a\u305f\u306eGitHub/GitLab/BitBucket\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u4e0e\u3048\u307e\u3059\u3002
dockerfile
\u306bARG LAGOON_SSH_PRIVATE_KEY
\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002(SSH\u30ad\u30fc\u304c\u5fc5\u8981\u306a\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306e\u30b9\u30c6\u30c3\u30d7\u306e\u524d\u306b) dockerfile
\u306bRUN /lagoon/entrypoints/05-ssh-key.sh
\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002(SSH\u30ad\u30fc\u304c\u5fc5\u8981\u306a\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306e\u30b9\u30c6\u30c3\u30d7\u306e\u524d\u306b)
\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u8a2d\u5b9aRUN /lagoon/entrypoints/05-ssh-key.sh && composer install && rm /home/.ssh/key\n
"},{"location":"ja/using-lagoon-advanced/project-default-users-keys/","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc\u3068SSH\u30ad\u30fc","text":"Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u4f5c\u6210\u3055\u308c\u308b\u3068\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u95a2\u9023\u3059\u308bSSH \"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ad\u30fc\"\u304c\u751f\u6210\u3055\u308c\u3001\u305d\u306e\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eCLI\u30dd\u30c3\u30c9\u5185\u3067\u5229\u7528\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8default-user@project
\u3082\u4f5c\u6210\u3055\u308c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306eMAINTAINER
\u30a2\u30af\u30bb\u30b9\u304c\u4ed8\u4e0e\u3055\u308c\u307e\u3059\u3002SSH \"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ad\u30fc\"\u306f\u3001\u305d\u306edefault-user@project
\u306b\u6dfb\u4ed8\u3055\u308c\u307e\u3059\u3002
\u3053\u308c\u306b\u3088\u308a\u3001\u4efb\u610f\u306e\u74b0\u5883\u306eCLI\u30dd\u30c3\u30c9\u5185\u304b\u3089\u540c\u3058\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u4ed6\u306e\u4efb\u610f\u306e\u74b0\u5883\u306bSSH\u3067\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u30a2\u30af\u30bb\u30b9\u306f\u3001\u74b0\u5883\u9593\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u540c\u671f\u5316\u3059\u308b\u306a\u3069\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002(\u4f8b:drush sql-sync
)
MAINTAINER
\u30ed\u30fc\u30eb\u306b\u3064\u3044\u3066\u306e\u8a73\u3057\u3044\u60c5\u5831\u306f\u3001RBAC\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306b\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/project-default-users-keys/#_1","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ad\u30fc\u306e\u6307\u5b9a","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u969b\u306bSSH\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u53ef\u80fd\u3067\u3059\u304c\u3001\u3053\u308c\u306b\u306f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u554f\u984c\u304c\u3042\u308b\u305f\u3081\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/","title":"Lagoon\u3067\u306eXdebug\u306e\u8a2d\u5b9a","text":""},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#xdebug","title":"\u30b3\u30f3\u30c6\u30ca\u3067Xdebug\u62e1\u5f35\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b","text":"Lagoon\u306e\u57fa\u672c\u30a4\u30e1\u30fc\u30b8\u306fXdebug\u304c\u8a2d\u5b9a\u6e08\u307f\u3067\u3059\u304c\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u4e0a\u306e\u7406\u7531\u304b\u3089\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u62e1\u5f35\u6a5f\u80fd\u306f\u30ed\u30fc\u30c9\u3055\u308c\u307e\u305b\u3093\u3002\u62e1\u5f35\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001XDEBUG_ENABLE
\u74b0\u5883\u5909\u6570\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-
\u30ed\u30fc\u30ab\u30eb (Pygmy\u3068Lando)
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304clagoon-examples\u306e
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u30d9\u30fc\u30b9\u306b\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u74b0\u5883\u5909\u6570\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u884c\u3092\u30b3\u30e1\u30f3\u30c8\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u74b0\u5883\u5909\u6570\u3092\u5909\u66f4\u3057\u305f\u5f8c\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u69cb\u7bc9\u3057\u3066\u518d\u8d77\u52d5\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u30ea\u30e2\u30fc\u30c8 (dev/prod)
- Lagoon API\u3092\u4f7f\u7528\u3057\u3066\u3001\u5b9f\u884c\u4e2d\u306e\u74b0\u5883\u306b\u74b0\u5883\u5909\u6570\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- \u74b0\u5883\u5909\u6570\u3092\u5909\u66f4\u3057\u305f\u5f8c\u306f\u3001\u74b0\u5883\u3092\u518d\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#xdebug_1","title":"Xdebug\u62e1\u5f35\u6a5f\u80fd\u306e\u6709\u52b9\u5316","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u306eXdebug\u8a2d\u5b9a\u3067\u306f\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u958b\u59cb\u3059\u308b\u305f\u3081\u306b\u62e1\u5f35\u6a5f\u80fd\u3092\u6709\u52b9\u5316\u3059\u308b\"\u30c8\u30ea\u30ac\u30fc\"\u304c\u5fc5\u8981\u3067\u3059\u3002\uff08Xdebug\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\uff09 \u30c7\u30d0\u30c3\u30ac\u3092\u6709\u52b9\u5316\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u7c21\u5358\u306a\u624b\u9806\u3092\u53c2\u8003\u306b\u3057\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#cli","title":"CLI","text":"php-cli
\u30a4\u30e1\u30fc\u30b8\u306fXdebug\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u3068\u304d\u306b\u306f\u5e38\u306bXdebug\u3092\u6709\u52b9\u5316\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3057\u305f\u304c\u3063\u3066\u3001\u4ed6\u306b\u4f55\u3082\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u4efb\u610f\u306ePHP\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3059\u308b\u3068\u30c7\u30d0\u30c3\u30b0\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u958b\u59cb\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#web","title":"Web","text":"Xdebug\u306e\u30d6\u30e9\u30a6\u30b6\u62e1\u5f35\u6a5f\u80fd\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b \u3053\u3068\u3067\u3001\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u30af\u30c3\u30ad\u30fc\u3092\u8a2d\u5b9a/\u89e3\u9664\u3057\u307e\u3059\u3002
\u30c7\u30d0\u30c3\u30b0\u3092\u958b\u59cb\u3057\u305f\u3044\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306b\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u30af\u30c3\u30ad\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#phpstorm","title":"PHPStorm\u306e\u8a2d\u5b9a","text":" - PHPStorm\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
- \u30c4\u30fc\u30eb\u30d0\u30fc\u306e\u201cStart Listening for PHP Debug Connections\u201d\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
- \u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u3092\u8aad\u307f\u8fbc\u3080\u304b\u3001Drush\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
- \u521d\u56de\u5b9f\u884c\u6642\u306b\u306f\u3001PHPStorm\u304c\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u8868\u793a\u3057\u3001\u6b21\u306e\u64cd\u4f5c\u3092\u6c42\u3081\u307e\u3059\u3002
- \u30d1\u30b9\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
- \u30b5\u30fc\u30d0\u30fc\u4e0a\u3067\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u305f\u6b63\u3057\u3044\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#visual-studio-code","title":"Visual Studio Code\u306e\u8a2d\u5b9a","text":" - Felix Becker\u306b\u3088\u308bPHP Debug\u62e1\u5f35\u6a5f\u80fd\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
- \u8aac\u660e\u306b\u5f93\u3063\u3066PHP\u7528\u306e\u57fa\u672c\u7684\u306a
launch.json
\u4f5c\u6210\u3057\u307e\u3059\u3002 -
\u6b63\u3057\u3044\u30d1\u30b9\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u5178\u578b\u7684\u306aDrupal\u30b5\u30a4\u30c8\u306e\u4f8b\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002
launch.json\"pathMappings\": {\n\"/app\": \"${workspaceFolder}\",\n},\n
-
Visual Studio Code\u306eRun\u30bf\u30d6\u3067\u3001 \u201cListen for Xdebug\u201d\u306e\u96a3\u306b\u3042\u308b\u7dd1\u8272\u306e\u77e2\u5370\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
- Web\u30da\u30fc\u30b8\u3092\u30ed\u30fc\u30c9\u3059\u308b\u304b\u3001Drush\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#_1","title":"\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":" - Xdebug\u62e1\u5f35\u304c\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002Drupal \u30b5\u30a4\u30c8\u3067\u3053\u308c\u3092\u884c\u3046\u6700\u5584\u306e\u65b9\u6cd5\u306f\u3001PHP\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u30da\u30fc\u30b8\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3067\u3059\u3002Xdebug\u3068\u305d\u306e\u3059\u3079\u3066\u306e\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u304c\u898b\u3064\u304b\u308b\u306f\u305a\u3067\u3059\u3002
- \u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6 \u30ed\u30fc\u30ab\u30eb\u5024 xdebug.mode debug xdebug.client_host host.docker.internal
\u307e\u305f\u306f \u3042\u306a\u305f\u306eIP\u30a2\u30c9\u30ec\u30b9 xdebug.client_port 9003 - \u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u5185\u3067Xdebug\u306e\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f
XDEBUG_LOG
\u3068\u3044\u3046\u540d\u524d\u306e\u74b0\u5883\u5909\u6570\u306b\u4f55\u3089\u304b\u306e\u5024\u3092\u8a2d\u5b9a\u3059\u308b\u3060\u3051\u3067\u3059\u3002 \u30ed\u30b0\u306f/tmp/xdebug.log
\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002\u3082\u3057lagoon-examples\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u306a\u3089\u3001\u3042\u306a\u305f\u306f \u3044\u304f\u3064\u304b\u306e\u65e2\u5b58\u306e\u884c\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u5916\u3057\u307e\u3059\u3002 - \u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u30af\u30c3\u30ad\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002Chrome\u307e\u305f\u306fFirefox\u306e\u30d6\u30e9\u30a6\u30b6\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001
XDEBUG_SESSION
\u30af\u30c3\u30ad\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002 - Xdebug\u304c\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3055\u308c\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u3068\u306e\u30c7\u30d0\u30c3\u30b0\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u958b\u59cb\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
nc -l 9003
\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066Xdebug\u30dd\u30fc\u30c8\u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3059\u3079\u3066\u304cPHP\u3067\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308c\u3070\u3001\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u3092\u30ed\u30fc\u30c9\u3059\u308b\u304b\u3001Drush\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068Xdebug init
\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u5f97\u3089\u308c\u308b\u306f\u305a\u3067\u3059\u3002 xdebug.client_host
\u304c\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002Docker for Mac\u3067\u306e\u30ed\u30fc\u30ab\u30eb\u30c7\u30d0\u30c3\u30b0\u306e\u5834\u5408\u3001\u3053\u306e\u5024\u306fhost.docker.internal
\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002\u30ea\u30e2\u30fc\u30c8\u30c7\u30d0\u30c3\u30b0\u306e\u5834\u5408\u3001\u3053\u306e\u5024\u306f\u3042\u306a\u305f\u306eIP\u30a2\u30c9\u30ec\u30b9\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002\u3053\u306e\u5024\u304c\u6b63\u3057\u304f\u6c7a\u5b9a\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u306f\u3001DOCKERHOST
\u74b0\u5883\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u4e0a\u66f8\u304d\u3067\u304d\u307e\u3059\u3002 - Lando\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001CLI\u304b\u3089\u5b9f\u884c\u3055\u308c\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u30c7\u30d0\u30c3\u30b0\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u307e\u305a
lando ssh
\u3092\u4ecb\u3057\u3066CLI\u30b3\u30f3\u30c6\u30ca\u306bSSH\u3067\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002lando drush
\u307e\u305f\u306flando php
\u3092\u5b9f\u884c\u3057\u3066\u3082\u30c7\u30d0\u30c3\u30b0\u3067\u304d\u306a\u3044\u306e\u3067\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#mac","title":"Mac\u56fa\u6709\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":" -
Docker for Mac\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30ad\u30f3\u30b0\u304c\u58ca\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 \u30db\u30b9\u30c8\u30de\u30b7\u30f3\u3067 nc -l 9003
\u3092\u5b9f\u884c\u3057\u3001\u305d\u306e\u5f8c\u65b0\u3057\u3044\u30bf\u30fc\u30df\u30ca\u30eb\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u6b21\u306e\u3088\u3046\u306b\u5b9f\u884c\u3057\u307e\u3059\u3002
Mac\u306eDocker\u30cd\u30c3\u30c8\u30ef\u30fc\u30ad\u30f3\u30b0\u3092\u78ba\u8a8ddocker-compose run cli nc -zv host.docker.internal 9003\n
\u6b21\u306e\u3088\u3046\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 host.docker.internal (192.168.65.2:9003) open
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#linux","title":"Linux \u7279\u6709\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":" -
\u30db\u30b9\u30c8host.docker.internal
\u306b\u63a5\u7d9a\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002docker
\u304c(Docker Desktop\u3092\u7d4c\u7531\u305b\u305a\u306b)\u624b\u52d5\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30db\u30b9\u30c8\u306f\u89e3\u6c7a\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u3092\u5f37\u5236\u7684\u306b\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u306e\u30b9\u30cb\u30da\u30c3\u30c8\u3092\u633f\u5165\u3059\u308b\u3053\u3068\u3067\u3001\u3053\u306e\u30db\u30b9\u30c8\u3092\u5f37\u5236\u7684\u306b\u89e3\u6c7a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002(\u624b\u9806\u306f\u3053\u306e\u30d6\u30ed\u30b0\u6295\u7a3f\u304b\u3089\u5f15\u7528\u3057\u3066\u3044\u307e\u3059)
Linux\u5411\u3051\u306edocker-compose.yml\u306e\u4fee\u6b63 services:\ncli:\nextra_hosts:\nhost.docker.internal: host-gateway\nphp:\nextra_hosts:\nhost.docker.internal: host-gateway\n
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#xdebug-2","title":"Xdebug 2","text":"\u53e4\u3044\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u307e\u3060Xdebug\u30d0\u30fc\u30b8\u30e7\u30f32\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u30da\u30fc\u30b8\u306e\u60c5\u5831\u306f\u3059\u3079\u3066\u305d\u306e\u307e\u307e\u9069\u7528\u3055\u308c\u307e\u3059\u304c\u3001\u8a2d\u5b9a\u540d\u3068\u5024\u306e\u4e00\u90e8\u306f\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u3059\u3002
v3 v2 xdebug.mode xdebug.remote_enabled On xdebug.client_host xdebug.remote_host host.docker.internal
\u307e\u305f\u306f\u3042\u306a\u305f\u306eIP\u30a2\u30c9\u30ec\u30b9 xdebug.client_port xdebug.remote_port 9000"},{"location":"ja/using-lagoon-advanced/simplesaml/#simplesamlphp","title":"SimpleSAMLphp","text":"\u3053\u308c\u306f\u3001SimpleSAMLphp\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3057\u3001\u305d\u308c\u3092NGINX\u7d4c\u7531\u3067\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\u65b9\u6cd5\u306e\u4f8b\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/simplesaml/#_1","title":"\u5fc5\u8981\u6761\u4ef6","text":"SimpleSAMLphp\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3057\u307e\u3059:
Composer\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306bSimpleSAMLphp\u3092\u8ffd\u52a0\u3059\u308bcomposer req simplesamlphp/simplesamlphp\n
"},{"location":"ja/using-lagoon-advanced/simplesaml/#simplesamlphp_1","title":"SimpleSAMLphp\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b","text":"vendor/simplesamlphp/simplesamlphp/config-templates
\u304b\u3089authsources.php
\u3068config.php
\u3092vendor
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5916\u306econf/simplesamlphp
\u306e\u3088\u3046\u306a\u5834\u6240\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002\u307e\u305f\u3001vendor/simplesamlphp/simplesamlphp/metadata-templates
\u304b\u3089saml20-idp-remote.php
\u3082\u5fc5\u8981\u3067\u3059\u3002
config.php
\u3067Lagoon\u306b\u4ee5\u4e0b\u306e\u5024\u3092\u8a2d\u5b9a\u3057\u307e\u3059:
SimpleSAMLphp\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u57fa\u672cURL\u30d1\u30b9:
config.php 'baseurlpath' => 'https://YOUR_DOMAIN.TLD/simplesaml/',\n
\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002
config.php 'store.type' => 'sql',\n 'store.sql.dsn' => vsprintf('mysql:host=%s;port=%s;dbname=%s', [\n getenv('MARIADB_HOST'),\n getenv('MARIADB_PORT'),\n getenv('MARIADB_DATABASE'),\n ]),\n
\u4ed6\u306e\u8a2d\u5b9a\u306f\u304a\u597d\u307f\u3067\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u30ed\u30b0\u3068\u8a3c\u660e\u66f8\u306e\u30d1\u30b9\u3092\u78ba\u8a8d\u3057\u307e\u3059
- SimpleSAMLphp\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3092\u4fdd\u8b77\u3057\u307e\u3059
- \u30ed\u30ae\u30f3\u30b0\u306e\u30ec\u30d9\u30eb\u3092\u8a2d\u5b9a\u3057\u307e\u3059
technicalcontact
\u3068timezone
\u3092\u8a2d\u5b9a\u3057\u307e\u3059
\u4f8b\u3092\u53c2\u8003\u306bauthsources.php
\u306bauthsources(IdPs)\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
authsources.php 'default-sp' => [\n 'saml:SP',\n // The entity ID of this SP.\n 'entityID' => 'https://YOUR_DOMAIN.TLD',\n // The entity ID of the IdP this should SP should contact.\n // Can be NULL/unset, in which case the user will be shown a list of available IdPs.\n 'idp' => 'https://YOUR_IDP_DOMAIN.TLD',\n // The URL to the discovery service.\n // Can be NULL/unset, in which case a builtin discovery service will be used.\n 'discoURL' => null,\n 'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',\n 'certificate' => '/app/conf/simplesamlphp/certs/saml.crt',\n 'privatekey' => '/app/conf/simplesamlphp/certs/saml.pem',\n 'redirect.sign' => TRUE,\n 'redirect.validate' => TRUE,\n 'authproc' => [\n 50 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6' => 'eduPersonPrincipalName',\n ],\n 51 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:2.5.4.42' => 'givenName',\n ],\n 52 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:2.5.4.4' => 'sn',\n ],\n 53 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:0.9.2342.19200300.100.1.3' => 'mail',\n ],\n ],\n ],\n
\u4f8b\u3092\u53c2\u8003\u306bsaml20-idp-remote.php
\u306bIdP\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
saml20-idp-remote.php<?php\n/**\n * SAML 2.0 remote IdP metadata for SimpleSAMLphp.\n *\n * Remember to remove the IdPs you don't use from this file.\n *\n * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-remote\n */\n/**\n * Some IdP.\n */\n$metadata['https://YOUR_IDP_DOMAIN.TLD'] = [\n'entityid' => 'https://YOUR_IDP_DOMAIN.TLD',\n'name' => [\n'en' => 'Some IdP',\n],\n'description' => 'Some IdP',\n...\n];\n
\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u3067\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092SimpleSAMLphp\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059
vendor/simplesamlphp/simplesamlphp/config/authsources.php
vendor/simplesamlphp/simplesamlphp/config/config.php
vendor/simplesamlphp/simplesamlphp/metadata/saml20-idp-remote.php
"},{"location":"ja/using-lagoon-advanced/simplesaml/#simplesamlphpnginx-conf","title":"SimpleSAMLphp\u306e\u305f\u3081\u306eNGINX conf\u3092\u4f5c\u6210\u3057\u307e\u3059","text":"lagoon/nginx/location_prepend_simplesamlphp.conf
\u3068\u3044\u3046\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059:
location_prepend_simplesamlphp.conflocation ^~ /simplesaml {\nalias /app/vendor/simplesamlphp/simplesaml php/www;\nlocation ~ ^(?<prefix>/simplesaml)(?<phpfile>.+?\\.php)(?<pathinfo>/.*)?$ {\ninclude fastcgi_params;\nfastcgi_pass ${NGINX_FASTCGI_PASS:-php}:9000;\nfastcgi_param SCRIPT_FILENAME $document_root$phpfile;\n# Must be prepended with the baseurlpath\nfastcgi_param SCRIPT_NAME /simplesaml$phpfile;\nfastcgi_param PATH_INFO $pathinfo if_not_empty;\n}\n}\n
\u3053\u308c\u306b\u3088\u308a\u3001/simplesaml
URL\u304cvendor
\u306eSimpleSAMLphp\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/simplesaml/#nginxnginx","title":"NGINX\u30a4\u30e1\u30fc\u30b8\u306b\u8ffd\u52a0\u306eNGINX\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3059\u308b","text":"nginx.dockerfile
\u3092\u4fee\u6b63\u3057\u3001location_prepend_simplesamlphp.conf
\u3092\u30a4\u30e1\u30fc\u30b8\u306b\u8ffd\u52a0\u3057\u307e\u3059:
nginx.dockerfileARG CLI_IMAGE\nFROM ${CLI_IMAGE} AS cli\n\nFROM uselagoon/nginx-drupal\n\nCOPY --from=cli /app /app\n\nCOPY lagoon/nginx/location_prepend_simplesamlphp.conf /etc/nginx/conf.d/drupal/location_prepend_simplesamlphp.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/location_prepend_simplesamlphp.conf\n\n# Define where the Drupal Root is located\nENV WEBROOT=public\n
"},{"location":"ja/using-lagoon-advanced/triggering-deployments/","title":"\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306e\u30c8\u30ea\u30ac\u30fc","text":""},{"location":"ja/using-lagoon-advanced/triggering-deployments/#azure-pipelines","title":"Azure Pipelines\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b","text":"Azure Pipelines\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u3092\u81ea\u52d5\u7684\u306b\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u3092\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002
- \u30c7\u30d7\u30ed\u30a4\u306eSSH\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ad\u30fc\u3092
id_rsa_lagoon
\u3068\u3057\u3066Azure\u306e\u30bb\u30ad\u30e5\u30a2\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002\u30bb\u30ad\u30e5\u30a2\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306fAzure\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002 - \u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092
azure-pipelines.yml
\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
azure-pipelines.ymlpool:\nvmImage: 'ubuntu-latest'\nstages:\n# .. \u4ed6\u306e\u30b9\u30c6\u30fc\u30b8\n- stage: Deploy\ncondition: and(succeeded(), in(variables['Build.SourceBranch'], 'refs/heads/staging', 'refs/heads/develop'))\njobs:\n- job: DeployLagoon\nsteps:\n- task: DownloadSecureFile@1\nname: lagoonSshKey\ndisplayName: 'Download Lagoon SSH key'\ninputs:\nsecureFile: id_rsa_lagoon\n- script: |\ncurl -L \"https://github.com/uselagoon/lagoon-cli/releases/download/v0.21.3/lagoon-cli-v0.21.3-linux-amd64\" -o ./lagoon\nchmod +x ./lagoon\ndisplayName: 'Download lagoon-cli'\n- script: ./lagoon login -i $(lagoonSshKey.secureFilePath)\ndisplayName: 'Log into Lagoon'\n- script: ./lagoon deploy branch -e $(Build.SourceBranchName) -p my-awesome-project -b $(Build.SourceBranchName) --force\ndisplayName: 'Trigger deployment using lagoon-cli'\n
\u3053\u308c\u306b\u3088\u308a\u3001develop
\u30d6\u30e9\u30f3\u30c1\u307e\u305f\u306fstaging
\u30d6\u30e9\u30f3\u30c1\u3067\u5909\u66f4\u304c\u884c\u308f\u308c\u308b\u305f\u3073\u306b\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5024\u3092\u9069\u5207\u306b\u8abf\u6574\u3057\u3066\u3001\u30c7\u30d7\u30ed\u30a4\u6226\u7565\u3068\u8a2d\u5b9a\u306b\u9069\u5408\u3055\u305b\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/triggering-deployments/#_2","title":"\u30c7\u30d7\u30ed\u30a4\u305b\u305a\u306b\u30d7\u30c3\u30b7\u30e5","text":"\u30c7\u30d7\u30ed\u30a4\u305b\u305a\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u30b3\u30df\u30c3\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u306b \"[skip deploy]
\" \u307e\u305f\u306f \"[deploy skip]
\" \u3092\u542b\u3093\u3067\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3059\u308b\u3068\u3001Lagoon\u306f\u305d\u306e\u30b3\u30df\u30c3\u30c8\u304b\u3089\u30c7\u30d7\u30ed\u30a4\u3092\u30c8\u30ea\u30ac\u30fc\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/","title":"\u30cf\u30fc\u30d0\u30fc","text":"Harbor\u306f\u3001Kubernetes\u30a4\u30f3\u30d5\u30e9\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u969b\u306eLagoon\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30ea\u30dd\u30b8\u30c8\u30ea\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Harbor\u306fDocker\u30ec\u30b8\u30b9\u30c8\u30ea\u3068\u3001Trivy\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u30b3\u30f3\u30c6\u30ca\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30cb\u30f3\u30b0\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
\u6ce8\u610f:
Lagoon\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u3001Harbor\u306e\u8a2d\u5b9a\u306f\u3059\u3079\u3066\u81ea\u52d5\u7684\u306b\u51e6\u7406\u3055\u308c\u307e\u3059\u3002
\u3082\u3057Lagoon\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u305d\u306eUI\u306blocalhost:8084\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u30e6\u30fc\u30b6\u540d\u306f admin
\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u306f admin
\u3067\u3059\u3002
\u6ce8\u610f:
\u30b5\u30a4\u30c8\u3092\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc(amazee.io\u306a\u3069)\u3067\u30db\u30b9\u30c8\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u308c\u3089\u306e\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306f\u9867\u5ba2\u304cHarbor UI\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u306a\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u3068\u3001\u6700\u521d\u306e\u753b\u9762\u306b\u306f\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3059\u3079\u3066\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30ea\u30b9\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002Harbor\u5185\u306e\u5404\u300c\u30ea\u30dd\u30b8\u30c8\u30ea\u300d\u306fLagoon\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002
\u5404Harbor\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306b\u306f\u30011\u3064\u306eLagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u6301\u3064\u3059\u3079\u3066\u306e\u74b0\u5883\u306e\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u30ea\u30b9\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
\u3053\u3053\u304b\u3089\u3001\u500b\u3005\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u6df1\u304f\u6398\u308a\u4e0b\u3052\u3066\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30f3\u7d50\u679c\u306e\u6982\u8981\u3092\u542b\u3080\u8a73\u7d30\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/security-scanning/","title":"\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30f3","text":"Harbor\u306b\u306f\u3001Trivy\u30b5\u30fc\u30d3\u30b9\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u7d44\u307f\u8fbc\u307f\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30f3\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u304c\u642d\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u3092\u89e3\u6790\u3057\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u3092\u53ce\u96c6\u3057\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001Trivy\u30b5\u30fc\u30d3\u30b9\u306f\u56fd\u7acb\u8106\u5f31\u6027\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u691c\u7d22\u3057\u3001\u305d\u308c\u3089\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308bCVE(\u4e00\u822c\u7684\u306a\u8106\u5f31\u6027\u3068\u9732\u51fa)\u3092\u63a2\u3057\u307e\u3059\u3002Trivy\u306f\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u3082\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u305f\u3081\u3001Composer\u30d5\u30a1\u30a4\u30eb\u3084\u305d\u306e\u4ed6\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30e9\u30a4\u30d6\u30e9\u30ea\u5b9a\u7fa9\u30d5\u30a1\u30a4\u30eb\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u3001\u305d\u308c\u3089\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30d0\u30fc\u30b8\u30e7\u30f3\u5185\u306b\u898b\u3064\u304b\u3063\u305f\u8106\u5f31\u6027\u3092\u5831\u544a\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u8106\u5f31\u6027\u306f\u3001\u500b\u3005\u306e\u30b3\u30f3\u30c6\u30ca\u3054\u3068\u306bHarbor\u5185\u3067\u5831\u544a\u3055\u308c\u307e\u3059\u3002
Harbor\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30f3\u306e\u4f8b\u3001\u30b9\u30ad\u30e3\u30f3\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u306b\u9069\u7528\u53ef\u80fd\u306a\u8106\u5f31\u6027\u3092\u793a\u3057\u3066\u3044\u307e\u3059:
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/","title":"\u30ed\u30fc\u30ab\u30eb\u3067\u306eHarbor\u306e\u5b9f\u884c","text":"Lagoon\u306f\u3001Harbor\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001AWS S3\u3068\u4e92\u63db\u6027\u306e\u3042\u308b\u30ed\u30fc\u30ab\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3067\u3042\u308bMinIO\u3092\u30b9\u30c8\u30ec\u30fc\u30b8\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u3057\u3066\u5229\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/#_1","title":"\u8a2d\u5b9a","text":"Harbor\u306f\u8907\u6570\u306e\u30b3\u30f3\u30c6\u30ca\u3067\u69cb\u6210\u3055\u308c\u3066\u304a\u308a\u3001\u305d\u308c\u305e\u308c\u304c\u6210\u529f\u88cf\u306b\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u306f\u7570\u306a\u308b\u8a2d\u5b9a\u304c\u5fc5\u8981\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"Harbor\u304c\u6b63\u3057\u304f\u958b\u59cb\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u74b0\u5883\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
HARBOR_REGISTRY_STORAGE_AMAZON_BUCKET
- \u3053\u308c\u306f\u3001Harbor\u304c\u30a4\u30e1\u30fc\u30b8\u3092\u4fdd\u5b58\u3059\u308bAWS\u30d0\u30b1\u30c3\u30c8\u306e\u540d\u524d\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
- Lagoon\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u5834\u5408\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067
harbor-images
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
HARBOR_REGISTRY_STORAGE_AMAZON_REGION
- \u3053\u308c\u306f\u3001Harbor\u306e\u30d0\u30b1\u30c3\u30c8\u304c\u5b58\u5728\u3059\u308bAWS\u5730\u57df\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
- Lagoon\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u5834\u5408\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067
us-east-1
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
REGISTRY_STORAGE_S3_ACCESSKEY
- \u3053\u308c\u306f\u3001Harbor\u304cAWS\u30d0\u30b1\u30c3\u30c8\u306b\u8aad\u307f\u66f8\u304d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308bAWS\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
- Lagoon\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u5834\u5408\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306f\u3001MinIO\u306f\u8a8d\u8a3c\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u305f\u3081\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u7a7a\u6587\u5b57\u5217\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
REGISTRY_STORAGE_S3_SECRETKEY
- \u3053\u308c\u306f\u3001Harbor\u304cAWS\u30d0\u30b1\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308bAWS\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 AWS\u30d0\u30b1\u30c3\u30c8\u3078\u306e\u8aad\u307f\u66f8\u304d\u3002
- Lagoon\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306e\u5834\u5408\u3001MinIO\u306f\u8a8d\u8a3c\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u305f\u3081\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u7a7a\u6587\u5b57\u5217\u306b\u306a\u308a\u307e\u3059\u3002
\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u6b21\u306e\u74b0\u5883\u5909\u6570\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059:
HARBOR_REGISTRY_STORAGE_AMAZON_ENDPOINT
- \u3053\u306e\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001Harbor\u30ec\u30b8\u30b9\u30c8\u30ea\u306f\u305d\u306e\u5024\u3092s3\u30a8\u30f3\u30c8\u30ea\u30dd\u30a4\u30f3\u30c8\u306e\u30a2\u30c9\u30ec\u30b9\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002
- \u3053\u306e\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306f
https://s3.amazonaws.com
\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/#_2","title":"\u30b3\u30f3\u30c6\u30ca\u56fa\u6709\u306e\u8a2d\u5b9a","text":"\u6b21\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059:
- HarborRegistry
- HarborRegistryCtl
- Harbor-Core
- Harbor-Database
- Harbor-Jobservice
- Harbor-Trivy
\u6b21\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u5fc5\u8981\u3068\u305b\u305a\u306b\u5b9f\u884c\u3067\u304d\u307e\u3059:
- Harbor-Nginx
- Harbor-Portal
- Harbor-Redis
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-core/","title":"\u30cf\u30fc\u30d0\u30fc\u30b3\u30a2","text":"Harbor-Core\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u5185\u306e/etc/core/app.conf
\u306b\u4f4d\u7f6e\u3059\u308b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u3067\u3001\u8d77\u52d5\u3057\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u884c\u308f\u308c\u308b\u4efb\u610f\u306e\u5909\u66f4\u306f\u4e00\u6642\u7684\u306a\u3082\u306e\u3067\u3001\u30dd\u30c3\u30c9\u304c\u518d\u8d77\u52d5\u3055\u308c\u308b\u3068\u6301\u7d9a\u3057\u307e\u305b\u3093\u3002
\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u751f\u6210\u3055\u308c\u308bConfigmap\u306f\u3001services/harbor-core/harbor-core.yml
\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u306eLagoon\u5185\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002\u3053\u306econfigmap\u306b\u884c\u308f\u308c\u308b\u4efb\u610f\u306e\u5909\u66f4\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u518d\u8d77\u52d5\u3092\u307e\u305f\u3044\u3067\u6301\u7d9a\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-core/#_2","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9","text":" _REDIS_URL
- Redis\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u63a5\u7d9a\u60c5\u5831\u3092harbor-core\u3068Chartmuseum\u30b5\u30fc\u30d3\u30b9\u306b\u4f1d\u3048\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
harbor-redis:6379,100,
\u3067\u3059\u3002
_REDIS_URL_REG
- harborregistry\u304cRedis\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u3079\u304dURL\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
redis://harbor-redis:6379/2
\u3067\u3059\u3002
ADMIRAL_URL
- admiral\u30b5\u30fc\u30d3\u30b9\u306e\u5834\u6240\u3092harbor-core\u306b\u4f1d\u3048\u307e\u3059\u3002
- \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306fLagoon\u306eHarbor\u5b9f\u88c5\u3067\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
NA
\u3067\u3059\u3002
CFG_EXPIRATION
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
5
\u3067\u3059\u3002
CHART_CACHE_DRIVER
- harbor-core\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30c1\u30e3\u30fc\u30c8\u3092\u3069\u3053\u306b\u4fdd\u5b58\u3059\u308b\u304b\u3092\u4f1d\u3048\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
redis
\u3067\u3059\u3002
CLAIR_ADAPTER_URL
- harbor-core\u304c\u4f7f\u7528\u3059\u3079\u304dURL\u3002 * Harbor-trivy\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
http://harbor-trivy:8080
\u3067\u3059\u3002
CLAIR_DB
- harborclair\u304c\u4f7f\u7528\u3059\u3079\u304d\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30bf\u30a4\u30d7\u3002
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u53e4\u3044\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
postgres
\u3067\u3059\u3002
CLAIR_DB_HOST
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u53e4\u3044\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- harbor-core\u306bharborclair\u30b5\u30fc\u30d3\u30b9\u306e\u5834\u6240\u3092\u4f1d\u3048\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
harbor-database
\u3067\u3059\u3002
CLAIR_DB_PASSWORD
- harborclair\u306epostgres\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u30ef\u30fc\u30c9\u3002
- \u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306e\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
test123
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u53e4\u3044\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u521d\u3081\u3066\u7a3c\u50cd\u3059\u308bLagoon\u4e0a\u3067\u8a2d\u5b9a\u3055\u308c\u305f\u6642\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
CLAIR_DB_PORT
- harborclair\u304charborclair\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30dd\u30fc\u30c8\u3002
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u53e4\u3044\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
5432
\u3067\u3059\u3002
CLAIR_DB_SSLMODE
- harborclair\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306bSSL\u3092\u4f7f\u7528\u3059\u3079\u304d\u304b\u3069\u3046\u304b\u3002
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u53e4\u3044\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
disable
\u3067\u3059\u3002
CLAIR_DB *
USERNAME` - \u30e6\u30fc\u30b6\u30fc\u540dharborclair\u306f\u3001postgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u3079\u304d\u3067\u3059\u3002
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u30ec\u30ac\u30b7\u30fc\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
postgres
\u3067\u3059\u3002
CLAIR_HEALTH_CHECK_SERVER_URL
- \u3053\u306e\u5024\u306f\u3001harbor-core\u304charbor-trivy\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3057\u3066\u5065\u5eb7\u30c1\u30a7\u30c3\u30af\u3092\u767a\u884c\u3059\u308b\u5834\u6240\u3092\u6307\u793a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-trivy:8080
\u3067\u3059\u3002
CLAIR_URL
- harbor-core\u304charbor-trivy\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304dURL\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-trivy:6060
\u3067\u3059\u3002
CONFIG_PATH
- harbor-core\u304c\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u63a2\u3059\u3079\u304d\u5834\u6240\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
/etc/core/app.conf
\u3067\u3059\u3002
CORE_SECRET
- \u3053\u306e\u5024\u306f\u3001harbor-core\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306b\u5b9f\u884c\u3055\u308c\u308b\u3068\u304d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u521d\u3081\u3066Lagoon\u3067\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
CORE_URL
- harbor-core\u304c\u4ed6\u306eHarbor\u30b5\u30fc\u30d3\u30b9\u306b\u516c\u958b\u3057\u3001\u305d\u308c\u3089\u304charbor-core\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306eURL\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-core:8080
\u3067\u3059\u3002
DATABASE_TYPE
- Harbor\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30bf\u30a4\u30d7 \u4f7f\u7528\u3059\u308b\u3079\u304d\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
postgresql
\u3067\u3059\u3002
HARBOR_ADMIN_PASSWORD
admin
\u30e6\u30fc\u30b6\u30fc\u3092\u4f7f\u7528\u3057\u3066harbor\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u3079\u304d\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u5834\u5408\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306f
admin
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u6700\u521d\u306b\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3055\u308c\u305f\u969b\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
HARBOR_NGINX_ENDPOINT
- \u3053\u306e\u74b0\u5883\u5909\u6570\u306f\u3001harborregistry\u306b\u3001\u305d\u306eNGINX\u30a4\u30f3\u30b0\u30ec\u30b9\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3001harbor-nginx\u304c\u3069\u3053\u3067\u7a3c\u50cd\u3057\u3066\u3044\u308b\u304b\u3092\u901a\u77e5\u3057\u3001UI\u5185\u306e\u9069\u5207\u306a\u30d7\u30c3\u30b7\u30e5\u3068\u30d7\u30eb\u306e\u6307\u793a\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306a\u3069\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u5834\u5408\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306f
http://harbor-nginx:8080
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 - Lagoon\u306f\u3001\u672c\u756a\u74b0\u5883\u3067\u5b9f\u884c\u3055\u308c\u308b\u3068\u304d\u306b\u3053\u306e\u5909\u6570\u3092\u81ea\u52d5\u7684\u306b\u53d6\u5f97\u3057\u8a2d\u5b9a\u3057\u3088\u3046\u3068\u8a66\u307f\u307e\u3059\u3002\u305d\u306e\u30d7\u30ed\u30bb\u30b9\u304c\u5931\u6557\u3059\u308b\u3068\u3001\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002
HTTP_PROXY
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u306e\u6587\u5b57\u5217\u3067\u3059\u3002
HTTPS_PROXY
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u306e\u6587\u5b57\u5217\u3067\u3059\u3002
JOBSERVICE_SECRET
- \u3053\u306e\u5024\u306f\u3001harbor-jobservice\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306e\u5834\u5408\u3001
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u6700\u521d\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u969b\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002 \u306f\u3001Lagoon\u304c\u52d5\u4f5c\u3057\u3066\u3044\u308b\u72b6\u614b\u3067\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
JOBSERVICE_URL
- harbor-core\u304charbor-jobservice\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304dURL\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
http://harbor-jobservice:8080
\u3067\u3059\u3002
LOG_LEVEL
- harbor-core\u30b5\u30fc\u30d3\u30b9\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ed\u30b0\u30ec\u30d9\u30eb\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
error
\u3067\u3059\u3002
NO_PROXY
- \u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30d7\u30ed\u30ad\u30b7\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u306a\u3044\u30db\u30b9\u30c8\u306e\u30ea\u30b9\u30c8\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306f
harbor-core,harbor-jobservice,harbor-database,harbor-trivy,harborregistry,harbor-portal,127.0.0.1,localhost,.local,.internal
\u3067\u3059\u3002
PORTAL_URL
- \u3053\u306e\u5024\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u304charbor-portal\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u5834\u6240\u3092\u6307\u793a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
http://harbor-portal:8080
\u3067\u3059\u3002
POSTGRESQL_DATABASE
- harbor-core\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u969b\u306b\u4f7f\u7528\u3059\u3079\u304dpostgres\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
registry
\u3067\u3059\u3002
POSTGRESQL_HOST
- harbor-core\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u3079\u304d\u5834\u6240\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
harbor-database
\u3067\u3059\u3002
POSTGRESQL_MAX_IDLE_CONNS
- harbor-core\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u5bfe\u3057\u3066\u958b\u653e\u3057\u3066\u304a\u304f\u3079\u304d\u6700\u5927\u306e\u30a2\u30a4\u30c9\u30eb\u63a5\u7d9a\u6570\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
50
\u3067\u3059\u3002
POSTGRESQL_MAX_OPEN_CONNS
- harbor-core\u304c\u958b\u304f\u3079\u304d\u6700\u5927\u306e\u63a5\u7d9a\u6570\u3002 -\u30b3\u30a2\u306fpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
100
\u3067\u3059\u3002
POSTGRESQL_PASSWORD
- Harbor\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30d1\u30b9\u30ef\u30fc\u30c9\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u30e9\u30f3\u30c0\u30e0\u306b\u751f\u6210\u3055\u308c\u305f\u5024\u3067\u3059\u3002
POSTGRESQL_PORT
- harbor-core\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30dd\u30fc\u30c8\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
5432
\u3067\u3059\u3002
POSTGRESQL_USERNAME
- harbor-core\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30e6\u30fc\u30b6\u30fc\u540d\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
postgres
\u3067\u3059\u3002
POSTGRESQL_SSLMODE
- harbor-core\u304cSSL\u3092\u4f7f\u7528\u3057\u3066postgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u3079\u304d\u304b\u3069\u3046\u304b\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
disable
\u3067\u3059\u3002
REGISTRY_HTTP_SECRET
- \u3053\u306e\u5024\u306f\u3001harborregistry\u306b\u63a5\u7d9a\u3059\u308b\u5404\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u521d\u3081\u3066\u7a3c\u50cd\u3057\u3066\u3044\u308bLagoon\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u751f\u6210\u3055\u308c\u308b\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
REGISTRY_STORAGE_PROVIDER_NAME
- harborregistry\u304c\u4f7f\u7528\u3059\u3079\u304d\u30b9\u30c8\u30ec\u30fc\u30b8\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
s3
\u3067\u3059\u3002
REGISTRY_URL
- harbor-core\u304charborregistry\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304dURL\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f * \u5024\u306f
http://harborregistry:5000
\u3067\u3059\u3002
REGISTRYCTL_URL
- \u3053\u306e\u5024\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u304charborregistryctl\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u5834\u6240\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harborregistryctl:8080
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
ROBOT_TOKEN_DURATION
- \u3053\u306e\u5024\u306f\u3001\u5404\u554f\u984c\u306e\u30ed\u30dc\u30c3\u30c8\u30c8\u30fc\u30af\u30f3\u304c\u6709\u52b9\u3067\u3042\u308b\u3079\u304d\u65e5\u6570\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
999
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
SYNC_REGISTRY
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
false
\u3067\u3059\u3002
TOKEN_SERVICE_URL
- harbor-core\u30b5\u30fc\u30d3\u30b9\u304c\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u516c\u958b\u3059\u308bURL\u3067\u3001\u3053\u308c\u306b\u3088\u308aJWT\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-core:8080/service/token
\u3067\u3059\u3002
TRIVY_ADAPTER_URL
- harbor-core\u30b5\u30fc\u30d3\u30b9\u304charbor-trivy\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308bURL\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-trivy:8080
\u3067\u3059\u3002
WITH_CHARTMUSEUM
- Chartmuseum\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092harbor-core\u306b\u4f1d\u3048\u307e\u3059\u3002
- \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306fLagoon\u306eHarbor\u5b9f\u88c5\u3067\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
false
\u3067\u3059\u3002
WITH_CLAIR
- harborclair\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092harbor-core\u306b\u4f1d\u3048\u307e\u3059\u3002
- Lagoon\u306fHarbor\u306e\u5b9f\u88c5\u3067\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
true
\u3067\u3059\u3002
WITH_NOTARY
- harbor-core\u306b - \u30ce\u30fc\u30bf\u30ea\u30fc\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306ecore\u3002
- \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u3001Lagoon\u304c\u5b9f\u88c5\u3057\u305fHarbor\u3067\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
false
\u3067\u3059\u3002
WITH_TRIVY
- Trivy\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092harbor-core\u306b\u4f1d\u3048\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
true
\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-database/","title":"Harbor-\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9","text":"Harbor-\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u8d77\u52d5\u3059\u308b\u305f\u3081\u306b\u7279\u5b9a\u306e\u74b0\u5883\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u305d\u308c\u3089\u306fservices/harbor-database/harbor-core.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u8aac\u660e\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u5185\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-database/#_1","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9","text":" POSTGRES_DB
- Postgres\u30b5\u30fc\u30d3\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u969b\u306b\u8a2d\u5b9a\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
postgres
\u3067\u3059\u3002
POSTGRES_PASSWORD
- Postgres\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30eb\u30fc\u30c8\u30d1\u30b9\u30ef\u30fc\u30c9\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
test123
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u52d5\u4f5c\u3057\u3066\u3044\u308bLagoon\u4e0a\u3067\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
POSTGRES_USER
- Postgres\u30b5\u30fc\u30d3\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u969b\u306b\u8a2d\u5b9a\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30e6\u30fc\u30b6\u30fc\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
postgres
\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-jobservice/","title":"Harbor-Jobservice","text":"Harbor-Jobservice\u306f\u3001\u8d77\u52d5\u306b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u30b3\u30f3\u30c6\u30ca\u5185\u306e/etc/jobservice/config.yml
\u306b\u4f4d\u7f6e\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u5909\u66f4\u306f\u4e00\u6642\u7684\u306a\u3082\u306e\u3067\u3001\u30dd\u30c3\u30c9\u304c\u518d\u8d77\u52d5\u3055\u308c\u308b\u3068\u6301\u7d9a\u3057\u307e\u305b\u3093\u3002
\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u751f\u6210\u3055\u308c\u308b\u5143\u3068\u306a\u308bconfigmap\u306f\u3001Lagoon\u5185\u306eservices/harbor-jobservice/harbor-jobservice.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306econfigmap\u3078\u306e\u5909\u66f4\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u518d\u8d77\u52d5\u3092\u8d8a\u3048\u3066\u6301\u7d9a\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-jobservice/#_1","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9","text":" CORE_URL
- \u3053\u306e\u5024\u306f
harbor-jobservice
\u306bharbor-core
\u304c\u3069\u3053\u306b\u3042\u308b\u304b\u3092\u4f1d\u3048\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-core:8080
\u3067\u3059\u3002
CORE_SECRET
- \u3053\u306e\u5024\u306f\u3001
harbor-core
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u307e\u305f\u306fCI\u30c6\u30b9\u30c8\u4e2d\u306b\u5b9f\u884c\u3055\u308c\u308b\u3068\u304d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u5b9f\u884c\u4e2d\u306eLagoon\u4e0a\u3067\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
HTTP_PROXY
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u306e\u6587\u5b57\u5217\u3067\u3059\u3002
HTTPS_PROXY
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u306e\u6587\u5b57\u5217\u3067\u3059\u3002
JOBSERVICE_SECRET
- \u3053\u306e\u5024\u306f\u3001\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002
harbor-jobservice
\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u304b\u3001CI\u30c6\u30b9\u30c8\u4e2d\u306e\u5834\u5408\u306f
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u5b9f\u884c\u4e2d\u306eLagoon\u306b\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
LOG_LEVEL
- \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3059\u308b\u30ed\u30b0\u30ec\u30d9\u30eb\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
error
\u3067\u3059\u3002 - \u975e\u5e38\u306b\u8a73\u7d30\u306a\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001
debug
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
NO_PROXY
- \u305d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30d7\u30ed\u30ad\u30b7\u5316\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u306a\u3044\u30db\u30b9\u30c8\u306e\u30ea\u30b9\u30c8\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306f
harbor-core,harbor-jobservice,harbor-database,harbor-trivy,harborregistry,harbor-portal,127.0.0.1,localhost,.local,.internal
\u3067\u3059\u3002
REGISTRY_CONTROLLER_URL
- \u3053\u306e\u5024\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u304c
harborregistryctl
\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u5834\u6240\u3092\u6307\u793a\u3057\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harborregistryctl:8080
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
SCANNER_LOG_LEVEL
- \u30b9\u30ad\u30e3\u30cb\u30f3\u30b0\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3059\u308b\u30ed\u30b0\u30ec\u30d9\u30eb\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
error
\u3067\u3059\u3002 - \u975e\u5e38\u306b\u8a73\u7d30\u306a\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001
debug
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
SCANNER_STORE_REDIS_URL
- \u3053\u306e\u5024\u306f\u3001
harbor-trivy
\u304cRedis\u30b9\u30c8\u30a2\u306b\u63a5\u7d9a\u3059\u308b\u65b9\u6cd5\u3092\u6307\u793a\u3057\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
redis://harbor-redis:6379/4
\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-trivy/","title":"Harbor-Trivy","text":"Harbor-Trivy\u306f\u7279\u5b9a\u306e\u74b0\u5883\u5909\u6570\u3092\u4ecb\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u4f7f\u7528\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-trivy/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":" SCANNER_LOG_LEVEL
- \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3059\u308b\u30ed\u30b0\u30ec\u30d9\u30eb\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
error
\u3067\u3059\u3002 - \u975e\u5e38\u306b\u8a73\u7d30\u306a\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001\u3053\u308c\u3092
debug
\u306b\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002
SCANNER_STORE_REDIS_URL
- \u3053\u306e\u5024\u306fharbor-trivy\u306b\u3001\u81ea\u8eab\u306eRedis\u30b9\u30c8\u30a2\u3078\u306e\u63a5\u7d9a\u65b9\u6cd5\u3092\u6307\u793a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
redis://harbor-redis:6379/4
\u3067\u3059\u3002
SCANNER_JOB_QUEUE_REDIS_URL
- \u3053\u306e\u5024\u306fharbor-trivy\u306b\u3001\u81ea\u8eab\u306eRedis\u30b9\u30c8\u30a2\u3078\u306e\u63a5\u7d9a\u65b9\u6cd5\u3092\u6307\u793a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
redis://harbor-redis:6379/4
\u3067\u3059\u3002
SCANNER_TRIVY_VULN_TYPE
- \u3053\u306e\u5024\u306fharbor-trivy\u306b\u3001\u4f55\u30bf\u30a4\u30d7\u306e\u8106\u5f31\u6027\u3092\u691c\u7d22\u3059\u3079\u304d\u304b\u3092\u6307\u793a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
os,library
\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harborregistry/","title":"HarborRegistry","text":"HarborRegistry\u306f\u3001\u8d77\u52d5\u306b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u5fc5\u8981\u3068\u3057\u3001\u305d\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u30b3\u30f3\u30c6\u30ca\u5185\u306e /etc/registry/config.yml
\u306b\u4f4d\u7f6e\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u5909\u66f4\u306f\u4e00\u6642\u7684\u306a\u3082\u306e\u3067\u3042\u308a\u3001\u30dd\u30c3\u30c9\u304c\u518d\u8d77\u52d5\u3055\u308c\u308b\u3068\u6301\u7d9a\u3057\u307e\u305b\u3093\u3002
\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f services/harborregistry/harborregistry.yml
\u30d5\u30a1\u30a4\u30eb\u5185\u306b\u4fdd\u5b58\u3055\u308c\u3001 /etc/registry/pre-config.yml
\u3068\u3057\u3066\u30b3\u30f3\u30c6\u30ca\u5185\u306b\u30ed\u30fc\u30c9\u3055\u308c\u307e\u3059\u3002
\u30ab\u30b9\u30bf\u30e0\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8 services/harborregistry/entrypoint.sh
\u306f\u3001\u63d0\u4f9b\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u3092\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u8ee2\u9001\u3057\u3001\u7d50\u679c\u3092 /etc/registry/config.yml
\u3068\u3057\u3066\u4fdd\u5b58\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harborregistry/#_1","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9","text":" CORE_SECRET
- \u3053\u306e\u5024\u306f\u3001
harbor-core
\u306b\u63a5\u7d9a\u3059\u308b\u69d8\u3005\u306a\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u305f\u308aCI\u30c6\u30b9\u30c8\u4e2d\u306b\u8a2d\u5b9a\u3055\u308c\u308b
secret123
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u5b9f\u884c\u4e2d\u306eLagoon\u306b\u521d\u3081\u3066\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u308b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
HARBOR_NGINX_ENDPOINT
- \u3053\u306e\u74b0\u5883\u5909\u6570\u306f\u3001
harborregistry
\u306b\u3001\u305d\u306eNGINX\u30a4\u30f3\u30b0\u30ec\u30b9\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc harbor-nginx
\u304c\u3069\u3053\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u304b\u3092\u901a\u77e5\u3057\u3001UI\u5185\u3067\u9069\u5207\u306a\u30d7\u30c3\u30b7\u30e5\u3068\u30d7\u30eb\u306e\u6307\u793a\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u3001\u305d\u306e\u4ed6\u306e\u4e8b\u9805\u3092\u901a\u77e5\u3057\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059 \u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3057\u305f\u308aCI\u30c6\u30b9\u30c8\u4e2d\u306b\u306f\u3001
http://harbor-nginx:8080
\u306b\u306a\u308a\u307e\u3059\u3002 - \u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u74b0\u5883\u3067Lagoon\u304c\u81ea\u52d5\u7684\u306b\u3053\u306e\u5909\u6570\u3092\u53d6\u5f97\u3057\u30bb\u30c3\u30c8\u3057\u3088\u3046\u3068\u3057\u307e\u3059\u3002\u305d\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u5931\u6557\u3059\u308b\u3068\u3001\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u5b9f\u884c\u306b\u5931\u6557\u3057\u307e\u3059\u3002
JOBSERVICE_SECRET
- \u3053\u306e\u5024\u306f\u3001
harbor-jobservice
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u6700\u521d\u306b\u7a3c\u50cd\u4e2d\u306eLagoon\u4e0a\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
REGISTRY_HTTP_SECRET
- \u3053\u306e\u5024\u306f\u3001
harborregistry
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u6700\u521d\u306b\u7a3c\u50cd\u4e2d\u306eLagoon\u4e0a\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
REGISTRY_REDIS_PASSWORD
- \u3053\u306e\u74b0\u5883\u5909\u6570\u306f\u3001
harborregistryctl
\u304cRedis\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u6307\u793a\u3057\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u306e\u6587\u5b57\u5217\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harborregistryctl/","title":"HarborRegistryCtl","text":"HarborRegistryCtl\u306f\u8d77\u52d5\u3059\u308b\u305f\u3081\u306b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u5fc5\u8981\u3068\u3057\u3001\u305d\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u30b3\u30f3\u30c6\u30ca\u5185\u306e/etc/registryctl/config.yml
\u306b\u4f4d\u7f6e\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u5909\u66f4\u306f\u4e00\u6642\u7684\u306a\u3082\u306e\u3067\u3042\u308a\u3001\u30dd\u30c3\u30c9\u304c\u518d\u8d77\u52d5\u3055\u308c\u308b\u3068\u6301\u7d9a\u3057\u307e\u305b\u3093\u3002
\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u751f\u6210\u3055\u308c\u308b\u5143\u3068\u306a\u308bconfigmap\u306f\u3001Lagoon\u5185\u306eservices/harborregistryctl/harborregistry.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306econfigmap\u3078\u306e\u5909\u66f4\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u304c\u518d\u8d77\u52d5\u3055\u308c\u3066\u3082\u4fdd\u6301\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harborregistryctl/#_1","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9","text":" CORE_SECRET
- \u3053\u306e\u5024\u306f\u3001
harbor-core
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u305f\u308aCI\u30c6\u30b9\u30c8\u4e2d\u306b\u8a2d\u5b9a\u3055\u308c\u308b
secret123
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u7a3c\u50cd\u4e2d\u306eLagoon\u306b\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u969b\u306b\u4f5c\u6210\u3055\u308c\u308b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
JOBSERVICE_SECRET
- \u3053\u306e\u5024\u306f\u3001
harbor-jobservice
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u305f\u308aCI\u30c6\u30b9\u30c8\u4e2d\u306b\u8a2d\u5b9a\u3055\u308c\u308b
secret123
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u7a3c\u50cd\u4e2d\u306eLagoon\u306b\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u969b\u306b\u4f5c\u6210\u3055\u308c\u308b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
REGISTRY_HTTP_SECRET
- \u3053\u306e\u5024\u306f\u3001
harborregistry
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u307e\u305f\u306fCI\u30c6\u30b9\u30c8\u4e2d\u306b\u5b9f\u884c\u3055\u308c\u308b\u3068\u304d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u52d5\u4f5c\u4e2d\u306eLagoon\u306b\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
REGISTRY_REDIS_PASSWORD
- \u3053\u306e\u74b0\u5883\u5909\u6570\u306f\u3001
harborregistryctl
\u306bRedis\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u4f1d\u3048\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u6587\u5b57\u5217\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/","title":"Lagoon\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9 - \u6982\u8981","text":"\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Lagoon\u306e\u57fa\u672c\u7684\u306a\u7279\u5fb4\u3068\u6a5f\u80fd\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306b\u6163\u308c\u3066\u3044\u308b\u65b9\u306f\u3001Lagoon\u306e\u9ad8\u5ea6\u306a\u4f7f\u3044\u65b9\u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002
\u30d8\u30eb\u30d7\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u304b\u3001\u79c1\u305f\u3061\u306eDiscord\u3067\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30e1\u30f3\u30d0\u30fc\u3068\u30e1\u30f3\u30c6\u30ca\u306b\u554f\u3044\u5408\u308f\u305b\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/#_1","title":"\u5fc5\u8981\u6761\u4ef6","text":""},{"location":"ja/using-lagoon-the-basics/#docker","title":"Docker","text":"Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u304cDocker\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u8981\u4ef6\u3092\u6e80\u305f\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30ef\u30fc\u30af\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u306b\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306eDocker\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002Docker\u306f\u3053\u3061\u3089\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001Docker\u306b\u306f\u6700\u4f4e\u3067\u30824CPUs\u30684GB RAM\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/#_2","title":"\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883","text":"pygmy\u3001Lando\u3001DDEV\u304b\u3089\u9078\u3076\u3053\u3068\u304c\u3067\u304d\u307e\u3059 - \u9078\u629e\u306f\u3042\u306a\u305f\u6b21\u7b2c\u3067\u3059\uff01
Lagoon\u3068\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u306b\u3064\u3044\u3066\u3082\u3063\u3068\u5b66\u3073\u307e\u3057\u3087\u3046\u3002
"},{"location":"ja/using-lagoon-the-basics/#step-by-step-guides","title":"\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u306e\u30ac\u30a4\u30c9","text":" - \u4e00\u822c: Lagoon\u3067\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b
- \u4e00\u822c: \u521d\u3081\u3066\u306e\u30c7\u30d7\u30ed\u30a4
- Drupal: Drupal\u3067\u306e\u521d\u3081\u3066\u306e\u30c7\u30d7\u30ed\u30a4
- Drupal: Drupal\u30b5\u30a4\u30c8\u3092Lagoon\u5bfe\u5fdc\u306b\u3059\u308b
- \u3059\u3079\u3066: Lagoon\u306e\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30d7\u30ed\u30bb\u30b9
"},{"location":"ja/using-lagoon-the-basics/#lagoon","title":"Lagoon\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u6982\u8981","text":""},{"location":"ja/using-lagoon-the-basics/#lagoonyml","title":".lagoon.yml
","text":"\u3053\u308c\u306fLagoon\u304c\u4f55\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u304b\u3001\u307e\u305f\u591a\u304f\u306e\u4ed6\u306e\u4e8b\u67c4\u3092\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u4e3b\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002.lagoon.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/#docker-composeyml","title":"docker-compose.yml
","text":"\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306fDocker Compose
\u306b\u3088\u3063\u3066\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3092\u958b\u59cb\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Lagoon\u3082\u3053\u308c\u3092\u4f7f\u7528\u3057\u3066\u3001\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3079\u304d\u304b\u3001\u3069\u306e\u30bf\u30a4\u30d7\u3067\u3001\u3069\u306e\u3088\u3046\u306b\u30d3\u30eb\u30c9\u3059\u308b\u304b\u3092\u7406\u89e3\u3057\u307e\u3059\u3002\u3053\u308c\u306flabels
\u3092\u901a\u3058\u3066\u884c\u308f\u308c\u307e\u3059\u3002docker-compose.yml\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/#dockerfiles","title":"Dockerfiles","text":"\u4e00\u90e8\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3068\u30b3\u30f3\u30c6\u30ca\u306f\u3001\u63d0\u4f9b\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u901a\u5e38\u30012\u3064\u306e\u7406\u7531\u304c\u3042\u308a\u307e\u3059:
- \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9: NGINX\u3001PHP\u3001Node.js\u306a\u3069\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u3001\u305d\u306e\u30a4\u30e1\u30fc\u30b8\u5185\u306b\u5b9f\u969b\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b3\u30fc\u30c9\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306fDocker\u30d3\u30eb\u30c9\u30b9\u30c6\u30c3\u30d7\u4e2d\u306b\u884c\u308f\u308c\u3001Dockerfile\u3067\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002Lagoon\u306fDocker\u3092\u5b8c\u5168\u306b\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u305f\u3081Dockerfile\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306b\u3088\u3063\u3066\u51fa\u6765\u4e0a\u304c\u308b\u30a4\u30e1\u30fc\u30b8\u3092\u5b8c\u5168\u306b\u5236\u5fa1\u3067\u304d\u307e\u3059\u3002
- \u30a4\u30e1\u30fc\u30b8\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba: Lagoon\u3067\u306f\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u3042\u306a\u305f\u306e\u30cb\u30fc\u30ba\u306b\u5408\u308f\u305b\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u8ffd\u52a0\u306e\u74b0\u5883\u5909\u6570\u3092\u633f\u5165\u3057\u305f\u308a\u3001\u30b5\u30fc\u30d3\u30b9\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3057\u305f\u308a\u3001\u3055\u3089\u306b\u8ffd\u52a0\u306e\u30c4\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3082\u542b\u307e\u308c\u307e\u3059\u3002Docker\u30a4\u30e1\u30fc\u30b8\u306b\u8ffd\u52a0\u306e\u30c4\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u969b\u306b\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002\u306a\u305c\u306a\u3089\u3001\u5c06\u6765\u7684\u306b\u4efb\u610f\u306e\u9069\u5fdc\u3092\u7dad\u6301\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3089\u3067\u3059\uff01
"},{"location":"ja/using-lagoon-the-basics/#lagoon_1","title":"Lagoon\u306b\u3088\u308b\u30b5\u30dd\u30fc\u30c8\u30b5\u30fc\u30d3\u30b9\u3068\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8","text":"\u30bf\u30a4\u30d7 \u30d0\u30fc\u30b8\u30e7\u30f3 Dockerfile MariaDB 10.4, 10.5, 10.6, 10.11 mariadb/Dockerfile PostgreSQL 11, 12, 13, 14, 15 postgres/Dockerfile MongoDB 4 mongo/Dockerfile NGINX openresty/1.25 nginx/Dockerfile Node.js 18, 20, 22 node/Dockerfile PHP FPM 8.1, 8.2, 8.3 php/fpm/Dockerfile PHP CLI 8.1, 8.2, 8.3 php/cli/Dockerfile Python 3.8, 3.9, 3.10, 3.11, 3.12 python/Dockerfile Redis 6, 7 redis/Dockerfile Solr 8, 9 solr/Dockerfile Varnish 6, 7 varnish/Dockerfile Opensearch 2 opensearch/Dockerfiles RabbitMQ 3.10 rabbitmq/Dockerfile Ruby 3.1, 3.2, 3.3 ruby/Dockerfile \u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u306fhttps://hub.docker.com/u/uselagoon\u306b\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002\u7279\u6027\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u89b3\u70b9\u304b\u3089\u5e38\u306b\u6700\u65b0\u306e\u30bf\u30b0(\u4f8b:uselagoon/nginx:latest
)\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002
\u7279\u5b9a\u306eLagoon\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30a4\u30e1\u30fc\u30b8\u3001\u4f8b\u3048\u3070uselagoon/nginx:20.10.0
\u3084uselagoon/node-10:20.10.0
\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u65b0\u3057\u3044Lagoon\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305f\u3089\u3059\u3050\u306b\u30a4\u30e1\u30fc\u30b8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u5404\u81ea\u306e\u8cac\u4efb\u3067\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\uff01
"},{"location":"ja/using-lagoon-the-basics/configure-webhooks/","title":"Webhooks\u306e\u8a2d\u5b9a","text":"Lagoon\u306e\u7ba1\u7406\u8005\u306f\u3001webhook-handler
\u3078\u306e\u30eb\u30fc\u30c8\u3082\u3042\u306a\u305f\u306b\u6559\u3048\u3066\u304f\u308c\u308b\u3067\u3057\u3087\u3046\u3002\u3053\u306e\u30eb\u30fc\u30c8\u3092\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30a2\u30a6\u30c8\u30b4\u30fc\u30a4\u30f3\u30b0webhook\u306b\u8ffd\u52a0\u3057\u3001Lagoon\u306b\u9001\u4fe1\u3059\u308b\u30a4\u30d9\u30f3\u30c8\u3092\u9078\u629e\u3057\u307e\u3059\u3002\u901a\u5e38\u306f\u5168\u3066\u306e\u30d7\u30c3\u30b7\u30e5\u3068\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002Lagoon\u3067\u306f\u3069\u306e\u30d6\u30e9\u30f3\u30c1\u3084\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5b9f\u969b\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306e\u6b63\u898f\u8868\u73fe\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001Lagoon\u306e\u7ba1\u7406\u8005\u304c\u305d\u308c\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001feature-
\u3067\u59cb\u307e\u308b\u5168\u3066\u306e\u30d6\u30e9\u30f3\u30c1\u3092Lagoon\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
amazee.io\u306e\u304a\u5ba2\u69d8\u3078\u306e\u60c5\u5831 amazee.io\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u3067\u5834\u5408\u3001webhook-handler\u3078\u306e\u30eb\u30fc\u30c8\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002https://hooks.lagoon.amazeeio.cloud
\u5371\u967a
\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u7ba1\u7406\u3059\u308b\u306b\u306f\u3001\u3053\u308c\u3089\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u9ad8\u3044\u30ec\u30d9\u30eb\u306e\u30a2\u30af\u30bb\u30b9\u304c\u5fc5\u8981\u3068\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3042\u306a\u305f\u306e\u7d44\u7e54\u306b\u3088\u3063\u3066\u7ba1\u7406\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u5834\u5408\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u7ba1\u7406\u8005\u307e\u305f\u306f\u3042\u306a\u305f\u306e\u7d44\u7e54\u5185\u306e\u9069\u5207\u306a\u8cac\u4efb\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/configure-webhooks/#github","title":"GitHub","text":" - GitHub\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u8a2d\u5b9a -> Webhooks ->
Add webhook
\u306b\u9032\u307f\u307e\u3059\u3002 Payload URL
\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u304b\u3089\u63d0\u4f9b\u3055\u308c\u308b\u3001\u3042\u306a\u305f\u306eLagoon\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306ewebhook-handler
\u3078\u306e\u30eb\u30fc\u30c8\u3067\u3059\u3002 Content type
\u3092application/json
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 - \"
Let me select individual events
\"\u3092\u9078\u629e\u3057\u307e\u3059\u3002 - \u3069\u306e\u30a4\u30d9\u30f3\u30c8\u304cwebhook\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u304b\u3092\u9078\u629e\u3057\u307e\u3059\u3002
Push
\u3068Pull request
\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eLagoon\u8a2d\u5b9a\u3067\u3055\u3089\u306b\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002 - webhook\u304c
Active
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 Add webhook
\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/configure-webhooks/#gitlab","title":"GitLab","text":" - GitLab\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u8a2d\u5b9a -> \u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
URL
\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u304b\u3089\u63d0\u4f9b\u3055\u308c\u308b\u3001Lagoon\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306ewebhook-handler
\u3078\u306e\u30eb\u30fc\u30c8\u3067\u3059\u3002 - Lagoon\u306b\u901a\u77e5\u3092\u9001\u4fe1\u3059\u308b
Trigger
\u30a4\u30d9\u30f3\u30c8\u3092\u9078\u629e\u3057\u307e\u3059\u3002Push events
\u3068Merge request events
\u3092\u9078\u629e\u3057\u3001\u305d\u306e\u5f8cLagoon\u306e\u8a2d\u5b9a\u3067\u3055\u3089\u306b\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002 Add webhook
\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/configure-webhooks/#bitbucket","title":"Bitbucket","text":" - \u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u8a2d\u5b9a -> \u30a6\u30a7\u30d6\u30d5\u30c3\u30af -> \u65b0\u3057\u3044\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u3092\u8ffd\u52a0\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
Title
\u306f\u53c2\u7167\u7528\u3067\u3059\u3002 URL
\u306f\u3042\u306a\u305f\u306eLagoon\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306ewebhook-handler
\u3078\u306e\u30eb\u30fc\u30c8\u3067\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002 -
Choose from a full list of triggers
\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u4ee5\u4e0b\u3092\u9078\u629e\u3057\u307e\u3059:
- Repository
- PUsh
- Pull Request
- Created
- Updated
- Approved
- Approval removed
- Merged
- Declined
5. Save
\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066Bitbucket\u306e\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/first-deployment/","title":"\u6700\u521d\u306e\u30c7\u30d7\u30ed\u30a4","text":"\u6ce8\u610f:
Drupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u3001Drupal\u306e\u521d\u56de\u30c7\u30d7\u30ed\u30a4\u3092\u304a\u8aad\u307f\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/first-deployment/#1","title":"1. \u6e96\u5099\u304c\u6574\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059","text":"\u6700\u521d\u306e\u30c7\u30d7\u30ed\u30a4\u3092\u6210\u529f\u3055\u305b\u308b\u305f\u3081\u306b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304cLagoon\u5316\u3055\u308c\u3066\u304a\u308a\u3001Lagoon\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3082\u3057\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u3001\u307e\u305f\u306f\u78ba\u4fe1\u304c\u6301\u3066\u306a\u3044\u5834\u5408\u3001\u307e\u305f\u306f\u99b4\u67d3\u307f\u304c\u306a\u3044\u5834\u5408\u306f\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u306e\u30ac\u30a4\u30c9\u306b\u623b\u3063\u3066\u3069\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3059\u308b\u304b\u898b\u3066\u304b\u3089\u3001\u518d\u5ea6\u3053\u306e\u30da\u30fc\u30b8\u306b\u6765\u3066\u304f\u3060\u3055\u3044\uff01
"},{"location":"ja/using-lagoon-the-basics/first-deployment/#2","title":"2. \u30d7\u30c3\u30b7\u30e5","text":"Lagoon\u3067\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u30d6\u30e9\u30f3\u30c1\u306b\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3053\u3068\u3067\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
\u65b0\u3057\u3044\u30b3\u30fc\u30c9\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3082\u306e\u304c\u306a\u3044\u5834\u5408\u3067\u3082\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\uff01\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Git pushgit commit --allow-empty -m \"go, go! Lagoon!\"\ngit push\n
\u3053\u308c\u306b\u3088\u308a\u30d7\u30c3\u30b7\u30e5\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u3001Git\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u304c\u8a2d\u5b9a\u3055\u308c\u305fWebhook\u3092\u901a\u3058\u3066Lagoon\u306b\u3053\u306e\u30d7\u30c3\u30b7\u30e5\u3092\u901a\u77e5\u3057\u307e\u3059\u3002
\u3059\u3079\u3066\u6b63\u3057\u3051\u308c\u3070\u8a2d\u5b9a\u3055\u308c\u305f\u30c1\u30e3\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u306e\u901a\u77e5\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002(\u3053\u308c\u306f\u89aa\u5207\u306aLagoon\u306e\u7ba1\u7406\u8005\u304c\u8a2d\u5b9a\u3057\u305f\u3082\u306e\u3067\u3059)
\u3053\u308c\u306f\u3001Lagoon\u304c\u3042\u306a\u305f\u306e\u30b3\u30fc\u30c9\u306e\u30c7\u30d7\u30ed\u30a4\u3092\u958b\u59cb\u3057\u305f\u3053\u3068\u3092\u901a\u77e5\u3057\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306e\u5927\u304d\u3055\u3084\u30b3\u30f3\u30c6\u30ca\u306e\u91cf\u306b\u3088\u308a\u307e\u3059\u304c\u3001\u3053\u308c\u306b\u306f\u6570\u79d2\u304b\u304b\u308a\u307e\u3059\u3002\u30ea\u30e9\u30c3\u30af\u30b9\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4eca\u4f55\u304c\u8d77\u3053\u3063\u3066\u3044\u308b\u306e\u304b\u77e5\u308a\u305f\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u30d7\u30ed\u30bb\u30b9\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Lagoon UI \u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u5c55\u958b\u306e\u9032\u884c\u72b6\u6cc1\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059 (\u3053\u308c\u306b\u3064\u3044\u3066\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044)\u3002
"},{"location":"ja/using-lagoon-the-basics/first-deployment/#3","title":"3. \u5b8c\u4e86\u3057\u307e\u3057\u305f","text":"Lagoon\u304c\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u3092\u5b8c\u4e86\u3059\u308b\u3068\u3001\u30c1\u30e3\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u306b2\u3064\u76ee\u306e\u901a\u77e5\u3092\u9001\u308a\u307e\u3059\u3002\u3053\u3053\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002
\u3053\u308c\u306b\u306f\u4ee5\u4e0b\u306e\u60c5\u5831\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059:
- \u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8
- \u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u3068Git SHA
- \u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u306e\u30ed\u30b0\u3078\u306e\u30ea\u30f3\u30af
- \u74b0\u5883\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c8(URL)\u3078\u306e\u30ea\u30f3\u30af
\u307e\u305f\u3001\u3069\u306e\u3088\u3046\u306a\u901a\u77e5\u306a\u306e\u304b\u3092\u3059\u3050\u306b\u5224\u65ad\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u305d\u308c\u3089\u306f\u7d75\u6587\u5b57\u306b\u3088\u3063\u3066\u59cb\u307e\u308a\u307e\u3059\u3002\u30d3\u30eb\u30c9\u304c\u958b\u59cb\u3057\u305f\u3060\u3051\u306e\u60c5\u5831\u3067\u3042\u308b\u304b\u3001\u6210\u529f\u3067\u3042\u308b\u304b\u3001\u307e\u305f\u306f\u5931\u6557\u3067\u3042\u308b\u304b\u3002
\u305d\u308c\u3060\u3051\u3067\u3059\uff01\u3042\u307e\u308a\u96e3\u3057\u304f\u306a\u304b\u3063\u305f\u3053\u3068\u3092\u9858\u3063\u3066\u3044\u307e\u3059\u3002devOps\u3092\u5229\u7528\u53ef\u80fd\u306b\u3059\u308b\u3053\u3068\u304c\u79c1\u305f\u3061\u306e\u76ee\u6a19\u3067\u3059\uff01
"},{"location":"ja/using-lagoon-the-basics/first-deployment/#_2","title":"\u4ed6\u306e\u30d6\u30e9\u30f3\u30c1\u3084\u672c\u756a\u74b0\u5883\u306b\u3064\u3044\u3066\u306f\u3069\u3046\u3067\u3057\u3087\u3046\u304b\uff1f","text":"\u3053\u308c\u304cLagoon\u306e\u826f\u3044\u3068\u3053\u308d\u3067\u3059\u3002\u305d\u308c\u3089\u306f\u307e\u3063\u305f\u304f\u540c\u3058\u65b9\u6cd5\u3067\u3059\uff01\u30d6\u30e9\u30f3\u30c1\u306e\u540d\u524d\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3060\u3051\u3067\u3001\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/first-deployment/#_3","title":"\u5931\u6557\uff1f\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044","text":"\u30c7\u30d7\u30ed\u30a4\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u304b\uff1f\u79c1\u305f\u3061\u304c\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\u3002
- Drupal\u30b5\u30a4\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u5834\u5408\u3001Drupal\u306e\u521d\u56de\u30c7\u30d7\u30ed\u30a4\u3092\u8aad\u3080\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u306a\u305c\u3053\u308c\u304c\u8d77\u3053\u308b\u306e\u304b\u3092\u8aac\u660e\u3057\u307e\u3059\u3002
- \u30a8\u30e9\u30fc\u901a\u77e5\u306e
Logs
\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30d7\u30ed\u30bb\u30b9\u306e\u3069\u3053\u3067\u5931\u6557\u304c\u767a\u751f\u3057\u305f\u304b\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 - \u3082\u3057\u7406\u89e3\u3067\u304d\u306a\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u30b5\u30dd\u30fc\u30c8\u306b\u5c0b\u306d\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u79c1\u305f\u3061\u304c\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\uff01
- \u30b5\u30dd\u30fc\u30c8\u30c1\u30e3\u30f3\u30cd\u30eb\u307e\u305f\u306fDiscord\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u79c1\u305f\u3061\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/","title":"\u30e9\u30a4\u30d6\u914d\u4fe1\u958b\u59cb","text":"\u304a\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3001\u3042\u306a\u305f\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304cLagoon\u4e0a\u3067\u30e9\u30a4\u30d6\u914d\u4fe1\u3059\u308b\u4e00\u6b69\u624b\u524d\u306b\u6765\u307e\u3057\u305f\uff01\u3053\u308c\u3092\u3067\u304d\u308b\u3060\u3051\u30b9\u30e0\u30fc\u30ba\u306b\u9032\u3081\u308b\u305f\u3081\u306b\u3001\u6700\u5f8c\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\u3092\u3054\u7528\u610f\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u3001\u30b5\u30a4\u30c8\u3092\u30e9\u30a4\u30d6\u914d\u4fe1\u3059\u308b\u524d\u306b\u6700\u5f8c\u306b\u78ba\u8a8d\u3059\u3079\u304d\u3053\u3068\u3092\u30ac\u30a4\u30c9\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/#lagoonyml","title":".lagoon.yml
\u3092\u78ba\u8a8d\u3059\u308b","text":""},{"location":"ja/using-lagoon-the-basics/going-live/#ssl","title":"\u30eb\u30fc\u30c8 / SSL","text":"\u3042\u306a\u305f\u306e.lagoon.yml
\u306b\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c8\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30c9\u30e1\u30a4\u30f3\u3092Lagoon\u306b\u5411\u3051\u306a\u3044\u5834\u5408\u3001Let's Encrypt(LE)\u306e\u8a3c\u660e\u66f8\u306e\u4f5c\u6210\u3092\u7121\u52b9\u306b\u3059\u3079\u304d\u3067\u3042\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u307e\u307e\u3067\u306f\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002Lagoon\u306b\u5411\u3051\u3066\u3044\u306a\u3044\u30c9\u30e1\u30a4\u30f3\u306f\u3001Let's Encrypt\u306e\u5236\u9650\u3092\u8d85\u3048\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3057\u3070\u3089\u304f\u3059\u308b\u3068\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\u3002
\u8a3c\u660e\u6a5f\u95a2(CA)\u306b\u3088\u308b\u7f72\u540d\u4ed8\u304d\u8a3c\u660e\u66f8\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001tls-acme
\u3092false
\u306b\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u304c\u3001insecure
\u30d5\u30e9\u30b0\u306fAllow
\u307e\u305f\u306fRedirect
\u306b\u8a2d\u5b9a\u3057\u305f\u307e\u307e\u306b\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002CA\u8a3c\u660e\u66f8\u306e\u5834\u5408\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u30eb\u30fc\u30c8\u3068\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308bSSL\u8a3c\u660e\u66f8\u3092\u77e5\u3089\u305b\u3066\u304f\u3060\u3055\u3044\u3002
.lagoon.ymlenvironments:\nmain:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'false'\ninsecure: Allow\n- www.example.com:\ntls-acme: 'false'\ninsecure: Allow\n
\u6b21\u306b DNS\u30a8\u30f3\u30c8\u30ea\u304c\u3042\u306a\u305f\u306eLagoon\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u6307\u3059\u3088\u3046\u306b\u306a\u308b\u3068\u3001\u30d5\u30e9\u30b0\u3092\u5207\u308a\u66ff\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:tls-acme
\u3092 true
\u306b\u3001insecure
\u3092 Redirect
\u306b\u3057\u307e\u3059\u3002
.lagoon.ymlenvironments:\nmain:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'true'\ninsecure: Redirect\n- www.example.com:\ntls-acme: 'true'\ninsecure: Redirect\n
\u6ce8\u610f
\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u3059\u3079\u3066\u306e\u30da\u30fc\u30b8\u3092\u78ba\u8a8d\u3059\u308b\u306e\u306f\u5c11\u3057\u624b\u9593\u304c\u304b\u304b\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u306e\u3067\u3001mixed-content-scan\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30b5\u30a4\u30c8\u5168\u4f53\u3092\u30af\u30ed\u30fc\u30eb\u3057\u3001\u975eHTTPS\u30b5\u30a4\u30c8\u304b\u3089\u306e\u30a2\u30bb\u30c3\u30c8\u3092\u542b\u3080\u30da\u30fc\u30b8\u3092\u8fd4\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/#_2","title":"\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306b\u3064\u3044\u3066","text":"\u975ewww\u304b\u3089www\u3078\u306e\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u305d\u308c\u3089\u304c redirects-map.conf
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167
"},{"location":"ja/using-lagoon-the-basics/going-live/#cron-jobs","title":"Cron jobs","text":"production\u74b0\u5883\u7528\u306eCron jobs\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002.lagoon.yml\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8
\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/#dns","title":"DNS","text":"\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u304camazee.io\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u3067\u304d\u308b\u3060\u3051\u30b9\u30e0\u30fc\u30ba\u306b\u63a5\u7d9a\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u5c02\u7528\u306e\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u30fcDNS\u30ec\u30b3\u30fc\u30c9\u3092\u7528\u610f\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u6280\u8853\u7684\u306aDNS\u30ea\u30bd\u30fc\u30b9\u30ec\u30b3\u30fc\u30c9\u306f\u3001\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u3092amazee.io\u306e\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306b\u30ea\u30f3\u30af\u3055\u308c\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u4ed6\u306e\u76ee\u7684\u3067\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002CNAME\u30ec\u30b3\u30fc\u30c9\u306b\u7591\u554f\u304c\u3042\u308b\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u6b63\u78ba\u306aCNAME\u3092\u8a2d\u5b9a\u3057\u3066\u3082\u3089\u3063\u3066\u304f\u3060\u3055\u3044\u3002
amazee.io\u306e\u4f8b: <region-identifier>.amazee.io
\u30c9\u30e1\u30a4\u30f3\u3092Lagoon\u306b\u5207\u308a\u66ff\u3048\u308b\u524d\u306b\u3001\uff08\u30e9\u30a4\u30d6\u306b\u306a\u308b\u524d\u306b\uff09Time-to-Live (TTL)\u3092\u4e0b\u3052\u3066\u304a\u304f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u53e4\u3044\u30b5\u30fc\u30d0\u30fc\u304b\u3089\u65b0\u3057\u3044\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u5207\u308a\u66ff\u3048\u304c\u8fc5\u901f\u306b\u884c\u308f\u308c\u307e\u3059\u3002\u901a\u5e38\u3001DNS\u306e\u5207\u308a\u66ff\u3048\u524d\u306b\u306fTTL\u3092300-600\u79d2\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002TTL\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u60c5\u5831
\u60c5\u5831:
\u3053\u306e\u60c5\u5831\u306famazee.io\u304c\u30db\u30b9\u30c8\u3057\u3066\u3044\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u306e\u307f\u95a2\u9023\u3057\u3066\u304a\u308a\u3001\u307e\u3082\u306a\u304f\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u304b\u3089\u524a\u9664\u3055\u308c\u3001amazee.io\u56fa\u6709\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3059
"},{"location":"ja/using-lagoon-the-basics/going-live/#fastly","title":"Fastly\u306e\u63a8\u5968\u8a2d\u5b9a","text":"\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3 (CNAME)
\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3(\u4f8b: www.example.com.)\u306eDNS\u30ec\u30b3\u30fc\u30c9\u3092Lagoon\u306b\u5411\u3051\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306bCNAME\u30ec\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\uff1a
CNAME
: cdn.amazee.io
\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3(A/AAAA) \u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3(example.com.\u306a\u3069)\u306e\u8a2d\u5b9a\u306f\u3001DNS\u4ed5\u69d8\u3067\u306f\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3\u304cCNAME\u3092\u6307\u3059\u3053\u3068\u3092\u8a31\u53ef\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u5384\u4ecb\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u305d\u306e\u305f\u3081\u3001\u4ee5\u4e0b\u306eA\u30ec\u30b3\u30fc\u30c9\u3068AAAA\u30ec\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u4e0b\u8a18\u306e\u5404IP\u306b\u500b\u5225\u306e\u30ec\u30b3\u30fc\u30c9\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\uff1a
A
: 151.101.2.191
A
: 151.101.66.191
A
: 151.101.130.191
A
: 151.101.194.191
AAAA
: 2a04:4e42::703
AAAA
: 2a04:4e42:200::703
AAAA
: 2a04:4e42:400::703
AAAA
: 2a04:4e42:600::703
\u6ce8\u610f:
\u9759\u7684IP\u306e\u8a2d\u5b9a\u306f\u63a8\u5968\u3057\u307e\u305b\u3093 DNS\u30be\u30fc\u30f3\u5185\u306eIP\u30a2\u30c9\u30ec\u30b9\u3002Lagoon\u306e\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u30a4\u30f3\u30d5\u30e9\u304c\u6642\u9593\u3068\u3068\u3082\u306b\u5909\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u9759\u7684IP\u30a2\u30c9\u30ec\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u3068\u30b5\u30a4\u30c8\u306e\u5229\u7528\u53ef\u80fd\u6027\u306b\u5f71\u97ff\u3092\u53ca\u307c\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/#_3","title":"\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3","text":"\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3(\u4f8b:example.com)\u306e\u8a2d\u5b9a\u306f\u3001DNS\u306e\u4ed5\u69d8\u304c\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3\u3092CNAME\u30a8\u30f3\u30c8\u30ea\u306b\u30dd\u30a4\u30f3\u30c8\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u5c11\u3005\u30c8\u30ea\u30c3\u30ad\u30fc\u306b\u306a\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002DNS\u30d7\u30ed\u30d0\u30a4\u30c0\u306b\u3088\u3063\u3066\u306f\u3001\u30ec\u30b3\u30fc\u30c9\u540d\u304c\u7570\u306a\u308a\u307e\u3059:
- ALIAS at DNSimple
- ANAME at DNS Made Easy
- ANAME at easyDNS
- ALIAS at PointDNS
- CNAME at CloudFlare
- CNAME at NS1
DNS\u30d7\u30ed\u30d0\u30a4\u30c0\u304c\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3\u7528\u306eIP\u30a2\u30c9\u30ec\u30b9\u3092\u5fc5\u8981\u3068\u3059\u308b\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u306eIP\u30a2\u30c9\u30ec\u30b9\u3092\u63d0\u4f9b\u3057\u3066\u3082\u3089\u3044\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/#_4","title":"\u672c\u756a\u74b0\u5883","text":"Lagoon\u306f\u958b\u767a\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u306e\u6982\u5ff5\u3092\u7406\u89e3\u3057\u3066\u3044\u307e\u3059\u3002\u958b\u767a\u74b0\u5883\u306f\u81ea\u52d5\u7684\u306bnoindex
\u3068nofollow
\u306e\u30d8\u30c3\u30c0\u30fc\u3092\u9001\u4fe1\u3057\u3001\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u306b\u3088\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3092\u7981\u6b62\u3057\u307e\u3059\u3002
X-Robots-Tag: noindex, nofollow
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a\u4e2d\u306b\u3001\u672c\u756a\u74b0\u5883\u306f\u3059\u3067\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u306f\u305a\u3067\u3059\u3002\u3082\u3057\u307e\u3060\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001 \u7701\u7565\u3055\u308c\u305f\u5834\u5408\u3001\u3042\u306a\u305f\u306e\u74b0\u5883\u306f\u958b\u767a\u30e2\u30fc\u30c9\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002Lagoon\u306e\u30e6\u30fc\u30b6\u30fc\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3067\u74b0\u5883\u304c\u672c\u756a\u74b0\u5883\u3068\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u672c\u756a\u74b0\u5883\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u77e5\u3089\u305b\u3066\u3001\u30b7\u30b9\u30c6\u30e0\u3092\u9069\u5207\u306b\u8a2d\u5b9a\u3057\u3066\u3082\u3089\u3063\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/lagoon-build-errors-and-warnings/","title":"Lagoon\u30d3\u30eb\u30c9\u306e\u30a8\u30e9\u30fc\u3068\u8b66\u544a","text":"\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306eLagoon\u3067\u306f\u3001\u30d3\u30eb\u30c9\u306b\u6f5c\u5728\u7684\u306a\u554f\u984c\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u8b58\u5225\u3057\u3001\u5931\u6557\u305b\u305a\u306b\u305d\u308c\u3089\u3092\u8b66\u544a\u3068\u3057\u3066\u30cf\u30a4\u30e9\u30a4\u30c8\u3059\u308b\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u307e\u305fLagoon\u30c1\u30fc\u30e0\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u5bfe\u3057\u3066\u4e88\u5b9a\u3055\u308c\u3066\u3044\u308b\u975e\u63a8\u5968\u4e8b\u9805\u3084\u6a5f\u80fd\u306e\u5909\u66f4\u3092\u901a\u77e5\u3059\u308b\u65b9\u6cd5\u3067\u3082\u3042\u308a\u307e\u3059\u3002
\u4f8b\u3048\u3070\u3001Lagoon\u30c1\u30fc\u30e0\u304c .lagoon.yml
\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u5909\u66f4\u3059\u3079\u304d\u3053\u3068\u304c\u3042\u308b\u5834\u5408\u3001\u8b66\u544a\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306f\u3001\u305d\u308c\u3092\u7834\u58ca\u7684\u306a\u5909\u66f4\u306b\u306a\u308b\u524d\u306b\u4fee\u6b63\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u53ef\u80fd\u306a\u9650\u308a\u65e9\u671f\u306b\u89e3\u6c7a\u3059\u308b\u3079\u304d\u3067\u3042\u308a\u3001\u5c06\u6765\u306eLagoon\u306e\u30ea\u30ea\u30fc\u30b9\u3067\u306f\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3067\u304d\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u30d3\u30eb\u30c9\u3092\u505c\u6b62\u3059\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u3053\u308c\u3089\u306e\u30a8\u30e9\u30fc\u306e\u89e3\u6c7a\u65b9\u6cd5\u304c\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u304b\u3001Lagoon\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u8cea\u554f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/lagoon-build-errors-and-warnings/#docker-compose-errors","title":"Docker Compose\u306e\u30a8\u30e9\u30fc","text":"\u3088\u304f\u3042\u308bDocker Compose\u306e\u554f\u984c\u306b\u3064\u3044\u3066\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3082\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3089\u306e\u554f\u984c\u306e\u4e00\u90e8\u306f\u305d\u3053\u3067\u30ab\u30d0\u30fc\u3055\u308c\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
env_file \u30a8\u30e9\u30fc\u3092\u793a\u3059 Lagoon \u30d3\u30eb\u30c9\u51fa\u529b> an env_file is defined in your docker-compose file, but no matching file found\n
Docker Compose \u30d3\u30eb\u30c9\u6642\u306b\u53c2\u7167\u3055\u308c\u308benv\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3059\u308b\u3053\u3068\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u305d\u306eenv\u30d5\u30a1\u30a4\u30eb\u306f\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3067\u306e\u307f\u5b58\u5728\u3059\u308b\u304b\u3001Dockerfile\u304b\u3089\u9664\u5916\u3055\u308c\u3066\u3044\u307e\u3059\u3002Lagoon\u30c1\u30fc\u30e0\u306f\u3001Docker Compose\u304c\u3053\u306e\u30a8\u30e9\u30fc\u3092\u7121\u8996\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3059\u308b\u305f\u3081\u306e\u4f5c\u696d\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u89e3\u6c7a\u7b56\u304c\u898b\u3064\u304b\u308b\u307e\u3067\u3053\u306e\u8b66\u544a\u306f\u7d9a\u304d\u307e\u3059\u3002
\u6587\u5b57\u5217\u30ad\u30fc\u30a8\u30e9\u30fc\u3092\u793a\u3059Lagoon\u30d3\u30eb\u30c9\u51fa\u529b> an invalid string key was detected in your docker-compose file\n
\u3042\u306a\u305f\u306eDocker Compose\u30d5\u30a1\u30a4\u30eb\u306b\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3059\u3001\u304a\u305d\u3089\u304f\u5f62\u5f0f\u304c\u4e0d\u6b63\u307e\u305f\u306f\u30a8\u30a4\u30ea\u30a2\u30b9\u3084\u30a2\u30f3\u30ab\u30fc\u306e\u4e0d\u5099\u306b\u95a2\u9023\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u898b\u308c\u3070\u305d\u306e\u5834\u6240\u304c\u308f\u304b\u308b\u306f\u305a\u3067\u3059\u3002
yaml\u691c\u8a3c\u30a8\u30e9\u30fc\u3092\u793a\u3059Lagoon\u30d3\u30eb\u30c9\u51fa\u529b> There are yaml validation errors in your docker-compose file that should be corrected\n
\u3042\u306a\u305f\u306eDocker Compose\u30d5\u30a1\u30a4\u30eb\u306b\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3059\u3001\u304a\u305d\u3089\u304f\u5f62\u5f0f\u304c\u4e0d\u6b63\u307e\u305f\u306f\u30a8\u30a4\u30ea\u30a2\u30b9\u3084\u30a2\u30f3\u30ab\u30fc\u306e\u4e0d\u5099\u306b\u95a2\u9023\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u898b\u308c\u3070\u305d\u306e\u5834\u6240\u304c\u308f\u304b\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/local-development-environments/","title":"\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883","text":"Lagoon\u306b\u306fDocker\u3068Docker Compose(\u307b\u3068\u3093\u3069\u304cDocker\u3068\u4e00\u7dd2\u306b\u51fa\u8377\u3055\u308c\u3066\u3044\u307e\u3059)\u306b\u3057\u304b\u4f9d\u5b58\u3057\u307e\u305b\u3093\u304c\u3001Docker\u306b\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306b\u5f79\u7acb\u3064\u3082\u306e\u304c\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059:
- \u30ca\u30a4\u30b9\u306aURL\u3068HTTPS\u30aa\u30d5\u30ed\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u305f\u3081\u306eHTTP\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3002
- IP\u30a2\u30c9\u30ec\u30b9\u3092\u899a\u3048\u3066\u304a\u304f\u5fc5\u8981\u304c\u306a\u3044DNS\u30b7\u30b9\u30c6\u30e0\u3002
- \u30b3\u30f3\u30c6\u30ca\u5185\u3067SSH\u30ad\u30fc\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306eSSH\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3002
- \u30e1\u30fc\u30eb\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u53d7\u4fe1\u3057\u3066\u8868\u793a\u3059\u308b\u30b7\u30b9\u30c6\u30e0\u3002
Warning \u30ed\u30fc\u30ab\u30eb\u3067Lagoon\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\uff01\u3053\u308c\u306f\u6df7\u4e71\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002Lagoon\u306f\u3042\u306a\u305f\u306e\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3092\u672c\u756a\u74b0\u5883\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30b7\u30b9\u30c6\u30e0\u3067\u3042\u308a\u3001\u74b0\u5883\u305d\u306e\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-the-basics/local-development-environments/#pygmyddevlando-","title":"pygmy\u3001DDEV\u3001\u307e\u305f\u306fLando - \u9078\u629e\u306f\u3042\u306a\u305f\u6b21\u7b2c\u3067\u3059\u3002","text":""},{"location":"ja/using-lagoon-the-basics/local-development-environments/#pygmy","title":"pygmy","text":"Lagoon\u306f\u4f1d\u7d71\u7684\u306bpygmy
\u3068\u6700\u3082\u826f\u597d\u306b\u52d5\u4f5c\u3057\u3066\u304d\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u4e0a\u8a18\u306e\u30c4\u30fc\u30eb\u306eamazee.io\u30d5\u30ec\u30fc\u30d0\u30fc\u30b7\u30b9\u30c6\u30e0\u3067\u3042\u308a\u3001Lagoon\u3068\u305d\u306e\u307e\u307e\u52d5\u4f5c\u3057\u307e\u3059\u3002\u3053\u308c\u306fhttps://github.com/pygmystack/pygmy\u306b\u3042\u308a\u307e\u3059\u3002
pygmy
\u306fGolang\u3067\u66f8\u304b\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u306b\u306f\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
HomeBrew\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebbrew tap pygmystack/pygmy && brew install pygmy\n
pygmy\u306e\u8a73\u7d30\u306a\u4f7f\u7528\u65b9\u6cd5\u3084\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u60c5\u5831\u306b\u3064\u3044\u3066\u306f\u3001\u305d\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/local-development-environments/#lando","title":"Lando","text":"Lagoon\u306fLando\u3068\u975e\u5e38\u306b\u3088\u304f\u7d44\u307f\u5408\u308f\u3055\u308c\u3066\u3044\u307e\u3059\uff01\u8a73\u7d30\u306a\u60c5\u5831\u306f\u3001https://docs.lando.dev/config/lagoon.html\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002
Lando\u306eLagoon\u5411\u3051\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306fLando\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u3068\u3063\u3066\u306f\u99b4\u67d3\u307f\u6df1\u3044\u3082\u306e\u3067\u3042\u308a\u3001\u307e\u305fLagoon\u306e\u521d\u5fc3\u8005\u304c\u59cb\u3081\u308b\u306e\u306b\u3082\u6700\u3082\u7c21\u5358\u306a\u65b9\u6cd5\u306b\u306a\u308a\u307e\u3059\u3002\u4e00\u65b9\u3001Pygmy\u306fDocker\u3068\u3088\u308a\u5bc6\u63a5\u306b\u7d71\u5408\u3055\u308c\u3066\u304a\u308a\u3001\u3088\u308a\u8907\u96d1\u306a\u30b7\u30ca\u30ea\u30aa\u3084\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u304c\u3088\u308a\u6df1\u3044\u7406\u89e3\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/local-development-environments/#ddev","title":"DDEV","text":"Lagoon\u306fDDEV\u3067\u3082\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\uff01\u59cb\u3081\u308b\u305f\u3081\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002https://ddev.readthedocs.io/en/stable/users/providers/lagoon/\u3002
\u4ee5\u524d\u306b\u306f\u3001Docksal\u3084Docker4Drupal\u306a\u3069\u306e\u4ed6\u306e\u30b7\u30b9\u30c6\u30e0\u3078\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3092\u8a55\u4fa1\u3057\u305f\u3053\u3068\u304c\u3042\u308a\u307e\u3057\u305f\u3002\u5c06\u6765\u7684\u306b\u3053\u308c\u3089\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u53ef\u80fd\u6027\u306f\u3042\u308a\u307e\u3059\u304c\u3001\u73fe\u5728\u306e\u3068\u3053\u308d\u306f\u65e2\u5b58\u306e\u30c4\u30fc\u30eb\u3078\u306e\u30b5\u30dd\u30fc\u30c8\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/setup-project/","title":"\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a","text":"\u6ce8\u610f:
\u6211\u3005\u306f\u5168\u3066\u306e\u4eba\u304cLagoon\u3092\u4f7f\u3063\u3066\u81ea\u5206\u81ea\u8eab\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3057\u3001\u69cb\u6210\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3059\u308b\u305f\u3081\u306eCLI\u3068GraphQL API\u306e\u8a2d\u5b9a\u306b\u71b1\u5fc3\u306b\u53d6\u308a\u7d44\u3093\u3067\u3044\u307e\u3059\u3002\u73fe\u5728\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u30ea\u30ea\u30fc\u30b9\u3067\u304d\u308b\u524d\u306b\u66f4\u306a\u308b\u30c6\u30b9\u30c8\u304c\u5fc5\u8981\u306a\u306e\u3067\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\uff01
\u305d\u308c\u307e\u3067\u306f\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a\u306fLagoon\u306e\u7ba1\u7406\u8005\u3068\u8a71\u3057\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u306b\u3064\u3044\u3066\u306f\u554f\u984c\u306a\u3044\u3067\u3059\u3001\u5f7c\u3089\u306fAPI\u3088\u308a\u3082\u305a\u3063\u3068\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u3067\u3059\u3002\ud83d\ude0a
\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306e\u305f\u3081\u306b\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u6e96\u5099\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044:
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d
- \u3053\u306e\u540d\u524d\u306f\u5c0f\u6587\u5b57\u3001\u6570\u5b57\u3001\u30c0\u30c3\u30b7\u30e5\u306e\u307f\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u5185\u306b\u30c0\u30d6\u30eb\u30c0\u30c3\u30b7\u30e5(
--
)\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093
- \u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u53d6\u308a\u7d44\u3080\u3059\u3079\u3066\u306e\u4eba\u306eSSH\u516c\u958b\u9375\u3001\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3001\u540d\u524d\u3002\u3053\u3053\u306b\u306f\u3001GitHub\u3001GitLab\u3001Bitbucket \u306eSSH\u30ad\u30fc\u306e\u751f\u6210\u3068\u30b3\u30d4\u30fc\u306b\u3064\u3044\u3066\u306e\u6307\u793a\u304c\u3042\u308a\u307e\u3059
- \u3042\u306a\u305f\u306e\u30b3\u30fc\u30c9\u304c\u30db\u30b9\u30c8\u3055\u308c\u3066\u3044\u308bGit\u30ea\u30dd\u30b8\u30c8\u30ea\u306eURL(
git@example.com:test/test.git
) - \u3042\u306a\u305f\u304c\u4f7f\u7528\u3059\u308bGit\u30d6\u30e9\u30f3\u30c1\u306e\u540d\u524d\u3042\u306a\u305f\u306e\u672c\u756a\u74b0\u5883\u3067\u4f7f\u7528\u3057\u305f\u3044\u74b0\u5883\u306b\u3064\u3044\u3066 (\u74b0\u5883\u306e\u7a2e\u985e \u3067\u74b0\u5883\u306e\u8a73\u7d30\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044)
- \u8ffd\u52a0\u306e\u74b0\u5883\u306b\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u30d6\u30e9\u30f3\u30c1\u3068\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3002Lagoon\u3067\u306f\u3001\u6b63\u898f\u8868\u73fe\u3067\u30d6\u30e9\u30f3\u30c1\u3068\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u540d\u524d\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3067\u304d\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u304c\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002
\u7279\u5b9a\u306e\u91cd\u8981\u306a\u30d6\u30e9\u30f3\u30c1(\u4f8b\u3048\u3070develop
\u3084main
)\u3084\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u6700\u7d42\u7684\u306a\u5224\u65ad\u306f\u3042\u306a\u305f\u6b21\u7b2c\u3067\u3059\uff01(\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3067\u8a73\u7d30\u60c5\u5831\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044)
"},{"location":"ja/using-lagoon-the-basics/setup-project/#1-lagoon","title":"1. \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304cLagoon\u5316\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b","text":"\u3053\u308c\u306f\u3001.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3068docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u306a\u305f\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u5b58\u5728\u3057\u3001\u9069\u5207\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
\u3082\u3057\u3053\u308c\u304c\u5b9f\u73fe\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u5148\u306b\u9032\u3080\u524d\u306b\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u30ac\u30a4\u30c9\u306e\u30ea\u30b9\u30c8\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/setup-project/#2","title":"2. \u3042\u306a\u305f\u306e\u30b3\u30fc\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u63d0\u4f9b\u3059\u308b","text":"\u3042\u306a\u305f\u306e\u30b3\u30fc\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306b\u3001Lagoon\u306f\u30b3\u30fc\u30c9\u3078\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u8a2d\u8a08\u4e0a\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u305f\u3081\u306bLagoon\u306f\u3042\u306a\u305f\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u3057\u304b\u5fc5\u8981\u3068\u3057\u307e\u305b\u3093
Lagoon\u306e\u7ba1\u7406\u8005\u304b\u3089\u3001\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u3092\u4e0e\u3048\u308b\u3079\u304dSSH\u516c\u958b\u9375\u3084Git\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6559\u3048\u3066\u3082\u3089\u3046\u5fc5\u7528\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-the-basics/setup-project/#3-webhooks","title":"3. Webhooks\u306e\u8a2d\u5b9a","text":"Lagoon\u306f\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u8d77\u3053\u3063\u3066\u3044\u308b\u3044\u304f\u3064\u304b\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u77e5\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u73fe\u5728\u306f\u30d7\u30c3\u30b7\u30e5\u3068\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u3059\u304c\u3001\u5c06\u6765\u7684\u306b\u306f\u3082\u3063\u3068\u8ffd\u52a0\u3055\u308c\u308b\u4e88\u5b9a\u3067\u3059\u3002
Lagoon\u306f\u591a\u304f\u306e\u7570\u306a\u308bGit\u30db\u30b9\u30c8\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u308c\u3089\u306e\u6307\u793a\u3092\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u5206\u5272\u3057\u307e\u3057\u305f:Webhooks\u306e\u8a2d\u5b9a\u3002
"},{"location":"ja/using-lagoon-the-basics/setup-project/#4","title":"4. \u6b21\u306b:\u6700\u521d\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8","text":"\u304a\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3001\u3042\u306a\u305f\u306f\u4eca\u6700\u521d\u306e\u30c7\u30d7\u30ed\u30a4\u3092\u5b9f\u884c\u3059\u308b\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002
"}]}
\ No newline at end of file
+{"config":{"lang":["en","ja"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Lagoon","text":""},{"location":"#lagoon-the-open-source-application-delivery-platform-for-kubernetes","title":"Lagoon - the Open Source Application Delivery Platform for Kubernetes","text":"Lagoon gives developers what they dream about. It's a system that allows developers to run the exact same code in their local and production environment. The same Docker images, the same service configurations, and the same code.
"},{"location":"#where-do-i-start","title":"Where do I start?","text":"If you want to use Lagoon to host your website or application, visit Using Lagoon - The Basics
To get more in depth with Lagoon functionality, visit Using Lagoon - Advanced
To understand how Lagoon works, check out Lagoon Concepts - The Basics
and for a deeper understanding, Lagoon Concepts - Advanced
If you want to develop Lagoon (add features, fix bugs), Developing Lagoon
"},{"location":"#tldr-how-lagoon-works","title":"TL;DR: How Lagoon Works","text":" - Developers define and configure needed services within YAML files.
- When they are happy, they push the code to Git.
- Lagoon parses the YAML files and adds in any additional needed configuration.
- Lagoon builds the needed Docker images.
- Lagoon pushes them to a Docker registry.
- Lagoon creates the needed resources in Kubernetes.
- Lagoon monitors the deployment of the containers.
- When all is done, Lagoon informs the developers in different ways (Slack, email, website, etc).
"},{"location":"#help","title":"Help?","text":"Questions? Ideas? Meet the maintainers and contributors.
Chat with us on the Lagoon Discord: https://discord.gg/te5hHe95JE
"},{"location":"#a-couple-of-things-about-lagoon","title":"A couple of things about Lagoon","text":" - Lagoon is based on microservices. The deployment and build workflow is very complex. We have multiple version control sources, multiple clusters, and multiple notification systems. Each deployment is unique and can take from seconds to hours. It's built with flexibility and robustness in mind. Microservices communicate through a messaging system, which allows us to scale individual services up and down. It allows us to survive down times of individual services. It also allows us to try out new parts of Lagoon in production without affecting others.
- Lagoon uses many programming languages. Each programming language has specific strengths. We try to decide which language makes the most sense for each service. Currently, a lot of Lagoon is built in Node.js. This is partly because we started with Node.js, but also because Node.js allows asynchronous processing of webhooks, tasks and more. We are likely going to change the programming language of some services. This is what is great about microservices! We can replace a single service with another language without worrying about other parts of the platform.
- Lagoon is not Drupal-specific. Everything has been built so that it can run any Docker image. There are existing Docker images for Drupal, and support for Drupal-specific tools like Drush. But that's it!
- Lagoon is DevOps. It allows developers to define the services they need and customize them as they need. You might think this is not the right way to do it, and gives too much power to developers. We believe that as system engineers, we need to empower developers. If we allow developers to define services locally, and test them locally, they will find bugs and mistakes themselves.
- Lagoon runs on Docker and Kubernetes. (That one should be obvious, right?)
- Lagoon can be completely locally developed and tested.
- Lagoon is completely integration tested. This means we can test the whole process. From receiving Git webhooks to deploying into a Docker container, the same Git hash is deployed in the cluster.
- Most important: It's a work in progress. It's not done yet. At amazee.io, we believe that as a hosting community, we need to work together and share code where we can.
We want you to understand the Lagoon infrastructure and how the services work together. Here is a schema (it's a little out of date - it doesn't include some of the more recent services we've added, or cover Kubernetes, so we're working on an update!): Lucid Chart \u200c
"},{"location":"#history-of-lagoon","title":"History of Lagoon","text":"As described, Lagoon is a dream come true. At amazee.io, we've been hosting Drupal for more than 8 years. This is the fourth major iteration of our hosting platform. The third iteration was built around Puppet and Ansible. Every single piece of the platform was done with configuration management. This allowed very fast setup of new servers, but at the same time was also lacking customizability for developers. We implemented some customizability, with some already with Docker in production. However, we were never completely happy with it. We realized that our existing platform wasn't enough. With the rise of decoupled Drupal, the need to run Node.js on the server side, the requests for Elasticsearch, and different Solr versions, we had to do more. \u200c
At the same time, we've been using Docker for many years for local development. It was always an idea to use Docker for everything in production. The only problem was the connection between local development and production environments. There are other systems that allow you to run Drupal in Docker in production. But, nothing allowed you to test the exact same images and services locally and in production.
Lagoon was born in 2017. It has since been developed into a system that runs Docker in production. Lagoon has replaced our third generation hosting platform with a cutting edge all Docker-based system.
"},{"location":"#open-source","title":"Open Source","text":"At amazee.io, we believe in open source. It was always troubling for us that open source code like Drupal was hosted on proprietary hosting platforms. The strength and success of a hosting company is not just their deployment systems or service configurations. It's the the people and knowledge that run the platform. The processes, skills, ability to react to unforeseen situations, and last but not least, the support they provide their clients.
"},{"location":"#license","title":"License","text":"Lagoon is available under an Apache 2.0 License
.
"},{"location":"code-of-conduct/","title":"Code of Conduct","text":""},{"location":"code-of-conduct/#our-pledge","title":"Our Pledge","text":"In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
"},{"location":"code-of-conduct/#our-standards","title":"Our Standards","text":"Examples of behavior that contributes to creating a positive environment include:
- Using welcoming and inclusive language.
- Being respectful of differing viewpoints and experiences.
- Gracefully accepting constructive criticism.
- Focusing on what is best for the community.
- Showing empathy towards other community members.
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or advances.
- Trolling, insulting/derogatory comments, and personal or political attacks.
- Public or private harassment.
- Publishing others' private information, such as a physical or electronic address, without explicit permission.
- Other conduct which could reasonably be considered inappropriate in a professional setting.
"},{"location":"code-of-conduct/#our-responsibilities","title":"Our Responsibilities","text":"Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
"},{"location":"code-of-conduct/#scope","title":"Scope","text":"This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project email address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
"},{"location":"code-of-conduct/#enforcement","title":"Enforcement","text":"Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at uselagoon@amazee.io. You may also reach out directly to Brandon, a Lagoon team member who has completed CoC training. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
"},{"location":"code-of-conduct/#attribution","title":"Attribution","text":"This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at http://contributor-covenant.org/version/1/4.
"},{"location":"contributing/","title":"Contributing","text":"We gladly welcome any and all contributions to Lagoon!
"},{"location":"contributing/#what-kind-of-contributions-do-we-need","title":"What kind of contributions do we need?","text":"Lagoon benefits from any kind of contribution - whether it's a bugfix, new feature, documentation update, or simply some queue maintenance - we're happy that you want to help
"},{"location":"contributing/#developing-for-lagoon","title":"Developing for Lagoon","text":"There's a whole section on how to get Lagoon running on your local machine using KinD over at Developing Lagoon. This documentation is still very WIP - but there are a lot of Makefile routines to help you out.
"},{"location":"contributing/#installing-lagoon","title":"Installing Lagoon","text":"We've got another section that outlines how to install Lagoon from Helm charts at Installing Lagoon Into Existing Kubernetes Cluster - we'd love to get this process as slick as possible!
"},{"location":"contributing/#help-us-with-our-examples","title":"Help us with our examples","text":"Right now one of our biggest needs is putting together examples of Lagoon working with various content management systems, etc, other than Drupal.
If you can spin up an open source CMS or framework that we don\u2019t currently have as a Docker Compose stack, send us a PR. Look at the existing examples at https://github.com/uselagoon/lagoon-examples for tips, pointers and starter issues.
One small catch \u2013 wherever possible, we\u2019d like them to be built using our base Docker Hub images https://hub.docker.com/u/uselagoon \u2013 if we don\u2019t have a suitable image, or our images need modifying \u2013 throw us a PR (if you can) or create an issue (so someone else can) at https://github.com/uselagoon/lagoon-images.
Help us improve our existing examples, if you can - are we following best practices, is there something we\u2019re doing that doesn\u2019t make sense?
Bonus points for anyone that helps contribute to tests for any of these examples \u2013 we\u2019ve got some example tests in a couple of the projects you can use for guidance \u2013 https://github.com/amazeeio/drupal-example-simple/blob/8.x/TESTING_dockercompose.md. The testing framework we\u2019re using is Leia, from the excellent team behind Lando.
Help us to document our other examples better \u2013 we\u2019re not expecting a full manuscript, but tidy-ups, links to helpful resources and clarifying statements are all super-awesome.
If you have any questions, reach out to us on Discord!
"},{"location":"contributing/#i-found-a-security-issue","title":"I found a security issue \ud83d\udd13","text":"We take security very seriously. If you discover a security issue or think you found one, please bring it to the maintainers' attention.
Danger
Please send your findings to security@amazee.io. Please DO NOT file a GitHub issue for them.
Security reports are greatly appreciated and will receive public karma and swag! We're also working on a Bug Bounty system.
"},{"location":"contributing/#i-found-an-issue","title":"I found an issue","text":"We're always interested in fixing issues, therefore issue reports are very welcome. Please make sure to check that your issue does not already exist in the issue queue.
"},{"location":"contributing/#i-have-a-feature-request-or-idea","title":"I have a feature request or idea","text":"Cool! Create an issue and we're happy to look over it. We can't guarantee that it will be implemented. But we are always interested in hearing ideas of what we could bring to Lagoon.
Another good way is also to talk to us via Discord about your idea. Join today!
"},{"location":"contributing/#i-wrote-some-code","title":"I wrote some code","text":"Epic! Please send us a pull request for it, we will do our best to review it and merge it if possible.
"},{"location":"applications/","title":"A wide range of Applications, Frameworks and Languages are supported by Lagoon","text":"Lagoon broadly classifies three levels in the application stack:
"},{"location":"applications/#languages","title":"Languages","text":"The core building blocks of any Lagoon project, these are usually provided by Lagoon-specific images.
"},{"location":"applications/#frameworks","title":"Frameworks","text":"These take those base images, and add in the necessary logic, tools and packages needed to serve a website, or drive an application.
"},{"location":"applications/#applications","title":"Applications","text":"Usually built on top of Frameworks, this is the layer that content editors or developers will interact with to shape the finished product.
When we reference any repositories for use on Lagoon, we usually refer to them in three ways:
"},{"location":"applications/#templates","title":"Templates","text":"These are fully-functional, cloneable starter repositories, maintained and updated regularly, ready to be extended and used with little customization.
"},{"location":"applications/#examples","title":"Examples","text":"These are fully functional repositories, maintained and updated regularly, but may require some effort to make work for your individual project.
"},{"location":"applications/#demos","title":"Demos","text":"These are repositories that have been built as a demonstration, and are usable for some of the concepts within, but aren't routinely maintained or updated.
For a more complete list, check out out our GitHub repository: https://www.github.com/lagoon-examples and our website https://lagoon.sh/application/
"},{"location":"applications/laravel/","title":"Laravel on Lagoon","text":"There are multiple ways of running Laravel on Lagoon.
- You may choose to \"lagoonize\" your existing application yourself (see the Lagoonizing documentation).
- We have a Laravel example repo of a simple Lagoonized Laravel installation for you to have a look at.
- (Recommended) We provide a tool called \"Sail:onLagoon\" that will take a standard Laravel Sail application and generate the appropriate Lagoon configuration files for you.
"},{"location":"applications/laravel/#app-environment-key","title":"App environment key","text":"In order to set your app key, set the APP_KEY
environment variable, either via the cli or the UI.
This eliminates the need to store the key in code (in, for instance, a .env
file).
You can generate an app key by running the php artisan key:generate --show
, which will output a valid key, rather than adjusting the project files.
"},{"location":"applications/node/","title":"Node.js","text":""},{"location":"applications/node/#introduction","title":"Introduction","text":"Lagoon provides Node.js images that are based on the official Node Alpine images.
More information on how to adapt your project to run on Lagoon can be found in our Node.js Docker Images section.
"},{"location":"applications/options/","title":"Configuring Applications for use on Lagoon","text":""},{"location":"applications/options/#lagoonyml","title":"lagoon.yml
","text":"Project- and environment-level configuration for Lagoon is provided in the .lagoon.yml
file in your repository.
See lagoon-yml.md
.
"},{"location":"applications/options/#docker-composeyml","title":"docker-compose.yml
","text":"Service-level configuration for Lagoon in provided in the docker-compose.yml
file in your repository. In particular, the lagoon.type
and associated service labels are documented in the individual services.
See docker-compose-yml.md
"},{"location":"applications/options/#storage","title":"Storage","text":"Lagoon has the ability to provision storage for most services - the built-in Lagoon service types have a -persistent
variant that can add in the necessary PVCs, volumes, etc. We have updated our examples to reflect this configuration locally.
"},{"location":"applications/options/#databases","title":"Databases","text":"Lagoon has configurations available for:
- Mariadb - all supported versions
- PostgreSQL - all supported versions
"},{"location":"applications/options/#database-as-a-service","title":"Database-as-a-service","text":"Lagoon also has the capability to utilize the dbaas-operator to automatically provision these databases using an underlying managed database service (i.e. RDS, Google Cloud Databases, Azure Database). This will happen automatically when these services are provisioned and configured for your cluster. If these are not available, a pod will be provisioned as a fallback.
"},{"location":"applications/options/#cache","title":"Cache","text":"Lagoon supports Redis as a cache backend. In production, some users provision a managed Redis service for their production environments to help them scale.
"},{"location":"applications/options/#search","title":"Search","text":"Lagoon supports Elasticsearch, Solr and OpenSearch as search providers. External search providers can also be configured if required.
"},{"location":"applications/options/#ingressroutes","title":"Ingress/Routes","text":"Lagoon auto-generates routes for services that have ingress requirements. Custom routes can be provided in the .lagoon.yml
on a per-service basis.
"},{"location":"applications/options/#environment-variables","title":"Environment Variables","text":"Lagoon makes heavy use of environment variables, at build and runtime. Where these are used to provide critical configuration for your application (e.g. database config/credentials) - it is important that the local and Lagoon versions are named similarly.
See environment-variables.md.
"},{"location":"applications/other/","title":"Running other applications on Lagoon","text":"Even if Lagoon doesn't have a base image for your particular application, framework or language, Lagoon can still build it!
Extending on, or inheriting from the commons image, Lagoon can run almost any workload.
"},{"location":"applications/other/#hugo","title":"Hugo","text":"This brief example shows how to build a Hugo website and serve it as static files in an NGINX image. The commons image is used to add Hugo, copy the site in, and build it. The NGINX image is then used to serve the site, with the addition of a customized NGINX config.
nginx.dockerfileFROM uselagoon/commons AS builder\n\nRUN apk add hugo git\nWORKDIR /app\nCOPY . /app\nRUN hugo\n\nFROM uselagoon/nginx\n\nCOPY --from=builder /app/public/ /app\nCOPY lagoon/static-files.conf /etc/nginx/conf.d/app.conf\n\nRUN fix-permissions /usr/local/openresty/nginx\n
docker-compose.ymlservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: lagoon/nginx.Dockerfile\nlabels:\nlagoon.type: nginx\n
"},{"location":"applications/php/","title":"PHP","text":""},{"location":"applications/php/#introduction","title":"Introduction","text":"Lagoon supports a wide range of PHP-based applications, such as Drupal, Laravel, Wordpress, Magento and Symfony.
More information on how to adapt your PHP project to run on Lagoon can be found in our PHP-cli Docker Images and PHP-FPM Docker Images sections.
"},{"location":"applications/python/","title":"Python","text":""},{"location":"applications/python/#introduction","title":"Introduction","text":"Lagoon provides images for Python 3.7 and above that can be used to build web apps in a wide range of Python-based frameworks and applications.
More information on how to adapt your Python project to run on Lagoon can be found in our Python Docker Images section.
"},{"location":"applications/ruby/","title":"Ruby and Ruby on Rails","text":""},{"location":"applications/ruby/#introduction","title":"Introduction","text":"We provide images for Ruby 3.0 and above, built on the official Ruby alpine Docker images.
Below we assume that you're attempting to get a Rails app deployed on Lagoon, although most of the details described are really framework-neutral.
"},{"location":"applications/ruby/#getting-rails-running-on-lagoon","title":"Getting Rails running on Lagoon","text":""},{"location":"applications/ruby/#responding-to-requests","title":"Responding to requests","text":"The Ruby on Rails example in the Lagoon examples repository is instructive here.
In the docker-compose.yml
we set up a service named ruby
, which is the primary service that will be processing any dynamic requests.
If you look at the dockerfile specified for the ruby
service, you'll see that we're exposing port 3000. The nginx
service will direct any requests for non-static assets to the ruby
service on this port (see the nginx configuration file for more details).
"},{"location":"applications/ruby/#logging","title":"Logging","text":"The Lagoon logging infrastructure is described in the docs here. Essentially, in order to make use of the infrastructure, logs need to be sent via a UDP message to udp://application-logs.lagoon.svc:5140
.
In our Rails example, we're importing the logstash-logger
gem, and then in our config/application.rb
we're initializing it with the following:
config/application.rb if ENV.has_key?('LAGOON_PROJECT') && ENV.has_key?('LAGOON_ENVIRONMENT') then\nlagoon_namespace = ENV['LAGOON_PROJECT'] + \"-\" + ENV['LAGOON_ENVIRONMENT']\nLogStashLogger.configure do |config|\nconfig.customize_event do |event|\nevent[\"type\"] = lagoon_namespace\nend\nend\nconfig.logstash.host = 'application-logs.lagoon.svc'\nconfig.logstash.type = :udp\nconfig.logstash.port = 5140\nend\n
"},{"location":"applications/ruby/#database-configuration","title":"Database configuration","text":"The example uses our PostgreSQL image (see the docker-compose.yml
file). Configuring database access in Rails for Lagoon is very straightforward. Since Lagoon injects the database host, name, and credentials as environment variables, we can change our config/database.yml
to be aware of these env vars, and consume them if they exist.
config/database.ymldefault: &default\nadapter: postgresql\nencoding: unicode\npool: <%= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } %>\nusername: <%= ENV.fetch(\"POSTGRES_USERNAME\") { \"drupal\" } %>\npassword: <%= ENV.fetch(\"POSTGRES_PASSWORD\") { \"drupal\" } %>\nhost: <%= ENV.fetch(\"POSTGRES_HOST\") { \"postgres\" } %>\ndatabase: <%= ENV.fetch(\"('POSTGRES_DATABASE'\") { \"drupal\" } %>\n
"},{"location":"applications/wordpress/","title":"WordPress on Lagoon","text":"The WordPress template is configured to use Composer to install WordPress, its dependencies, and themes.
The WordPress template is based on the https://github.com/roots/bedrock boilerplate, but extended to match a standardized Lagoon deployment pattern.
"},{"location":"applications/wordpress/#composer-install","title":"Composer Install","text":"The template uses Composer to install WordPress and its themes.
"},{"location":"applications/wordpress/#database","title":"Database","text":"Lagoon can support MariaDB and PostgreSQL databases, but as support for PostgreSQL is limited in WordPress, it isn't recommended for use.
"},{"location":"applications/wordpress/#nginx-configuration","title":"NGINX configuration","text":"Lagoon doesn't have a built-in configuration for WordPress - instead, the template comes with a starting nginx.conf - please contribute any improvements you may find!
"},{"location":"applications/wordpress/#wp-cli","title":"WP-CLI","text":"The Lagoon template installs wp-cli
into the cli image to manage your WordPress install.
"},{"location":"applications/drupal/","title":"Drupal on Lagoon","text":"Lagoon was built to host Drupal sites (no, seriously, it was - at least initially!)
In this section you'll find more information on the various services that have been customised for use with Drupal.
"},{"location":"applications/drupal/#drupal_integrations-drupal-scaffolding-package","title":"drupal_integrations
Drupal scaffolding package","text":"The drupal_integrations
package, available on packagist extends Drupal's core-composer-scaffold for use on Lagoon. It also provides additional Drush command drush la
to retreive the Drush aliases for your Lagoon project.
"},{"location":"applications/drupal/#lagoon-logs-drupal-module","title":"lagoon-logs
Drupal module","text":"The lagoon_logs
module, availalble on drupal.org provides zero-configuration logging for Drupal on Lagoon.
"},{"location":"applications/drupal/automatic-updates/","title":"Automatic Updates","text":"Lagoon deploys applications in a way that is not compatible with some methods of updating Drupal core and contrib. Lagoon expects to build immutable images and run immutable containers. When the code of the application is changed at runtime, it can cause any of the following problems:
- Containers are managed automatically by Kubernetes and may be moved, restarted, or scaled at any time. When this happens, the original built container image will be ran and any changes that happened at runtime are lost.
- Tasks and cronjobs may run with the orignal built container image and won't have access to any updated code.
- Updating requires write permissions to the filesystem, but it is possible to configure an environment that forces a read-only filesystem.
- Best practices is to deploy small containers that each do one thing. For a typical Drupal project this means there is a
cli
, php
, and nginx
container which each contain a copy of the code. Updating only one of these containers will cause issues with code mismatches.
The following update methods been disabled by Lagoon.
"},{"location":"applications/drupal/automatic-updates/#drupal-automatic-updates","title":"Drupal Automatic Updates","text":"The Automatic Updates contrib module is disabled by and it will also be disabled when it moves into Drupal core.
"},{"location":"applications/drupal/automatic-updates/#drush","title":"Drush","text":"Using drush pm-install
or drush pm-update
is disabled by default as part of the amazeeio/drupal-integrations package.
"},{"location":"applications/drupal/drush-9/","title":"Drush 9","text":""},{"location":"applications/drupal/drush-9/#aliases","title":"Aliases","text":"Unfortunately, Drush 9 does not provide the ability to inject dynamic site aliases like Drush 8 did. We are working with the Drush team to implement this again. In the meantime, we have a workaround that allows you to use Drush 9 with Lagoon.
"},{"location":"applications/drupal/drush-9/#basic-idea","title":"Basic Idea","text":"Drush 9 provides a new command, drush site:alias-convert
, which can convert Drush 8-style site aliases over to the Drush 9 YAML site alias style. This will create a on- time export of the site aliases currently existing in Lagoon, and save them in /app/drush/sites
. These are then used when running a command like drush sa
.
"},{"location":"applications/drupal/drush-9/#preparation","title":"Preparation","text":"In order to be able to use drush site:alias-convert
, you need to do the following:
- Rename the
aliases.drushrc.php
inside the drush
folder to lagoon.aliases.drushrc.php
.
"},{"location":"applications/drupal/drush-9/#generate-site-aliases","title":"Generate Site Aliases","text":"You can now convert your Drush aliases by running the following command in your project using the cli
container:
Generate Site Aliasesdocker compose exec cli drush site:alias-convert /app/drush/sites --yes\n
It's good practice to commit the resulting YAML files into your Git repository, so that they are in place for your fellow developers.
"},{"location":"applications/drupal/drush-9/#use-site-aliases","title":"Use Site Aliases","text":"In Drush 9, all site aliases are prefixed with a group. In our case, this is lagoon
. You can show all site aliases with their prefix via:
Show all site aliasesdrush sa --format=list\n
and to use them:
Using Drush site aliasdrush @lagoon.main ssh\n
"},{"location":"applications/drupal/drush-9/#update-site-aliases","title":"Update Site Aliases","text":"If a new environment in Lagoon has been created, you can run drush site:alias-convert
to update the site aliases file. If running this command does not update lagoon.site.yml
, try deleting lagoon.site.yml
first, and then re-run drush site:alias-convert
.
"},{"location":"applications/drupal/drush-9/#drush-rsync-from-local-to-remote-environments","title":"Drush rsync
from local to remote environments","text":"If you would like to sync files from a local environment to a remote environment, you need to pass additional parameters:
Drush rsyncdrush rsync @self:%files @lagoon.main:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n
This also applies to syncing one remote environment to another, if you're not using the Lagoon tasks UI to copy files between environments.
For example, if you wanted to sync the files from @lagoon.main
to @lagoon.dev
, and ran drush rsync @lagoon.main @lagoon.dev
locally, without the extra parameters, you would probably run into a \"Cannot specify two remote aliases\" error.
To resolve this, you would first need to SSH into your destination environment drush @lagoon.dev ssh
, and then execute the rsync
command with parameters similar to the above:
Drush rsyncdrush rsync @lagoon.main:%files @self:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n
This is not necessary if you rsync
from a remote to a local environment.
Also, we're working with the Drush maintainers to find a way to inject this automatically.
"},{"location":"applications/drupal/first-deployment-of-drupal/","title":"First Deployment of Drupal","text":""},{"location":"applications/drupal/first-deployment-of-drupal/#1-make-sure-you-are-all-set","title":"1. Make sure you are all set","text":"In order to make your first deployment a successful one, please make sure that your Drupal Project is Lagoonized and you have set up the project in Lagoon. If not, don't worry! Follow the Step-by-Step Guide which show you how this works.
"},{"location":"applications/drupal/first-deployment-of-drupal/#2-push","title":"2. Push","text":"With Lagoon, you create a new deployment by pushing into a branch that is configured to be deployed.
If you don't have any new code to push, don't worry, you can run
Git pushgit commit --allow-empty -m \"go, go! Power Rangers!\"\ngit push\n
This will trigger a push, and the Git hosting will inform Lagoon about this push via the configured webhook.
If all is correct, you will see a notification in your configured chat system. (Contact your Lagoon administrator to configure this):
This tells you that Lagoon has just started to deploy your code. Depending on the size of the codebase and amount of containers, this will take a couple of seconds. Just relax. If you'd like to know what's happening now, check out the Build and Deploy Process of Lagoon.
You can also check your Lagoon UI to see the progress of any deployment. (Contact your Lagoon administrator for the URL if you don't have it).
"},{"location":"applications/drupal/first-deployment-of-drupal/#3-a-fail","title":"3. A fail","text":"Depending on the post-rollout tasks defined in .lagoon.yml
, you might have run some tasks like drush updb
or drush cr
. These Drush tasks depend on a database existing within the environment, which obviously does not exist yet. Let's fix that! Keep reading.
"},{"location":"applications/drupal/first-deployment-of-drupal/#4-synchronize-local-database-to-the-remote-lagoon-environment","title":"4. Synchronize local database to the remote Lagoon environment","text":"With full Drush site alias support in Lagoon, you can synchronize a local database with the remote Lagoon environment.
Warning
You may have to tell pygmy about your public keys before the next step.
If you get an error like Permission denied (publickey)
, check out the documentation here: pygmy - adding ssh keys.
First let's make sure that you can see the Drush site aliases:
Get site aliasesdrush sa\n
This should return your just deployed environment (let's assume you just pushed into develop
):
Returned site aliases[drupal-example]cli-drupal:/app$ drush sa\n@develop\n@self\ndefault\n
With this we can now synchronize the local database (which is represented in Drush via the site alias @self
) with the remote one (@develop
):
Drush sql-syncdrush sql-sync @self @develop\n
You should see something like:
Drush sql-sync results[drupal-example]cli-drupal:/app$ drush sql-sync @self @develop\nYou will destroy data in ssh.example.com/drupal and replace with data from drupal.\nDo you really want to continue? (y/n): y\nStarting to dump database on Source. [ok]\nDatabase dump saved to /home/drush-backups/drupal/20180227075813/drupal_20180227_075815.sql.gz [success]\nStarting to discover temporary files directory on Destination. [ok]\nYou will delete files in drupal-example-develop@ssh.example.com:/tmp/drupal_20180227_075815.sql.gz and replace with data from /home/drush-backups/drupal/20180227075813/drupal_20180227_075815.sql.gz\nDo you really want to continue? (y/n): y\nCopying dump file from Source to Destination. [ok]\nStarting to import dump file onto Destination database.\n
Now let's try another deployment, again an empty push:
Git pushgit commit --allow-empty -m \"go, go! Power Rangers!\"\ngit push\n
This time all should be green:
Click on the links in the notification, and you should see your Drupal site loaded in all its beauty! It will probably not have images yet, which we will handle in Step 6.
If it is still failing, check the logs link for more information.
"},{"location":"applications/drupal/first-deployment-of-drupal/#5-synchronize-local-files-to-the-remote-lagoon-environment","title":"5. Synchronize local files to the remote Lagoon environment","text":"You probably guessed it: we can do it with Drush:
Drush rsyncdrush rsync @self:%files @develop:%files\n
It should show you something like:
Drush rsync results[drupal-example]cli-drupal:/app$ drush rsync @self:%files @develop:%files\nYou will delete files in drupal-example-develop@ssh.example.com:/app/web/sites/default/files and replace with data from /app/web/sites/default/files/\nDo you really want to continue? (y/n): y\n
In some cases, though, it might not look correct, like here:
Drush rsync results[drupal-example]cli-drupal:/app$ drush rsync @self:%files @develop:%files\nYou will delete files in drupal-example-develop@ssh.example.com:'/app/web/%files' and replace with data from '/app/web/%files'/\nDo you really want to continue? (y/n):\n
The reason for that is that the Drupal cannot resolve the path of the files directory. This most probably has to do with Drupal not being fully configured or having a missing database. For a workaround you can use drush rsync @self:sites/default/files @develop:sites/default/files
, but we suggest that you actually check your local and remote Drupal (you can test with drush status
to see if the files directory is correctly configured).
"},{"location":"applications/drupal/first-deployment-of-drupal/#6-its-done","title":"6. It's done","text":"As soon as Lagoon is done building and deploying it will send a second notification to the chat system, like so:
This tells you:
- Which project has been deployed.
- Which branch and Git SHA has been deployed.
- A link to the full logs of the build and deployment.
- Links to all routes (URLs) where the environment can be reached.
That's it! We hope that wasn't too hard - making devOps accessible is what we are striving for.
"},{"location":"applications/drupal/first-deployment-of-drupal/#but-wait-how-about-other-branches-or-the-production-environment","title":"But wait, how about other branches or the production environment?","text":"That's the beauty of Lagoon: it's exactly the same: Push the branch name you defined to be your production branch and that one will be deployed.
"},{"location":"applications/drupal/first-deployment-of-drupal/#failure-dont-worry","title":"Failure? Don't worry","text":"Did the deployment fail? Oh no! But we're here to help:
- Click on the
logs
link in the error notification. It will tell you where in the deployment process the failure happened. - If you can't figure it out, contact your Lagoon administrator, they are here to help!
"},{"location":"applications/drupal/integrate-drupal-and-fastly/","title":"Integrate Drupal & Fastly","text":""},{"location":"applications/drupal/integrate-drupal-and-fastly/#prerequisites","title":"Prerequisites","text":" - Drupal 7+
- A Fastly service ID
- A Fastly API token with the permission to purge
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#drupal-7-with-url-based-purging","title":"Drupal 7 with URL based purging","text":" - Download and install the Fastly Drupal module.
- Configure the Fastly service ID and API token.
- Optionally configure the webhooks (so you can ping Slack for instance when a cache purge is sent)
- Only URL based purging can be done in Drupal 7 (simple purging).
- Alter Drupal's client IP in
settings.php
:
settings.php changes for Drupal 7$conf['reverse_proxy_header'] = 'HTTP_TRUE_CLIENT_IP';\n
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#drupal-10-with-cache-tag-purging","title":"Drupal 10+ with cache tag purging","text":"Use Composer to get the latest version of the module:
Download the Fastly Drupal module and dependenciescomposer require drupal/fastly drupal/http_cache_control drupal/purge\n
You will need to enable the following modules:
fastly
fastlypurger
http_cache_control
(2.x) purge
purge_ui
(technically optional, but this is really handy to have enabled on production) purge_processor_lateruntime
purge_processor_cron
purge_queuer_coretags
purge_drush
(useful for purge via Drush, here is a list of commands)
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#configure-the-fastly-module-in-drupal","title":"Configure the Fastly module in Drupal","text":"Configure the Fastly service ID and API token. A Site ID is generated for you automatically. You can use runtime environment variables, or you can edit the settings form found at /admin/config/services/fastly
:
FASTLY_API_TOKEN
FASTLY_API_SERVICE
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#set-the-purge-options","title":"Set the purge options","text":" - Cache tag hash length: 4
- Purge method: Use soft purge
A 4
character cache tag is plenty for most sites, a 5
character cache tag is likely better for sites with millions of entities (to reduce cache tag collisions).
Note
Soft purging should be used, this means the object in Fastly is marked as stale, rather than being evicted entirely so that it can be used in the event the origin is down (with the feature serve while stale).
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#set-the-stale-content-options","title":"Set the Stale Content Options","text":"Set the options to what makes sense for your site. Minimum 1 hour (3600
), maximum 1 week (604800
). Generally something like the following will be fine:
- Stale while revalidate - on,
14440
seconds - Stale if error - on,
604800
seconds
Optionally configure the webhooks (so you can ping Slack for instance when a cache purge is sent).
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#configure-the-purge-module","title":"Configure the Purge module","text":"Visit the purge page /admin/config/development/performance/purge
Set up the following options:
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#cache-invalidation","title":"Cache Invalidation","text":" - Drupal Origin: Tag
- Fastly: E, Tag, URL
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#queue","title":"Queue","text":" - Queuers: Core tags queuer, Purge block(s)
- Queue: Database
- Processors: Core processor, Late runtime processor, Purge block(s)
What this means is that we will be using Drupal's built-in core tag queuer (add tags to the queue), the queue will be stored in the database (default), and the queue will be processed by
- Cron processor
- Late runtime processor
In order for the cron processor to run, you need to ensure that cron is running on your site. Ideally every minute. You can manually run it in your cli
pod, to ensure that purge_processor_cron_cron()
is being executed without errors.
start cron[drupal8]production@cli-drupal:/app$ drush cron -v\n...\n[notice] Starting execution of purge_processor_cron_cron(), execution of node_cron() took 21.16ms.\n
The Late runtime processor
will run in hook_exit()
for every page load, this can be useful to process the purges nearly as quickly as they come into the queue.
By having both, you guarantee that purges happen as soon as possible.
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#optimal-cache-header-setup","title":"Optimal Cache Header Setup","text":"Out of the box, Drupal does not have the power to set different cache lifetimes in the browser vs in Fastly. So if you do set long cache lifetimes in Drupal, often end users will not see them if their browser has cached the page. If you install the 2.x
version of the HTTP Cache Control module, this will give you a lot more flexibility on what caches and for how long.
For most sites, a sensible default could be
- Shared cache maximum age : 1 month
- Browser cache maximum age : 10 minutes
- 404 cache maximum age: 15 minutes
- 302 cache maximum age: 1 hour
- 301 cache maximum age: 1 hour
- 5xx cache maximum age: no cache
Note
This relies on your site having accurate cache tags represented for all the content that exists on the page.
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#true-client-ips","title":"True client IPs","text":"We configure Fastly to send the actual client IP back on the HTTP header True-Client-IP
, you can make Drupal respect this header with the following changes in settings.php
:
settings.php changes for Drupal < 8.7.0$settings['reverse_proxy'] = TRUE;\n$settings['reverse_proxy_header'] = 'HTTP_TRUE_CLIENT_IP';\n
However, with Drupal 8.7.0, there was a change to remove this functionality. You can achieve the same goal with the following snippet
settings.php changes for Drupal >= 8.7.0/**\n * Tell Drupal to use the True-Client-IP HTTP header.\n */\nif (isset($_SERVER['HTTP_TRUE_CLIENT_IP'])) {\n $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_TRUE_CLIENT_IP'];\n}\n
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#drush-integration","title":"Drush integration","text":"settings.php fastly:\n fastly:purge:all (fpall) Purge whole service.\n fastly:purge:key (fpkey) Purge cache by key.\n fastly:purge:url (fpurl) Purge cache by Url.\n
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#viewing-fastly-caching-headers-using-curl","title":"Viewing Fastly caching headers using cURL","text":"Use this function: (works in Linux and Mac OSX)
cURL functionfunction curlf() { curl -sLIXGET -H 'Fastly-Debug:1' \"$@\" | grep -iE 'X-Cache|Cache-Control|Set-Cookie|X-Varnish|X-Hits|Vary|Fastly-Debug|X-Served|surrogate-control|surrogate-key' }\n
Using cURL$ curlf https://www.example-site-fastly.com\ncache-control: max-age=601, public, s-maxage=2764800\nsurrogate-control: max-age=2764800, public, stale-while-revalidate=3600, stale-if-error=3600\nfastly-debug-path: (D cache-wlg10427-WLG 1612906144) (F cache-wlg10426-WLG 1612906141) (D cache-fra19179-FRA 1612906141) (F cache-fra19122-FRA 1612906141)\nfastly-debug-ttl: (H cache-wlg10427-WLG - - 3) (M cache-fra19179-FRA - - 0)\nfastly-debug-digest: 1118d9fefc8a514ca49d49cb6ece04649e1acf1663398212650bb462ba84c381\nx-served-by: cache-fra19179-FRA, cache-wlg10427-WLG\nx-cache: MISS, HIT\nx-cache-hits: 0, 1\nvary: Cookie, Accept-Encoding\n
From the above headers we can see that:
- The HTML page is cacheable
- Browsers will cache the page for 601 seconds
- Fastly will cache the page for 32 days (
2764800
seconds) - Tiered caching is in effect (edge PoP in Wellington, and shield PoP in France)
- The HTML page was a cache hit at the edge PoP
"},{"location":"applications/drupal/integrate-drupal-and-fastly/#sending-manual-purge-requests-to-fastly","title":"Sending manual purge requests to Fastly","text":"If you ever want to remove a specific page from cache manually, there are ways to do this.
Purge Fastly by single URLcurl -Ssi -XPURGE -H 'Fastly-Soft-Purge:1' -H \"Fastly-Key:$FASTLY_API_TOKEN\" https://www.example.com/subpage\n
You can also purge by cache tag:
Purge Fastly by cache tagcurl -XPOST -H 'Fastly-Soft-Purge:1' -H \"Fastly-Key:$FASTLY_API_TOKEN\" https://api.fastly.com/service/$FASTLY_API_SERVICE/purge/<surrogatekey>\n
You can also use the Fastly CLI which helps to make this a little nicer.
"},{"location":"applications/drupal/phpunit-and-phpstorm/","title":"PHPUnit and PhpStorm","text":"Note
This document assumes the following:
- You are using Docker.
- You are using a standard Amazee/Lagoon project with a docker-compose.yml
file.
- You are on a Mac - it should work for other operating systems but folder structure and some configuration settings may be different.
"},{"location":"applications/drupal/phpunit-and-phpstorm/#configuring-the-project","title":"Configuring the project","text":" - Duplicate* the
/core/phpunit.xml.dist
file to /core/phpunit.xml
-
Edit* /core/phpunit.xml
and fill in the following variables:
- SIMPLETEST_DB:
mysql://drupal:drupal@mariadb:3306/drupal#db
- SIMPLETEST_BASE_URL:
<PROJECT_URL>
"},{"location":"applications/drupal/phpunit-and-phpstorm/#configuring-phpstorm","title":"Configuring PhpStorm","text":""},{"location":"applications/drupal/phpunit-and-phpstorm/#set-up-docker","title":"Set Up Docker","text":" - In PhpStorm, go to File > Settings > Build, Execution, Deployment > Docker
- Click:
+
- Select:
Docker for Mac
"},{"location":"applications/drupal/phpunit-and-phpstorm/#set-up-cli-interpreter","title":"Set Up CLI interpreter","text":"Add a new CLI interpreter:
- In PhpStorm, go to File > Settings > Languages & Frameworks > PHP
- Click
...
and then +
- Next select: Add a new CLI interpreter from Docker, vagrant...
- Use the following configurations:
- Server:
<DOCKER>
- Configuration file(s):
./docker-compose.yml
- Service:
cli
- Lifecycle:
Connect to existing container ('docker compose exec')
- Path mappings:
- Local path:
<ROOT_PATH>
- Remote path*:
/app
"},{"location":"applications/drupal/phpunit-and-phpstorm/#set-up-remote-interpreter","title":"Set Up Remote Interpreter","text":"Add Remote Interpreter:
- In PhpStorm, go to File > Settings > Languages & Frameworks > PHP > Test Frameworks
- Click
+
and select PHPUnit by Remote Interpreter
- Use the following configurations:
- CLI Interpreter:
<CLI_INTERPRETER>
- Path mappings*:
<PROJECT_ROOT> -> /app
- PHPUnit:
Use Composer autoloader
- Path to script*:
/app/vendor/autoload.php
- Default configuration file*:
/app/web/core/phpunit.xml
"},{"location":"applications/drupal/phpunit-and-phpstorm/#setupconfigure-runner-template","title":"Setup/Configure Runner Template","text":" - Configure runner:
- In PhpStorm, go to Run > Edit Configurations... > Templates > PHPUnit
- Use the following configurations:
1. Test scope: Defined in the configuration file
2. Interpreter: <CLI_INTERPRETER>
Note
If you are not on a Mac, this may vary.
"},{"location":"applications/drupal/phpunit-and-phpstorm/#final-checks","title":"Final checks","text":""},{"location":"applications/drupal/phpunit-and-phpstorm/#some-final-checks-to-run-before-you-run-a-test","title":"Some final checks to run before you run a test","text":" - You have the project up and running:
$ docker compose up -d
- The project is working without any errors, visit the site just to make sure it all works as expected - this is not 100% necessary, but nice to know it is working normally.
- We should be ready to run some tests!
"},{"location":"applications/drupal/phpunit-and-phpstorm/#ready-to-run","title":"Ready to Run","text":"Now you have the above configuration set up it should be as straightforward as going to the test you want to run and pressing the green arrow!
Once you press this PhpStorm will use Docker to enter the CLI container, then start running PHPUnit based upon the config.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/","title":"Step by Step: Getting Drupal ready to run on Lagoon","text":""},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#1-lagoon-drupal-setting-files","title":"1. Lagoon Drupal Setting Files","text":"In order for Drupal to work with Lagoon, we need to teach Drupal about Lagoon and Lagoon about Drupal. This happens by copying specific YAML and PHP files into your Git repository.
If you're working on a Drupal project, you can check out one of the various Drupal example projects in our examples repository. We have Drupal 8 and 9 and some variants of each depending on your needs, such as database types. Clone the repository that best suits your needs to get started!
Here is a summary of the Lagoon- and Drupal-specific files you will find:
.lagoon.yml
- The main file that will be used by Lagoon to understand what should be deployed and many more things. This file has some sensible Drupal defaults. If you would like to edit or modify, please check the documentation for .lagoon.yml
. docker-compose.yml
, .dockerignore
, and *.dockerfile
(or Dockerfile
) - These files are used to run your local Drupal development environment, they tell Docker which services to start and how to build them. They contain sensible defaults and many commented lines. We hope that it's well-commented enough to be self-describing. If you would like to find out more, see documentation for docker-compose.yml
. sites/default/*
- These .php
and .yml
files tell Drupal how to communicate with Lagoon containers both locally and in production. They also provide a straightforward system for specific overrides in development and production environments. Unlike other Drupal hosting systems, Lagoon never ever injects Drupal settings files into your Drupal. Therefore, you can edit them however you like. Like all other files, they contain sensible defaults and some commented parts. drush/aliases.drushrc.php
- These files are specific to Drush and tell Drush how to talk to the Lagoon GraphQL API in order to learn about all site aliases there are. drush/drushrc.php
- Some sensible defaults for Drush commands.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#update-your-gitignore-settings","title":"Update your .gitignore
Settings","text":"Don't forget to make sure your .gitignore
will allow you to commit the settings files.
Drupal is shipped with sites/*/settings*.php
and sites/*/services*.yml
in .gitignore
. Remove that, as with Lagoon we don't ever have sensitive information in the Git repository.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#note-about-webroot-in-drupal-8","title":"Note about WEBROOT
in Drupal 8","text":"Unfortunately the Drupal community has not decided on a standardized WEBROOT
folder name. Some projects put Drupal within web
, and others within docroot
or somewhere else. The Lagoon Drupal settings files assume that your Drupal is within web
, but if this is different for your Drupal, please adapt the files accordingly.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#note-about-composerjson","title":"Note about composer.json
","text":"If you installed Drupal via composer, please check your composer.json
and make sure that the name
is NOT drupal/drupal
, as this could confuse Drush and other tools of the Drupal universe, just rename it to something like myproject/drupal
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#2-customize-docker-composeyml","title":"2. Customize docker-compose.yml
","text":"Don't forget to customize the values in lagoon-project
& LAGOON_ROUTE
with your site-specific name & the URL you'd like to access the site with. Here's an example:
docker-compose.ymlx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# Route that should be used locally. If you are using pygmy, this route *must* end with .docker.amazee.io.\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#3-build-images","title":"3. Build Images","text":"First, we need to build the defined images:
Build imagesdocker compose build\n
This will tell docker-compose
to build the Docker images for all containers that have a build:
definition in the docker-compose.yml
. Usually for Drupal this is the case for the cli
, nginx
and php
images. We do this because we want to run specific build commands (like composer install
) or inject specific environment variables (like WEBROOT
) into the images.
Usually, building is not necessary every time you edit your Drupal code (as the code is mounted into the containers from your host), but rebuilding does not hurt. Plus, Lagoon will build the exact same Docker images during a deploy, so you can check that your build will also work during a deployment by just running docker compose build
again.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#4-start-containers","title":"4. Start Containers","text":"Now that the images are built, we can start the containers:
Start containersdocker compose up -d\n
This will bring up all containers. After the command is done, you can check with docker compose ps
to ensure that they are all fully up and have not crashed. If there is a problem, check the logs with docker compose logs -f [servicename]
.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#5-rerun-composer-install-for-composer-projects-only","title":"5. Rerun composer install
(for Composer projects only)","text":"In a local development environment, you probably want all dependencies downloaded and installed, so connect to the cli
container and run composer install
:
Run composer install in CLIdocker compose exec cli bash\ncomposer install\n
This might sound weird, as there was already a composer install
executed during the build step, so let us explain:
- In order to be able to edit files on the host and have them immediately available in the container, the default
docker-composer.yml
mounts the whole folder into the the containers (this happens with .:/app:delegated
in the volumes section). This also means that all dependencies installed during the Docker build are overwritten with the files on the host. - Locally, you probably want dependencies defined as
require-dev
in composer.json
to exist as well, while on a production deployment they would just use unnecessary space. So we run composer install --no-dev
in the Dockerfile and composer install
manually.
If everything went well, open the LAGOON_ROUTE
defined in docker-compose.yml
(for example http://drupal.docker.amazee.io
) and you should be greeted by a nice Drupal error. Don't worry - that's ok right now, most important is that it tries to load a Drupal site.
If you get a 500 or similar error, make sure everything loaded properly with Composer.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#6-check-status-and-install-drupal","title":"6. Check Status and Install Drupal","text":"Finally it's time to install Drupal, but just before that we want to make sure everything works. We suggest using Drush for that:
Drush statusdocker compose exec cli bash\ndrush status\n
This should return something like:
Drush status result[drupal-example]cli-drupal:/app$ drush status\n[notice] Missing database table: key_value\nDrupal version : 8.6.1\nSite URI : http://drupal.docker.amazee.io\nDatabase driver : mysql\nDatabase hostname : mariadb\nDatabase port : 3306\nDatabase username : drupal\nDatabase name : drupal\nPHP binary : /usr/local/bin/php\nPHP config : /usr/local/etc/php/php.ini\nPHP OS : Linux\nDrush script : /app/vendor/drush/drush/drush\nDrush version : 9.4.0\nDrush temp : /tmp\nDrush configs : /home/.drush/drush.yml\n /app/vendor/drush/drush/drush.yml\nDrupal root : /app/web\nSite path : sites/default\n
Warning
You may have to tell pygmy about your public key before the next step.
If you get an error like Permission denied (publickey)
, check out the documentation here: pygmy - adding ssh keys
Now it is time to install Drupal (if instead you would like to import an existing SQL file, please skip to step 7, but we suggest you start with a clean Drupal installation in the beginning to be sure everything works).
Install Drupaldrush site-install\n
This should output something like:
drush site-install[drupal-example]cli-drupal:/app$ drush site-install\nYou are about to DROP all tables in your 'drupal' database. Do you want to continue? (y/n): y\nStarting Drupal installation. This takes a while. Consider using the --notify global option.\nInstallation complete. User name: admin User password: a7kZJekcqh\nCongratulations, you installed Drupal!\n
Now you can visit the URL defined in LAGOON_ROUTE
and you should see a fresh and clean installed Drupal site - Congrats!
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#7-import-existing-database-dump","title":"7. Import existing Database Dump","text":"If you already have an existing Drupal site, you probably want to import its database over to your local site.
There are many different ways to create a database dump. If your current hosting provider has Drush installed, you can use the following:
Drush sql-dumpdrush sql-dump --result-file=dump.sql\n\nDatabase dump saved to dump.sql\n
Now you have a dump.sql
file that contains your whole database.
Copy this file into your Git repository and connect to the cli
, and you should see the file in there:
Viewing dump.sql[drupal-example]cli-drupal:/app$ ls -l dump.sql\n-rw-r--r-- 1 root root 5281 Dec 19 12:46 dump.sql\n
Now you can drop the current database, and then import the dump.
Import dump.sqldrush sql-drop\n\ndrush sql-cli < dump.sql\n
Verify that everything works with visiting the URL of your project. You should have a functional copy of your Drupal site!
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#8-drupal-files-directory","title":"8. Drupal files directory","text":"A Drupal site also needs the files directory. As the whole folder is mounted into the Docker containers, add the files into the correct folder (probably web/sites/default/files
, sites/default/files
or something similar). Remember what you've set as your WEBROOT
- it may not be the same for all projects.
"},{"location":"applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#9-done","title":"9. Done","text":"You are done with your local setup. The Lagoon team wishes happy Drupaling!
"},{"location":"applications/drupal/subfolders/","title":"Subfolders","text":"An example could be: www.example.com
points to one Drupal site, while www.example.com/blog
loads a blog built in another Drupal.
It would be possible to run both Drupals in a single Git repository and deploy it as a whole, but this workflow might not fit every team, and having separate Git repositories fits some situations better.
"},{"location":"applications/drupal/subfolders/#modifications-of-root-application","title":"Modifications of root application","text":"The root application (in this example, the Drupal site for www.example.com
), needs a couple of NGINX configs that will configure NGINX to be a reverse proxy to the subfolder applications:
"},{"location":"applications/drupal/subfolders/#location_prependconf","title":"location_prepend.conf
","text":"Create a file called location_prepend.conf
in the root of your Drupal installation:
location_prepend.confresolver 8.8.8.8 valid=30s;\n\nlocation ~ ^/subfolder {\n # If $http_x_forwarded_proto is empty (If it is not set from an upstream reverseproxy).\n # Aet it to the current scheme.\n set_if_empty $http_x_forwarded_proto $scheme;\n\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;\n proxy_set_header X-Lagoon-Forwarded-Host $host;\n # Will be used by downstream to know the original host.\n proxy_set_header X-REVERSEPROXY $hostname;\n proxy_set_header FORWARDED \"\";\n # Unset FORWARDED because drupal8 gives errors if it is set.\n proxy_set_header Proxy \"\";\n # Unset Proxy because drupal8 gives errors if it is set.\n proxy_ssl_server_name on;\n\n # NGINX needs a variable set in order for the DNS resolution to work correctly.\n set $subfolder_drupal_host \"https://nginx-lagoonproject-${LAGOON_GIT_SAFE_BRANCH}.clustername.com:443\";\n # LAGOON_GIT_SAFE_BRANCH variable will be replaced during docker entrypoint.\n proxy_pass $subfolder_drupal_host;\n proxy_set_header Host $proxy_host;\n # $proxy_host will be automatically generated by NGINX based on proxy_pass (it needs to be without scheme and port).\n\n expires off; # make sure we honor cache headers from the proxy and not overwrite them\n
Replace the following strings:
/subfolder
with the name of the subfolder you want to use. For example, /blog
. nginx
with the service that you want to point too in the subfolder project. lagoonproject
with the Lagoon projectname of the subfolder project.
"},{"location":"applications/drupal/subfolders/#nginx-dockerfile","title":"NGINX Dockerfile","text":"Add the following to your NGINX Dockerfile (nginx.dockerfile
or Dockerfile.nginx
):
nginx.dockerfileCOPY location_prepend.conf /etc/nginx/conf.d/drupal/location_prepend.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/*\n
"},{"location":"applications/drupal/subfolders/#modifications-of-subfolder-application","title":"Modifications of subfolder application","text":"Like the root application, we also need to teach the subfolder application (in this example, the Drupal installation for www.example.com/blog
), that it is running under a subfolder. To do this, we create two files:
"},{"location":"applications/drupal/subfolders/#location_drupal_append_subfolderconf","title":"location_drupal_append_subfolder.conf
","text":"Create a file called location_drupal_append_subfolder.conf
in the root of your subfolder Drupal installation:
location_drupal_append_subfolder.conf# When injecting a script name that is prefixed with `subfolder`, Drupal will\n# render all URLs with `subfolder` prefixed\nfastcgi_param SCRIPT_NAME /subfolder/index.php;\n\n# If we are running via a reverse proxy, we inject the original HOST URL\n# into PHP. With this Drupal will render all URLs with the original HOST URL,\n# and not the current used HOST.\n\n# We first set the HOST to the regular host variable.\nfastcgi_param HTTP_HOST $http_host;\n# Then we overwrite it with `X-Lagoon-Forwarded-Host` if it exists.\nfastcgi_param HTTP_HOST $http_x_lagoon_forwarded_host if_not_empty;\n
Replace /subfolder
with the name of the subfolder you want to use. For example, /blog
.
"},{"location":"applications/drupal/subfolders/#server_prepend_subfolderconf","title":"server_prepend_subfolder.conf
","text":"Create a file called server_prepend_subfolder.conf
in the root of your subfolder Drupal installation:
server_prepend_subfolder.conf# Check for redirects before we do the internal NGINX rewrites.\n# This is done because the internal NGINX rewrites uses `last`,\n# which instructs NGINX to not check for rewrites anymore (and\n# `if` is part of the redirect module).\ninclude /etc/nginx/helpers/010_redirects.conf;\n\n# This is an internal NGINX rewrite, it removes `/subfolder/`\n# from the requests so that NGINX handles the request as it would\n# have been `/` from the beginning.\n# The `last` flag is also important. It will cause NGINX not to\n# execute any more rewrites, because it would redirect forever\n# with the rewrites below.\nrewrite ^/subfolder/(.*) /$1 last;\n\n# Make sure redirects are NOT absolute, to ensure NGINX does not\n# overwrite the host of the URL - which could be something other than\n# what NGINX currently thinks it is serving.\nabsolute_redirect off;\n\n# If a request just has `/subfolder` we 301 redirect to `/subfolder/`\n# (Drupal really likes a trailing slash)\nrewrite ^/subfolder /subfolder/ permanent;\n\n# Any other request we prefix 301 redirect with `/subfolder/`\nrewrite ^\\/(.*) /subfolder/$1 permanent;\n
Replace /subfolder
with the name of the subfolder you want to use. For example, /blog
.
"},{"location":"applications/drupal/subfolders/#nginx-dockerfile_1","title":"NGINX Dockerfile","text":"We also need to modify the NGINX Dockerfile.
Add the following to your NGINX Dockerfile (nginx.dockerfile
or Dockerfile.nginx
):
nginx.dockerfileCOPY location_drupal_append_subfolder.conf /etc/nginx/conf.d/drupal/location_drupal_append_subfolder.conf\nCOPY server_prepend_subfolder.conf /etc/nginx/conf.d/drupal/server_prepend_subfolder.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/*\n
"},{"location":"applications/drupal/services/","title":"Services","text":""},{"location":"applications/drupal/services/#mariadb-is-the-open-source-successor-to-mysql","title":"MariaDB is the open-source successor to MySQL","text":"Learn about MariaDB with Drupal
Documentation on the plain MariaDB image (the MariaDB-Drupal image is built on this).
"},{"location":"applications/drupal/services/#redis-is-a-fast-open-source-in-memory-key-value-data-store-for-use-as-a-database-cache-message-broker-and-queue","title":"Redis is a fast, open-source, in-memory key-value data store for use as a database, cache, message broker, and queue","text":"Learn about Redis with Drupal.
Documentation on the Redis-persistent image.
"},{"location":"applications/drupal/services/#solr-is-an-open-source-search-platform","title":"Solr is an open-source search platform","text":"Learn about Solr with Drupal.
Documentation on the plain Solr image (the Solr-Drupal image is built on this).
"},{"location":"applications/drupal/services/#varnish-is-a-powerful-open-source-http-engine-and-reverse-http-proxy-that-helps-to-speed-up-your-website","title":"Varnish is a powerful, open-source HTTP engine and reverse HTTP proxy that helps to speed up your website","text":"Learn about Varnish with Drupal
Documentation on the plain Varnish image (the Varnish-Drupal image is built on this).
"},{"location":"applications/drupal/services/mariadb/","title":"MariaDB-Drupal","text":"The Lagoon mariadb-drupal
Docker image Dockerfile is a customized mariadb
image to use within Drupal projects in Lagoon. It differs from the mariadb
image only for initial database setup, made by some environment variables:
Environment Variable Default Description MARIADB_DATABASE
drupal Drupal database created at startup. MARIADB_USER
drupal Default user created at startup. MARIADB_PASSWORD
drupal Password of default user created at startup. If the LAGOON_ENVIRONMENT_TYPE
variable is set to production
, performances are set accordingly by using MARIADB_INNODB_BUFFER_POOL_SIZE=1024
and MARIADB_INNODB_LOG_FILE_SIZE=256
.
"},{"location":"applications/drupal/services/mariadb/#additional-mariadb-logging","title":"Additional MariaDB Logging","text":"During the course of development, it may be necessary to enable either query logging or slow query logging. To do so, set the environment variables MARIADB_LOG_SLOW
or MARIADB_LOG_QUERIES
. This can be done in docker-compose.yml
.
"},{"location":"applications/drupal/services/mariadb/#connecting-to-mysql-container-from-the-host","title":"Connecting to MySQL container from the host","text":"If you would like to connect to your MySQL database inside the Docker container with an external tool like Sequel Pro, MySQL Workbench, HeidiSQL, DBeaver, plain old mysql-cli
or anything else, here's how to get the IP and port info.
"},{"location":"applications/drupal/services/mariadb/#get-published-mysql-port-from-the-container","title":"Get published MySQL port from the container","text":"By default, Docker assigns a randomly published port for MySQL during each container start. This is done to prevent port collisions.
To get the published port via docker
:
Run: docker port [container_name]
.
Get port$ docker port drupal_example_mariadb_1\n3306/tcp -> 0.0.0.0:32797\n
Or via docker-compose
inside a Drupal repository:
Run: docker compose port [service_name] [interal_port]
.
Set portsdocker compose port mariab 3306\n0.0.0.0:32797\n
"},{"location":"applications/drupal/services/mariadb/#setting-a-static-port-not-recommended","title":"Setting a static port (not recommended)","text":"During development, if you are using an external database tool, it may become cumbersome to continually check and set the MySQL connection port.
To set a static port, edit your service definition in your docker-compose.yml
.
docker-compose.yml mariadb:\n...\nports:\n- \"33772:3306\" # Exposes port 3306 with a 33772 on the host port. Note by doing this you are responsible for managing port collisions`.\n
Warning
By setting a static port you become responsible for managing port collisions.
"},{"location":"applications/drupal/services/mariadb/#connect-to-mysql","title":"Connect to MySQL","text":"Now you can use these details to connect to whatever database management tool you'd like.
Linux OS X IP/Host IP from container docker.amazee.io
Port Published port from container Published port from container Username drupal
drupal
Password drupal
drupal
Database drupal
drupal
"},{"location":"applications/drupal/services/nginx/","title":"NGINX-Drupal","text":"The Lagoon nginx-drupal
Docker image. Optimized to work with Drupal. Based on Lagoon nginx
image.
"},{"location":"applications/drupal/services/nginx/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. - To keep
drupal.conf
's configuration file as clean and customizable as possible, we added include
directives in the main sections of the file:server
, location /
, location @drupal
and location @php
. - Further information in the section
Drupal.conf
customization.
"},{"location":"applications/drupal/services/nginx/#included-drupal-configuration-drupalconf","title":"Included Drupal configuration (drupal.conf
)","text":"The image includes a full NGINX working configuration for Drupal 7, 8 and 9. It includes some extra functionalities like:
- Support for
humanstxt
Drupal module. - Support for
robotstxt
Drupal module. - Disallow access to
vagrant
directory for local development.
"},{"location":"applications/drupal/services/nginx/#drupalconf-customization","title":"Drupal.conf
customization","text":"The drupal.conf
file is a customized version of the nginx
configuration file, optimized for Drupal. Customers have different ways of customizing it:
- Modifying it (hard to support in case of errors).
- Using built-in customization through
*.conf
files.
The drupal.conf
file is divided into several sections. The sections we've included in our customizations are:
server
location /
location @drupal
location @php
.
For each of this section, there are two includes:
*_prepend.conf
*_append.conf
Here what the location @drupal
section looks like:
drupal.conflocation @drupal {\ninclude /etc/nginx/conf.d/drupal/location_drupal_prepend*.conf;\ninclude /etc/nginx/fastcgi.conf;\nfastcgi_param SCRIPT_NAME /index.php;\nfastcgi_param SCRIPT_FILENAME $realpath_root/index.php;\nfastcgi_pass ${NGINX_FASTCGI_PASS:-php}:9000;\ninclude /etc/nginx/conf.d/drupal/location_drupal_append*.conf;\n}\n
This configuration allows customers to create files called location_drupal_prepend.conf
and location_drupal_append.conf
, where they can put all the configuration they want to insert before and after the other statements.
Those files, once created, MUST exist in the nginx
container, so add them to Dockerfile.nginx
like so:
dockerfile.nginxCOPY location_drupal_prepend.conf /etc/nginx/conf.d/drupal/location_drupal_prepend.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/location_drupal_prepend.conf\n
"},{"location":"applications/drupal/services/nginx/#drupal-core-statistics-module-configuration","title":"Drupal Core Statistics Module Configuration","text":"If you're using the core Statistics module, you may run into an issue that needs a quick configuration change.
With the default NGINX configuration, the request to the tracking endpoint /core/modules/statistics/statistics.php
is denied (404).
This is related to the default NGINX configuration:
drupal.conflocation ~* ^.+\\.php$ {\n try_files /dev/null @drupal;\n}\n
To fix the issue, we instead define a specific location rule and inject this as a location prepend configuration:
drupal.conf## Allow access to to the statistics endpoint.\nlocation ~* ^(/core/modules/statistics/statistics.php) {\n try_files /dev/null @php;\n}\n
And copy this during the NGINX container build:
dockerfile.nginx# Add specific Drupal statistics module NGINX configuration.\nCOPY .lagoon/nginx/location_prepend_allow_statistics.conf /etc/nginx/conf.d/drupal/location_prepend_allow_statistics.conf\n
"},{"location":"applications/drupal/services/php-cli/","title":"PHP-CLI-Drupal","text":"The Lagoon php-cli-drupal
Docker image is optimized to work with Drupal. It is based on the Lagoon php-cli
image, and has all the command line tools needed for the daily maintenance of a Drupal website:
drush
drupal console
drush launcher
(which will fallback to Drush 8 if there is no site installed Drush found)
"},{"location":"applications/drupal/services/php-cli/#supported-versions","title":"Supported versions","text":" - 7.3 (available for compatibility only, no longer officially supported)
- 7.4 (available for compatibility only, no longer officially supported) -
uselagoon/php-7.4-cli-drupal
- 8.0 (available for compatibility only, no longer officially supported) -
uselagoon/php-8.0-cli-drupal
- 8.1 Dockerfile -
uselagoon/php-8.1-cli-drupal
- 8.2 Dockerfile -
uselagoon/php-8.2-cli-drupal
- 8.3 Dockerfile -
uselagoon/php-8.3-cli-drupal
All PHP versions use their own Dockerfiles.
"},{"location":"applications/drupal/services/php-cli/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user.
"},{"location":"applications/drupal/services/redis/","title":"Redis","text":"We recommend using Redis for internal caching. Add the Redis service to docker-compose.yaml
.
docker-compose.yml redis:\nimage: uselagoon/redis-5\nlabels:\nlagoon.type: redis\n<< : *default-user # Uses the defined user from top.\nenvironment:\n<< : *default-environment\n
Also, to configure Redis, add the following to your settings.php
.
"},{"location":"applications/drupal/services/redis/#drupal-7","title":"Drupal 7","text":"settings.php if(getenv('LAGOON')){\n $conf['redis_client_interface'] = 'PhpRedis';\n $conf['redis_client_host'] = 'redis';\n $conf['lock_inc'] = 'sites/all/modules/contrib/redis/redis.lock.inc';\n $conf['path_inc'] = 'sites/all/modules/contrib/redis/redis.path.inc';\n $conf['cache_backends'][] = 'sites/all/modules/contrib/redis/redis.autoload.inc';\n $conf['cache_default_class'] = 'Redis_Cache';\n $conf['cache_class_cache_form'] = 'DrupalDatabaseCache';\n $conf['cache_class_cache_field'] = 'DrupalDatabaseCache';\n }\n
Depending on file system structure, the module paths may need to be updated.
"},{"location":"applications/drupal/services/redis/#drupal-8","title":"Drupal 8","text":"The Drupal 8 config is largely stock. Notably, Redis is disabled while Drupal is being installed.
settings.phpif (getenv('LAGOON')){\n $settings['redis.connection']['interface'] = 'PhpRedis';\n $settings['redis.connection']['host'] = getenv('REDIS_HOST') ?: 'redis';\n $settings['redis.connection']['port'] = getenv('REDIS_SERVICE_PORT') ?: '6379';\n $settings['cache_prefix']['default'] = getenv('LAGOON_PROJECT') . '_' . getenv('LAGOON_GIT_SAFE_BRANCH');\n // Do not set the cache during installations of Drupal.\n if (!drupal_installation_attempted() && extension_loaded('redis')) {\n $settings['cache']['default'] = 'cache.backend.redis';\n // And allows to use it without the Redis module being enabled.\n $class_loader->addPsr4('Drupal\\\\redis\\\\', 'modules/contrib/redis/src');\n $settings['bootstrap_container_definition'] = [\n 'parameters' => [],\n 'services' => [\n 'redis.factory' => [\n 'class' => 'Drupal\\redis\\ClientFactory',\n ],\n 'cache.backend.redis' => [\n 'class' => 'Drupal\\redis\\Cache\\CacheBackendFactory',\n 'arguments' => ['@redis.factory', '@cache_tags_provider.container', '@serialization.phpserialize'],\n ],\n 'cache.container' => [\n 'class' => '\\Drupal\\redis\\Cache\\PhpRedis',\n 'factory' => ['@cache.backend.redis', 'get'],\n 'arguments' => ['container'],\n ],\n 'cache_tags_provider.container' => [\n 'class' => 'Drupal\\redis\\Cache\\RedisCacheTagsChecksum',\n 'arguments' => ['@redis.factory'],\n ],\n 'serialization.phpserialize' => [\n 'class' => 'Drupal\\Component\\Serialization\\PhpSerialize',\n ],\n ],\n ];\n }\n}\n
"},{"location":"applications/drupal/services/redis/#persistent","title":"Persistent","text":"Redis can also be configured as a persistent backend.
docker-compose.ymlredis:\nimage: uselagoon/redis-5-persistent\nlabels:\nlagoon.type: redis-persistent\nenvironment:\n<< : *default-environment\n
"},{"location":"applications/drupal/services/redis/#environment-variables","title":"Environment Variables","text":"Environment variables are meant to store some common information about Redis.
Environment Variable Default Description LOGLEVEL
notice
Redis loglevel DATABASES
1
Number of databases MAXMEMORY
100mb
Maximum memory usage of Redis"},{"location":"applications/drupal/services/redis/#redis-failover","title":"Redis Failover","text":"Here is a snippet to implement a Redis failover in case of the Redis container not being available (for example, during maintenance)
The following is inserted into Drupal's active settings.php
file.
settings.phpif (getenv('LAGOON')) {\n $contrib_path = is_dir('sites/all/modules/contrib') ? 'sites/all/modules/contrib' : 'sites/all/modules';\n $redis = DRUPAL_ROOT . '/sites/all/modules/contrib/redis';\n if (file_exists(\"$redis/redis.module\")) {\n require_once \"$redis/redis.module\";\n $conf['redis_client_host'] = getenv('REDIS_HOST') ?: 'redis';\n $conf['redis_client_port'] = getenv('REDIS_SERVICE_PORT') ?: 6379;\n $conf['cache_prefix'] = getenv('REDIS_CACHE_PREFIX') ?: getenv('LAGOON_PROJECT') . '_' . getenv('LAGOON_GIT_SAFE_BRANCH');\n try {\n // Ensure that there is a connection to redis.\n $client = Redis_Client::getClient();\n $response = $client->ping();\n if (!$response) {\n throw new \\Exception('Redis could be reached but is not responding correctly.');\n }\n $conf['redis_client_interface'] = 'PhpRedis';\n $conf['lock_inc'] = $contrib_path . '/redis/redis.lock.inc';\n $conf['path_inc'] = $contrib_path . '/redis/redis.path.inc';\n $conf['cache_backends'][] = $contrib_path . '/redis/redis.autoload.inc';\n $conf['cache_default_class'] = 'Redis_Cache';\n } catch (\\Exception $e) {\n // Redis is not available for this request we should not configure the\n // redis backend and ensure no cache is used. This will retry next\n // request.\n if (!class_exists('DrupalFakeCache')) {\n $conf['cache_backends'][] = 'includes/cache-install.inc';\n }\n $conf['cache_default_class'] = 'DrupalFakeCache';\n }\n }\n}\n
"},{"location":"applications/drupal/services/solr/","title":"Solr-Drupal","text":""},{"location":"applications/drupal/services/solr/#standard-use","title":"Standard use","text":"For Solr 8 and 9, we ship the default schema files provided by the search_api_solr Drupal module. Add the Solr version you would like to use in your docker-compose.yml
file, following our example.
"},{"location":"applications/drupal/services/solr/#custom-schema","title":"Custom schema","text":"To implement schema customizations for Solr in your project, look to how Lagoon creates our standard images.
- In the
solr
section of your docker-compose.yml
file, replace image: uselagoon/solr:8
with:
docker-compose.yml build:\ncontext: .\ndockerfile: solr.dockerfile\n
- Place your schema files in your code repository. We typically like to use
.lagoon/solr
. - Create a
solr.dockerfile
.
solr.dockerfileFROM uselagoon/solr:8\n\nCOPY .lagoon/solr /solr-conf/conf\n\nCMD solr-recreate drupal /solr-conf && solr-foreground\n
The goal is to have your Solr configuration files exist at /solr-conf/conf
in the image you are building.
"},{"location":"applications/drupal/services/solr/#multiple-cores","title":"Multiple cores","text":"To implement multiple cores, you will also need to ship your own Solr schema as above. The only change needed is to the CMD
of the Dockerfile - repeat the pattern of precreate-core corename /solr-conf/ ;
for each core you require.
solr.dockerfileFROM uselagoon/solr:8-drupal\n\nCMD solr-recreate drupal /solr-conf && solr-recreate more-drupal /solr-conf && solr-foreground\n
"},{"location":"applications/drupal/services/varnish/","title":"Varnish","text":"We suggest using Drupal with a Varnish reverse proxy. Lagoon provides a varnish-drupal
Docker image that has Varnish already configured with a Drupal Varnish config.
This Varnish config does the following:
- It understands Drupal session cookies and automatically disables the Varnish caching for any authenticated request.
- It automatically caches any assets (images, css, js, etc.) for one month, and also sends this header to the browser, so browser cache the assets as well. This happens for authenticated and non-authenticated requests.
- It has support for
BAN
and URIBAN
which is used by the Drupal 8 purge module. - It removes
utm_
and gclid
from the URL parameter to prevent Google Analytics links from creating multiple cache objects. - Many other good things - just check out the drupal.vcl.
"},{"location":"applications/drupal/services/varnish/#usage-with-drupal-8","title":"Usage with Drupal 8","text":"TL;DR: Check out the drupal8-advanced example in our examples repo, it ships with the needed modules and needed Drupal configuration.
Note: many of these examples are on the same drupal-example-simple
repo, but different branches/hashes. Be sure to get the exact branch from the examples list!
"},{"location":"applications/drupal/services/varnish/#install-purge-and-varnish-purge-modules","title":"Install Purge and Varnish Purge modules","text":"In order to fully use Varnish with Drupal 8 cache tags, you need to install the Purge and Varnish Purge modules. They ship with many submodules. We suggest installing at least the following:
purge
purge_drush
purge_tokens
purge_ui
purge_processor_cron
purge_processor_lateruntime
purge_queuer_coretags
varnish_purger
varnish_purge_tags
Grab them all at once:
Install Purge and Varnish Purgecomposer require drupal/purge drupal/varnish_purge\n\ndrush en purge purge_drush purge_tokens purge_ui purge_processor_cron purge_processor_lateruntime purge_queuer_coretags varnish_purger varnish_purge_tags\n
"},{"location":"applications/drupal/services/varnish/#configure-varnish-purge","title":"Configure Varnish Purge","text":" - Visit
Configuration > Development > Performance > Purge
. - Add a purger via
Add purger
. - Select
Varnish Bundled Purger
(not the Varnish Purger
, see the #Behind the Scenes section, for more information.). - Click the dropdown beside the just added purger and click
Configure
. - Give it a nice name,
Lagoon Varnish
sounds good. -
Configure it with:
Configure Varnish Purge TYPE: Tag\n\n REQUEST:\n Hostname: varnish\n (or whatever your Varnish is called in docker-compose.yml)\n Port: 8080\n Path: /\n Request Method: BAN\n Scheme: http\n\n HEADERS:\n Header: Cache-Tags\n Value: [invalidations:separated_pipe]\n
-
Save configuration
.
That's it! If you'd like to test this locally, make sure you read the next section.
"},{"location":"applications/drupal/services/varnish/#configure-drupal-for-varnish","title":"Configure Drupal for Varnish","text":"There are a few other configurations that can be done:
- Uninstall the
Internal Page Cache
Drupal module with drush pmu page_cache
. It can cause some weird double caching situations where only the Varnish cache is cleared, but not the internal cache, and changes appear very slowly to the users. Also, it uses a lot of cache storage on big sites. - Change
$config['system.performance']['cache']['page']['max_age']
in production.settings.php
to 2628000
. This tells Varnish to cache sites for up 1 month, which sounds like a lot, but the Drupal 8 cache tag system is so awesome that it will basically make sure that the Varnish cache is purged whenever something changes.
"},{"location":"applications/drupal/services/varnish/#test-varnish-locally","title":"Test Varnish Locally","text":"Drupal setups on Lagoon locally have Varnish and the Drupal caches disabled as it can be rather hard to develop with all them set. This is done via the following:
- The
VARNISH_BYPASS=true
environment variable in docker-compose.yml
which tells Varnish to basically disable itself. - Drupal is configured to not send any cache headers (via setting the Drupal config
$config['system.performance']['cache']['page']['max_age'] = 0
in development.settings.php
).
To test Varnish locally, change the following in docker-compose.yml
:
- Set
VARNISH_BYPASS
to false
in the Varnish service section. - Set
LAGOON_ENVIRONMENT_TYPE
to production
in the x-environment
section. - Run
docker compose up -d
, which restarts all services with the new environment variables.
Now you should be able to test Varnish!
Here is a short example assuming there is a node with the ID 1
and has the URL drupal-example.docker.amazee.io/node/1
- Run
curl -I drupal-example.docker.amazee.io/node/1
and look for these headers: X-LAGOON
should include varnish
which tells you that the request actually went through Varnish. Age:
will be still 0
as Varnish has probably never seen this site before, and the first request will warm the varnish cache. X-Varnish-Cache
will be MISS
, also telling you that Varnish didn't find a previously cached version of this request.
- Now run
curl -I drupal-example.docker.amazee.io/node/1
again, and the headers should be: Age:
will show you how many seconds ago the request has been cached. In our example it will probably something between 1-30, depending on how fast you are executing the command. X-Varnish-Cache
will be HIT
, telling you that Varnish successfully found a cached version of the request and returned that one to you.
- Change some content at
node/1
in Drupal. - Run
curl -I drupal-example.docker.amazee.io/node/1
, and the headers should the same as very first request: Age:0
X-Varnish-Cache: MISS
"},{"location":"applications/drupal/services/varnish/#varnish-on-drupal-behind-the-scenes","title":"Varnish on Drupal behind the scenes","text":"If you come from other Drupal hosts or have done a Drupal 8 & Varnish tutorial before, you might have realized that there are a couple of changes in the Lagoon Drupal Varnish tutorial. Let's address them:
"},{"location":"applications/drupal/services/varnish/#usage-of-varnish-bundled-purger-instead-of-varnish-purger","title":"Usage of Varnish Bundled Purger
instead of Varnish Purger
","text":"The Varnish Purger
purger sends a BAN
request for each cache-tag that should be invalidated. Drupal has a lot of cache-tags, and this could lead to quite a large amount of requests sent to Varnish. Varnish Bundled Purger
instead sends just one BAN
request for multiple invalidations, separated nicely by pipe (|
), which fits perfectly with the Varnish regular expression system of bans. This causes less requests and a smaller ban list table inside Varnish.
"},{"location":"applications/drupal/services/varnish/#usage-of-purge-late-runtime-processor","title":"Usage of Purge Late runtime processor
","text":"Contradictory to the Varnish module in Drupal 7, the Drupal 8 Purge module has a slightly different approach to purging caches: It adds them to a queue which is then processed by different processors. Purge suggests using the Cron processor
, which means that the Varnish cache is only purged during a cron run. This can lead to old data being cached by Varnish, as your cron is probably not configured to run every minute or so, and can result in confused editors and clients.
Instead, we suggest using the Purge Late runtime processor
, which processes the queue at the end of each Drupal request. This has the advantage that if a cache-tag is added to the purge queue (because an editor edited a Drupal node, for example) the cache-tags for this node are directly purged. Together with the Varnish Bundled Purger
, this means just a single additional request to Varnish at the very end of a Drupal request, which causes no noticeable processing time on the request.
"},{"location":"applications/drupal/services/varnish/#full-support-for-varnish-ban-lurker","title":"Full support for Varnish Ban Lurker","text":"Our Varnish configurations have full support for Ban Lurker
. Ban Lurker helps you to maintain a clean cache and keep Varnish running smoothly. It is basically a small tool that runs through the Varnish ban list and compares them to the cached requests in the Varnish cache. Varnish bans are used to mark an object in the cache for purging. If Ban Lurker finds an item that should be \"banned,\" it removes them from the cache and also removes the ban itself. Now any seldom-accessed objects with very long TTLs which would normally never be banned and just keep taking up cache space are removed and can be refreshed. This keeps the list of bans small and with that, less processing time for Varnish on each request. Check out the official Varnish post on Ban Lurker and some other helpful reading for more information.
"},{"location":"applications/drupal/services/varnish/#troubleshooting","title":"Troubleshooting","text":"Varnish doesn't cache? Or something else not working? Here a couple of ways to debug:
- Run
drush p-debug-en
to enable debug logging of the purge module. This should show you debugging in the Drupal log under admin/reports/dblog
. - Make sure that Drupal sends proper cache headers. To best test this, use the URL that Lagoon generates for bypassing the Varnish cache, (locally in our Drupal example this is http://nginx-drupal-example.docker.amazee.io). Check for the
Cache-Control: max-age=900, public
header, where the 900
is what you configured in $config['system.performance']['cache']['page']['max_age']
. - Make sure that the environment variable
VARNISH_BYPASS
is not set to true
(see docker-compose.yml
and run docker compose up -d varnish
to make sure the environment variable is configured correctly). - If all fails, and before you flip your table (\u256f\u00b0\u25a1\u00b0\uff09\u256f\ufe35 \u253b\u2501\u253b, talk to the Lagoon team, we're happy to help.
"},{"location":"community/discord/","title":"Lagoon Community on Discord","text":"Our official community meeting space is the Lagoon Discord.
We\u2019re starting this community as a place for all Lagoon users to collaborate, solve problems, share ideas, and contribute back to the Lagoon project. We\u2019re working to consolidate our community as it\u2019s currently spread out over Slack and various other places. We also wanted to invite all of our users and customers to join so that everyone can benefit from the community, no matter how they\u2019re using Lagoon.
Please remember that this is not to replace your current support channels - those will remain the same. This is a place to connect with other users as well as the Lagoon maintainers.
We ask that all community members review our Participation and Moderation Guidelines, as well as the Code of Conduct.
"},{"location":"community/discord/#community-hours","title":"Community Hours","text":"Our Community hours are currently on hold as we survey the community to better determine the community's needs. Please fill our the survey here.
If you need a hand with Lagoon, please reach out on Discord or shoot us an email at uselagoon@amazee.io.
"},{"location":"community/moderation/","title":"Lagoon Moderation Guidelines","text":"These guidelines have been adapted from Drupal Diversity & Inclusion\u2019s Moderation Guidelines.
In Lagoon spaces, strive to promote understanding, empathy, and increase personal awareness of all people. This includes people from across the Drupal Community and the greater Technical Community, even those you may personally disagree with.
If kicked from the Discord, the kicked user can send a private message (PM) to the kicker or another Moderator, if desired, for re-admittance. If a disruptive person is engaging in what appears to be intentionally inflammatory, bullying, or harassing behavior provoking hostile responses (or acting in a hostile manner), kicking is faster and easier than trying to placate a disruptive person whose behavior is causing distress to other channel members.
The kick is not a ban. There are times when disruptive or triggering comments and statements are genuine and break the lines of communication between two parties. By speaking with a Moderator, the (potentially) disruptive person can be coached on using more sensitive, inclusive, and diverse-aware language, and on engaging in a more constructive manner.
"},{"location":"community/moderation/#tiered-responses","title":"Tiered Responses","text":" -
Tier One Response
User is welcomed in the channel, asked to read some scroll back, and given a link to participation guidelines.
-
Tier Two Response
User is gently reminded in channel to keep posts on topic, and/or of participation guidelines.
-
Tier Three Response
User is PM\u2019d by available Moderator to explain the problem(s) with their posts and given suggestions of what to do differently.
-
Tier Four Response
If behavior continues, User is kicked for no less than 24 hours from the Discord.
"},{"location":"community/moderation/#non-tiered-response-banning","title":"Non-Tiered Response Banning","text":"Intentionally disruptive individuals get kicked, not tiered. Repeated offenses will result in a ban.
"},{"location":"community/participation/","title":"Lagoon Participation Guidelines","text":"We ask that all members of our community, in any spaces, virtual or physical, adhere to our Code of Conduct.
These guidelines have been adapted from Drupal Diversity & Inclusion\u2019s Participation Guidelines.
- Listen actively, read carefully, and be understanding.
- If joining a conversation, read the backlog. Give other Participants the opportunity to communicate effectively.
- Assume good intent behind other Participants\u2019 statements. The open-source software community is very diverse, with Participants from all over the globe. Be aware of cultural and linguistic quirks.
- There are also many Participants who are new to this space. Assume that they have good intent but have not yet mastered the language or ideas. We want to help them!
- Speak from your own experience, instead of generalizing. Recognize the worth of others\u2019 experience. Try not to speak for others.
- Use \u201cI\u201d instead of \u201cthey,\u201d \u201cwe,\u201d and \u201cyou\u201d.
- All Participants should recognize that other Participants have their own unique experiences.
- Don\u2019t invalidate another Participant\u2019s story with your own spin on their experience. Instead, share your own story and experience.
- Challenge ideas, feelings, concerns, or one another by asking questions. Refrain from personal attacks. Focus on ideas first.
- Avoid verbal challenges, backhanded insults, gender/race/region stereotyping, etc.
- Take part to the fullest of your ability and availability.
- Community growth depends on the inclusion of individual voices. The channel wants you to speak up and speak out. Everyone has a different amount of time to contribute. We value participation here if you can give 5 minutes or 5 hours.
- We do welcome those who quietly come to lurk and learn, or \u201clurk,\u201d but please introduce yourself and say hello!
- Accept that it is not always the goal to agree.
- There are often many different \u201cright\u201d answers to technical issues, even though they may not work for your setup.
- Be conscious of language differences and unintended connotations.
- \u201cText is hard\u201d - be aware that it is difficult to communicate effectively via text.
- Acknowledge individuals\u2019 identities.
- Use stated names and pronouns. Do not challenge a person\u2019s race, sexuality, disability, etc.
- f you are unsure how to address someone, ask them discreetly and respectfully. For example, if you are unsure what pronouns to use, send a private message and ask. Using the correct pronouns will help others.
- Some off-topic conversation is okay.
- Some cross posting of announcements is okay. The following is not permitted:
- Thread hijacking
- Spamming
- Commercial advertising
- Overt self-promotion
- Excessive going off-topic, especially during official meeting times or focused conversations
- Consider announcing more appropriate places or times for in-depth off-topic conversations.
- If you are not sure what\u2019s appropriate, please contact an admin.
- Sharing content from inside Lagoon spaces must only be done with explicit consent. Any sharing must also be carefully considered, and without harassment or intent to harm any Participants.
- This forum should be considered public. Assume that anyone can and may read anything posted here.
- When sharing any Lagoon content, permission from all Participants must be obtained first. This applies whether content is quoted, summarized, or screenshotted. This includes sharing in any public medium: on Twitter, in a blog post, in an article, on a podcast, etc. These spaces are where the discussion and work in progress is taking place. Removing snippets of a conversation takes away context. This can distort and discourage discussion, especially when this is done without the goal of driving the Lagoon project forward.
- As stated above, if you take screenshots and post them to social media or other forums, you must get permission from the person that posted it. When getting permission, include the option of removing identifying information. Permission is still needed even if identifying information is removed. This includes any content from Discord, Github, or any other Lagoon medium.
- If you want to share something, just ask! \u201cHey, is it ok to share this on Twitter? I\u2019m happy to credit you!\u201d
- If it is necessary for a participant to take a screenshot to report harassing behavior to Lagoon moderators, this may be done without obtaining permission. It is not, however, acceptable to take screenshots to publicly or privately shame an individual. Again, this applies only to reporting harassing behavior.
- Address complaints between one another in the space when safe and appropriate.
- When safe, try to clarify and engage in the space where the conflict happened. For example, in the Discord channel.
- Ping admins or Community Manager (Alanna) when conflict is escalating.
- Ask for help.
- If the topic of conflict is off-topic for Lagoon, move the conversation to a more appropriate channel.
Additional considerations for in-person Lagoon spaces
- Follow the event\u2019s Code of Conduct, if there is one. If not, our Code of Conduct applies.
- Do not touch people, their mobility devices, or other assistive equipment without their consent. If someone asks you to stop a certain behavior, stop immediately.
- Report any issues to the event\u2019s staff. If an issue involves Lagoon team members, report to uselagoon@amazee.io.
The Lagoon team reserves the right to terminate anyone\u2019s access to the Lagoon spaces.
"},{"location":"concepts-advanced/","title":"Advanced Lagoon Concepts","text":"This section covers some of the more advanced concepts in Lagoon. If you're new to Lagoon, start with Basic Lagoon Concepts.
If you need help, contact your Lagoon administrator or reach out to the community and maintainers in our Discord.
"},{"location":"concepts-advanced/backups/","title":"Backups","text":"Lagoon provides multiple methods for backing up environment data. Automated backups are done without user interaction and manual backups are done on-demand, as requested by users.
"},{"location":"concepts-advanced/backups/#automated-backups","title":"Automated Backups","text":"By default, Lagoon will run nightly backups for each database and persistent volume. Daily backups are kept for seven days, and weekly backups are kept for six weeks.
Lagoon keeps an up to date list of available backups. To view them, check the Backups
tab of an environment in the Lagoon UI or use the Lagoon CLI (lagoon list backups --help
).
Lagoon administrators
Automated backups are reliant on the installation of K8up. Default settings can be configured per Lagoon remote.
"},{"location":"concepts-advanced/backups/#downloading","title":"Downloading","text":"In order to download the contents of a backup, it must first be retrieved. Click the Retrieve
button in the UI or run lagoon retrieve --help
. After some time (how long depends on how large the backup is), it will be available to download. Click the Download
button in the UI or run lagoon get backup --help
.
"},{"location":"concepts-advanced/backups/#configuring","title":"Configuring","text":"Automated backups can be disabled by setting the LAGOON_BACKUPS_DISABLED=true
environment variable.
The storage bucket name can be changed by setting the LAGOON_BAAS_BUCKET_NAME
environment variable. Do not change this unless asked by your Lagoon administrator.
"},{"location":"concepts-advanced/backups/#backup-schedules","title":"Backup Schedules","text":"Schedules use a cron-compatible syntax with the default being to run nightly backups (M H(22-2) * * *
). The M
is special to Lagoon to allow for load balancing, and must be set, any other value will cause build failures.
Timezones:
Backup schedules use the cluster's local timezone.
Each environment type can be configured to have it's own schedule:
Production
- The schedule can be set in code by changing the
backup-schedule
in the .lagoon.yml file. - The schedule can be set using environment variables: Name Value
LAGOON_FEATURE_FLAG_CUSTOM_BACKUP_CONFIG
enabled
LAGOON_BACKUP_PROD_SCHEDULE
Cron schedule
Development
The schedule can be set using environment variables:
Name Value LAGOON_FEATURE_FLAG_CUSTOM_BACKUP_CONFIG
enabled
LAGOON_BACKUP_DEV_SCHEDULE
Cron schedule Pull Request
The schedule can be set using environment variables:
Name Value LAGOON_FEATURE_FLAG_CUSTOM_BACKUP_CONFIG
enabled
LAGOON_BACKUP_PR_SCHEDULE
Cron schedule"},{"location":"concepts-advanced/backups/#backup-retention","title":"Backup Retention","text":"Backups will be held according to the following retention policy by default:
- Daily: 7
- Weekly: 6
Production environments can set a different retention policy by changing backup-retention
in the .lagoon.yml file.
Warning
Retention policies are evaluated by Restic, a 3rd party open source software. Make sure you are familiar with the policy options as they can be unintuitive.
Other environment types cannot set a different retention policy.
"},{"location":"concepts-advanced/backups/#storage-location","title":"Storage Location","text":"Lagoon supports custom backup locations and credentials for any project when all four of the following variables are set as BUILD
type variables. The environment variables need to be set at the project level (not per environment), and requires a Lagoon deployment after setting them (for every environment).
Danger
Using custom settings will override cluster default. Any misconfiguration or invalid/expired credentials may cause automated backups to fail or be inaccessible.
Environment variable name Purpose LAGOON_BAAS_CUSTOM_BACKUP_ENDPOINT
Specify the S3 compatible endpoint where any Lagoon initiated backups should be stored. An example for S3 Sydney would be: https://s3.ap-southeast-2.amazonaws.com
. LAGOON_BAAS_CUSTOM_BACKUP_BUCKET
Specify the bucket name where any Lagoon initiated backups should be stored.An example custom setting would be: example-restore-bucket
. LAGOON_BAAS_CUSTOM_BACKUP_ACCESS_KEY
Specify the access key Lagoon should use to access the custom backup bucket. An example custom setting would be: AKIAIOSFODNN7EXAMPLE
. LAGOON_BAAS_CUSTOM_BACKUP_SECRET_KEY
Specify the secret key Lagoon should use to access the custom backup bucket. An example custom setting would be: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
. No public access is needed on the S3 bucket and can be made entirely private.
Lagoon will automatically prune the files in these S3 buckets, so no object retention policy is needed at the bucket level.
"},{"location":"concepts-advanced/backups/#retrieval-location","title":"Retrieval Location","text":"Lagoon supports custom retrieval locations and credentials for any project when all four of the following variables are set as BUILD
type environment variables. The environment variables need to be set at the project level (not per environment), and requires a Lagoon deployment after setting them (for every environment).
Danger
Using custom settings will override cluster default. Any misconfiguration or invalid/expired credentials may cause retrieval of backups to fail or be inaccessible.
Environment variable name Purpose LAGOON_BAAS_CUSTOM_RESTORE_ENDPOINT
Specify the S3 compatible endpoint where any Lagoon initiated restores should be stored. An example for S3 Sydney would be: https://s3.ap-southeast-2.amazonaws.com
. LAGOON_BAAS_CUSTOM_RESTORE_BUCKET
Specify the bucket name where any Lagoon initiated restores should be stored.An example custom setting would be: example-restore-bucket
. LAGOON_BAAS_CUSTOM_RESTORE_ACCESS_KEY
Specify the access key Lagoon should use to access the custom restore bucket. An example custom setting would be: AKIAIOSFODNN7EXAMPLE
. LAGOON_BAAS_CUSTOM_RESTORE_SECRET_KEY
Specify the secret key Lagoon should use to access the custom restore bucket. An example custom setting would be: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
. The S3 bucket must have public access enabled, as Lagoon will create presigned URLs for the objects inside the bucket as needed.
An example AWS IAM policy that you can create to allow access to just the S3 bucket example-restore-bucket
is:
aws_iam_restore_policy.json{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"s3:GetBucketLocation\",\n\"s3:ListBucket\"\n],\n\"Resource\": [\n\"arn:aws:s3:::example-restore-bucket\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"s3:PutObject\",\n\"s3:GetObject\",\n\"s3:GetObjectVersion\",\n\"s3:GetBucketLocation\",\n\"s3:PutObjectAcl\"\n],\n\"Resource\": [\n\"arn:aws:s3:::example-restore-bucket/*\"\n]\n}\n]\n}\n
For increased security and reduced storage costs you can opt into removing restored backups after a set lifetime (e.g. 7 days). Lagoon caters for this scenario gracefully and will re-create any restored snapshots as needed.
"},{"location":"concepts-advanced/backups/#manual-backups","title":"Manual Backups","text":"Users can manually backup databases and files by running a task, syncing data from one environment to another, or by running custom commands in containers.
"},{"location":"concepts-advanced/backups/#tasks","title":"Tasks","text":"For Drupal projects, there are tasks available that will run drush backups. For non-Drupal projects, a custom task can be created to take a backup.
"},{"location":"concepts-advanced/backups/#sync","title":"Sync","text":"For Drupal projects, the use of drush
to sync the database and files is recommneded. For non-Drupal projects, lagoon-sync can be added to the project and used to sync the database and files.
"},{"location":"concepts-advanced/backups/#manual","title":"Manual","text":"The Lagoon cli base images contain all the tools needed to backup databases and transfer files. A user familiar with mysqldump
and rsync
can make manual backups.
"},{"location":"concepts-advanced/backups/#restoring-backups","title":"Restoring Backups","text":"Lagoon cannot automatically restore backups. After downloading the backups, users can restore them manually by copying them to the desired environment.
"},{"location":"concepts-advanced/base-images/","title":"Base Images","text":""},{"location":"concepts-advanced/base-images/#what-is-a-base-image","title":"What is a base image?","text":"A base image is a Docker image that can be and is used by a project deployed on Lagoon. A base image provides a way to ensure that nothing is brought into the codebase/project from upstream that has not been audited. It also allows us to ensure that anything we might need on the deployed environment is available - from lower-level libraries to application-level themes and modules.
Base images save time and resources when you know what system is being deployed to - if shared packages are included in the base image, they don\u2019t have to be deployed to hundreds of sites individually.
"},{"location":"concepts-advanced/base-images/#derived-images","title":"Derived images","text":"A derived image is one that extends a base image. For example, you might need to make several blog sites. You take our Drupal image, customize it to include all of the modules and themes you need for your blog sites, and deploy them all with that blog image. Templates are derived from base images.
All derived images should pull in the composer.json
file (via repositories like Packagist, Satis, or GitHub) so that they are using the most recent versions of the base packages.
Further, the derived image includes a call to the script /build/pre_composer
, which can be used by the base image to run scripts, updates, etc., downstream in the derived images. For instance, it should run by default when any package is updated or installed at the derived image, and the pre_composer
script will then update the base image package.
"},{"location":"concepts-advanced/base-images/#anatomy-of-a-base-image","title":"Anatomy of a base image","text":"Info
This document will talk about Drupal and Laravel base images as examples, as it was originally written for a client who uses those technologies in their Lagoon projects. It will be expanded to cover the contents of other base images, but none of the processes differ, no matter what the content of your base image.
Base images are managed with Composer and hosted in BitBucket, GitHub, or GitLab (whatever your team is using). Each base image has its own repository.
"},{"location":"concepts-advanced/base-images/#metapackages","title":"Metapackages","text":"The metapackage is a Composer package that wraps several other components. These include, for example, the core files for Laravel or Drupal, along with any needed modules or themes. This way, you do not need to include Laravel or Drupal, etc., as a dependency in your project.
Here\u2019s an example from the composer.json
in a Laravel base image:
composer.json\"require\": {\n \"amazeelabs/algm_laravel_baseimage\": \"*\"\n},\n
We only require this metapackage, which points to a GitHub repository.
"},{"location":"concepts-advanced/base-images/#docker-composeyml","title":"docker-compose.yml
","text":"Other pieces of your project are defined in docker-compose.yml
. For example, if you have a Drupal project, you need the Drupal image, but you also need MariaDB, Solr, Redis, and Varnish. We have versions of these services optimized for Drupal, all of which are included in docker-compose.yml
.
"},{"location":"concepts-advanced/base-images/#drupal","title":"Drupal","text":"The Drupal base image contains the following contributed tools and modules, in addition to Drupal core:
- Drupal Console
- Drush
- Configuration Installer
- Redis
- Poll
- Search API
- Search API Solr
- Varnish Purge
- Purge
- Admin Toolbar
- CDN
- Password Policy
- Pathauto
- Ultimate Cron
"},{"location":"concepts-advanced/base-images/#laravel","title":"Laravel","text":""},{"location":"concepts-advanced/base-images/#configuration","title":"Configuration","text":"The base images have provided the default values for the environment variables used by Laravel.
These are values for:
DB_CONNECTION
DB_HOST
DB_PORT
DB_DATABASE
DB_USERNAME
DB_PASSWORD
REDIS_HOST
REDIS_PASSWORD
REDIS_PORT
Ensure that your config files (typically located in /config
) make use of these by default.
"},{"location":"concepts-advanced/base-images/#queues","title":"Queues","text":"If your project makes use of queues, you can make use of the artisan-worker
service. It is a worker container, used for executing artisan queue:work
. This is disabled by default - look at the comments in docker-compose.yml
.
"},{"location":"concepts-advanced/base-images/#understanding-the-process-of-building-a-base-image","title":"Understanding the process of building a base image","text":"There are several parts to the process of building a base image. All of the major steps are represented in the Makefile. The Jenkinsfile contains a more stripped-down view. Taking a look at both files will give you a good understanding of what happens during this process. Most steps can be tested locally (this is important when building new versions of the base image). After you\u2019ve created and tested everything locally and pushed it up, the actual base image is built by Jenkins and pushed to Harbor.
"},{"location":"concepts-advanced/base-images/#makefile-and-build-assumptions","title":"Makefile and build assumptions","text":"If you're planning on running locally, there are some minimum environment variables that need to be present to build at all.
"},{"location":"concepts-advanced/base-images/#base-image-build-variables","title":"Base image build variables","text":"Variables injected into the base image build process and where to find them.
BUILD_NUMBER
- This is injected by Jenkins automatically. GIT_BRANCH
- This is provided by the Jenkins build process itself. Depends on the branch being built at the time (develop, main, etc.). DOCKER_REPO
/DOCKER_HUB
- This is defined inside the Jenkinsfile itself. It points to the Docker project and hub into which the resulting images will be pushed. DOCKER_USERNAME
/DOCKER_PASSWORD
- These are used to actually log into the Docker repository early in the build. These variables are stored inside of the Jenkins credentials. These are used in the Jenkinsfile itself and are not part of the Makefile. This means that if you\u2019re building base images outside of Jenkins (i.e. locally, to test, etc.) you have to run a docker login
manually before running any of the make steps.
In practice, this means that if you're running any of the make
targets on your local machine, you'll want to ensure that these are available in the environment - even if this is just setting them when running make from the command line, as an example:
Setting make targets locallyGIT_BRANCH=example_branch_name DOCKER_HUB=the_docker_hub_the_images_are_pushed_to DOCKER_REPO=your_docker_repo_here BUILD_NUMBER=<some_integer> make images_remove\n
"},{"location":"concepts-advanced/base-images/#makefile-targets","title":"Makefile targets","text":"The most important targets are the following:
images_build
: Given the environment variables, this will build and tag the images for publication. images_publish
: Pushes built images to a Docker repository. images_start
: Will start the images for testing, etc. images_test
: Runs basic tests against images. images_remove
: Removes previously built images, given the build environment variables.
"},{"location":"concepts-advanced/base-images/#example-workflow-for-building-a-new-release-of-a-base-image","title":"Example workflow for building a new release of a base image","text":"There are several steps to the build process. Most of these are shared among the various base images. These mostly correspond to the Makefile target described above.
- Docker Login - The Docker username, password, and URL for Harbor are passed to the Docker client.
- Docker Build - The
make images_build
step is run now, which will: - Ensure that all environment variables are prepared for the build.
- Run a
docker compose build
. This will produce several new Docker images from the current Git branch.
- Images Test - This will run the
make images_test
target, which will differ depending on the images being tested. In most cases this is a very straightforward test to ensure that the images can be started and interacted with in some way (installing Drupal, listing files, etc.) - Docker Push - This step runs the logic (contained in the make target
images_publish
) that will tag the images resulting from the Docker Build in Step 2 and push them to Harbor. This is described in more detail elsewhere in this guide. - Docker Clean Images - Runs the make target
images_remove
, which simply deletes the newly built images from the Docker host now that they are in Harbor.
"},{"location":"concepts-advanced/base-images/#releasing-a-new-version-of-a-base-image","title":"Releasing a new version of a base image","text":"There are many reasons to release a new version of a base image. On Drupal or Laravel, Node.js, etc. images, it may be in order to upgrade or install a module/package for features or security. It may be about the underlying software that comes bundled in the container, such as updating the version of PHP or Node.js. It may be about updating the actual underlying images on which the base images are built.
The images that your project's base images are built on are the managed images maintained by the Lagoon team. We release updates to these underlying images on a monthly (or more fequent) basus. When these are updated, you need to build new versions of your own base images in order to incorporate the changes and upgrades bundled in the upstream images.
In this section we will demonstrate the process of updating and tagging a new release of the Drupal 8 base image. We will add a new module (ClamAV) to the base. We\u2019re demonstrating on Drupal because it has the most complex setup of the base images. The steps that are common to every base image are noted below.
"},{"location":"concepts-advanced/base-images/#step-1-pull-down-the-base-image-locally","title":"Step 1 - Pull down the base image locally","text":"This is just pulling down the Git repository locally. In the case of the Drupal 8 base image. In this example, we're using Bitbucket, so we will run:
Clone Git repo.git clone ssh://git@bitbucket.biscrum.com:7999/webpro/drupal8_base_image.git\n
"},{"location":"concepts-advanced/base-images/#step-2-make-the-changes-to-the-repository","title":"Step 2 - Make the changes to the repository","text":"Info
What is demonstrated here is specific to the Drupal 8 base image. However, any changes (adding files, changing base Docker images, etc.) will be done in this step for all of the base images.
In our example, we are adding the ClamAV module to the Drupal 8 base image. This involves a few steps. The first is requiring the package so that it gets added to our composer.json
file. This is done by running a composer require
.
Here we run:
Install package with Composer require.composer require drupal/clamav\n
When the Composer require process completes, the package should then appear in the composer.json
file.
Here we open the composer.json
file and take a look at the list of required packages, and check that the ClamAV package is listed, and see that it is there:
"},{"location":"concepts-advanced/base-images/#step-22-ensure-that-the-required-drupal-module-is-enabled-in-template-based-derived-images","title":"Step 2.2 - Ensure that the required Drupal module is enabled in template-based derived images","text":"For any modules now added to the base image, we need to ensure that they\u2019re enabled on the template-based derived images. This is done by adding the module to the Lagoon Bundle module located at ./web/modules/lagoon/lagoon_bundle
. Specifically, it requires you to add it as a dependency to the dependencies
section of the lagoon_bundle.info.yml
file. The Lagoon Bundle module is a utility module that exists only to help enforce dependencies across derived images.
Here we open web/modules/contrib/lagoon/lagoon_bundle/lagoon_bundle.info.yml
and add clamav:clamav
as a dependency:
Adding a dependency to this will ensure that whenever the Lagoon Bundle module is enabled on the derived image, its dependencies (in this case, the just-added ClamAV module) will also be enabled. This is enforced by a post-rollout script which enables lagoon_bundle
on the derived images when they are rolled out.
"},{"location":"concepts-advanced/base-images/#step-23-test","title":"Step 2.3 - Test","text":"This will depend on what you\u2019re testing. In the case of adding the ClamAV module, we want to ensure that in the base image, the module is downloaded, and that the Lagoon Bundle module enables ClamAV when it is enabled.
Here we check that the module is downloaded to /app/web/modules/contrib
:
And then we check that when we enable the lagoon_bundle
module, it enables clamav
by running:
Enable module with Drush.drush pm-enable lagoon_bundle -y\n
Warning
You\u2019ll see that there is a JWT error in the container above. You can safely ignore this in the demonstration above - but, for background, you will see this error when there is no Lagoon environment for the site you\u2019re working on.
With our testing done, we can now tag and build the images.
"},{"location":"concepts-advanced/base-images/#step-3-tagging-images","title":"Step 3 - Tagging images","text":"Images are versioned based on their Git tags - these should follow standard semantic versioning (semver) practices. All tags should have the structure vX.Y.Z where X, Y, and Z are integers (to be precise the X.Y.Z are themselves the semantic version - the vX.Y.Z is a tag). This is an assumption that is used to determine the image tags, so it must be adhered to.
In this example we will be tagging a new version of the Drupal 8 base image indicating that we have added ClamAV.
"},{"location":"concepts-advanced/base-images/#here-we-demonstrate-how-to-tag-an-image","title":"Here we demonstrate how to tag an image","text":"We check that we have committed (but not pushed) our changes, just as you would do for any regular commit and push, using git log
.
- Commit your changes if you haven\u2019t yet.
- We then check to see what tag we are on using
git tag
. - Then, tag them using
git tag -a v0.0.9 -m \u201cAdds clamAV to base.\u201d
- git -a, --annotate: Make an unsigned, annotated tag object
- Next, we push our tags with
git push --tags
. - And finally, push all of our changes with
git push
.
Danger
The tags must be pushed explicitly in their own step!
"},{"location":"concepts-advanced/base-images/#how-git-tags-map-to-image-tags","title":"How Git tags map to image tags","text":"Danger
Depending on the build workflow, you will almost certainly push the changes via the develop branch before merging it into the main branch.
An important point to remember here is that the Jenkins base image build process will tag images based on the most recent commit\u2019s tag.
Images are tagged using the following rules, and images will be built for each of these that apply:
- When the main branch is built, it is tagged as
latest
. - When the develop branch is built, it is tagged as
development
. - If the commit being built is tagged then that branch will be built with that commit\u2019s tag.
- This is how we release a new version as we demonstrated above. It can also be used to make ad hoc builds with fairly arbitrary tags - be reasonable with the tag names, it has only been tested with semver tags.
"},{"location":"concepts-advanced/base-images/#step-4-building-the-new-base-images","title":"Step 4 - Building the new base images","text":"Info
Generally you will have a trigger strategy set up here for automatic builds, but as that will differ based on your needs and setup, this explains how to build manually.
- Visit your Lagoon Jenkins instance.
- Select the project you are working on (in this case, AIOBI Drupal 8 Base).
- Click the branch you would like to build.
- Click \u201cBuild Now.\u201d
This will kick off the build process which, if successful, will push up the new images to Harbor.
If the build is not successful, you can click into the build itself and read the logs to understand where it failed.
As shown in the screenshot below from Harbor, the image we\u2019ve just built in Jenkins has been uploaded and tagged in Harbor, where it will now be scanned for any vulnerabilities. Since it was tagged as v0.0.9, an image with that tag is present, and because we built the main branch, the \u201clatest\u201d image has also been built. At this stage, the v0.0.9 and \u201clatest\u201d images are identical.
"},{"location":"concepts-advanced/base-images/#acknowledgement","title":"Acknowledgement","text":"The base image structure draws heavily (and, in fact, is a fork of) Denpal. It is based on the original Drupal Composer Template, but includes everything necessary to run on Lagoon (either the local development environment or on hosted Lagoon).
"},{"location":"concepts-advanced/environment-idling/","title":"Environment Idling (optional)","text":""},{"location":"concepts-advanced/environment-idling/#what-is-the-environment-idler","title":"What is the Environment Idler?","text":"Lagoon can utilize the Aergia controller, (installed in the lagoon-remote
) to automatically idle environments if they have been unused for a defined period of time. This is done in order to reduce the load on the Kubernetes clusters and improve the overall performance of production environments and development environments that are actually in use.
"},{"location":"concepts-advanced/environment-idling/#how-does-an-environment-get-idled","title":"How does an environment get idled?","text":"The environment idler has many different configuration capabilities. Here are the defaults of a standard Lagoon installation (these could be quite different in your Lagoon, contact your Lagoon administrator!)
- Idling is tried every 4 hours.
- Production environments are never idled.
- CLI pods are idled if they don't include a cron job and if there is no remote shell connection active.
- All other services and pods are idled if there was no traffic on the environment in the last 4 hours.
- If there is an active build happening, there will be no idling.
"},{"location":"concepts-advanced/environment-idling/#how-does-an-environment-get-un-idled","title":"How does an environment get un-idled?","text":"Aergia will automatically un-idle an environment as soon as it is visited, therefore just visiting any URL of the environment will start the environment. Likewise, initiating an SSH session to the environment will also restart the services.
The un-idling will take a couple of seconds, as the Kubernetes cluster needs to start all containers again. During this time there will be waiting screen shown to the visitor that their environment is currently started.
"},{"location":"concepts-advanced/environment-idling/#can-i-disable-prevent-the-idler-from-idling-my-environment","title":"Can I disable / prevent the Idler from idling my environment?","text":"The field autoIdle
can be set at the project level (impacts all environments) or for a single environment (target just one environment), as to whether idling is allowed to take place. A value of 1
indicates the project/environment is eligible for idling. If the project is set to 0
, then all environments will never be idled. The default value is 1
(idling is enabled).
Contact your Lagoon administrator if you are unsure how to set these project/environment fields.
"},{"location":"concepts-advanced/environment-types/","title":"Environment Types","text":"Lagoon currently differentiates between two different environment types: production
and development
.
When setting up your project via the Lagoon GraphQL API, you can define a productionEnvironment
. On every deployment Lagoon executes, it checks if the current environment name matches what is defined in productionEnvironment
. If it does, Lagoon will mark this environment as the production
environment. This happens in two locations:
- Within the GraphQL API itself.
- As an environment variable named
LAGOON_ENVIRONMENT_TYPE
in every container.
But that's it. Lagoon itself handles development
and production
environments in exactly the same way (in the end we want as few differences of the environments as possible - that's the beauty of Lagoon).
There are a couple of things that will use this information:
- By default,
development
environments are idled after 4 hours with no hits (don't worry, they wake up automatically). It is also possible for your Lagoon administrator to disable auto-idling on a per-environment basis, just ask! - Our default Drupal
settings.php
files load additional settings files for development.settings.php
and production.settings.php
so you can define settings and configurations different per environment type. - If you try to delete an environment that is defined as the production environment (either via webhooks or REST), Lagoon will politely refuse to delete the production environment, as it tries to prevent you from making a mistake. In order to delete a production environment, you can either change the
productionEnvironment
in the API or use the secret forceDeleteProductionEnvironment: true
POST payload for the REST API. - Sometimes your Lagoon administrator might use the production environment information for some additional things, such as calculating only the hits of the production environments to calculate the price of the hosting.
"},{"location":"concepts-advanced/environment-variables/","title":"Environment Variables","text":"It is common to store API tokens or credentials for applications in environment variables.
Following best practices, those credentials are different per environment. We allow each environment to use a separate set of environment variables defined in environment variables or environment files.
As there can be environment variables defined in either the Dockerfile or during runtime (via API environment variables), we have a hierarchy of environment variables: environment variables defined in lower numbers are stronger.
- Environment variables (defined via Lagoon API) - environment specific.
- Environment variables (defined via Lagoon API) - project-wide.
- Environment variables defined in Dockerfile (
ENV
command). - Environment variables defined in
.lagoon.env.$LAGOON_GIT_BRANCH
or .lagoon.env.$LAGOON_GIT_SAFE_BRANCH
(if the file exists and where $LAGOON_GIT_BRANCH
$LAGOON_GIT_SAFE_BRANCH
are the name and safe name of the branch this Docker image has been built for), use this for overwriting variables for only specific branches. - Environment variables defined in
.lagoon.env
(if it exists), use this for overwriting variables for all branches. - Environment variables defined in
.env
. - Environment variables defined in
.env.defaults
.
.lagoon.env.$LAGOON_GIT_BRANCH
, .lagoon.env.$LAGOON_GIT_SAFE_BRANCH
, .env
, and .env.defaults
are all sourced by the individual containers themselves as part of running their entrypoint scripts. They are not read by Lagoon, but by the containers ENTRYPOINT
scripts, which look for them in the containers working directory. If environment variables don't appear as expected, check if your container has a WORKDIR
setting that points to somewhere else.
"},{"location":"concepts-advanced/environment-variables/#environment-variables-lagoon-api","title":"Environment Variables (Lagoon API)","text":"We suggest using the Lagoon API environment variable system for variables that you don't want to keep in your Git repository (like secrets or API keys), as they could be compromised by somebody having them on their local development environment or on the internet, etc.
The Lagoon API allows you to define project-wide or environment-specific variables. Additionally, they can be defined for a scope-only build-time or runtime. They are all created via the Lagoon GraphQL API. Read more on how to use the GraphQL API in our GraphQL API documentation.
"},{"location":"concepts-advanced/environment-variables/#runtime-environment-variables-lagoon-api","title":"Runtime Environment Variables (Lagoon API)","text":"Runtime environment variables are automatically made available in all containers, but they are only added or updated after an environment has been re-deployed.
This defines a project wide runtime variable (available in all environments) for the project with ID 463
:
Add runtime variablemutation addRuntimeEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:RUNTIME,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"\n}\n) {\nid\n}\n}\n
This defines a environment ID 546
specific runtime variable (available only in that specific environment):
Define environment IDmutation addRuntimeEnv {\naddEnvVariable(\ninput:{\ntype:ENVIRONMENT,\ntypeId:546,\nscope:RUNTIME,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"\n}\n) {\nid\n}\n}\n
"},{"location":"concepts-advanced/environment-variables/#build-time-environment-variables-lagoon-api","title":"Build-time Environment Variables (Lagoon API)","text":"Build-time environment variables are only available during a build and need to be consumed in Dockerfiles via:
Using build-time environment variablesARG MYVARIABLENAME\n
Typically the ARG
will go after the FROM. Read the docker documentation about ARG and FROM.
This defines a project-wide build-time variable (available in all environments) for the project with ID 463
:
Define a project-wide build-time variablemutation addBuildtimeEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:BUILD,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"}\n) {\nid\n}\n}\n
This defines an environment ID 546
specific build-time variable (available only in that specific environment):
Define environment IDmutation addBuildtimeEnv {\naddEnvVariable(input:{type:ENVIRONMENT, typeId:546, scope:BUILD, name:\"MYVARIABLENAME\", value:\"MyVariableValue\"}) {\nid\n}\n}\n
Container registry environment variables are only available during a build and are used when attempting to log in to a private registry. They are used to store the password for the user defined in Specials \u00bb container-registries
. They can be applied at the project or environment level.
This defines a project-wide container registry variable (available in all environments) for the project with ID 463
:
Define project-wide container registry variablemutation addContainerRegistryEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:CONTAINER_REGISTRY,\nname:\"MY_OWN_REGISTRY_PASSWORD\",\nvalue:\"MySecretPassword\"})\n) {\nid\n}\n}\n
This defines a environment ID 546
specific container registry variable (available only in that specific environment):
Define environment IDmutation addContainerRegistryEnv {\naddEnvVariable(\ninput:{\ntype:ENVIRONMENT,\ntypeId:546,\nscope:CONTAINER_REGISTRY,\nname:\"MY_OWN_REGISTRY_PASSWORD\",\nvalue:\"MySecretPassword\"}\n) {\nid\n}\n}\n
"},{"location":"concepts-advanced/environment-variables/#global-environment-variables-lagoon-api","title":"Global Environment Variables (Lagoon API)","text":"Global environment variables are available as both a build-time environment variable so that it may be consumed by builds, and also a runtime variable so that it is available within running containers.
"},{"location":"concepts-advanced/environment-variables/#environment-files-existing-directly-in-the-git-repo","title":"Environment Files (existing directly in the Git Repo)","text":"If you have environment variables that can safely be saved within a Git repository, we suggest adding them directly into the Git repository in an environment file. These variables will also be available within local development environments and are therefore more portable.
The syntax in the environment files is as following:
myenvironment.envMYVARIABLENAME=\"MyVariableValue\"\nMVARIABLENUMBER=4242\nDB_USER=$DB_USERNAME # Redefine DB_USER with the value of DB_USERNAME e.g. if your application expects another variable name for the Lagoon-provided variables.\n
"},{"location":"concepts-advanced/environment-variables/#lagoonenvbranchname","title":".lagoon.env.$BRANCHNAME
","text":"If you want to define environment variables different per environment you can create a .lagoon.env.$BRANCHNAME
e.g. for the main branch .lagoon.env.main
. This helps you keep environment variables apart between environments.
"},{"location":"concepts-advanced/environment-variables/#env-and-envdefaults","title":".env
and .env.defaults
","text":".env
and .env.defaults
will act as the default values for environment variables if none other is defined. For example, as default environment variables for pull request environments (see Workflows).
"},{"location":"concepts-advanced/environment-variables/#special-environment-variables","title":"Special Environment Variables","text":""},{"location":"concepts-advanced/environment-variables/#php_error_reporting","title":"PHP_ERROR_REPORTING
","text":"This variable, if set, will define the logging level you would like PHP to use. If not supplied, it will be set dynamically based on whether this is a production or development environment.
On production environments, this value defaults to E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
.
On development environments, this value defaults to E_ALL & ~E_DEPRECATED & ~E_STRICT
.
"},{"location":"concepts-advanced/feature-flags/","title":"Feature flags","text":"Some Lagoon features can be controlled by setting feature flags. This is designed to assist users and administrators to roll out new platform features in a controlled manner.
"},{"location":"concepts-advanced/feature-flags/#environment-variables","title":"Environment variables","text":"The following environment variables can be set on an environment or project to toggle feature flags.
Environment Variable Name Active scope Version introduced Version removed Default Value Description LAGOON_FEATURE_FLAG_ROOTLESS_WORKLOAD
global
2.2.0 - disabled
Set to enabled
to set a non-root pod security context on the pods in this environment or project.This flag will eventually be deprecated, at which point non-root workloads will be enforced. LAGOON_FEATURE_FLAG_ISOLATION_NETWORK_POLICY
global
2.2.0 - disabled
Set to enabled
to add a default namespace isolation network policy to each environment on deployment.This flag will eventually be deprecated, at which point the namespace isolation network policy will be enforced.NOTE: enabling and then disabling this feature will not remove any existing network policy from previous deployments. Those must be removed manually."},{"location":"concepts-advanced/feature-flags/#cluster-level-controls","title":"Cluster-level controls","text":"Feature flags may also be controlled at the cluster level. There is support for this in the lagoon-build-deploy
chart. For each feature flag there are two flavours of values which can be set: default
and force
.
default
controls the default policy for environments deployed to the cluster, but can be overridden at the project or environment level by the environment variables documented above. force
also controls the policy for environments deployed to the cluster, but cannot be overridden by the environment variables documented above.
"},{"location":"concepts-advanced/service-types/","title":"Service Types","text":"The below lists all service types that can be defined via lagoon.type
within a docker-compose.yml
file.
Warning
Once a lagoon.type
is defined and the environment is deployed, changing it to a different type is not supported and could result in a broken environment.
"},{"location":"concepts-advanced/service-types/#additional-volumes","title":"Additional Volumes","text":"Some service types allow for additional volumes to be added, for more information on the lagoon.volumes.X.path
label, please see Additional Volumes
If you're provisioning a new project, we recommend avoiding the usage of -persistent
service types, and use additional volumes as required for any persistent data.
"},{"location":"concepts-advanced/service-types/#additional-service-ports","title":"Additional Service Ports","text":"Most services provide a default port, in cases where you want to use the services already defined in your docker-compose.yml
file, you can configure a service to use those ports instead.
To use this feature, you set the lagoon.service.usecomposeports: true
label on the service in your docker-compose.yml
file. For more information on how to use this feature, see Additional Service Ports
"},{"location":"concepts-advanced/service-types/#basic","title":"basic
","text":"Basic container, good to use for most applications that don't have an existing template. No persistent storage. The port can be changed using a label. If an autogenerated route is not required (e.g. for an internal-facing service, set lagoon.autogeneratedroute: false
in the docker-compose.yml)
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3000
3000
Yes No lagoon.service.port
, lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#basic-persistent","title":"basic-persistent
","text":"Like basic
. Will also generate persistent storage, defines mount location via lagoon.persistent
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3000
3000
Yes Yes lagoon.service.port
, lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#basic-single","title":"basic-single
","text":"Like basic-persistent
. This will also generate persistent storage, defines mount location via lagoon.persistent
.
Where this differs from basic-persistent
is that the volume is a ReadWriteOnce
volume type. The downsides to this service type are that it can't be scaled.
This service type does not support additional volumes.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3000
3000
Yes Yes lagoon.service.port
, lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#cli","title":"cli
","text":"Use for any kind of CLI container (like PHP, Node.js, etc). Automatically gets the customer SSH private key that is mounted in /var/run/secrets/lagoon/sshkey/ssh-privatekey
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - No No No lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#cli-persistent","title":"cli-persistent
","text":"Like cli
, expects lagoon.persistent.name
to be given the name of a service that has persistent storage, which will be mounted under defined lagoon.persistent
label. Does NOT generate its own persistent storage, only used to mount another service's persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - No No Yes lagoon.persistent.name
, lagoon.persistent
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#elasticsearch","title":"elasticsearch
","text":"Elasticsearch container, will auto-generate persistent storage under /usr/share/elasticsearch/data
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP on localhost:9200/_cluster/health?local=true
9200 No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#mariadb","title":"mariadb
","text":"A meta-service which will tell Lagoon to automatically decide between mariadb-single
and mariadb-dbaas
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - - - - -"},{"location":"concepts-advanced/service-types/#mariadb-single","title":"mariadb-single
","text":"MariaDB container. Creates cron job for backups running every 24h executing /lagoon/mysql-backup.sh 127.0.0.1
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3306
3306
No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#mariadb-dbaas","title":"mariadb-dbaas
","text":"Uses a shared MariaDB server via the DBaaS Operator.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter Not Needed 3306
No - -"},{"location":"concepts-advanced/service-types/#mongo","title":"mongo
","text":"A meta-service which will tell Lagoon to automatically decide between mongo-single
and mongo-dbaas
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - - - - -"},{"location":"concepts-advanced/service-types/#mongo-single","title":"mongo-single
","text":"MongoDB container, will generate persistent storage of min 1GB mounted at /data/db
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 27017
27017
No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#mongo-dbaas","title":"mongo-dbaas
","text":"Uses a shared MongoDB server via the DBaaS Operator.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter Not Needed 27017
No - -"},{"location":"concepts-advanced/service-types/#nginx","title":"nginx
","text":"NGINX container. No persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter localhost:50000/nginx_status
8080
Yes No lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#nginx-php","title":"nginx-php
","text":"Like nginx
, but additionally a php
container.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter NGINX: localhost:50000/nginx_status
, PHP: /usr/sbin/check_fcgi
8080
Yes No lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#nginx-php-persistent","title":"nginx-php-persistent
","text":"Like nginx-php.
Will generate persistent storage, defines mount location via lagoon.persistent
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter NGINX: localhost:50000/nginx_status
, PHP: /usr/sbin/check_fcgi
http on 8080
Yes Yes lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#node","title":"node
","text":"Node.js container. No persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3000
3000
Yes No lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#node-persistent","title":"node-persistent
","text":"Like node
. Will generate persistent storage, defines mount location via lagoon.persistent
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 3000
3000
Yes Yes lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#none","title":"none
","text":"Instructs Lagoon to completely ignore this service.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - - - - -"},{"location":"concepts-advanced/service-types/#opensearch","title":"opensearch
","text":"OpenSearch container, will auto-generate persistent storage under /usr/share/opensearch/data
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP on localhost:9200/_cluster/health?local=true
9200 No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#postgres","title":"postgres
","text":"A meta-service which will tell Lagoon to automatically decide between postgres-single
and postgres-dbaas
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - - - - -"},{"location":"concepts-advanced/service-types/#postgres-single","title":"postgres-single
","text":"Postgres container. Creates cron job for backups running every 24h executing /lagoon/postgres-backup.sh localhost
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 5432
5432
No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#postgres-dbaas","title":"postgres-dbaas
","text":"Uses a shared PostgreSQL server via the DBaaS Operator.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter Not Needed 5432
No - -"},{"location":"concepts-advanced/service-types/#python","title":"python
","text":"Python container. No persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP connection on 8800
8800
Yes No lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#python-persistent","title":"python-persistent
","text":"Python container. With persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP connection on 8800
8800
Yes Yes lagoon.autogeneratedroute
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#redis","title":"redis
","text":"Redis container.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 6379
6379
No No -"},{"location":"concepts-advanced/service-types/#redis-persistent","title":"redis-persistent
","text":"Redis container with auto-generated persistent storage mounted under /data
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 6379
6379
No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#solr","title":"solr
","text":"Solr container with auto-generated persistent storage mounted under /var/solr
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter TCP connection on 8983
8983
No Yes lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#varnish","title":"varnish
","text":"Varnish container.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP request localhost:8080/varnish_status
8080
Yes No lagoon.autogeneratedroute
"},{"location":"concepts-advanced/service-types/#varnish-persistent","title":"varnish-persistent
","text":"Varnish container with auto-generated persistent storage mounted under /var/cache/varnish
.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter HTTP request localhost:8080/varnish_status
8080
Yes Yes lagoon.autogeneratedroute
, lagoon.persistent.size
"},{"location":"concepts-advanced/service-types/#worker","title":"worker
","text":"Use for any kind of worker container (like queue workers, etc.) where there is no exposed service port.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - No No No lagoon.volumes.X.path
"},{"location":"concepts-advanced/service-types/#worker-persistent","title":"worker-persistent
","text":"Like worker
, expects lagoon.persistent.name
to be given the name of a service that has persistent storage, which will be mounted under defined lagoon.persistent
label. Does NOT generate its own persistent storage, only used to mount another service's persistent storage.
Healthcheck Exposed Ports Auto Generated Routes Storage Additional customization parameter - No No Yes lagoon.persistent.name
, lagoon.persistent
, lagoon.volumes.X.path
"},{"location":"concepts-advanced/workflows/","title":"Workflows","text":"Lagoon tries to support any development workflow possible. It specifically does not enforce any workflows onto teams, so that each development team can define how they would like to develop and deploy their code.
"},{"location":"concepts-advanced/workflows/#fixed-branches","title":"Fixed Branches","text":"The most straightforward workflows are deployment-based on some fixed branches:
You define which branches (like develop
, staging
and main
, which would be ^(develop|staging|main)$
as regular expressions) that Lagoon should deploy and it will do so. Done!
If you would like to test a new feature, merge them into a branch that you have set up locally and push, and Lagoon will deploy the feature and you can test. When all is good, merge the branch into your production branch and push.
"},{"location":"concepts-advanced/workflows/#feature-branches","title":"Feature Branches","text":"A bit more advanced are feature branches. Since Lagoon supports the ability to define the branches you would like to deploy via regular expressions, you can also extend the above regular expression to this: ^feature\\/|^(staging|main)$
. This will instruct Lagoon to deploy all branches that start with feature/
, plus the branches called staging
and main
. Our development workflow could be as following:
- Create a new branch from
main
called feature/myfeature
and push feature/myfeature
. - Lagoon will deploy the branch
feature/myfeature
as a new environment, where you can test your feature independently of any other features. - Merge
feature/myfeature
into the main
branch and it will deploy to your production environment.
If you like, you can also merge feature/myfeature
and any other feature branches into staging
first, in order to test the functionality of multiple features together. After you have tested the features together on staging, you can merge the features into main.
This workflow needs a high level of branch pruning and cleanliness in your Git repository. Since each feature branch will create its own Lagoon environment, you can have very quickly generate a LOT of environments, which all of them will use resources. Be sure to merge or delete unused branches.
Because of this, it could make sense to think about a pull request based workflow.
"},{"location":"concepts-advanced/workflows/#pull-requests","title":"Pull requests","text":"Even more advanced are workflows via pull requests. Such workflows need the support of a Git hosting which supports pull requests (also called merge requests). The idea of pull request-based workflows lies behind that idea that you can test a feature together with a target branch, without actually needing to merge yet, as Lagoon will do the merging for you during the build.
In our example we would configure Lagoon to deploy the branches ^(staging|main)$
and the pull requests to .*
(to deploy all pull requests). Now our workflow would be:
- Create a new branch from
main
called feature/myfeature
and push feature/myfeature
(no deployment will happen now because we have only specific staging and main as our branches to be deployed). - Create a pull request in your Git hosting from
feature/myfeature
into main
. - Lagoon will now merge the
feature/myfeature
branch on top of the main
branch and deploy that resulting code for you. - Now you can test the functionality of the
feature/myfeature
branch just as if it had been merged into main
, so all changes that have happened in main
since you created the feature/myfeature
branch from it will be there, and you don't need to worry that you might have an older version of the main
branch. - If there is a merge conflict, the build will fail, Lagoon will stop and notify you.
- After you have tested your pull request branch, you can go back to your Git hosting and actually merge the code into
main
. This will now trigger a deployment of main
. - When the pull request is merged, it is automatically closed and Lagoon will remove the environment for the pull request automatically.
Some teams might opt to create the pull request against a shared staging
branch and then merge the staging
branch into the main
branch via another pull request. This depends on the kind of Git workflow you're using.
Additionally, in Lagoon you can define that only pull requests with a specific text in the title are deployed. [BUILD]
defined as regular expression will only deploy pull requests that have a title like [BUILD] My Pull Request
, while a pull request with that title My other Pull Request
is not automatically deployed. This helps to keep the amount of environments small and allows for pull requests that don't need an environment yet.
"},{"location":"concepts-advanced/workflows/#automatic-database-sync-for-pull-requests","title":"Automatic Database Sync for Pull requests","text":"Automatic pull request environments are a fantastic thing. But it would also be handy to have the database synced from another environment when those environments are created. Lagoon can handle that!
The following example will sync the staging database on the first rollout of the pull request environment:
.lagoon.ymltasks:\npost-rollout:\n- run:\nname: IF no Drupal installed & Pullrequest = Sync database from staging\ncommand: |\nif [[ -n ${LAGOON_PR_BASE_BRANCH} ]] && tables=$(drush sqlq 'show tables;') && [ -z \"$tables\" ]; then\ndrush -y sql-sync @staging default\nfi\nservice: cli\nshell: bash\n
"},{"location":"concepts-advanced/workflows/#promotion","title":"Promotion","text":"Another way of deploying your code into an environment is the promotion workflow.
The idea behind the promotion workflow comes from this (as an example):
If you merge the branch staging
into the main
branch, and if there are no changes to main
, so main
and staging
have the exact same code in Git, it could still technically be possible that the resulting Docker images are slightly different. This is because it's possible that between the last staging
deployment and the current main
deployment, some upstream Docker images may have changed, or dependencies loaded from the various package managers may have changed. This is a very small chance, but it's there.
For this situation, Lagoon understands the concept of promoting Lagoon images from one environment to another. This basically means that it will take the already built and deployed Docker images from one environment, and will use those exact same Docker images for another environment.
In our example, we want to promote the Docker images from the main
environment to the production
environment:
- First, we need a regular deployed environment with the name
main
. Make sure that the environment has deployed successfully. - Also, make sure that you don't have a branch called
production
in your Git repository. This could lead to weird confusions (like people pushing into this branch, etc). - Now trigger a promotion deployment using the lagoon cli:
Trigger a promotion deploymentlagoon deploy promote --project=\"myproject\" --source=\"main\" --destination=\"production\"\n
This tells Lagoon that you want to promote from the source main
to the destination production
.
Lagoon will now do the following:
- Check out the Git branch
main
in order to load the .lagoon.yml
and docker-compose.yml
files (Lagoon still needs these in order to fully work). - Create all Kubernetes/OpenShift objects for the defined services in
docker-compose.yml
, but with LAGOON_GIT_BRANCH=production
as environment variable. - Copy the newest images from the
main
environment and use them (instead of building Images or tagging them from upstream). - Run all post-rollout tasks like a normal deployment.
You will receive the same notifications of success or failures like any other deployment.
"},{"location":"concepts-basics/","title":"Basic Lagoon Concepts","text":"This section covers some of the basic concepts in Lagoon. If you're already familiar with these, move on to Advanced Lagoon Concepts.
If you need help, contact your Lagoon administrator or reach out to the community and maintainers in our Discord.
"},{"location":"concepts-basics/build-and-deploy-process/","title":"Build and Deploy Process","text":"This document describes what actually happens during a Lagoon build and deployment. It is heavily simplified from what actually happens, but it will help you to understand what is happening under the hood every time that Lagoon deploys new code for you.
Watch the video below for a walk-through of the deployment process.
"},{"location":"concepts-basics/build-and-deploy-process/#1-set-up-openshift-projectkubernetes-namespace-for-environment","title":"1. Set up OpenShift Project/Kubernetes Namespace for Environment","text":"First, Lagoon checks if the OpenShift project/Kubernetes namespace for the given environment exists and is correctly set up. It will make sure that we have the needed service accounts, create secrets, and will configure environment variables into a ConfigMap lagoon-env
which is filled with information like the environment type and name, the Lagoon project name, and so on.
"},{"location":"concepts-basics/build-and-deploy-process/#2-git-checkout-merge","title":"2. Git Checkout & Merge","text":"Next, Lagoon will check out your code from Git. It needs that to be able to read the .lagoon.yml
, docker-compose.yml
and any .env
files, but also to build the Docker images.
Note that Lagoon will only process these actions if the branch/PR matches the branch regex set in Lagoon. Based on how the deployment has been triggered, different things will happen:
"},{"location":"concepts-basics/build-and-deploy-process/#branch-webhook-push","title":"Branch Webhook Push","text":"If the deployment is triggered automatically via a Git webhook and is for a single branch, Lagoon will check out the Git SHA which is included in the webhook payload. This will trigger a deployment for every Git SHA pushed.
"},{"location":"concepts-basics/build-and-deploy-process/#branch-rest-trigger","title":"Branch REST trigger","text":"If you trigger a branch deployment manually via the REST API (via the UI, or GraphQL) and do NOT define a SHA
in the POST payload, Lagoon will just check out the latest commit in that branch and deploy it.
"},{"location":"concepts-basics/build-and-deploy-process/#pull-requests","title":"Pull Requests","text":"If the deployment is a pull request (PR) deployment, Lagoon will load the base and the HEAD branch and SHAs for the pull request and will:
- Check out the base branch (the branch the PR points to).
- Merge the
HEAD
branch (the branch that the PR originates from) on top of the base branch. - More specifically:
- Lagoon will check out and merge particular SHAs which were sent in the webhook. Those SHAs may or may not point to the branch heads. For example, if you make a new push to a GitHub pull request, it can happen that SHA of the base branch will not point to the current base branch HEAD.
If the merge fails, Lagoon will also stop and inform you about this.
"},{"location":"concepts-basics/build-and-deploy-process/#3-build-image","title":"3. Build Image","text":"For each service defined in the docker-compose.yml
Lagoon will check if images need to be built or not. If they need to be built, this will happen now. The order of building is based on the order they are configured in docker-compose.yml
, and some build arguments are injected:
LAGOON_GIT_SHA
LAGOON_GIT_BRANCH
LAGOON_PROJECT
LAGOON_BUILD_TYPE
(either pullrequest
, branch
or promote
) LAGOON_SSH_PRIVATE_KEY
- The SSH private key that is used to clone the source repository. Use RUN /lagoon/entrypoints/05-ssh-key.sh
to convert the build argument into an actual key at /home/.ssh/key
which will be used by SSH and Git automatically. For safety, remove the key again via RUN rm /home/.ssh/key
. LAGOON_GIT_SOURCE_REPOSITORY
- The full Git URL of the source repository.
Also, if this is a pull request build:
LAGOON_PR_HEAD_BRANCH
LAGOON_PR_HEAD_SHA
LAGOON_PR_BASE_BRANCH
LAGOON_PR_BASE_SHA
LAGOON_PR_TITLE
Additionally, for each already built image, its name is also injected. If your docker-compose.yml
is configured to first build the cli
image and then the nginx
image, the name of the nginx
image is injected as NGINX_IMAGE
.
"},{"location":"concepts-basics/build-and-deploy-process/#4-configure-kubernetes-or-openshift-services-and-routes","title":"4. Configure Kubernetes or OpenShift Services and Routes","text":"Next, Lagoon will configure Kubernetes or OpenShift with all services and routes that are defined from the service types, plus possible additional custom routes that you have defined in .lagoon.yml
.
In this step it will expose all defined routes in the LAGOON_ROUTES
as comma separated URLs. It will also define one route as the \"main\" route, in this order:
- If custom routes defined: the first defined custom route in
.lagoon.yml
. - The first auto-generated route from a service defined in
docker-compose.yml
. - None.
The \"main\" route is injected via the LAGOON_ROUTE
environment variable.
"},{"location":"concepts-basics/build-and-deploy-process/#5-push-and-tag-images","title":"5. Push and Tag Images","text":"Now it is time to push the previously built Docker images into the internal Docker image registry.
For services that didn't specify a Dockerfile to be built in docker-compose.yml
and only gave an image, they are also tagged and will cause the internal Docker image registry to know about the images, so that they can be used in containers.
"},{"location":"concepts-basics/build-and-deploy-process/#6-persistent-storage","title":"6. Persistent Storage","text":"Lagoon will now create persistent storage (PVC) for each service that needs and requested persistent storage.
"},{"location":"concepts-basics/build-and-deploy-process/#7-cron-jobs","title":"7. Cron jobs","text":"For each service that requests a cron job (like MariaDB), plus for each custom cron job defined in .lagoon.yml,
Lagoon will now generate the cron job environment variables which are later injected into the Deployment.
"},{"location":"concepts-basics/build-and-deploy-process/#8-run-defined-pre-rollout-tasks","title":"8. Run defined pre-rollout tasks","text":"Now Lagoon will check the .lagoon.yml
file for defined tasks in pre-rollout
and will run them one by one in the defined services. Note that these tasks are executed on the pods currently running (so cannot utilize features or scripts that only exist in the latest commit) and therefore they are also not run on first deployments.
If any of them fail, Lagoon will immediately stop and notify you, and the rollout will not proceed.
"},{"location":"concepts-basics/build-and-deploy-process/#9-deploymentconfigs-statefulsets-daemonsets","title":"9. DeploymentConfigs, Statefulsets, Daemonsets","text":"This is probably the most important step. Based on the defined service type, Lagoon will create the Deployment, Statefulset or Daemonsets for the service. (Note that Deployments are analogous to DeploymentConfigs in OpenShift)
It will include all previously gathered information like the cron jobs, the location of persistent storage, the pushed images and so on.
Creation of these objects will also automatically cause Kubernetes or OpenShift to trigger new deployments of the pods if necessary, like when an environment variable has changed or an image has changed. But if there is no change, there will be no deployment! This means if you only update the PHP code in your application, the Varnish, Solr, MariaDB, Redis and any other service that is defined but does not include your code will not be deployed. This makes everything much much faster.
"},{"location":"concepts-basics/build-and-deploy-process/#10-wait-for-all-rollouts-to-be-done","title":"10. Wait for all rollouts to be done","text":"Now Lagoon waits! It waits for all of the just-triggered deployments of the new pods to be finished, as well as for their health checks to be successful.
If any of the deployments or health checks fail, the deployment will be stopped here, and you will be informed via the defined notification systems (like Slack) that the deployment has failed.
"},{"location":"concepts-basics/build-and-deploy-process/#11-run-defined-post-rollout-tasks","title":"11. Run defined post-rollout tasks","text":"Now Lagoon will check the .lagoon.yml
file for defined tasks in post-rollout
and will run them one by one in the defined services.
If any of them fail, Lagoon will immediately stop and notify you.
"},{"location":"concepts-basics/build-and-deploy-process/#12-success","title":"12. Success","text":"If all went well and nothing threw any errors, Lagoon will mark this build as successful and inform you via defined notifications. \u2705
"},{"location":"concepts-basics/docker-compose-yml/","title":"docker-compose.yml","text":"The docker-compose.yml
file is used by Lagoon to:
- Learn which services/containers should be deployed.
- Define how the images for the containers are built.
- Define additional configurations like persistent volumes.
Docker Compose (the tool) is very strict in validating the content of the YAML file, so we can only do configuration within labels
of a service definition.
Warning
Lagoon only reads the labels, service names, image names and build definitions from a docker-compose.yml
file. Definitions like: ports, environment variables, volumes, networks, links, users, etc. are IGNORED.
This is intentional, as the docker-compose
file is there to define your local environment configuration. Lagoon learns from the lagoon.type
the type of service you are deploying and from that knows about ports, networks and any additional configuration that this service might need.
Here a straightforward example of a docker-compose.yml
file for Drupal:
docker-compose.ymlx-lagoon-project:\n# Lagoon project name (leave `&lagoon-project` when you edit this)\n&lagoon-project drupal-example\nx-volumes:\n&default-volumes\n# Define all volumes you would like to have real-time mounted into the docker containers\nvolumes:\n- .:/app:delegated\nx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# Route that should be used locally, if you are using pygmy, this route *must* end with .docker.amazee.io\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n# Uncomment if you want to have the system behave as it will in production\n#LAGOON_ENVIRONMENT_TYPE: production\n# Uncomment to enable Xdebug and then restart via `docker compose up -d`\n#XDEBUG_ENABLE: \"true\"\nx-user:\n&default-user\n# The default user under which the containers should run. Change this if you are on linux and run with another user than ID `1000`\nuser: '1000'\nservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent # (1)\nlagoon.persistent: /app/web/sites/default/files/\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent # (2)\nlagoon.name: nginx\nlagoon.persistent: /app/web/sites/default/files/\nmariadb:\nimage: uselagoon/mariadb-10.11-drupal\nlabels:\nlagoon.type: mariadb\n
- Note the multi-container pods here.
- Note the multi-container pods here.
"},{"location":"concepts-basics/docker-compose-yml/#basic-settings","title":"Basic settings","text":"x-lagoon-project
:
This is the machine name of your project, define it here. We\u2019ll use \u201cdrupal-example.\u201d
x-volumes
:
This tells Lagoon what to mount into the container. Your web application lives in /app
, but you can add or change this if needed.
x-environment
:
- Here you can set your local development URL. If you are using pygmy, it must end with
.docker.amazee.io
. - If you want to exactly mimic the production environment, uncomment
LAGOON_ENVIRONMENT_TYPE: production
. - If you want to enable Xdebug, uncomment
DEBUG_ENABLE: \"true\"
.
x-user
:
You are unlikely to need to change this, unless you are on Linux and would like to run with a user other than 1000
.
"},{"location":"concepts-basics/docker-compose-yml/#services","title":"services
","text":"This defines all the services you want to deploy. Unfortunately, Docker Compose calls them services, even though they are actually containers. Going forward we'll be calling them services, and throughout this documentation.
The name of the service (nginx
, php
, and mariadb
in the example above) is used by Lagoon as the name of the Kubernetes pod (yet another term - again, we'll be calling them services) that is generated, plus also any additional Kubernetes objects that are created based on the defined lagoon.type
, which could be things like services, routes, persistent storage, etc.
Please note that service names adhere to the RFC 1035 DNS label standard. Service names must:
- contain at most 63 characters
- contain only lowercase alphanumeric characters or '-'
- start with an alphabetic character
- end with an alphanumeric character
Warning
Once you have set the name of a service, do NOT rename it. This will cause all kind of havoc in your containers and break things.
"},{"location":"concepts-basics/docker-compose-yml/#docker-images","title":"Docker Images","text":""},{"location":"concepts-basics/docker-compose-yml/#build","title":"build
","text":"If you want Lagoon to build a Dockerfile for your service during every deployment, you can define it here:
build
context
- The build context path that should be passed on into the
docker build
command.
dockerfile:
- Location and name of the Dockerfile that should be built.
Warning
Lagoon does NOT support the short version of build: <Dockerfile>
and will fail if it finds such a definition.
"},{"location":"concepts-basics/docker-compose-yml/#image","title":"image
","text":"If you don't need to build a Dockerfile and just want to use an existing Dockerfile, define it via image
.
"},{"location":"concepts-basics/docker-compose-yml/#types","title":"Types","text":"Lagoon needs to know what type of service you are deploying in order to configure the correct Kubernetes or OpenShift objects.
This is done via the lagoon.type
label. There are many different types to choose from. Check Service Types to see all of them and their additional configuration possibilities.
"},{"location":"concepts-basics/docker-compose-yml/#skipignore-containers","title":"Skip/Ignore containers","text":"If you'd like Lagoon to ignore a service completely - for example, you need a container only during local development - give it the type none
.
"},{"location":"concepts-basics/docker-compose-yml/#persistent-storage","title":"Persistent Storage","text":"Some containers need persistent storage. Lagoon allows for each container to have a maximum of one persistent storage volume attached to the container. You can configure the container to request its own persistent storage volume (which can then be mounted by other container), or you can tell the container to mount the persistent storage created by another container.
In many cases, Lagoon knows where that persistent storage needs to go. For example, for a MariaDB container, Lagoon knows that the persistent storage should be put into /var/lib/mysql
, and puts it there automatically without any extra configuration to define that. For some situations, though, Lagoon needs your help to know where to put the persistent storage:
lagoon.persistent
- The absolute path where the persistent storage should be mounted (the above example uses /app/web/sites/default/files/
which is where Drupal expects its persistent storage). lagoon.persistent.name
- Tells Lagoon to not create a new persistent storage for that service, but instead mounts the persistent storage of another defined service into this service. lagoon.persistent.size
- The size of persistent storage you require (Lagoon usually gives you minimum 5G of persistent storage, if you need more, define it here). lagoon.persistent.class
- By default Lagoon automatically assigns the right storage class for your service (like SSDs for MySQL, bulk storage for Nginx, etc.). If you need to overwrite this, you can do so here. This is highly dependent on the underlying Kubernetes/OpenShift that Lagoon runs on. Contact your Lagoon administrator for this.
See the Additional Volumes section on how to add more volumes
"},{"location":"concepts-basics/docker-compose-yml/#auto-generated-routes","title":"Auto-generated Routes","text":"The docker-compose.yml file also supports per-service enabling and disabling of autogenerated routes
lagoon.autogeneratedroute: false
label will stop a route from being automatically created for that service. It can be applied to all services with autogenerated routes, but is mostly useful for the basic
and basic-persistent
service types when used to create an additional internal-facing service for a database service or similar. The inverse is also true - it will enable an auto-generated route for a service when the .lagoon.yml file disables them.
"},{"location":"concepts-basics/docker-compose-yml/#additional-volumes","title":"Additional Volumes","text":"In situations where more than one persistent volume is required by a service (or services), Lagoon can support the creation of multiple additional volumes.
To do this, the volume should be created in the docker-compose.yml with a lagoon.type
label - currently only \"persistent\" is supported.
docker-compose.yml volumes snippetvolumes:\nextravol:\nlabels:\nlagoon.type: persistent\n
This volume can then be referenced in each service that requires it, along with the path.
"},{"location":"concepts-basics/docker-compose-yml/#add-additional-volumes-to-an-existing-non-persistent-service-type","title":"Add additional volumes to an existing non -persistent
service type","text":"If you have a basic
or other supported standalone service type and you want to add volumes, you can use the additional volumes to do this without chaning the service type to a -persistent
type.
docker-compose.yml volume usage snippetservices:\nbasic:\nbuild:\ncontext: .\ndockerfile: basic.dockerfile\nlabels:\nlagoon.type: basic\nlagoon.volumes.data.path: /data # basic-persistent provides a default volume, this needs to be defined\nlagoon.volumes.extravol.path: /extra\nvolumes: # these volumes are ignored by lagoon, only the labels above are consumed to handle volume mapping\n- data:/data:delegated\n- extravol:/extra\nvolumes:\ndata:\nlabels:\nlagoon.type: persistent\nextravol:\nlabels:\nlagoon.type: persistent\nlagoon.backup: false\n
"},{"location":"concepts-basics/docker-compose-yml/#add-additional-volume-to-an-existing-persistent-service-type","title":"Add additional volume to an existing -persistent
service type","text":"docker-compose.yml volume usage snippet
services:\nbasic:\nbuild:\ncontext: .\ndockerfile: basic.dockerfile\nlabels:\nlagoon.type: basic-persistent\nlagoon.persistent: /data # basic-persistent provides a default volume, this needs to be defined\nlagoon.volumes.extravol.path: /extra\nvolumes: # these volumes are ignored by lagoon, only the labels above are consumed to handle volume mapping\n- ./data:/data:delegated\n- extravol:/extra\nvolumes:\nextravol:\nlabels:\nlagoon.type: persistent\nlagoon.backup: false\n
Note that the original volume created for this service still exists."},{"location":"concepts-basics/docker-compose-yml/#supported-persistent-volume-flags","title":"Supported persistent volume flags","text":" - The default size is 5Gi - but can be modified with a
lagoon.persistent.size: XXGi
label on the volume. - By default, Lagoon will back up all persistent volumes, but this can be disabled with a
lagoon.backup: false
label on the volume.
docker-compose.yml volumes snippetvolumes:\nextravol:\nlabels:\nlagoon.type: persistent\nlagoon.persistent.size: 10Gi\nlagoon.backup: false\n
"},{"location":"concepts-basics/docker-compose-yml/#default-persistent-volumes","title":"Default persistent volumes","text":" - If a service type provides a default persistent volume (nginx-php-persistent, basic-persistent, node-persistent, python-persistent), it will be created and named as the name of the service (unless the lagoon.persistent.name label is assigned).
- If a volume defined in the volumes block is also named the same as a default volume would be, it will be ignored and only the default volume will be created.
- If a lagoon.volumes.${volume_name}.path is also defined on a service that has a default volume (or a volume linked to it using the lagoon.persistent.name label, it will also be ignored and the value of the lagoon.persistent path will be used.
"},{"location":"concepts-basics/docker-compose-yml/#ignored-volume","title":"Ignored volume","text":" - If a volume defined in the volumes block has a label lagoon.type: none it will not be created.
- If a volume defined in the volumes block has a label lagoon.type of a type (currently only persistent), but it is not consumed by any service using a lagoon.volumes.${volume_name}.path, then the volume will not be created.
"},{"location":"concepts-basics/docker-compose-yml/#maximum-number-of-volumes","title":"Maximum number of volumes","text":" - Currently a hard-coded limit of 6 volumes is in place, this may be made configurable in the future.
"},{"location":"concepts-basics/docker-compose-yml/#supported-service-types","title":"Supported service types","text":"Currently, the only service types that support additional volumes are the following
- basic / basic-persistent
- worker / worker-persistent
- node / node-persistent
- python / python-persistent
- nginx / nginx-php / nginx-php-persistent
- cli / cli-persistent
Adding a volume to any other type will result in an error during a build.
"},{"location":"concepts-basics/docker-compose-yml/#additional-service-ports","title":"Additional Service Ports","text":"If you have a service that has many ports, you can use the lagoon.service.usecomposeports: true
label to inform Lagoon to use the ports defined on the service.
Info
Only TCP based ports will be allowed to have a route attached, but UDP ports can be used for internal communications.
For example, if you have a basic
service that requires ports 8080
and 10009
.
- port 8080 could be a HTTP based port and you want to route to this using a route in
.lagoon.yml
- port 10009 could be used by other services within the environment for internal communications
You would define your service to consume the ports
like so:
docker-compose.yml service port snippetversion: '2'\nservices:\ncustom:\nbuild:\ncontext: internal/testdata/basic/docker\ndockerfile: Dockerfile\nlabels:\nlagoon.type: basic\nlagoon.service.usecomposeports: true\nports:\n- \"8080\"\n- \"10009\"\n
The first port in the list of ports will be the \"default\" port for the service, so standard routes like so will route to the default port. An example .lagoon.yml
is show how this looks the same as any other standard service route.
.lagoon.yml default port routeenvironments:\nmain:\nroutes:\n- custom:\n- example.com\n
Alternatively, if you wanted to also have a route specifically for port 10009, you could define the route like so in your .lagoon.yml
.
.lagoon.yml default and alternative port routeenvironments:\nmain:\nroutes:\n- custom-10009:\n- otherport.example.com\n
Info
You can define both the \"default\" route and a custom port route together, as long as they have different domains used.
"},{"location":"concepts-basics/docker-compose-yml/#multi-container-pods","title":"Multi-Container Pods","text":"Kubernetes and OpenShift don't deploy plain containers. Instead, they deploy pods, with each one or more containers. Usually Lagoon creates a single pod with a container inside for each defined docker-compose
service. For some cases, we need to put two containers inside a single pod, as these containers are so dependent on each other that they should always stay together. An example for such a situation is the PHP and NGINX containers that both contain PHP code of a web application like Drupal.
For these cases, it is possible to tell Lagoon which services should stay together, which is done in the following way (remember that we are calling containers services
because of docker-compose
:
- Define both services with a
lagoon.type
that expects two services (in the example this is nginx-php-persistent
defined on the nginx
and php
services). - Link the second service with the first one, defining the label
lagoon.name
of the second one with the first one. (in the example this is done with defining lagoon.name: nginx
).
This will cause Lagoon to realize that the nginx
and php
containers are combined in a pod that will be called nginx
.
Warning
Once you have set the lagooon.name
of a service, do NOT rename it. This will cause all kind of havoc in your containers and break things.
Lagoon still needs to understand which of the two services is the actual individual service type (nginx
and php
in this case). It does this by searching for service names with the same name that are given by the type, so nginx-php-persistent
expects one service with the name nginx
and one with php
in the docker-compose.yml.
If for any reason you want to use different names for the services, or you need for than one pod with the type nginx-php-persistent
there is an additional label lagoon.deployment.servicetype
which can be used to define the actual service type.
An example:
docker-compose.ymlnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # If this isn't present, Lagoon will use the container name, which in this case is nginx.\nlagoon.deployment.servicetype: nginx\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # We want this service to be part of the NGINX pod in Lagoon.\nlagoon.deployment.servicetype: php\n
In the example above, the services are named nginx
and php
(but you can call them whatever you want). The lagoon.name
tells Lagoon which services go together - all of the services with the same name go together.
In order for Lagoon to realize which one is the nginx
and which one is the php
service, we define it via lagoon.deployment.servicetype: nginx
and lagoon.deployment.servicetype: php
.
"},{"location":"concepts-basics/docker-compose-yml/#helm-templates-kubernetes-only","title":"Helm Templates (Kubernetes only)","text":"Lagoon uses Helm for templating on Kubernetes. To do this, a series of Charts are included with the build-deploy-tool
image.
"},{"location":"concepts-basics/docker-compose-yml/#custom-rollout-monitor-types","title":"Custom Rollout Monitor Types","text":"By default, Lagoon expects that services from custom templates are rolled out via a DeploymentConfig
object within Kubernetes or Openshift. It monitors the rollout based on this object. In some cases, the services that are defined via custom deployment need a different way of monitoring. This can be defined via lagoon.rollout
:
deploymentconfig
- This is the default. Expects a DeploymentConfig
object in the template for the service. statefulset
- Expects a Statefulset
object in the template for the service. daemonset
- Expects a Daemonset
object in the template for the service. false
- Will not monitor any rollouts, and will just be happy if the template applies and does not throw any errors.
You can also overwrite the rollout for just one specific environment. This is done in .lagoon.yml
.
"},{"location":"concepts-basics/docker-compose-yml/#docker-compose-v2-compatibility","title":"Docker Compose v2 compatibility","text":"Bug
Note that while using older versions of Docker Compose V2 locally, you may experience some known issues - these have been resolved in later releases (v2.17.3 onwards).
The resolution for these errors is usually to update (or install a later version of) the version of Docker Compose you are using, either standalone or by upgrading the version of Docker Desktop you're using. See the Docker Desktop release notes for more information
Docker Compose output indicating depends_on errorFailed to solve with frontend dockerfile.v0: failed to create LLB definition: pull access denied, repository does not exist or may require authorization\n\nor\n\nFailed to solve: drupal9-base-cli: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed`\n
- These are resolved in Docker Compose v2.13.0.
- This message means that your build has tried to access a Docker image that hasn't been built yet. As BuildKit builds in parallel, if you have a Docker image that inherits another one (as we do in Drupal with the CLI).
- You can also use the target field inside the build to reconfigure as a multi-stage build.
- If you are already running a newer Docker Compose version, this error may be because you're defaulting to using a docker-container build context with buildx. You should make sure that
docker buildx ls
shows the docker builder as default, not a docker-container based one. Check the docs on Docker buildx here.
Docker Compose output indicating volumes_from errorno such service: container:amazeeio-ssh-agent\n
- This is resolved in Docker Compose v2.17.3.
- This message means that the service that provides SSH access into locally running containers runs outside of your Docker Compose stack and is inaccessible.
- The section can also be removed from your
docker-compose.yml
file if you don't require SSH access from inside your local environment.
"},{"location":"concepts-basics/docker-compose-yml/#buildkit-and-lagoon","title":"BuildKit and Lagoon","text":"BuildKit is a toolkit for converting source code to build artifacts in an efficient, expressive and repeatable manner.
With the release of Lagoon v2.11.0, Lagoon now provides support for more advanced BuildKit-based docker compose builds, and in Lagoon v2.21.0, BuildKit is now enabled by default for all builds. To specifically disable BuildKit for your Project or Environment, add DOCKER_BUILDKIT=0
as a build-time variable to your Lagoon project or environment.
"},{"location":"concepts-basics/docker-compose-yml/#docker-compose-errors-in-lagoon-builds","title":"Docker Compose Errors in Lagoon Builds","text":"See the Lagoon Build Errors page for how to resolve common build errors with Docker Compose.
"},{"location":"concepts-basics/docker-compose-yml/#common-docker-compose-issues","title":"Common Docker Compose Issues","text":"This section outlines some of the more common Docker Compose errors, and how to remedy them. These may present in local development, or as Lagoon Build Errors and Warnings.
"},{"location":"concepts-basics/docker-compose-yml/#dual-mapping-keys","title":"Dual Mapping keys","text":"Docker Compose output indicating mapping key errorERR: yaml: unmarshal errors: line 22: mapping key \"<<\" already defined at line 21\n
Early releases of the Lagoon examples contained a pair of YAML aliases attached to services to provide volumes and user code. Newer releases of Docker Compose will report this as an error. While all examples have now been updated, there may be some older codebases around that need updating.
This error arises from Docker Compose not knowing what it is inserting into the array, so just assuming it may be duplicate.
If your docker-compose.yml
contains one or more of this (or similar) code blocks, you will be affected.
Docker Compose error with dual mapping keys...\n<< : [*default-volumes]\n<< : [*default-user]\n...\n
The corrected version combines both aliases into a single mapping key - you'll need to remedy all occurrances.
Docker Compose correct insertion of multiple alias mapping keys...\n<< : [*default-volumes, *default-user]\n...\n
"},{"location":"concepts-basics/lagoon-yml/","title":".lagoon.yml","text":"The .lagoon.yml
file is the central file to set up your project. It contains configuration in order to do the following:
- Define routes for accessing your sites.
- Define pre-rollout tasks.
- Define post-rollout tasks.
- Set up SSL certificates.
- Add cron jobs for environments.
The .lagoon.yml
file must be placed at the root of your Git repository.
"},{"location":"concepts-basics/lagoon-yml/#general-settings","title":"General Settings","text":""},{"location":"concepts-basics/lagoon-yml/#docker-compose-yaml","title":"docker-compose-yaml
","text":"Tells the build script which Docker Compose YAML file should be used, in order to learn which services and containers should be deployed. This defaults to docker-compose.yml
, but could be used for a specific Lagoon Docker Compose YAML file if needed.
"},{"location":"concepts-basics/lagoon-yml/#environment_variablesgit_sha","title":"environment_variables.git_sha
","text":"This setting allows you to enable injecting the deployed Git SHA into your project as an environment variable. By default this is disabled. Setting the value to true
sets the SHA as the environment variable LAGOON_GIT_SHA
.
"},{"location":"concepts-basics/lagoon-yml/#routes","title":"Routes","text":"Routes are used to direct traffic to services. Each service in an environnment can have routes, in which the domain names are defined manually or automatically. The top level routes
section applies to all routes in all environments.
"},{"location":"concepts-basics/lagoon-yml/#routesautogenerate","title":"routes.autogenerate
","text":"This allows you to configure automatically created routes. Manual routes are defined per environment.
enabled
: Set to false
to disable autogenerated routes. Default is true
. allowPullrequests
: Set to true
to override enabled: false
for pull requests..lagoon.ymlroutes:\nautogenerate:\nenabled: false\nallowPullrequests: true\n
insecure
: Configures HTTP connections. Default is Allow
. Allow
: Route will respond to HTTP and HTTPS. Redirect
: Route will redirect any HTTP request to HTTPS.
-
prefixes
: Configure prefixes for the autogenerated routes of each environment. This is useful for things like language prefix domains, or a multi-domain site using the Drupal domain
module.
.lagoon.yml routes:\nautogenerate:\nprefixes:\n- www\n- de\n- fr\n- it\n
"},{"location":"concepts-basics/lagoon-yml/#path-based-routes","title":"Path Based Routes","text":"Path based routes allows you to define paths on a route to a different backend. This can be used if you have a separate backend within the environment that you want to route traffic to on the same domain as another service within your environment.
Warning
Path based routes can get quite complex and should only be used if you have a need to use them.
Here is an example .lagoon.yml
file that shows how path based routes can be defined. There is support for global autogenerated routes, per environment autogenerated routes, and custom routes.
.lagoon.yml path based routesdocker-compose-yaml: docker-compose.yml\n# if an environment has `autogeneratePathRoutes` defined like `environments.main.autogeneratePathRoutes`\n# then thes global lagoon yaml `routes.autogenerate.pathRoutes` are ignored\nroutes:\nautogenerate:\npathRoutes:\n- fromService: nginx\ntoService: node\npath: /api/v1\nenvironments:\nmain:\n# path routes for autogenerated routes for this environment only\nautogeneratePathRoutes:\n- fromService: nginx\ntoService: node\npath: /api/v1\nroutes:\n- nginx:\n- a.example.com:\npathRoutes:\n- toService: node\npath: /api/v1\n
"},{"location":"concepts-basics/lagoon-yml/#autogenerated-routes","title":"Autogenerated Routes","text":"It is possible to configure global autogenerated routes, these would apply to ALL environments that this .lagoon.yml
file would cover.
Additionally, per environment autogenerated route configurations are supported, the fields are the same, just where they are defined is different.
.lagoon.yml autogenerated path based routesroutes:\nautogenerate:\npathRoutes:\n- fromService: nginx\ntoService: node\npath: /api/v1\nenvironments:\nmain:\n# path routes for autogenerated routes for this environment only\nautogeneratePathRoutes:\n- fromService: nginx\ntoService: node\npath: /api/v1\n
Info
If the per environment path routes are defined on an environment, any global defined ones are ignored.
The supported fields for autogenerated path routes are:
fromService
- the autogenerated route for the service you want to add the path based route to toService
- the backend service you want to route to path
- the path to send to the toService
"},{"location":"concepts-basics/lagoon-yml/#custom-routes","title":"Custom Routes","text":"It is possible to turn on path based routes for a specific route too, the following .lagoon.yml
example shows how.
.lagoon.yml custom route path based routes
environments:\nmain:\nroutes:\n- nginx:\n- a.example.com:\npathRoutes:\n- toService: node\npath: /api/v1\n
The fields are the same, except that you can omit fromService
due to the way that custom routes are defined already associated to a fromService
in their normal configuration."},{"location":"concepts-basics/lagoon-yml/#conditions","title":"Conditions","text":""},{"location":"concepts-basics/lagoon-yml/#autogenerated-route-configurations","title":"Autogenerated Route configurations","text":"If the global path routes for autogenerated routes are defined, but an environment has overrides, the global defined path routes are ignored by that environment.
"},{"location":"concepts-basics/lagoon-yml/#additional-service-ports","title":"Additional Service Ports","text":"If the docker compose label lagoon.service.usecomposeports=true
has been defined on a service, then the service name with the port number as a suffix to any ports beyond the default (first defined port) must be used as the toService
. See Additional Service Ports for more information on this label.
The following docker-compose.yml
has an example of this label and the ports. This would create the default service port named node
referencing port 1234, but also another service node-4321
. If you need to create a path based route to port 4321, you would need to define the toService
as node-4321
.
docker-compose.yml path based routes
services:\nnginx:\nbuild:\ncontext: .\ndockerfile: basic.dockerfile\nlabels:\nlagoon.type: nginx\nlagoon.service.usecomposeports: true\nports:\n- '8080'\nnode:\nbuild:\ncontext: .\ndockerfile: basic.dockerfile\nlabels:\nlagoon.type: basic\nlagoon.service.usecomposeports: true\nports:\n- '1234'\n- '4321'\n
Then you could create a route that would route a.example.com
traffic to the nginx
service. But any traffic destined for a.example.com/api/v1
would go to the node
service on port 4321
.lagoon.yml custom route path based routesenvironments:\nmain:\nroutes:\n- nginx:\n- a.example.com:\npathRoutes:\n- toService: node-4321\npath: /api/v1\n
"},{"location":"concepts-basics/lagoon-yml/#urls","title":"URLs","text":"The path
defined in the pathRoute
will be passed to whichever toService
is defined in all URL queries. This means if you're using the path
defined as /api/v1
for example, then you may need to cater for this in your backend depending on how your backend is built.
"},{"location":"concepts-basics/lagoon-yml/#path-types","title":"Path Types","text":"In Lagoon, currently only Prefix
type is supported on ingress (see Ingress path types).
"},{"location":"concepts-basics/lagoon-yml/#tasks","title":"Tasks","text":"There are different type of tasks you can define, and they differ in when exactly they are executed in a build flow:
"},{"location":"concepts-basics/lagoon-yml/#pre-rollout-tasks-pre_rolloutirun","title":"Pre-Rollout Tasks - pre_rollout.[i].run
","text":"Here you can specify tasks which will run against your project after all images have been successfully built, but before:
- Any running containers are updated with the newly built images.
- Any other changes are made to your existing environment.
This feature enables you to, for example, create a database dump before updating your application. This can make it easier to roll back in case of a problem with the deploy.
Info
The pre-rollout tasks run in the existing pods before they are updated, which means:
- Changes made to your Dockerfile since the last deploy will not be visible when pre-rollout tasks run.
- If there are no existing containers (e.g. on the initial deployment of a new environment), pre-rollout tasks are skipped.
"},{"location":"concepts-basics/lagoon-yml/#post-rollout-tasks-post_rolloutirun","title":"Post-Rollout Tasks - post_rollout.[i].run
","text":"Here you can specify tasks which need to run against your project, after:
- All images have been successfully built.
- All containers are updated with the new images.
- All containers are running have passed their readiness checks.
Common uses for post-rollout tasks include running drush updb
, drush cim
, or clearing various caches.
name
- The name is an arbitrary label for making it easier to identify each task in the logs.
command
- Here you specify what command should run. These are run in the WORKDIR of each container, for Lagoon images this is
/app
. Keep this in mind if you need to cd
into a specific location to run your task.
service
- The service in which to run the task. If following our Drupal example, this will be the CLI container, as it has all your site code, files, and a connection to the database. Typically you do not need to change this.
container
- If the service has multiple containers (e.g.
nginx-php
), you will need to specify which container in the pod to connect to (e.g. the php
container within the nginx
pod).
shell
- In which shell the task should be run. By default
sh
is used, but if the container also has other shells (like bash
, you can define it here). This is useful if you want to run some small if/else bash scripts within the post-rollouts. See the example below to learn how to write a script with multiple lines.
when
- The \"when\" clause allows for the conditional running of tasks. It expects an expression that will evaluate to a true/false value which determines whether the task should be run.
Note: If you would like to temporarily disable pre/post-rollout tasks during a deployment, you can set either of the following environment variables in the API at the project or environment level (see how on Environment Variables).
LAGOON_PREROLLOUT_DISABLED=true
LAGOON_POSTROLLOUT_DISABLED=true
"},{"location":"concepts-basics/lagoon-yml/#example-post-rollout-tasks","title":"Example post-rollout tasks","text":"Here are some useful examples of post-rollout tasks that you may want to use or adapt for your projects.
Run only if Drupal not installed:
.lagoon.yml- run:\n name: IF no Drupal installed\n command: | # (1)\nif tables=$(drush sqlq \"show tables like 'node';\") && [ -z \"$tables\" ]; then\n#### whatever you like\nfi\nservice: cli\n shell: bash\n
- This shows how to create a multi-line command.
Different tasks based on branch name:
.lagoon.yml- run:\nname: Different tasks based on branch name\ncommand: |\n### Runs if current branch is not 'production'\nservice: cli\nwhen: LAGOON_GIT_BRANCH != \"production\"\n
Run shell script:
.lagoon.yml- run:\nname: Run Script\ncommand: './scripts/script.sh'\nservice: cli\n
Target specific container in pod:
.lagoon.yml- run:\nname: show php env variables\ncommand: env\nservice: nginx\ncontainer: php\n
Drupal & Drush 9: Sync database & files from master environment:
.lagoon.yml- run:\n name: Sync DB and Files from master if we are not on master\n command: |\n# Only if we don't have a database yet\nif tables=$(drush sqlq 'show tables;') && [ -z \"$tables\" ]; then\ndrush sql-sync @lagoon.master @self # (1)\ndrush rsync @lagoon.master:%files @self:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n fi\nservice: cli\n when: LAGOON_ENVIRONMENT_TYPE != \"production\"\n
- Make sure to use the correct aliases for your project here.
"},{"location":"concepts-basics/lagoon-yml/#backup-retention","title":"Backup Retention","text":""},{"location":"concepts-basics/lagoon-yml/#backup-retentionproductionmonthly","title":"backup-retention.production.monthly
","text":"Specify the number of monthly backups Lagoon should retain for your project's production environment(s).
The global default is 0
if this value is not specified.
"},{"location":"concepts-basics/lagoon-yml/#backup-retentionproductionweekly","title":"backup-retention.production.weekly
","text":"Specify the number of weekly backups Lagoon should retain for your project's production environment(s).
The global default is 6
if this value is not specified.
"},{"location":"concepts-basics/lagoon-yml/#backup-retentionproductiondaily","title":"backup-retention.production.daily
","text":"Specify the number of daily backups Lagoon should retain for your project's production environment(s).
The global default is 7
if this value is not specified.
"},{"location":"concepts-basics/lagoon-yml/#backup-retentionproductionhourly","title":"backup-retention.production.hourly
","text":"Specify the number of hourly backups Lagoon should retain for your project's production environment(s).
The global default is 0
if this value is not specified.
"},{"location":"concepts-basics/lagoon-yml/#backup-schedule","title":"Backup Schedule","text":""},{"location":"concepts-basics/lagoon-yml/#backup-scheduleproduction","title":"backup-schedule.production
","text":"Specify the backup schedule for this project. Accepts cron-compatible syntax with the notable exception that the Minute
block must be the letter M
. Any other value in the Minute
block will cause the Lagoon build to fail. This allows Lagoon to randomly choose a specific minute for these backups to happen, while users can specify the remainder of the schedule down to the hour.
The global default is M H(22-2) * * *
if this value is not specified.
Timezones:
Backup schedules use the cluster's local timezone.
"},{"location":"concepts-basics/lagoon-yml/#environments","title":"Environments","text":"Environment names match your deployed branches or pull requests. This allows for each environment to have a different config. In our example it will apply to the main
and staging
environment.
"},{"location":"concepts-basics/lagoon-yml/#environmentsnameroutes","title":"environments.[name].routes
","text":"Manual routes are domain names that are configured per environment to direct traffic to a service. Since all environments get automatically created routes by default, it is typical that manual routes are only setup for the production environment, using the main domain of the project's website like www.example.com
.
Tip
Since Lagoon has no control over the manual routes, you'll need to ensure the DNS records are configured properly at your DNS provider. You can likely set a CNAME
record to point to the automatic route.
The first element after the environment is the target service, nginx
in our example. This is how we identify which service incoming requests will be sent to.
The simplest route is example.com
, as seen in our example .lagoon.yml
- you can see it has no additional configuration. This will assume that you want a Let's Encrypt certificate for your route and no redirect from HTTPS to HTTP.
In the \"www.example.com\"
example below, we see three more options (also notice the :
at the end of the route and that the route is wrapped in \"
, that's important!):
.lagoon.yml- \"www.example.com\":\ntls-acme: true\ninsecure: Redirect\nhstsEnabled: true\n
"},{"location":"concepts-basics/lagoon-yml/#ssl-configuration-tls-acme","title":"SSL Configuration tls-acme
","text":"Warning
If you switch from tls-acme: true
to tls-acme: false
this will remove any previously generated certificates for this route. This could result in unexpected behaviour if you're using an external CDN and do any certificate pinning.
tls-acme
: Configures automatic TLS certificate generation via Let's Encrypt. Default is true
, set to false
to disable automatic certificates. insecure
: Configures HTTP connections. Default is Allow
. Allow
: Route will respond to HTTP and HTTPS. Redirect
: Route will redirect any HTTP request to HTTPS.
hstsEnabled
: Adds the Strict-Transport-Security
header. Default is false
. hstsMaxAge
: Configures the max-age
directive. Default is 31536000
(1 year). hstsPreload
: Sets the preload
directive. Default is false
. hstsIncludeSubdomains
: Sets the includeSubDomains
directive. Default is false
.
Info
If you plan to switch from a SSL certificate signed by a Certificate Authority (CA) to a Let's Encrypt certificate, it's best to get in touch with your Lagoon administrator to oversee the transition.
"},{"location":"concepts-basics/lagoon-yml/#monitoring-a-specific-path","title":"Monitoring a specific path","text":"Info
Lagoon does not provide any monitoring capabilties out of the box, only labels and annotations. Check with your Lagoon administrator if monitoring is supported.
Lagoon will add the label lagoon.sh/primaryIngress=true
to the first route defined in the .lagoon.yml
file for an environment.
If a specific path on a route requires monitoring, define monitoring-path
with the path to use. Lagoon will add this path to the annotation monitor.stakater.com/overridePath
to the route.
.lagoon.yml- \"www.example.com\":\nmonitoring-path: \"/bypass-cache\"\n
Info
The annotation monitor.stakater.com/overridePath
used by monitoring-path references the stakater monitoring controller, this is not used by Lagoon. This annotation will eventually be replaced with a lagoon.sh
scoped annotation in the future.
"},{"location":"concepts-basics/lagoon-yml/#ingress-annotations","title":"Ingress annotations","text":"Warning
Route/Ingress annotations are only supported by projects that deploy into clusters that run nginx-ingress controllers! Check with your Lagoon administrator if this is supported.
annotations
can be a YAML map of annotations supported by the nginx-ingress controller. This is specifically useful for easy redirects and other configurations.
"},{"location":"concepts-basics/lagoon-yml/#restrictions","title":"Restrictions","text":"Some annotations are disallowed or partially restricted in Lagoon. The table below describes these rules.
If your .lagoon.yml
contains one of these annotations it will cause a build failure.
Annotation Notes nginx.ingress.kubernetes.io/auth-snippet
Disallowed nginx.ingress.kubernetes.io/configuration-snippet
Restricted to rewrite
, add_header
, set_real_ip
, and more_set_headers
directives. nginx.ingress.kubernetes.io/modsecurity-snippet
Disallowed nginx.ingress.kubernetes.io/server-snippet
Restricted to rewrite
, add_header
, set_real_ip
, and more_set_headers
directives. nginx.ingress.kubernetes.io/stream-snippet
Disallowed nginx.ingress.kubernetes.io/use-regex
Disallowed"},{"location":"concepts-basics/lagoon-yml/#ingress-annotations-redirects","title":"Ingress annotations redirects","text":"In this example any requests to example.ch
will be redirected to https://www.example.ch
while keeping folders or query parameters intact (example.com/folder?query
-> https://www.example.ch/folder?query
).
.lagoon.yml- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\n
You can of course also redirect to any other URL not hosted on Lagoon, this will direct requests to example.de
to https://www.google.com
.lagoon.yml- \"example.de\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.google.com\n
"},{"location":"concepts-basics/lagoon-yml/#trusted-reverse-proxies","title":"Trusted Reverse Proxies","text":"Warning
Kubernetes will only process a single nginx.ingress.kubernetes.io/server-snippet
annotation. Please ensure that if you use this annotation on a non-production environment route that you also include the add_header X-Robots-Tag \"noindex, nofollow\";
annotation as part of your server-snippet. This is needed to stop robots from crawling development environments as the default server-snippet set to prevent this in development environments in the ingress templates will get overwritten with any server-snippets
set in .lagoon.yml
.
Some configurations involve a reverse proxy (like a CDN) in front of the Kubernetes clusters. In these configurations, the IP of the reverse proxy will appear as the REMOTE_ADDR
HTTP_X_REAL_IP
HTTP_X_FORWARDED_FOR
headers field in your applications. The original IP of the requester can be found in the HTTP_X_ORIGINAL_FORWARDED_FOR
header.
If you want the original IP to appear in the REMOTE_ADDR
HTTP_X_REAL_IP
HTTP_X_FORWARDED_FOR
headers, you need to tell the ingress which reverse proxy IPs you want to trust:
.lagoon.yml- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/server-snippet: |\nset_real_ip_from 1.2.3.4/32;\n
This example would trust the CIDR 1.2.3.4/32
(the IP 1.2.3.4
in this case). Therefore if there is a request sent to the Kubernetes cluster from the IP 1.2.3.4
the X-Forwarded-For
Header is analyzed and its contents injected into REMOTE_ADDR
HTTP_X_REAL_IP
HTTP_X_FORWARDED_FOR
headers.
"},{"location":"concepts-basics/lagoon-yml/#environmentsnametypes","title":"Environments.[name].types
","text":"The Lagoon build process checks the lagoon.type
label from the docker-compose.yml
file in order to learn what type of service should be deployed (read more about them in the documentation of docker-compose.yml
).
Sometimes you might want to override the type just for a single environment, and not for all of them. For example, if you want a standalone MariaDB database (instead of letting the Service Broker/operator provision a shared one) for your non-production environment called develop
:
service-name: service-type
service-name
is the name of the service from docker-compose.yml
you would like to override. service-type
the type of the service you would like to use in your override.
Example for setting up MariaDB_Galera:
.lagoon.ymlenvironments:\ndevelop:\ntypes:\nmariadb: mariadb-single\n
"},{"location":"concepts-basics/lagoon-yml/#environmentsnametemplates","title":"environments.[name].templates
","text":"The Lagoon build process checks the lagoon.template
label from the docker-compose.yml
file in order to check if the service needs a custom template file (read more about them in the documentation of docker-compose.yml
).
Sometimes you might want to override the template just for a single environment, and not for all of them:
service-name: template-file
service-name
is the name of the service from docker-compose.yml
you would like to override. template-file
is the path and name of the template to use for this service in this environment.
"},{"location":"concepts-basics/lagoon-yml/#example-template-override","title":"Example Template Override","text":".lagoon.ymlenvironments:\nmain:\ntemplates:\nmariadb: mariadb.main.deployment.yml\n
"},{"location":"concepts-basics/lagoon-yml/#environmentsnamerollouts","title":"environments.[name].rollouts
","text":"The Lagoon build process checks the lagoon.rollout
label from the docker-compose.yml
file in order to check if the service needs a special rollout type (read more about them in the documentation of docker-compose.yml
)
Sometimes you might want to override the rollout type just for a single environment, especially if you also overwrote the template type for the environment:
service-name: rollout-type
service-name
is the name of the service from docker-compose.yml
you would like to override. rollout-type
is the type of rollout. See documentation of docker-compose.yml
) for possible values.
"},{"location":"concepts-basics/lagoon-yml/#custom-rollout-type-example","title":"Custom Rollout Type Example","text":".lagoon.ymlenvironments:\nmain:\nrollouts:\nmariadb: statefulset\n
"},{"location":"concepts-basics/lagoon-yml/#environmentsnameautogenerateroutes","title":"environments.[name].autogenerateRoutes
","text":"This allows for any environments to get autogenerated routes when route autogeneration is disabled.
.lagoon.ymlroutes:\nautogenerate:\nenabled: false\nenvironments:\ndevelop:\nautogenerateRoutes: true\n
"},{"location":"concepts-basics/lagoon-yml/#environmentsnamecronjobs","title":"environments.[name].cronjobs
","text":"Cron jobs must be defined explicitly for each environment, since it is typically not desirable to run the same ones for all environments. Depending on the defined schedule, cron jobs may run as a Kubernetes native CronJob
or as an in-pod cron job via the crontab of the defined service.
"},{"location":"concepts-basics/lagoon-yml/#cron-job-example","title":"Cron Job Example","text":".lagoon.ymlcronjobs:\n- name: Hourly Drupal Cron\nschedule: \"M * * * *\" # Once per hour, at a random minute.\ncommand: drush cron\nservice: cli\n- name: Nightly Drupal Cron\nschedule: \"M 0 * * *\" # Once per day, at a random minute from 00:00 to 00:59.\ncommand: drush cron\nservice: cli\n
name
: Any name that will identify the purpose and distinguish it from other cron jobs. -
schedule
: The schedule for executing the cron job. Lagoon uses an extended version of the crontab format. If you're not sure about the syntax, use a crontab generator.
- You can specify
M
for the minute, and your cron job will run once per hour at a random minute (the same minute each hour), or M/15
to run it every 15 mins, but with a random offset from the hour (like 6,21,36,51
). It is a good idea to spread out your cron jobs using this feature, rather than have them all fire off on minute 0
. - You can specify
H
for the hour, and your cron job will run once per day at a random hour (the same hour every day), or H(2-4)
to run it once per day within the hours of 2-4.
Timezones:
- The default timezone for cron jobs is UTC.
- Native cron jobs use the timezone of the node, which is UTC.
- In-pod cron jobs use the timezone of the defined service, which can be configured to something other than UTC.
command
: The command to execute. This executes in the WORKDIR
of the service. For Lagoon images, this is /app
.
Warning
Cronjobs may run in-pod, via crontab, which doesn't support multiline commands. If you need a complex or multiline cron command, you must put it in a script that can be used as the command. Consider whether a pre- or post-rollout task would work.
Danger
Cronjobs run in Kubernetes pods, which means they can be interrupted due to pod rescheduling. Therefore when creating a cronjob you must ensure that the command can be safely interrupted and re-run at the next cron interval.
service
: Which service of your project to run the command in. For most projects, this should be the cli
service.
"},{"location":"concepts-basics/lagoon-yml/#polysite","title":"Polysite","text":"In Lagoon, the same Git repository can be added to multiple projects, creating what is called a polysite. This allows you to run the same codebase, but allow for different, isolated, databases and persistent files. In .lagoon.yml
, we currently only support specifying custom routes for a polysite project. The key difference from a standard project is that the environments
becomes the second-level element, and the project name the top level.
To utilize this, you will need to:
- Create two (or more) projects in Lagoon, each configured with the same Git URL and production branch, named per your .lagoon.yml (i.e
poly-project1
and poly-project2
below) - Add the deploy keys from each project to the Git repository.
- Configure the webhook for the repository (if required) - you can then push/deploy. Note that a push to the repository will simultaneously deploy all projects/branches for that Git URL.
"},{"location":"concepts-basics/lagoon-yml/#polysite-example","title":"Polysite Example","text":".lagoon.ymlpoly-project1:\nenvironments:\nmain:\nroutes:\n- nginx:\n- project1.com\npoly-project2:\nenvironments:\nmain:\nroutes:\n- nginx:\n- project2.com\n
"},{"location":"concepts-basics/lagoon-yml/#specials","title":"Specials","text":""},{"location":"concepts-basics/lagoon-yml/#api","title":"api
","text":"Info If you run directly on amazee.io hosted Lagoon you will not need this key set.
With the key api
you can define another URL that should be used by the Lagoon CLI and drush
to connect to the Lagoon GraphQL API. This needs to be a full URL with a scheme, like: http://localhost:3000
This usually does not need to be changed, but there might be situations where your Lagoon administrator tells you to do so.
"},{"location":"concepts-basics/lagoon-yml/#ssh","title":"ssh
","text":"Info If you run directly on amazee.io hosted Lagoon you will not need this key set.
With the key ssh
you can define another SSH endpoint that should be used by the Lagoon CLI and drush
to connect to the Lagoon remote shell service. This needs to be a hostname and a port separated by a colon, like: localhost:2020
This usually does not need to be changed, but there might be situations where your Lagoon administrator tells you to do so.
"},{"location":"concepts-basics/lagoon-yml/#container-registries","title":"container-registries
","text":"The container-registries
block allows you to define your own private container registries to pull custom or private images.
To use a private container registry, you will need a username
, password
, and optionally the url
for your registry. If you don't specify a url
in your YAML, it will default to using Docker Hub. We also recommend adding a description
to your container-registry entries to provide a bit of information about them, some examples are provided.
There are 2 ways to define the username and password used for your registry user.
- Define them as environment variables in the API
- Hardcode them in the
.lagoon.yml
file (we don't recommend this though)
"},{"location":"concepts-basics/lagoon-yml/#environment-variables-method","title":"Environment variables method","text":"Firstly, define the container-registries
in your .lagoon.yml
, you don't need to define the username or password here. If you do use a custom registry, you will still need to provide the url
, for example:
.lagoon.ymlcontainer-registries:\ndocker-hub:\ndescription: \"username and password consumed from environment variables for the default docker.io registry\"\nmy-custom-registry:\ndescription: \"username and password consumed from environment variables for my custom registry\"\nurl: my.own.registry.com\nanother-custom-registry:\ndescription: \"password consumed from environment variables for my other registry\"\nusername: myotheruser\nurl: my.other.registry.com\n
If you do define a username in the .lagoon.yml
you don't need to add the associated variable, but if you do add the variable, the value of the variable will be prefered.
Next, create environment variables in the Lagoon API with the type container_registry
:
lagoon add variable -p <project_name> -N <registry_username_variable_name> -V <username_goes_here> -S container_registry
lagoon add variable -p <project_name> -N <registry_password_variable_name> -V <password_goes_here> -S container_registry
- (see more on Environment Variables)
The name of the variables should be the name of the registry defined in the .lagoon.yml
file, it should be:
- uppercase
- replace
-
with _
- have the prefix
REGISTRY_
- have the suffix of
_USERNAME
or _PASSWORD
.
Some examples of this are:
dockerhub
would become REGISTRY_DOCKERHUB_USERNAME
and REGISTRY_DOCKERHUB_PASSWORD
docker-hub
would become REGISTRY_DOCKER_HUB_USERNAME
and REGISTRY_DOCKER_HUB_PASSWORD
my-custom-registry
would become REGISTRY_MY_CUSTOM_REGISTRY_USERNAME
and REGISTRY_MY_CUSTOM_REGISTRY_PASSWORD
- lowercased versions may still work if there are no
-
in them, for example REGISTRY_dockerhub_USERNAME
, but the uppercased version will always be chosen above others.
Legacy method of defining registry password A previous method that allowed for the password to be defined using an environment variable, with the name of the variable to be defined in the .lagoon.yml
file like so: .lagoon.yml
container-registries:\ndocker-hub:\nusername: dockerhubuser\npassword: MY_DOCKER_HUB_PASSWORD\n
the username needs to be provided in this file too, unless the supported variable for defining the username is provided.
The variable can then ba added to the API like so
lagoon add variable -p <project_name> -N MY_DOCKER_HUB_PASSWORD -V <password_goes_here> -S container_registry
While we will continue to support this method, it may be deprecated in the future, we will ensure that warnings are presented within builds to give time for users to change to the supported method.
If a supported variable password is provided, it will be used instead of the custom named variable.
"},{"location":"concepts-basics/lagoon-yml/#hardcoded-values-method","title":"Hardcoded values method","text":"You can also define the password directly in the .lagoon.yml
file in plain text, however we do not recommend this.
.lagoon.ymlcontainer-registries:\ndocker-hub:\ndescription: \"the default docker.io registry credentials\"\nusername: dockerhubuser\npassword: MySecretPassword\nmy-custom-registry:\ndescription: \"the credentials for my own registry\"\nurl: my.own.registry.com\nusername: mycustomuser\npassword: MyCustomSecretPassword\n
"},{"location":"concepts-basics/lagoon-yml/#consuming-a-custom-or-private-container-registry-image","title":"Consuming a custom or private container registry image","text":"To consume a custom or private container registry image, you need to update the service inside your docker-compose.yml
file to use a build context instead of defining an image:
.docker-compose.ymlservices:\nmariadb:\nbuild:\ncontext: .\ndockerfile: Dockerfile.mariadb\n
Once the docker-compose.yml
file has been updated to use a build, you need to create the Dockerfile.<service>
and then set your private image as the FROM <repo>/<name>:<tag>
.lagoon.ymlFROM dockerhubuser/my-private-database:tag\n
"},{"location":"concepts-basics/lagoon-yml/#example-lagoonyml","title":"Example .lagoon.yml
","text":"This is an example .lagoon.yml
which showcases all possible settings. You will need to adapt it to your project.
.lagoon.ymldocker-compose-yaml: docker-compose.yml\nenvironment_variables:\ngit_sha: 'true'\ntasks:\npre-rollout:\n- run:\nname: drush sql-dump\ncommand: mkdir -p /app/web/sites/default/files/private/ && drush sql-dump --ordered-dump --gzip --result-file=/app/web/sites/default/files/private/pre-deploy-dump.sql.gz\nservice: cli\npost-rollout:\n- run:\nname: drush cim\ncommand: drush -y cim\nservice: cli\nshell: bash\n- run:\nname: drush cr\ncommand: drush -y cr\nservice: cli\nroutes:\nautogenerate:\ninsecure: Redirect\nenvironments:\nmain:\nroutes:\n- nginx:\n- example.com\n- example.net\n- \"www.example.com\":\ntls-acme: true\ninsecure: Redirect\nhstsEnabled: true\n- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\ntypes:\nmariadb: mariadb\ntemplates:\nmariadb: mariadb.main.deployment.yml\nrollouts:\nmariadb: statefulset\ncronjobs:\n- name: drush cron\nschedule: \"M * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\nstaging:\ncronjobs:\n- name: drush cron\nschedule: \"M * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\nfeature/feature-branch:\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\n
"},{"location":"concepts-basics/lagoon-yml/#deprecated","title":"Deprecated","text":"These settings have been deprecated and should be removed from use in your .lagoon.yml
.
routes.autogenerate.insecure
The None
option is equivalent to Redirect
.
environments.[name].monitoring_urls
environments.[name].routes.[service].[route].hsts
environments.[name].routes.[service].[route].insecure
The None
option is equivalent to Redirect
.
"},{"location":"concepts-basics/building-blocks/deploy-targets/","title":"Deploy Targets","text":"A deploy target tells Lagoon where to deploy your project - into which cluster. A project may have one or more deploy targets, for example, one for production and one for testing. Deploy targets have options that allow for automatic deployment of defined branches, as well as pull requests.
Read more about deploy targets.
"},{"location":"concepts-basics/building-blocks/groups/","title":"Groups","text":"Groups are made up of users who have roles. An organization can have one or more groups. Each project can be assigned one or more groups. Groups can be assigned to multiple projects. Groups are created independently of projects, and then assigned to them.
Organizations have a quota to limit the number of groups assigned to it. If you need to change the quota, please contact your Lagoon administrator.
"},{"location":"concepts-basics/building-blocks/notifications/","title":"Notifications","text":"Notifications are how Lagoon informs users about what's going on with their projects. There are several types of notifications:
- Slack
- RocketChat
- Email
- Webhook
- Microsoft Teams
A project can have one or more notifications. Organizations have a notification quota for all of their projects. Notifications are created independently of projects, and can then be assigned to one or more projects.
Learn how to add notifications step-by-step in the Lagoon UI.
Learn how to add notifications notifications via the API.
"},{"location":"concepts-basics/building-blocks/organizations/","title":"Organizations","text":"An organization is an entity which can contain one or more projects, groups, users, and notifications. Organizations help control access to projects, making it easy to create groups, add and remove users, and assign groups to projects.
Organizations add a layer of structure to help imitate life - for example, you may be a project manager who creates an organization to reflect the team working on a specific site. So that organization would contain the project or projects that make up that site, all of the people who need access to work on the site as users in a group called developers, and maybe another group of people who just need access to Lagoon to view the site and any issues, called viewers, each with the appropriate roles.
Organizations have a quota to limit the number of projects, groups, notifications, and environments that can be assigned to it. If you need to change this quota, please contact your Lagoon administrator.
Learn more about how to interact with Organizations.
"},{"location":"concepts-basics/building-blocks/projects/","title":"Projects","text":"A project is an application that lives on Lagoon. An organization may have one or more projects. A project may have one or more users, notifications, and at least one deploy target. Organizations have a quota to limit the amount of projects that can be created.
"},{"location":"concepts-basics/building-blocks/roles/","title":"Roles","text":"Roles determine a user's access to projects. Users are given roles in groups and organizations.
Members of groups can be given the following roles:
- Guest
- Reporter
- Developer
- Maintainer
- Owner
These roles and their permissions are described in more depth here: Role-Based Access Control.
Members of organizations can be given the following roles:
- Org Owner
- Org Viewer
Changing Quotas
If you need to change quotas, please contact your Lagoon administrator.
An organization owner can do everything to do with administering an organization aside from changing quotas. They can add and delete users, groups, projects, deploy targets, and notifcations
An organization viewer is a read-only role that can only view the organization, but cannot make any changes or additions. They can view the projects, groups, users, and notifications within an organization but cannot modify them.
A user who has not been assigned as an owner or viewer cannot see the organization.
"},{"location":"concepts-basics/building-blocks/users/","title":"Users","text":"A user is a Lagoon account that allows you to interact with the Lagoon system. A user may belong to one or more organizations and groups, and each group may have a different role granting various permissions. Organizations, groups, and roles grant users access to projects.
Read more about user roles.
"},{"location":"contributing-to-lagoon/api-debugging/","title":"API Debugging","text":"1 . Ensure the dev
script at services/api/package.json
includes the following:
services/api/package.jsonnode --inspect=0.0.0.0:9229\n
2 . Update docker-compose.yml
to map the dist
folder and expose the 9229
port:
docker-compose.yml api:\nimage: ${IMAGE_REPO:-lagoon}/api\ncommand: yarn run dev\nvolumes:\n- ./services/api/src:/app/services/api/src\n- ./services/api/dist:/app/services/api/dist\ndepends_on:\n- api-db\n- local-api-data-watcher-pusher\n- keycloak\nports:\n- '3000:3000'\n- '9229:9229'\n
3 . Add the following to .vscode/launch.json
:
.vscode/launch.json{\n// Use IntelliSense to learn about possible attributes.\n// Hover to view descriptions of existing attributes.\n// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387.\n\"version\": \"0.2.0\",\n\"configurations\": [\n{\n\"name\": \"Docker: Attach to Node\",\n\"type\": \"node\",\n\"request\": \"attach\",\n\"port\": 9229,\n\"address\": \"localhost\",\n\"outFiles\": [\"${workspaceRoot}/app/services/api/dist/**/*.js\"],\n\"localRoot\": \"${workspaceFolder}/services/api\",\n\"remoteRoot\": \"/app/services/api\",\n\"sourceMaps\": true,\n\"protocol\": \"inspector\"\n}\n]\n}\n
4 . Rebuild/restart the containers:
Restart containersrm build/api && make build/api && docker compose restart api\n
5 . Restart VScode.
"},{"location":"contributing-to-lagoon/developing-lagoon/","title":"Developing Lagoon","text":"Development of Lagoon locally can now be performed on a local Kubernetes cluster, or via Docker Compose (as a fallback).
Note
The full Lagoon stack relies on a range of upstream projects which are currently incompatible with ARM-based architectures, such as the the M1/M2 Apple Silicon-based machines. For this reason, running or developing lagoon-core
or lagoon-remote
locally on these architectures is not currently supported. See https://github.com/uselagoon/lagoon/issues/3189 for more information.
"},{"location":"contributing-to-lagoon/developing-lagoon/#required-command-line-tools","title":"Required command line tools","text":"Some tools are required that are not downloaded/linked by the makefile, some systems may have these installed already.
envsubst
wget
Mac users can install these via brew:
Text Onlybrew install wget gettext\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#docker","title":"Docker","text":"Docker must be installed to build and run Lagoon locally.
"},{"location":"contributing-to-lagoon/developing-lagoon/#install-docker-and-docker-compose","title":"Install Docker and Docker Compose","text":"Please check the official docs for how to install Docker.
Docker Compose is included in Docker for Mac installations. For Linux installations see the directions here.
"},{"location":"contributing-to-lagoon/developing-lagoon/#configure-docker","title":"Configure Docker","text":"You will need to update your insecure registries in Docker. Read the instructions here on how to do that. We suggest adding the entire local IPv4 Private Address Spaces to avoid unnecessary reconfiguration between Kubernetes and Docker Compose. e.g. \"insecure-registries\" : [\"172.16.0.0/12\",\"192.168.0.0/16\"],
"},{"location":"contributing-to-lagoon/developing-lagoon/#allocate-enough-docker-resources","title":"Allocate Enough Docker Resources","text":"Running a Lagoon, Kubernetes, or Docker cluster on your local machine consumes a lot of resources. We recommend that you give your Docker host a minimum of 8 CPU cores and 12GB RAM.
"},{"location":"contributing-to-lagoon/developing-lagoon/#macos-docker-networking","title":"MacOS Docker Networking","text":"Unfortunately Docker for Mac runs Docker inside a lightweight VM. This makes some of the functionality that Linux users enjoy, unusable in MacOS. That functionality is the ability to route to container IP addresses within the docker networks directly. On MacOS this is not possible out of the box.
You can install the following package https://github.com/chipmk/docker-mac-net-connect. What this software does is create a tunnel between the Docker VM and the host and creates routes for the internal docker networks to the host. This allows you to access the Lagoon services in the docker network that is exposed inside of k3d the same way users developing on Linux would.
Text Only# Install via Homebrew\n$ brew install chipmk/tap/docker-mac-net-connect\n# Run the service and register it to launch at boot\n$ sudo brew services start chipmk/tap/docker-mac-net-connect\n# Stop the service\n$ sudo brew services stop chipmk/tap/docker-mac-net-connect\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#build-lagoon-locally","title":"Build Lagoon Locally","text":"Warning
Only consider building Lagoon this way if you intend to develop features or functionality for it, or want to debug internal processes. We will also be providing instruction to install Lagoon without building it (i.e. by using the published releases).
We're using make
(see the Makefile) in order to build the needed Docker images, configure Kubernetes and run tests.
We have provided a number of routines in the Makefile to cover most local development scenarios. Here we will run through a complete process.
"},{"location":"contributing-to-lagoon/developing-lagoon/#build-images","title":"Build images","text":" - Here
-j8
tells make to run 8 tasks in parallel to speed the build up. Adjust as necessary. - We have set
SCAN_IMAGES=false
as a default to not scan the built images for vulnerabilities. If set to true, a scan.txt
file will be created in the project root with the scan output.
Build imagesmake -j8 build\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#deploy-a-local-lagoon-development-stack-without-test-suites","title":"Deploy a local Lagoon development stack without test suites","text":"The make file offers a command that allows you to spin up Lagoon inside of a k3d cluster locally and explore its functionality.
Using the following make command will create a k3d cluster, install Lagoon and all of the necessary components to get you up and running and ready to explore.
Deploy local stackmake k3d/local-stack\n
Warning
This can take some time to complete as it will install a lot of components necessary to make Lagoon work. This includes things like ingress-nginx, harbor, and all the additional services to make exploring Lagoon easy.
At the end of the process, the command will provide some useful information that will get you up and running and able to log in to the UI or using the API with tools like the Lagoon CLI.
"},{"location":"contributing-to-lagoon/developing-lagoon/#run-the-lagoon-test-suite","title":"Run the Lagoon test-suite","text":"If you're developing new functionality in Lagoon and want to make sure the tests complete, you can run the entire test suite using the following options
- Start Lagoon test routine using the defaults in the Makefile (all tests).
Start testsmake k3d/test\n# or use retest if you already have a local stack running\nmake k3d/retest\n
Warning
There are a lot of tests configured to run by default - please consider only testing locally the minimum that you need to ensure functionality. This can be done by specifying or removing tests from the TESTS
variable in the Makefile.
This process will:
- Download the correct versions of the local development tools if not installed -
k3d
, kubectl
, helm
, jq
. - Update the necessary Helm repositories for Lagoon to function.
- Ensure all of the correct images have been built in the previous step.
- Create a local K3D cluster, which provisions an entire running Kubernetes cluster in a local Docker container. This cluster has been configured to talk to a provisioned image registry that we will be pushing the built Lagoon images to. It has also been configured to allow access to the host filesystem for local development.
- Clone Lagoon from https://github.com/uselagoon/lagoon-charts (use the
CHARTS_TREEISH
variable in the Makefile to control which branch if needed). - Install the Harbor Image registry into the K3D cluster and configure its ingress and access properly.
- Docker will push the built images for Lagoon into the Harbor image registry.
- It then uses the Makefile from lagoon-charts to perform the rest of the setup steps.
- A suitable ingress controller is installed - we use the NGINX Ingress Controller.
- A local NFS server provisioner is installed to handle specific volume requests - we use one that handles Read-Write-Many operations (RWX).
- Lagoon Core is then installed, using the locally built images pushed to the cluster-local Image Registry, and using the default configuration, which may exclude some services not needed for local testing. The installation will wait for the API and Keycloak to come online.
- The DBaaS providers are installed - MariaDB, PostgreSQL and MongoDB. This step provisions standalone databases to be used by projects running locally, and emulates the managed services available via cloud providers (e.g. Cloud SQL, RDS or Azure Database).
- Lagoon Remote is then installed, and configured to talk to the Lagoon Core, databases and local storage. The installation will wait for this to complete before continuing.
- To provision the tests, the Lagoon Test chart is then installed, which provisions a local Git server to host the test repositories, and pre-configures the Lagoon API database with the default test users, accounts and configuration. It then performs readiness checks before starting tests.
- Lagoon will run all the tests specified in the TESTS variable in the Makefile. Each test creates its own project & environments, performs the tests, and then removes the environments & projects. The test runs are output to the console log in the
lagoon-test-suite-*
pod, and can be accessed one test per container.
Ideally, all of the tests pass and it's all done!
"},{"location":"contributing-to-lagoon/developing-lagoon/#view-the-test-progress-and-your-local-cluster","title":"View the test progress and your local cluster","text":"The test routine creates a local Kubeconfig file (called kubeconfig.k3d.lagoon
in the root of the project, that can be used with a Kubernetes dashboard, viewer or CLI tool to access the local cluster. We use tools like Lens, Octant, kubectl or Portainer in our workflows. Lagoon Core and the tests build in the lagoon-core
namespace, Remote is installed in the Lagoon
namespace. Each lagoon test environment creates its own namespace to run, so make sure to use the correct context when inspecting.
In order to use kubectl with the local cluster, you will need to use the correct Kubeconfig. This can be done for every command or it can be added to your preferred tool:
kubeconfig.k3d.lagoonKUBECONFIG=./kubeconfig.k3d.lagoon kubectl get pods -n lagoon\n
The Helm charts used to build the local Lagoon are cloned into a local folder and symlinked to lagoon-charts.k3d.lagoon
where you can see the configuration. We'll cover how to make easy modifications later in this documentation.
"},{"location":"contributing-to-lagoon/developing-lagoon/#interact-with-your-local-lagoon-cluster","title":"Interact with your local Lagoon cluster","text":"The Makefile includes a few simple routines that will make interacting with the installed Lagoon simpler:
"},{"location":"contributing-to-lagoon/developing-lagoon/#port-forwarding","title":"Port forwarding","text":"Clusters deployed by this makefile will provide loadbalancers and individual IPs, but if you choose to you can port-forward some services using the following
Create local portsmake k3d/port-forwards\n
This will create local ports to expose the UI (6060), API (7070) and Keycloak (8080). Note that this logs to stdout
, so it should be performed in a secondary terminal/window.
"},{"location":"contributing-to-lagoon/developing-lagoon/#lagoon-credentialsinformation","title":"Lagoon credentials/information","text":"This will retrieve the necessary credentials to interact with the Lagoon.
Retrieve admin credsmake k3d/get-lagoon-details\n
- The JWT is an admin-scoped token for use as a bearer token with your local GraphQL client. See more in our GraphQL documentation.
- There is a token for use with the \"admin\" user in Keycloak, who can access all users, groups, roles, etc.
It is also possible to get the command snippet to add the configuration for the local-stack to your lagoon-cli.
Retrieve admin credsmake k3d/get-lagoon-cli-details\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#rebuild-lagoon-core-and-push-images","title":"Rebuild Lagoon core and push images","text":"This will re-push the images listed in KIND_SERVICES
with the correct tag, and redeploy the lagoon-core chart. This is useful for testing small changes to Lagoon services, but does not support \"live\" development. You will need to rebuild these images locally first, e.g rm build/api && make build/api
.
Re-push imagesmake k3d/dev\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#patch-with-local-nodejs","title":"Patch with local node.js","text":"This will build the typescript services, using your locally installed Node.js (it should be >16.0). It will then:
Build typescript servicesmake k3d/local-dev-patch\n
- Mount the \"dist\" folders from the Lagoon services into the correct lagoon-core pods in Kubernetes
- Redeploy the lagoon-core chart with the services running with
nodemon
watching the code for changes - This will facilitate \"live\" development on Lagoon.
- Note that occasionally the pod in Kubernetes may require redeployment for a change to show. Clean any build artifacts from those services if you're rebuilding different branches with
git clean -dfx
as the dist folders are ignored by Git.
"},{"location":"contributing-to-lagoon/developing-lagoon/#install-simple-logging-support","title":"Install simple Logging support","text":"This will create a standalone OpenDistro for Elasticsearch cluster in your local Docker, and configure Lagoon to dispatch all logs (Lagoon and project) to it, using the configuration in lagoon-logging.
Initiate loggingmake k3d/local-dev-logging\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#re-run-specific-tests","title":"Re run specific tests","text":"This will re-run a suite of tests (defined in the TESTS
variable) against the existing cluster. It will re-push the images needed for tests (tests, local-git, and the data-watcher-pusher). You can specify tests to run by passing the TESTS variable inline.
Re-run tests.make k3d/retest\n# OR\nmake k3d/retest TESTS='[features-kubernetes]'\n
If updating a test configuration, the tests image will need to be rebuilt and pushed, e.g rm build/tests && make build/tests && make k3d/push-images IMAGES='tests' && make k3d/retest TESTS='[api]'
"},{"location":"contributing-to-lagoon/developing-lagoon/#push-images","title":"Push images","text":"This will push all the images up to the image registry. Specifying IMAGES
will tag and push specific images.
Push all imagesmake k3d/push-images\n# OR\nmake k3d/push-images IMAGES='tests local-git'\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#tear-down","title":"Tear down","text":"This will remove the K3D Lagoon cluster from your local Docker.
Remove clustermake k3d/clean\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#ansible","title":"Ansible","text":"The Lagoon test uses Ansible to run the test suite. Each range of tests for a specific function has been split into its own routine. If you are performing development work locally, select which tests to run, and update the $TESTS
variable in the Makefile to reduce the concurrent tests running.
The configuration for these tests is held in three services:
tests
is the Ansible test services themselves. The local testing routine runs each individual test as a separate container within a test-suite pod. These are listed below. local-git
is a Git server hosted in the cluster that holds the source files for the tests. Ansible pulls and pushes to this repository throughout the tests api-data-watcher-pusher
is a set of GraphQL mutations that pre-populates local Lagoon with the necessary Kubernetes configuration, test user accounts and SSH keys, and the necessary groups and notifications. Note that this will wipe local projects and environments on each run.
The individual routines relevant to Kubernetes are:
active-standby-kubernetes
runs tests to check active/standby in Kubernetes. api
runs tests for the API - branch/PR deployment, promotion. bitbucket
, gitlab
and github
run tests for the specific SCM providers. drupal-php74
runs a single-pod MariaDB, MariaDB DBaaS and a Drush-specific test for a Drupal 8/9 project (drupal-php73
doesn't do the Drush test). drupal-postgres
runs a single-pod PostgreSQL and a PostgreSQL DBaaS test for a Drupal 8 project. elasticsearch
runs a simple NGINX proxy to an Elasticsearch single-pod. features-variables
runs tests that utilize variables in Lagoon. features-kubernetes
runs a range of standard Lagoon tests, specific to Kubernetes. features-kubernetes-2
runs more advanced kubernetes-specific tests - covering multi-project and subfolder configurations. nginx
, node
and python
run basic tests against those project types. node-mongodb
runs a single-pod MongoDB test and a MongoDB DBaaS test against a Node.js app.
"},{"location":"contributing-to-lagoon/developing-lagoon/#local-development","title":"Local Development","text":"Most services are written in Node.js. As many of these services share similar Node.js code and Node.js packages, we're using a feature of Yarn, called Yarn workspaces. Yarn workspaces need a package.json
in the project's root directory that defines the workspaces.
The development of the services can happen directly within Docker. Each container for each service is set up in a way that its source code is mounted into the running container (see docker-compose.yml
). Node.js itself is watching the code via nodemon
, and restarts the Node.js process automatically on a change.
"},{"location":"contributing-to-lagoon/developing-lagoon/#lagoon-commons","title":"lagoon-commons","text":"The services not only share many Node.js packages, but also share actual custom code. This code is within node-packages/lagoon-commons
. It will be automatically symlinked by Yarn workspaces. Additionally, the nodemon
of the services is set up in a way that it checks for changes in node-packages
and will restart the node process automatically.
"},{"location":"contributing-to-lagoon/developing-lagoon/#troubleshooting","title":"Troubleshooting","text":""},{"location":"contributing-to-lagoon/developing-lagoon/#i-cant-build-a-docker-image-for-any-nodejs-based-service","title":"I can't build a Docker image for any Node.js based service","text":"Rebuild the images via:
Rebuild images make clean\n make build\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#i-get-errors-about-missing-node_modules-content-when-i-try-to-build-run-a-nodejs-based-image","title":"I get errors about missing node_modules
content when I try to build / run a Node.js based image","text":"Make sure to run yarn
in Lagoon's root directory, since some services have common dependencies managed by yarn
workspaces.
"},{"location":"contributing-to-lagoon/developing-lagoon/#i-get-an-error-resolving-the-nipio-domains","title":"I get an error resolving the nip.io
domains","text":"ErrorError response from daemon: Get https://registry.172.18.0.2.nip.io/v2/: dial tcp: lookup registry.172.18.0.2.nip.io: no such host\n
This can happen if your local resolver filters private IPs from results. You can work around this by editing /etc/resolv.conf
and adding a line like nameserver 8.8.8.8
at the top to use a public resolver that doesn't filter results.
"},{"location":"contributing-to-lagoon/developing-lagoon/#i-want-to-be-able-to-test-email-in-a-demo-environment-using-the-lagoon-built-in-ssmtp-configuration-entrypoints","title":"I want to be able to test email in a demo environment using the lagoon built in ssmtp configuration entrypoints","text":"This k3d cluster installs a mail catching service that is available at mxout.lagoon.svc:25
within the cluster (it also has a web interface make k3d/get-lagoon-details
for details). Some images in lagoon support SSMTP_MAILHUB
variable, which can be added to a project using the lagoon-cli, or the following graphql via the API.
Text OnlyaddOrUpdateEnvVariableByName(\n input: {\n project: \"lagoon-demo\"\n scope: RUNTIME\n name: \"SSMTP_MAILHUB\"\n value: \"mxout.lagoon.svc:25\"\n }\n) {\n id\n}\n
"},{"location":"contributing-to-lagoon/developing-lagoon/#example-workflows","title":"Example workflows","text":"Here are some development scenarios and useful workflows for getting things done.
"},{"location":"contributing-to-lagoon/developing-lagoon/#add-tests","title":"Add tests","text":"An example
- Deploy the lagoon and run the test you're modifying.
Deploy Lagoonmake k3d/test TESTS=[features-variables]\n
- Edit
tests/tests/features-variables.yaml
and add a test case. - Rebuild the
tests
image.
Build testsrm build/tests\nmake -j8 build/tests\n
- Push the new
tests
image into the cluster registry.
Push test imagemake k3d/push-images IMAGES=tests\n
- Rerun the tests.
Re-run testsmake k3d/retest TESTS=[features-variables]\n
"},{"location":"contributing-to-lagoon/documentation/","title":"Contributing to Lagoon documentation","text":"We really value anything that you can offer us!
We've made building and viewing the documentation really straightforward, and the team is always ready to help out with reviews or pointers.
We use mkdocs with the excellent Material theme.
"},{"location":"contributing-to-lagoon/documentation/#viewing-and-updating-docs-locally","title":"Viewing and updating docs locally","text":"From the root of the Lagoon repository (you'll need Docker), run:
Get local docs up and running.docker run --rm -it -p 127.0.0.1:8000:8000 -v ${PWD}:/docs ghcr.io/amazeeio/mkdocs-material\n
This will start a development server on http://127.0.0.1:8000, configured to live-reload on any updates.
The customized Docker image contains all the necessary extensions.
Alternatively, to run the mkdocs
package locally, you'll need to install mkdocs, and then install all of the necessary plugins.
Install mkdocspip3 install -r docs/requirements.txt\nmkdocs serve\n
"},{"location":"contributing-to-lagoon/documentation/#editing-in-the-cloud","title":"Editing in the Cloud","text":"Each documentation page also has an \"edit\" pencil in the top right, that will take you to the correct page in the Git repository.
Feel free to contribute here, too - you can always use the built-in github.dev web-based editor. It's got basic Markdown previews, but none of the mkdocs loveliness.
"},{"location":"contributing-to-lagoon/documentation/#how-we-deploy-documentation","title":"How we deploy documentation","text":"We use the Deploy MkDocs GitHub Action to build all main branch pushes, and trigger a deployment of the gh-pages
branch.
"},{"location":"contributing-to-lagoon/releasing/","title":"Releasing Lagoon","text":"Lagoon has a number of moving parts, making releases quite complicated!
"},{"location":"contributing-to-lagoon/releasing/#lagoon-core-tags-and-testing","title":"Lagoon-core - tags and testing","text":" - Ensure all the identified pull requests have been merged into main branch for:
- uselagoon/lagoon
- uselagoon/build-deploy-tool
- uselagoon/lagoon-ui
- Once you are confident, push the next tag in sequence (minor or patch) to the main branch in the format v2.MINOR.PATCH as per semver. This will trigger a Jenkins build, visible at https://ci.lagoon.sh/blue/organizations/jenkins/lagoon/branches
- Whilst this is building, push lightweight tags to the correct commits on
lagoon-ui
and build-deploy-tool
in the format core-v2.MINOR.PATCH. Note that there are no other tags or releases on build-deploy-tool, but lagoon-ui also has it's own semver releases that are based on it's features. - Once the build has completed successfully in Jenkins, head to https://github.com/uselagoon/lagoon-charts to prepare the charts release
-
In the chart.yaml for the lagoon-core
and lagoon-test
charts, update the following fields:
- version: This is the next \"minor\" release of the chart - we usually use minor for a corresponding lagoon-core release
- appVersion: This is the actual tag of the released lagoon-core
- artifacthub.io/changes: All that's needed are the two lines in the below snippet, modified for the actual appVersion being released.
sample chart.yml snippets
# This is the chart version. This version number should be incremented each\n# time you make changes to the chart and its templates, including the app\n# version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 1.28.0\n# This is the version number of the application being deployed. This version\n# number should be incremented each time you make changes to the application.\n# Versions are not expected to follow Semantic Versioning. They should reflect\n# the version the application is using.\nappVersion: v2.14.2\n# This section is used to collect a changelog for artifacthub.io\n# It should be started afresh for each release\n# Valid supported kinds are added, changed, deprecated, removed, fixed and security\nannotations:\nartifacthub.io/changes: |\n- kind: changed\ndescription: update Lagoon appVersion to v2.14.2\n
Only lagoon-core and lagoon-test charts are updated as a result of a lagoon-core release. Follow the lagoon-remote process if there are any other changes. -
Create a PR for this chart release, and the Github Actions suite will undertake a full suite of tests:
- Lint and test charts - matrix: performs a lint and chart install against the current tested version of Kubernetes
- Lint and test charts - current: performs a lint and chart install against previous/future versions of Kubernetes
- Lagoon tests: runs the full series of ansible tests against the release.
Usually, failures in the lint and test charts are well explained (missing/misconfigured chart settings). If a single Lagoon test failes, it may just need re-running. If multiple failures occur, they will need investigating.
Once those tests have all passed successfully, you can proceed with creating the releases:
"},{"location":"contributing-to-lagoon/releasing/#lagoon-core-releases-and-release-notes","title":"Lagoon-core - releases and release notes","text":" - In uselagoon/lagoon create a release from the tag pushed earlier. Use the \"Generate release notes\" button to create the changelog. Look at previous releases for what we include in the release - and the lagoon-images link will always be the most recent released version. Note that the links to the charts, lagoon-ui and build-deploy-tool can all be filled in now, but the links won't work until the future steps. Mark this as the latest release and Publish the release.
- In uselagoon/build-deploy-tool create a release from the tag pushed earlier. Use the \"Generate release notes\" button to create the changelog - ensuring that the last core-v2.X tag is used, not any other tag. Look at previous releases for what we include in the release - Mark this as the latest release and Publish the release.
- In uselagoon/lagoon-ui create a release from the tag pushed earlier. Use the \"Generate release notes\" button to create the changelog - ensuring that the last core-v2.X tag is used, not any other tag. Look at previous releases for what we include in the release - Mark this as the latest release and Publish the release.
- In uselagoon/lagoon-charts merge the successful PR, this will create the lagoon-core and lagoon-test releases for you. Edit the resulting lagoon-core chart release to note the corresponding lagoon release in the title and text box, as per previous releases.
"},{"location":"contributing-to-lagoon/releasing/#lagoon-remote-releases-and-release-notes","title":"Lagoon-remote - releases and release notes","text":"Lagoon remote has a release cycle separate to Lagoon Core, and as such, can be released anytime that a dependency sub-chart or service is updated.
"},{"location":"contributing-to-lagoon/tests/","title":"Tests","text":"All of our tests are written with Ansible and mostly follow this approach:
- They create a new Git repository.
- Add and commit some files from a list of files (in
tests/files
) into this Git repository. - Push this Git repository to a Git server (either locally or on GitHub).
- Send a trigger to a trigger service (for example a webhook to the webhook handler, which is the same as a real webhook that would be sent).
- Starts to monitor the URL at which the test would expect something to happen (like deploying a Node.js app that has the Git branch as an HTML text).
- Compares the result on the URL with the expected result.
Lagoon is mostly tested in 3 different ways:
"},{"location":"contributing-to-lagoon/tests/#1-locally","title":"1. Locally","text":"During local development, the best way to test is locally. All tests are started via make
. Make will download and build all the required dependencies.
Make testsmake tests\n
This will run all defined tests. If you only want to run a subset of the tests, run make tests-list
to see all existing tests and run them individually.
For example, make tests/node
will run the Node.js Docker images tests.
In order to actually see what is happening inside the microservices, we can use make logs
:
Make logsmake logs\n
Or only for a specific service:
Make logsmake logs service=webhook-handler\n
"},{"location":"contributing-to-lagoon/tests/#2-automated-integration-testing","title":"2. Automated integration testing","text":"In order to test pull requests that are created against Lagoon, we have a fully automatic integration test running on a dedicated Jenkins instance: https://ci.lagoon.sh. It is defined inside the .Jenkinsfile
, and runs automatically for every pull request that is opened.
This will build all images, start a Kubernetes cluster and run a series of tests.
The tests can be found here:
- https://ci.lagoon.sh/blue/organizations/jenkins/lagoon/activity
"},{"location":"docker-images/commons/","title":"Commons","text":"The Lagoon commons
Docker image. Based on the official Alpine images.
This image has no functionality itself, but is instead a base image, intended to be extended and utilized to build other images. All the alpine-based images in Lagoon inherit components from commons.
"},{"location":"docker-images/commons/#included-tooling","title":"Included tooling","text":" docker-sleep
- standardized one-hour sleep fix-permissions
- automatically fixes permissions on a given directory to all group read-write wait-for
- a small script to ensure that services are up and running in the correct order - based off https://github.com/eficode/wait-for entrypoint-readiness
- checks to make sure that long-running entrypoints have completed entrypoints
- a script to source all entrypoints under /lagoon/entrypoints/* in an alphabetical/numerical order
"},{"location":"docker-images/commons/#included-entrypoints","title":"Included entrypoints","text":"The list of default entrypoints in this image is found at https://github.com/uselagoon/lagoon-images/tree/main/images/commons/lagoon/entrypoints. Subsequent downstream images will also contribute entrypoints under /lagoon
that are run in the eventual image.
"},{"location":"docker-images/deprecated-images/","title":"Deprecated Images","text":"From time to time, the Lagoon team may need to mark images as deprecated.
This is conveyed in a \"sh.lagoon.image.deprecated\" . It can be viewed in Docker Desktop, via a docker inspect
command, or in future releases of Lagoon, highlighted in a build.
If the image has a suggested replacement, it will be conveyed in a \"sh.lagoon.image.deprecated.suggested\" label attached the deprecated image.
docker inspect output showing deprecated image$ docker inspect amazeeio/mongo:latest\n...\n{\n...\n \"sh.lagoon.image.deprecated.status\": \"replaced\",\n \"sh.lagoon.image.deprecated.suggested\": \"docker.io/uselagoon/mongo-4\"\n}\n
"},{"location":"docker-images/deprecated-images/#changing-the-image","title":"Changing the image","text":"In all cases, changing to a suggested or updated image will require a change in your codebase. Any reference to the image in a Dockerfile, or in your docker-compose.yml will need to be updated.
"},{"location":"docker-images/deprecated-images/#reasons-for-deprecating","title":"Reasons for deprecating","text":"We have three main reasons for deprecating an image:
"},{"location":"docker-images/deprecated-images/#replaced","title":"Replaced","text":"An image will be marked as \"replaced\" when the image reference needs to be changed. This could be because of a naming change, a repository change, or a versioning change. In these cases a new image will usually be recommended for use instead, and using it should be a fairly easy switch.
Some examples of this are:
- the migration from
amazeeio/{image}
to uselagoon/{image}
- these images should be identical - the versioning of an image from
uselagoon/mongo
to uselagoon/mongo-4
- these images should be identical
"},{"location":"docker-images/deprecated-images/#end-of-life","title":"End of Life","text":"An image will be marked as \"endoflife\" when the version published is no longer actively supported or maintained upstream. In these cases a new image will usually be recommended for use instead, but upgrading to it may require updating some of your application code, so should always be tested thoroughly. Also note that any suggested image may also be marked as endoflife (especially if the upstream moves quickly)
Some examples of this are:
- PHP 8.0 reached EOL in November 2023, and any
uselagoon/php-8.0-{variant}
image will suggest uselagoon/php-8.3-{variant}
as it is the current latest release of PHP. Upgrades here may be straightforward as it's within a major version. - Python 2.7 reached EOL in January 2020, and the
uselagoon/php-2.7
images will suggest uselagoon/python-3.12
as it is the current latest release of Python. Upgrades here will be complex, owing to it being a major version change.
"},{"location":"docker-images/deprecated-images/#discontinued","title":"Discontinued","text":"An image will be marked as \"discontinued when the variant is no longer being published by the Lagoon team (although the upstream may still be supported). In these cases a replacement image may be suggested, but any migration will be involved, and require updating of application code, client libraries, data directories etc, or removal of functionality completely.
- A CKAN variant of Python 2.7 image
uselagoon/python-2.7-ckan
stopped being published in August 2021 and no replacement is suggested. - An AthenaPDF image
uselagoon/athenapdf-service
stopped being published in October 2022 and no replacement image is suggested. - An Elasticsearch 7 image
uselagoon/elasticsearch-7
stopped being published in April 2023 due to licensing concerns, and although images may suggest uselagoon/opensearch-2
- any upgrade here will be extremely involved.
"},{"location":"docker-images/deprecated-images/#amazeeio-image-variants","title":"\"amazeeio/\" image variants","text":"Historically, all Lagoon images were dual published to the uselagoon and amazeeio Docker Hub organizations.
In August 2024, we ceased this dual-publishing model, and have used the deprecated image tooling to suggest the correct replacements.
We encourage anyone still using the amazeeio
variants to switch to the uselagoon
variants as soon as possible.
As well as being easier for us to maintain, the uselagoon versions:
- Are routinely published and updated. No
amazeeio
image will be updated beyond July 2024. - Are published as multi-architecture images by default, so will work natively on Linux, Windows or MacOS machines.
- Are free from any rate-limit restrictions, as the
uselagoon
organization is Docker Sponsored Open Source
"},{"location":"docker-images/mariadb/","title":"MariaDB","text":"MariaDB is the open source successor to MySQL.
The Lagoon MariaDB
image Dockerfile. Based on the official packages mariadb
and mariadb-client
provided by the the upstream Alpine image.
This Dockerfile is intended to be used to set up a standalone MariaDB database server.
- 10.4 (available for compatibility only, no longer officially supported) -
uselagoon/mariadb-10.4
- 10.5 Dockerfile (Alpine 3.14 Support until May 2023) -
uselagoon/mariadb-10.5
- 10.6 Dockerfile (Alpine 3.16 Support until May 2024) -
uselagoon/mariadb-10.6
- 10.11 Dockerfile (Alpine 3.18 Support until May 2025) -
uselagoon/mariadb-10.11
Info
As these images are not built from the upstream MariaDB images, their support follows a different cycle - and will only receive updates as long as the underlying Alpine images receive support - see https://alpinelinux.org/releases/ for more information. In practice, most MariaDB users will only be running these containers locally - the production instances will use the Managed Cloud Databases provided by the DBaaS Operator
"},{"location":"docker-images/mariadb/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of MariaDB containers is port 3306
.
To allow Lagoon to select the best way to run the MariaDB container, use lagoon.type: mariadb
- this allows the DBaaS operator to provision a cloud database if available in the cluster. Use lagoon.type: mariadb-single
to specifically request MariaDB in a container. Persistent storage is always provisioned for MariaDB containers at /var/lib/mysql
.
This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. readiness-probe.sh
script to check when MariaDB container is ready.
"},{"location":"docker-images/mariadb/#docker-composeyml-snippet","title":"docker-compose.yml
snippet","text":"docker-compose.yml mariadb:\nimage: uselagoon/mariadb-10.6-drupal:latest\nlabels:\n# tells Lagoon this is a MariaDB database\nlagoon.type: mariadb\nports:\n# exposes the port 3306 with a random local port, find it with `docker compose port mariadb 3306`\n- \"3306\"\nvolumes:\n# mounts a named volume at the default path for MariaDB\n- db:/var/lib/mysql\n
"},{"location":"docker-images/mariadb/#included-tools","title":"Included tools","text":" mysqltuner.pl
- Perl script useful for database parameter tuning. mysql-backup.sh
- Script for automating the daily MySQL backups on development environment. pwgen
- Utility to generate random and complex passwords.
"},{"location":"docker-images/mariadb/#included-mycnf-configuration-file","title":"Included my.cnf
configuration file","text":"The image ships a default MariaDB configuration file, optimized to work on Lagoon. Some options are configurable via environment variables.
"},{"location":"docker-images/mariadb/#environment-variables","title":"Environment Variables","text":"Environment Variable Default Description MARIADB_DATABASE lagoon Database name created at startup. MARIADB_USER lagoon Default user created at startup. MARIADB_PASSWORD lagoon Password of default user created at startup. MARIADB_ROOT_PASSWORD Lag00n MariaDB root user's password. MARIADB_CHARSET utf8mb4 Set the server charset. MARIADB_COLLATION utf8mb4_bin Set server collation. MARIADB_MAX_ALLOWED_PACKET 64M Set the max_allowed_packet
size. MARIADB_INNODB_BUFFER_POOL_SIZE 256M Set the MariaDB InnoDB buffer pool size. MARIADB_INNODB_BUFFER_POOL_INSTANCES 1 Number of InnoDB buffer pool instances. MARIADB_INNODB_LOG_FILE_SIZE 64M Size of InnoDB log file. MARIADB_LOG_SLOW (not set) Variable to control the save of slow queries. MARIADB_LOG_QUERIES (not set) Variable to control the save of ALL queries. BACKUPS_DIR /var/lib/mysql/backup Default path for databases backups. MARIADB_DATA_DIR /var/lib/mysql Path of the MariaDB data dir, be careful, changing this can occur data loss! MARIADB_COPY_DATA_DIR_SOURCE (not set) Path which the entrypoint script of mariadb will use to copy into the defined MARIADB_DATA_DIR
, this can be used for prepopulating the MariaDB with a database. The scripts expects actual MariaDB data files and not a sql file! Plus it only copies data if the destination does not already have a mysql datadir in it. If the LAGOON_ENVIRONMENT_TYPE
variable is set to production
, performances are set accordingly by using MARIADB_INNODB_BUFFER_POOL_SIZE=1024
and MARIADB_INNODB_LOG_FILE_SIZE=256
.
"},{"location":"docker-images/mongodb/","title":"MongoDB","text":"MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB is a document database, which means it stores data in JSON-like documents.
- from mongodb.com
"},{"location":"docker-images/mongodb/#supported-versions","title":"Supported Versions","text":"4.0 Dockerfile - uselagoon/mongo-4
This Dockerfile is intended to be used to set up a standalone MongoDB database server.
"},{"location":"docker-images/mongodb/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user, and therefore also on Kubernetes or OpenShift.
"},{"location":"docker-images/mysql/","title":"MySQL","text":"MySQL is a widely used, open-source relational database management system (RDBMS).
The Lagoon MySQL
image Dockerfile. Based on the official upstream docker image mysql
(Oracle Linux variant).
This Dockerfile is intended to be used to set up a standalone MySQL database server, intended for use in Local Development
- 8.0 Dockerfile (Extended Support until April 2026) -
uselagoon/mysql-8.0
- 8.4 Dockerfile (Extended Support until April 2032) -
uselagoon/mysql-8.4
Info
These images are not intended as drop-in alernatives to MariaDB images, and as such, may require customization to run in local development environments
"},{"location":"docker-images/mysql/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of MySQL containers is port 3306
.
To allow Lagoon to select the best way to run the MySQL container, use lagoon.type: mariadb
- this allows the DBaaS operator to provision a cloud database if available in the cluster. Use lagoon.type: mariadb-single
to specifically request MySQL in a container. Persistent storage is always provisioned for MySQL containers at /var/lib/mysql
.
This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. readiness-probe.sh
script to check when MySQL container is ready.
"},{"location":"docker-images/mysql/#docker-composeyml-snippet-for-non-drupal-projects","title":"docker-compose.yml
snippet for non-Drupal projects","text":"docker-compose.yml mysql:\nimage: uselagoon/mysql-8.4:latest\nlabels:\n# tells Lagoon this is a MariaDB-compatible database\nlagoon.type: mariadb\nports:\n# exposes the port 3306 with a random local port, find it with `docker compose port mysql 3306`\n- \"3306\"\nvolumes:\n# mounts a named volume at the default path for MySQL\n- db:/var/lib/mysql\n
"},{"location":"docker-images/mysql/#docker-composeyml-snippet-for-drupal-projects","title":"docker-compose.yml
snippet for Drupal projects","text":"docker-compose.yml mariadb:\nimage: uselagoon/mysql-8.4:latest\nlabels:\n# tells Lagoon this is a MariaDB-compatible database\nlagoon.type: mariadb\nports:\n# exposes the port 3306 with a random local port, find it with `docker compose port mariadb 3306`\n- \"3306\"\nenvironment:\n# These override the default credentials to match what Drupal is hardwired to expect in Lagoon\n- MYSQL_DATABASE=drupal\n- MYSQL_USER=drupal\n- MYSQL_PASSWORD=drupal\nvolumes:\n# mounts a named volume at the default path for MariaDB\n- db:/var/lib/mysql\n
"},{"location":"docker-images/mysql/#included-tools","title":"Included tools","text":" mysqltuner.pl
- Perl script useful for database parameter tuning. mysql-backup.sh
- Script for automating the daily MySQL backups on development environment. pwgen
- Utility to generate random and complex passwords.
"},{"location":"docker-images/mysql/#included-mycnf-configuration-file","title":"Included my.cnf
configuration file","text":"The image ships a default MySQL configuration file, optimized to work on Lagoon. Some options are configurable via environment variables.
"},{"location":"docker-images/mysql/#environment-variables","title":"Environment Variables","text":"Environment Variable Default Description MYSQL_DATABASE lagoon Database name created at startup. MYSQL_USER lagoon Default user created at startup. MYSQL_PASSWORD lagoon Password of default user created at startup. MYSQL_ROOT_PASSWORD Lag00n MySQL root user's password. MYSQL_CHARSET utf8mb4 Set the server charset. MYSQL_COLLATION utf8mb4_bin Set server collation. MYSQL_MAX_ALLOWED_PACKET 64M Set the max_allowed_packet
size. MYSQL_INNODB_BUFFER_POOL_SIZE 256M Set the MySQL InnoDB buffer pool size. MYSQL_INNODB_BUFFER_POOL_INSTANCES 1 Number of InnoDB buffer pool instances. MYSQL_INNODB_LOG_FILE_SIZE 64M Size of InnoDB log file. MYSQL_LOG_SLOW (not set) Variable to control the save of slow queries. MYSQL_LOG_QUERIES (not set) Variable to control the save of ALL queries. BACKUPS_DIR /var/lib/mysql/backup Default path for databases backups. MYSQL_DATA_DIR /var/lib/mysql Path of the MySQL data dir, be careful, changing this can occur data loss! MYSQL_COPY_DATA_DIR_SOURCE (not set) Path which the entrypoint script of MySQL will use to copy into the defined MYSQL_DATA_DIR
, this can be used for prepopulating the MySQL with a database. The scripts expects actual MySQL data files and not a sql file! Plus it only copies data if the destination does not already have a MySQL datadir in it. If the LAGOON_ENVIRONMENT_TYPE
variable is set to production
, performances are set accordingly by using MYSQL_INNODB_BUFFER_POOL_SIZE=1024
and MYSQL_INNODB_LOG_FILE_SIZE=256
.
"},{"location":"docker-images/nginx/","title":"NGINX","text":"The Lagoon nginx
image Dockerfile. Based on the official openresty/openresty
images.
This Dockerfile is intended to be used as a base for any web servers within Lagoon.
"},{"location":"docker-images/nginx/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of NGINX containers is port 8080
.
This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. - The files within
/etc/nginx/*
are parsed through envplate
with a container-entrypoint.
"},{"location":"docker-images/nginx/#included-nginx-configuration-static-filesconf","title":"Included NGINX
configuration (static-files.conf
)","text":"Warning
By default NGINX
only serves static files - this can be used for static sites that don't require a database or PHP components: for example, static site generators like Hugo, Jekyll or Gatsby.
If you need PHP, have a look at the php-fpm
image and use nginx
and php-fpm
in tandem.
Build the content during the build process and inject it into the nginx
container.
"},{"location":"docker-images/nginx/#helpers","title":"Helpers","text":""},{"location":"docker-images/nginx/#redirects-mapconf","title":"redirects-map.conf
","text":"In order to create redirects, we have redirects-map.conf
in place. This helps you to redirect marketing domains to sub-sites or do non-www to www redirects. If you have a lot of redirects, we suggest having redirects-map.conf
stored next to your code for easier maintainability.
Note
If you only have a few redirects, there's a handy trick to create the redirects with a RUN
command in your nginx.dockerfile
.
Here's an example showing how to redirect www.example.com
to example.com
and preserve the request:
RedirectRUN echo \"~^www.example.com http://example.com\\$request_uri;\" >> /etc/nginx/redirects-map.conf\n
To get more details about the various types of redirects that can be achieved, see the documentation within the redirects-map.conf
directly.
After you put the redirects-map.conf
in place, you also need to include it in your nginx.dockerfile
in order to get the configuration file into your build.
nginx.dockerfileCOPY redirects-map.conf /etc/nginx/redirects-map.conf\n
"},{"location":"docker-images/nginx/#basic-authentication","title":"Basic Authentication","text":"Basic authentication is enabled automatically when the BASIC_AUTH_USERNAME
and BASIC_AUTH_PASSWORD
environment variables are set.
Warning
Automatic basic auth configuration is provided for convenience. It should not be considered a secure method of protecting your website or private data.
"},{"location":"docker-images/nginx/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description BASIC_AUTH restricted Set to off
to disable basic authentication. BASIC_AUTH_USERNAME (not set) Username for basic authentication. BASIC_AUTH_PASSWORD (not set) Password for basic authentication (unencrypted). FAST_HEALTH_CHECK (not set) Set to true
to redirect GET requests from certain user agents (StatusCake, Pingdom, Site25x7, Uptime, nagios) to the lightweight Lagoon service healthcheck."},{"location":"docker-images/nodejs/","title":"Node.js","text":"The Lagoon Node.js
Docker image. Based on the official Node Alpine images.
"},{"location":"docker-images/nodejs/#supported-versions","title":"Supported Versions","text":"We ship 2 versions of Node.js images: the normal node:version
image and the node:version-builder
.
The builder variant of those images comes with additional tooling that is needed when you build Node.js apps (such as the build libraries, npm and Yarn). For a full list check out their Dockerfile.
- 12 (available for compatibility only, no longer officially supported) -
uselagoon/node-12
- 14 (available for compatibility only, no longer officially supported) -
uselagoon/node-14
- 16 (available for compatibility only, no longer officially supported) -
uselagoon/node-16
- 18 Dockerfile (Security Support until April 2025) -
uselagoon/node-18
- 20 Dockerfile (Security Support until April 2026) -
uselagoon/node-20
- 22 Dockerfile (Security Support until April 2027) -
uselagoon/node-22
Tip
We stop updating EOL Node.js images usually with the Lagoon release that comes after the officially communicated EOL date: https://nodejs.org/en/about/releases/.
"},{"location":"docker-images/nodejs/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of Node.js containers is port 3000
.
Persistent storage is configurable in Lagoon, using the lagoon.type: node-persistent
. See the docs for more info
Use the following labels in your docker-compose.yml
file to configure it:
lagoon.persistent
= use this to define the path in the container to use as persistent storage - e.g. /app/files. lagoon.persistent.size
= this to tell Lagoon how much storage to assign this path. - If you have multiple services that share the same storage, use this
lagoon.persistent.name
= (optional) use this to tell Lagoon to use the storage defined in another named service.
"},{"location":"docker-images/nodejs/#docker-composeyml-snippet","title":"docker-compose.yml
snippet","text":"docker-compose.yml node:\nbuild:\n# this configures a build from a Dockerfile in the root folder\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# tells Lagoon this is a node service, configured with 500MB of persistent storage at /app/files\nlagoon.type: node-persistent\nlagoon.persistent: /app/files\nlagoon.persistent.size: 500Mi\nports:\n# local development only\n# this exposes the port 3000 with a random local port\n# find it with `docker compose port node 3000`\n- \"3000\"\nvolumes:\n# local development only\n# mounts a named volume (files) at the defined path for this service to replicate production\n- files:/app/files\n
"},{"location":"docker-images/opensearch/","title":"OpenSearch","text":"OpenSearch is a community-driven, Apache 2.0-licensed open source search and analytics suite that makes it easy to ingest, search, visualize, and analyze data.
- from https://opensearch.org/
"},{"location":"docker-images/opensearch/#supported-versions","title":"Supported versions","text":" - 2 Dockerfile -
uselagoon/opensearch-2
"},{"location":"docker-images/opensearch/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description OPENSEARCH_JAVA_OPTS -Xms512m -Xmx512m Sets the memory usage of the OpenSearch container. Both values need be the same value or OpenSearch will not start cleanly."},{"location":"docker-images/opensearch/#known-issues","title":"Known issues","text":"On Linux-based systems, the start of the OpenSearch container may fail due to a low vm.max_map_count
setting.
Erroropensearch_1 | ERROR: [1] bootstrap checks failed\nopensearch_1 | [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]\n
Solution to this issue can be found here.
"},{"location":"docker-images/php-cli/","title":"PHP-CLI","text":"The Lagoon php-cli
Docker image. Based on Lagoon php-fpm
image, it has all the needed command line tools for daily operations.
Containers (or pods) started from cli
images are responsible for building code for Composer or Node.js based projects.
The image also contains database cli
s for both MariaDB and PostgreSQL.
Info
This Dockerfile is intended to be used as a base for any cli
needs within Lagoon.
"},{"location":"docker-images/php-cli/#supported-versions","title":"Supported versions","text":" - 7.3 (available for compatibility only, no longer officially supported) -
uselagoon/php-7.3-cli
- 7.4 (available for compatibility only, no longer officially supported) -
uselagoon/php-7.4-cli
- 8.0 (available for compatibility only, no longer officially supported) -
uselagoon/php-8.0-cli
- 8.1 Dockerfile (Security Support until November 2024) -
uselagoon/php-8.1-cli
- 8.2 Dockerfile (Security Support until December 2025) -
uselagoon/php-8.2-cli
- 8.3 Dockerfile (Security Support until December 2026) -
uselagoon/php-8.3-cli
All PHP versions use their own Dockerfiles.
"},{"location":"docker-images/php-cli/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. COMPOSER_ALLOW_SUPERUSER=1
removes warning about use of Composer as root. 80-shell-timeout.sh
script checks if containers are running in a Kubernetes environment and then set a 10 minutes timeout to idle cli
pods. cli
containers use an SSH key injected by Lagoon or defined into SSH_PRIVATE_KEY
environment variable.
"},{"location":"docker-images/php-cli/#included-cli-tools","title":"Included CLI tools","text":"The included CLI tools are:
composer
version 1.9.0 (changeable via COMPOSER_VERSION
and COMPOSER_HASH_SHA256
) node.js
verison 17 (as of Mar 2022) npm
yarn
mariadb-client
postgresql-client
"},{"location":"docker-images/php-cli/#change-nodejs-version","title":"Change Node.js Version","text":"By default this image ships with the nodejs-current
package (v17 as of Mar 2022). If you need another version you can remove the current version and install the one of your choice. For example, to install Node.js 16, modify your dockerfile to include:
Update Node.js versionRUN apk del nodejs-current \\\n&& apk add --no-cache nodejs=~16\n
"},{"location":"docker-images/php-cli/#environment-variables","title":"Environment variables","text":"Some options are configurable via environment variables. The php-fpm environment variables also apply.
Name Default Description MARIADB_MAX_ALLOWED_PACKET 64M Controls the max allowed packet for the MySql client."},{"location":"docker-images/php-fpm/","title":"PHP-FPM","text":"The Lagoon php-fpm
Docker image. Based on the official PHP Alpine images.
PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites.
- from https://php-fpm.org/
FastCGI is a way of having server scripts execute time-consuming code just once instead of every time the script is loaded, reducing overhead.
Info
This Dockerfile is intended to be used as a base for any PHP
needs within Lagoon. This image itself does not create a web server, rather a php-fpm
fastcgi listener. You may need to adapt the php-fpm
pool config.
"},{"location":"docker-images/php-fpm/#supported-versions","title":"Supported versions","text":" - 7.3 (available for compatibility only, no longer officially supported) -
uselagoon/php-7.3-fpm
- 7.4 (available for compatibility only, no longer officially supported) -
uselagoon/php-7.4-fpm
- 8.0 (available for compatibility only, no longer officially supported) -
uselagoon/php-8.0-fpm
- 8.1 Dockerfile (Security Support until November 2024) -
uselagoon/php-8.1-fpm
- 8.2 Dockerfile (Security Support until December 2025) -
uselagoon/php-8.2-fpm
- 8.3 Dockerfile (Security Support until December 2026) -
uselagoon/php-8.3-fpm
All PHP versions use their own Dockerfiles.
Tip
We stop updating End of Life (EOL) PHP images usually with the Lagoon release that comes after the officially communicated EOL date: https://www.php.net/supported-versions.php. Previous published versions will remain available.
"},{"location":"docker-images/php-fpm/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things are already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. - The
/usr/local/etc/php/php.ini
and /usr/local/etc/php-fpm.conf
, plus all files within /usr/local/etc/php-fpm.d/
, are parsed through envplate
with a container-entrypoint. - See the Dockerfile for installed
PHP
extensions. - To install further extensions, extend your Dockerfile from this image. Install extensions according to the docs, under the heading How to install more PHP extensions.
"},{"location":"docker-images/php-fpm/#included-php-config","title":"Included PHP config","text":"The included PHP
config contains sensible values that will make the creation of PHP
pools config easier. Here is a list of some of these. Check /usr/local/etc/php.ini
, /usr/local/etc/php-fpm.conf
for all of them:
Value Details max_execution_time = 900
Changeable via PHP_MAX_EXECUTION_TIME
. realpath_cache_size = 256k
For handling big PHP projects. memory_limit = 400M
For big PHP projects (changeable via PHP_MEMORY_LIMIT
). opcache.memory_consumption = 265
For big PHP projects. opcache.enable_file_override = 1
and opcache.huge_code_pages = 1
For faster PHP. display_errors = Off
and display_startup_errors = Off
For sensible production values (changeable via PHP_DISPLAY_ERRORS
and PHP_DISPLAY_STARTUP_ERRORS
). upload_max_filesize = 2048M
For big file uploads. apc.shm_size = 32m
and apc.enabled = 1
Changeable via PHP_APC_SHM_SIZE
and PHP_APC_ENABLED
. Also, php-fpm
error logging happens in stderr
.
\ud83d\udca1 If you don't like any of these configs, you have three possibilities:
- If they are changeable via environment variables, use environment variables (this is the preferred method, see table of environment variables below).
- Create your own
fpm-pool
config and set via php_admin_value
and php_admin_flag
. - Learn more about them in
this documentation for Running PHP as an Apache module
. This documentation refers to Apache, but it is also the case for php-fpm
).Important:
1. If you want to provide your own php-fpm
pool, overwrite the file /usr/local/etc/php-fpm.d/www.conf
with your own config, or rename this file if you want it to have another name. If you don't do that, the provided pool will be started! 2. PHP values with the PHP_INI_SYSTEM
changeable mode cannot be changed via an fpm-pool
config. They need to be changed either via already provided environment variables or: 3. Provide your own php.ini
or php-fpm.conf
file (this is the least preferred method).
"},{"location":"docker-images/php-fpm/#default-fpm-pool","title":"Default fpm-pool","text":"This image is shipped with an fpm-pool
config (php-fpm.d/www.conf
) that creates an fpm-pool
and listens on port 9000. This is because we try to provide an image which already covers most needs for PHP, so you don't need to create your own. You are welcome to do so if you like, though!
Here a short description of what this file does:
- Listens on port 9000 via IPv4 and IPv6.
- Uses the pm
dynamic
and creates between 2-50 children. - Re-spawns
php-fpm
pool children after 500 requests to prevent memory leaks. - Replies with
pong
when making a fastcgi request to /ping
(good for automated testing to check if the pool started). catch_workers_output = yes
to see PHP errors. clear_env = no
to be able to inject PHP environment variables via regular Docker environment variables.
"},{"location":"docker-images/php-fpm/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description NEWRELIC_ENABLED false Enable NewRelic performance monitoring, needs NEWRELIC_LICENSE
be configured. NEWRELIC_LICENSE (not set) NewRelic license to be used. Important: NEWRELIC_ENABLED
needs to be set totrue
in order for NewRelic to be enabled. NEWRELIC_BROWSER_MONITORING_ENABLED true This enables auto-insertion of the JavaScript fragments for NewRelic browser monitoring. Important: NEWRELIC_ENABLED
needs to be set totrue
in order for NewRelic to be enabled. NEWRELIC_DISTRIBUTED_TRACING_ENABLED false This enables distributed tracing. Important: NEWRELIC_ENABLED
needs to be set totrue
in order for NewRelic to be enabled. PHP_APC_ENABLED 1 Can be set to 0
to disable APC. PHP_APC_SHM_SIZE 32m The size of each shared memory segment given. PHP_DISPLAY_ERRORS Off Configures whether errors are printed or hidden. See php.net. PHP_DISPLAY_STARTUP_ERRORS Off Configures whether startup errors are printed or hidden. See php.net. PHP_ERROR_REPORTING Production E_ALL & ~E_DEPRECATED & ~E_STRICT
Development: E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
The desired logging level you'd like PHP to use. See php.net. PHP_FPM_PM_MAX_CHILDREN 50 The the maximum number of child processes. See php.net. PHP_FPM_PM_MAX_REQUESTS 500 The number of requests each child process should execute before re-spawning. See php.net. PHP_FPM_PM_MAX_SPARE_SERVERS 2 The desired maximum number of idle server processes. See php.net. PHP_FPM_PM_MIN_SPARE_SERVERS 2 The desired minimum number of idle server processes. See php.net. PHP_FPM_PM_PROCESS_IDLE_TIMEOUT 60s The number of seconds after which an idle process will be killed. See php.net. PHP_FPM_PM_START_SERVERS 2 The number of child processes created on startup. See php.net. PHP_MAX_EXECUTION_TIME 900 Maximum execution time of each script, in seconds. See php.net. PHP_MAX_FILE_UPLOADS 20 The maximum number of files allowed to be uploaded simultaneously. See php.net. PHP_MAX_INPUT_VARS 2000 How many input variables will be accepted. See php.net. PHP_MEMORY_LIMIT 400M Maximum amount of memory a script may consume. See php.net. XDEBUG_ENABLE (not set) Set to true
to enable xdebug
extension. BLACKFIRE_ENABLED (not set) Set to true
to enable blackfire
extension. BLACKFIRE_SERVER_ID (not set) Set to Blackfire Server ID provided by Blackfire.io. Needs BLACKFIRE_ENABLED
set to true
. BLACKFIRE_SERVER_TOKEN (not set) Set to Blackfire Server Token provided by Blackfire.io. Needs BLACKFIRE_ENABLED
set to true
. BLACKFIRE_LOG_LEVEL 3 Change the log level of the blackfire agent. Available values: log verbosity level (4: debug, 3: info, 2: warning, 1: error)
See blackfire.io."},{"location":"docker-images/postgres/","title":"PostgreSQL","text":"The Lagoon PostgreSQL Docker image. Based on the official PostgreSQL Alpine images.
"},{"location":"docker-images/postgres/#supported-versions","title":"Supported versions","text":" - 11 (available for compatibility only, no longer officially supported) -
uselagoon/postgres-11
- 12 Dockerfile (Security Support until November 2024) -
uselagoon/postgres-12
- 13 Dockerfile (Security Support until November 2025) -
uselagoon/postgres-13
- 14 Dockerfile (Security Support until November 2026) -
uselagoon/postgres-14
- 15 Dockerfile (Security Support until November 2027) -
uselagoon/postgres-15
- 16 Dockerfile (Security Support until November 2028) -
uselagoon/postgres-16
Tip
We stop updating EOL PostgreSQL images usually with the Lagoon release that comes after the officially communicated EOL date: https://www.postgresql.org/support/versioning
"},{"location":"docker-images/postgres/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of Postgres containers is port 5432
.
To allow Lagoon to select the best way to run the Postgres container, use lagoon.type: postgres
- this allows DBaaS operator to provision a cloud database if available in the cluster. Use lagoon.type: postgres-single
to specifically request Postgres in a container. Persistent storage is always provisioned for postgres containers at /var/lib/postgresql/data.
"},{"location":"docker-images/postgres/#docker-composeyml-snippet","title":"docker-compose.yml
snippet","text":"docker-compose.ymlpostgres:\nimage: uselagoon/postgres-14-drupal:latest\nlabels:\n# tells Lagoon this is a Postgres database\nlagoon.type: postgres\nports:\n# exposes the port 5432 with a random local port\n# find it with `docker compose port postgres 5432`\n- \"5432\"\nvolumes:\n# mounts a named volume at the default path for Postgres\n- db:/var/lib/postgresql/data\n
"},{"location":"docker-images/postgres/#tips-tricks","title":"Tips & Tricks","text":"If you have SQL statements that need to be run immediately after container startup to initialize the database, you can place those .sql
files in the container's docker-entrypoint-initdb.d
directory. Any .sql
files contained in that directory are run automatically at startup, as part of bringing the PostgreSQL container up.
Warning
These scripts are only run if the container is started with an empty database.
"},{"location":"docker-images/python/","title":"Python","text":"The Lagoon python
Docker image. Based on the official Python Alpine images.
"},{"location":"docker-images/python/#supported-versions","title":"Supported Versions","text":" - 2.7 (available for compatibility only, no longer officially supported) -
uselagoon/python-2.7
- 3.7 (available for compatibility only, no longer officially supported) -
uselagoon/python-3.7
- 3.8 Dockerfile (Security Support until October 2024) -
uselagoon/python-3.8
- 3.9 Dockerfile (Security Support until October 2025) -
uselagoon/python-3.9
- 3.10 Dockerfile (Security Support until October 2026) -
uselagoon/python-3.10
- 3.11 Dockerfile (Security Support until October 2027) -
uselagoon/python-3.11
- 3.12 Dockerfile (Security Support until October 2028) -
uselagoon/python-3.12
Tip
We stop updating and publishing EOL Python images usually with the Lagoon release that comes after the officially communicated EOL date: https://devguide.python.org/versions/#versions. Previous published versions will remain available.
"},{"location":"docker-images/python/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of Python containers is port 8800
.
Persistent storage is configurable in Lagoon, using the lagoon.type: python-persistent
. See the docs for more info
Use the following labels in your docker-compose.yml
file to configure it: lagoon.persistent
= use this to define the path in the container to use as persistent storage - e.g. /app/files lagoon.persistent.size
= this to tell Lagoon how much storage to assign this path
If you have multiple services that share the same storage, use this lagoon.persistent.name
= (optional) use this to tell Lagoon to use the storage defined in another named service
"},{"location":"docker-images/python/#docker-composeyml-snippet","title":"docker-compose.yml
snippet","text":"docker-compose.ymlpython:\nbuild:\n# this configures a build from a Dockerfile in the root folder\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# tells Lagoon this is a python service, configured with 500MB of persistent storage at /app/files\nlagoon.type: python-persistent\nlagoon.persistent: /app/files\nlagoon.persistent.size: 500Mi\nports:\n# local development only\n# this exposes the port 8800 with a random local port\n# find it with `docker compose port python 8800`\n- \"8800\"\nvolumes:\n# local development only\n# mounts a named volume (files) at the defined path for this service to replicate production\n- files:/app/files\n
"},{"location":"docker-images/rabbitmq/","title":"RabbitMQ","text":"The Lagoon RabbitMQ Dockerfile with management plugin installed. Based on the official rabbitmq:3-management
image at docker-hub.
This Dockerfile is intended to be used to set up a standalone RabbitMQ queue broker, as well as a base image to set up a cluster with high availability queue support by default (Mirrored queues).
By default, the RabbitMQ broker is started as single node. If you want to start a cluster, you need to use the rabbitmq-cluster
Docker image, based on rabbitmq
image plus the rabbitmq_peer_discovery_k8s
plugin.
"},{"location":"docker-images/rabbitmq/#supported-versions","title":"Supported versions","text":" - 3.10 Dockerfile (Security Support until July 2023) -
uselagoon/rabbitmq
"},{"location":"docker-images/rabbitmq/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. - The file
/etc/rabbitmq/definitions.json
is parsed through envplate
with a container-entrypoint.
"},{"location":"docker-images/rabbitmq/#included-rabbitmq-default-schema-definitionsjson","title":"Included RabbitMQ default schema (definitions.json)","text":" - To enable the support for Mirrored Queues, at least one
policy
must exist. -
In the definitions.json
schema file, minimal entities are defined to make the
container run: virtualhost
(vhost
), username
, and password
to access management
UI, permissions
, and policies
.
By default, a policy called lagoon-ha
is created at startup, but it is not active because it doesn't match any queue's name pattern (see default Environment Variables).
definitions.json\"policies\":[\n{\"vhost\":\"${RABBITMQ_DEFAULT_VHOST}\",\"name\":\"lagoon-ha\",\"pattern\":\"${RABBITMQ_DEFAULT_HA_PATTERN}\", \"definition\":{\"ha-mode\":\"exactly\",\"ha-params\":2,\"ha-sync-mode\":\"automatic\",\"ha-sync-batch-size\":5}}\n]\n
By default, the ha-mode
is set to exactly
which controls the exact number of mirroring nodes for a queue (mirrors). The number of nodes is controller by ha-params
.
For further information and custom configuration, please refer to official RabbitMQ documentation.
"},{"location":"docker-images/rabbitmq/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description RABBITMQ_DEFAULT_USER guest Username for management UI access. RABBITMQ_DEFAULT_PASS guest Password for management UI access. RABBITMQ_DEFAULT_VHOST / RabbitMQ main virtualhost. RABBITMQ_DEFAULT_HA_PATTERN ^$ Regular expression to match for mirrored queues."},{"location":"docker-images/redis/","title":"Redis","text":"Lagoon Redis
image Dockerfile, based on official redis:alpine
image.
This Dockerfile is intended to be used to set up a standalone Redis ephemeral server by default.
"},{"location":"docker-images/redis/#supported-versions","title":"Supported versions","text":" - 5 (available for compatibility only, no longer officially supported) -
uselagoon/redis-5
or uselagoon/redis-5-persistent
- 6 Dockerfile -
uselagoon/redis-6
or uselagoon/redis-6-persistent
- 7 Dockerfile -
uselagoon/redis-7
or uselagoon/redis-7-persistent
"},{"location":"docker-images/redis/#usage","title":"Usage","text":"There are 2 different flavors of Redis Images: Ephemeral and Persistent.
"},{"location":"docker-images/redis/#ephemeral","title":"Ephemeral","text":"The ephemeral image is intended to be used as an in-memory cache for applications and will not retain data across container restarts.
When being used as an in-memory (RAM) cache, the first thing you might want to tune if you have large caches is to adapt the MAXMEMORY
variable. This variable controls the maximum amount of memory (RAM) which redis will use to store cached items.
"},{"location":"docker-images/redis/#persistent","title":"Persistent","text":"The persistent Redis image will persist data across container restarts and can be used for queues or application data that will need persistence.
We don't typically suggest using a persistent Redis for in-memory cache scenarios as this might have unintended side-effects on your application while a Redis container is restarting and loading data from disk.
"},{"location":"docker-images/redis/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
so this image will work with a random user. - The files within
/etc/redis/*
are templated using envplate
via a container-entrypoint.
"},{"location":"docker-images/redis/#included-redisconf-configuration-file","title":"Included redis.conf
configuration file","text":"The image ships a default Redis configuration file, optimized to work on Lagoon.
"},{"location":"docker-images/redis/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description DATABASES -1 Default number of databases created at startup. LOGLEVEL notice Define the level of logs. MAXMEMORY 100mb Maximum amount of memory. MAXMEMORYPOLICY allkeys-lru The policy to use when evicting keys if Redis reaches its maximum memory usage. REDIS_PASSWORD disabled Enables authentication feature."},{"location":"docker-images/redis/#custom-configuration","title":"Custom configuration","text":"By building on the base image you can include custom configuration. See https://github.com/redis/redis/blob/7.2.5/redis.conf for full documentation of the Redis configuration file.
"},{"location":"docker-images/redis/#redis-persistent","title":"Redis-persistent","text":"Based on the Lagoon redis
image, the Lagoon redis-persistent
Docker image is intended for use when the Redis service must be utilized in persistent
mode (ie. with a persistent volume where keys will be saved to disk).
It differs from redis
only with the FLAVOR
environment variable, which will use the respective Redis configuration according to the version of redis in use.
"},{"location":"docker-images/redis/#troubleshooting","title":"Troubleshooting","text":"The Lagoon Redis images all come pre-loaded with the redis-cli
command, which allows for querying the Redis service for information and setting config values dynamically. To use this utility, you can simply SSH into your Redis pod by using the instructions here with redis
as the pod
value then run it from the terminal once you've connected.
"},{"location":"docker-images/redis/#maximum-memory-policy","title":"Maximum Memory Policy","text":"By default, the Lagoon redis
images are set to use the allkeys-lru
policy. This policy will alow ANY keys stored in Redis to be evicted if/when the Redis service hits its maxmemory
limit according to when the key was least recently used.
For typical installations, this is the ideal configuration, as Drupal may not set a TTL
value for each key cached in Redis. If the maxmemory-policy
is set to something like volatile-lru
and Drupal doesn't provide these TTL
tags, this would result in the Redis container filling up, being totally unable to evict ANY keys, and ceasing to accept new cache keys at all.
More information on Redis' maxmemory policies can be found in Redis' official documentation.
Proceed with Caution
Changing this setting can lead to Redis becoming completely full and cause outages as a result.
"},{"location":"docker-images/redis/#tuning-redis-maxmemory-value","title":"Tuning Redis' maxmemory
value","text":"Finding the optimal amount of memory to give Redis can be quite the difficult task. Before attempting to tune your Redis cache's memory size, it is prudent to let it run normally for as long as practical, with at least a day of typical usage being the ideal minimum timeframe.
There are a few high level things you can look at when tuning these memory values:
- The first thing to check is the percentage of memory in use by Redis currently.
- If this percentage is less than
50%
, you might consider lowering the maxmemory
value by 25%. - If this percentage is between
50%
and 75%
, things are running just fine. - If this value is greater than
75%
, then it's worth looking at other variables to see if maxmemory
needs to be increased.
- If you find that your Redis' memory usage percentage is high, the next thing to look at is the number of key evictions.
- A large number of key evictions and a memory usage greater than
95%
is a fairly good indicator that your redis needs a higher maxmemory
setting. - If the number of key evictions doesn't seem high and typical response times are reasonable, this is simply indicative of Redis doing its job and managing its allocated memory as expected.
"},{"location":"docker-images/redis/#example-commands","title":"Example commands","text":"The following commands can be used to view information about the Redis service:
- View all info about the Redis service:
redis-cli info
- View service memory information:
redis-cli info memory
- View service keyspace information:
redis-cli info keyspace
- View service statistics:
redis-cli info stats
It is also possible to set values for the Redis service dynamically without a restart of the Redis service. It is important to note that these dynamically set values will not persist if the pod is restarted (which can happen as a result of a deployment, maintenance, or even just being shuffled from one node to another).
- Set
maxmemory
config value dynamically to 500mb
: config set maxmemory 500mb
- Set
maxmemory-policy
config value dynamically to volatile-lru
: config set maxmemory-policy volatile-lru
"},{"location":"docker-images/ruby/","title":"Ruby","text":"The Lagoon ruby
Docker image. Based on the official Python Alpine images.
"},{"location":"docker-images/ruby/#supported-versions","title":"Supported Versions","text":" - 3.0 (available for compatibility only, no longer officially supported) -
uselagoon/ruby-3.0
- 3.1 Dockerfile (Security Support until March 2025) -
uselagoon/ruby-3.1
- 3.2 Dockerfile (Security Support until March 2026) -
uselagoon/ruby-3.2
- 3.3 Dockerfile (Security Support until March 2027) -
uselagoon/ruby-3.3
Tip
We stop updating and publishing EOL Ruby images usually with the Lagoon release that comes after the officially communicated EOL date: https://www.ruby-lang.org/en/downloads/releases/. Previous versions will remain available.
"},{"location":"docker-images/ruby/#lagoon-adaptions","title":"Lagoon adaptions","text":"The default exposed port of ruby containers is port 3000
.
Lagoon has no \"pre-defined\" type for Ruby services, they should be configured with the lagoon.type: generic
and a port set with lagoon.port: 3000
"},{"location":"docker-images/ruby/#docker-composeyml-snippet","title":"docker-compose.yml
snippet","text":"docker-compose.ymlruby:\nbuild:\n# this configures a build from a Dockerfile in the root folder\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# tells Lagoon this is a generic service, configured to expose port 3000\nlagoon.type: generic\nlagoon.port: 3000\nports:\n# local development only\n# this exposes the port 3000 with a random local port\n# find it with `docker compose port ruby 3000`\n- \"3000\"\n
"},{"location":"docker-images/solr/","title":"Solr","text":"The Lagoon Solr
image Dockerfile. Based on the official solr:<version>-alpine
images.
This Dockerfile is intended to be used to set up a standalone Solr server with an initial core mycore
.
"},{"location":"docker-images/solr/#supported-versions","title":"Supported Versions","text":" - 5.5 (available for compatibility only, no longer officially supported)
- 6.6 (available for compatibility only, no longer officially supported)
- 7.7 (available for compatibility only, no longer officially supported)
- 7 (available for compatibility only, no longer officially supported) -
uselagoon/solr-7
- 8 Dockerfile -
uselagoon/solr-8
- 9 Dockerfile -
uselagoon/solr-9
"},{"location":"docker-images/solr/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user. 10-solr-port.sh
script to fix and check Solr
port. 20-solr-datadir.sh
script to check if Solr
config is compliant for Lagoon. This sets directory paths, and configures the correct lock type.
"},{"location":"docker-images/solr/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description SOLR_JAVA_MEM 512M Default Java HEAP size (ie. SOLR_JAVA_MEM=\"-Xms10g -Xmx10g\"
). SOLR_DATA_DIR /var/solr Path of the solr data dir. Be careful, changing this can cause data loss! SOLR_COPY_DATA_DIR_SOURCE (not set) Path which the entrypoint script of solr will use to copy into the defined SOLR_DATA_DIR
, this can be used for prepopulating the Solr with a core. The scripts expects actual Solr data files! Plus it only copies data if the destination does not already have a solr core in it."},{"location":"docker-images/varnish/","title":"Varnish","text":"The Lagoon Varnish
Docker images. Based on the official Varnish
package
"},{"location":"docker-images/varnish/#supported-versions","title":"Supported versions","text":" - 5 (available for compatibility only, no longer officially supported) -
uselagoon/varnish-5
- 6.0 LTS Dockerfile -
uselagoon/varnish-6
- 7 Dockerfile -
uselagoon/varnish-7
"},{"location":"docker-images/varnish/#included-varnish-modules","title":"Included varnish modules","text":" vbox-dynamic
- Dynamic backends from DNS lookups and service discovery from SRV records. vbox-bodyaccess
- Varnish vmod
that lets you access the request body.
"},{"location":"docker-images/varnish/#lagoon-adaptions","title":"Lagoon adaptions","text":"This image is prepared to be used on Lagoon. There are therefore some things already done:
- Folder permissions are automatically adapted with
fix-permissions
, so this image will work with a random user.
"},{"location":"docker-images/varnish/#included-defaultvcl-configuration-file","title":"Included default.vcl
configuration file","text":"The image ships a default vcl
configuration file, optimized to work on Lagoon. Some options are configurable via environments variables (see Environment Variables).
"},{"location":"docker-images/varnish/#environment-variables","title":"Environment Variables","text":"Some options are configurable via environment variables.
Environment Variable Default Description VARNISH_BACKEND_HOST NGINX Default backend host. VARNISH_BACKEND_PORT 8080 Default listening Varnish port. VARNISH_SECRET lagoon_default_secret Varnish secret used to connect to management. LIBVMOD_DYNAMIC_VERSION 5.2 Default version of vmod-dynamic
module. LIBVMOD_BODYACCESS_VERSION 5.0 Default version of vmod-bodyaccess
module. HTTP_RESP_HDR_LEN 8k Maximum length of any HTTP backend response header. HTTP_RESP_SIZE 32k Maximum number of bytes of HTTP backend response we will deal with. NUKE_LIMIT 150 Maximum number of objects we attempt to nuke in order to make space for an object body. CACHE_TYPE malloc Type of varnish cache. CACHE_SIZE 500M Cache size. LISTEN 8080 Default backend server port. MANAGEMENT_LISTEN 6082 Default management listening port."},{"location":"installing-lagoon/add-group/","title":"Add Group","text":"Add group lagoon add group -N groupname\n
"},{"location":"installing-lagoon/add-project/","title":"Adding a Project","text":""},{"location":"installing-lagoon/add-project/#add-the-project-to-lagoon","title":"Add the project to Lagoon","text":" -
Run this command:
Add projectlagoon add project \\\n--git-url <YOUR-GITHUB-REPO-URL> \\\n--deploytarget 1 \\\n--production-environment <YOUR-PROD-ENV> \\\n--branches <THE-BRANCHES-YOU-WANT-TO-DEPLOY> \\\n--project <YOUR-PROJECT-NAME>\n
- The value for
--deploytarget
is the ID of your Kubernetes cluster. - Your production environment should be the name of the branch you want to have as your production environment.
- The branches you want to deploy might look like this:
\u201c^(main|develop)$\u201d
- The name of your project is anything you want - \u201cCompany Website,\u201d \u201cexample,\u201d etc.
-
Go to the Lagoon UI, and you should see your project listed!
"},{"location":"installing-lagoon/add-project/#add-the-deploy-key-to-your-git-repository","title":"Add the deploy key to your Git repository","text":"Lagoon creates a deploy key for each project. You now need to add it as a deploy key in your Git repository to allow Lagoon to download the code.
-
Run the following command to get the deploy key:
Get project-keylagoon get project-key --project <YOUR-PROJECT-NAME>\n
-
Copy the key and save it as a deploy key in your Git repository.
GitHub GitLab Bitbucket
"},{"location":"installing-lagoon/add-project/#add-the-webhooks-endpoint-to-your-git-repository","title":"Add the webhooks endpoint to your Git repository","text":"In order for Lagoon to be able to deploy on code updates, it needs to be connected to your Git repository
-
Add your Lagoon cluster's webhook endpoint to your Git repository
- Payload URL:
<LAGOON-WEBHOOK-INGRESS>
- Content Type: JSON
- Active: Active (allows you to enable/disable as required)
- Events: Select the relevant events, or choose All. Usually push, branch create/delete are required
GitHub GitLab Bitbucket
"},{"location":"installing-lagoon/bulk-storage-provisioner/","title":"Bulk Storage Provisioner","text":""},{"location":"installing-lagoon/bulk-storage-provisioner/#aws-specific-instructions","title":"AWS-specific instructions","text":"Info
The EFS info here is only applicable to AWS installations, but the basic process should be similar for all NFS volumes.
In order to create the necessary Bulk
StorageClass, you will need to have an RWX-capable storage backend.
In this example, we will provide documentation to configure EFS as a NFS server, and configure that for use with Lagoon
"},{"location":"installing-lagoon/bulk-storage-provisioner/#requirements","title":"Requirements","text":" - Provision and configure an EFS, taking note of any security group requirements (https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-mount-cmd-dns-name.html)
- The DNS name for the mount target of the EFS volume - usually
file-system-id.efs.aws-region.amazonaws.com
- Familiarity with the NFS CSI driver for Kubernetes - https://github.com/kubernetes-csi/csi-driver-nfs
"},{"location":"installing-lagoon/bulk-storage-provisioner/#steps","title":"Steps","text":" - Add Helm repository for the NFS CSI driver Add Helm repo
helm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts\n
- Configure the
bulk
StorageClass EFS NFS mount target in a values file. Note that this step also installs a secret into the namespace to handle deleting volumes, as per herecsi-driver-nfs-storageclass.yaml
apiVersion: storage.k8s.io/v1\nkind: StorageClass\nmetadata:\nname: bulk\nprovisioner: nfs.csi.k8s.io\nparameters:\nserver: file-system-id.efs.aws-region.amazonaws.com\nshare: /\ncsi.storage.k8s.io/provisioner-secret-name: \"mount-options\"\ncsi.storage.k8s.io/provisioner-secret-namespace: \"csi-driver-nfs\"\nreclaimPolicy: Delete\nvolumeBindingMode: Immediate\nmountOptions:\n- nfsvers=4.1\n- rsize=1048576\n- wsize=1048576\n- hard\n- timeo=600\n- retrans=2\n- noresvport\n---\napiVersion: v1\nkind: Secret\nmetadata:\nname: mount-options\nnamespace: csi-driver-nfs\nstringData:\nmountOptions: \"nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport\"\n
3. Install the NFS CSI driver Install NFS CSI Driverhelm upgrade --install --create-namespace \\\n--namespace csi-driver-nfs --wait \\\ncsi-driver-nfs csi-driver-nfs/csi-driver-nfs\n
4. Install the StorageClass and secret Install bulk StorageClass and Secretkubectl apply -f csi-driver-nfs-storageclass.yaml\n
"},{"location":"installing-lagoon/create-user/","title":"Create Lagoon user","text":" -
Add user via Lagoon CLI:
Add userlagoon add user --email user@example.com --firstName MyFirstName --lastName MyLastName\n
-
Go to your email and click the password reset link in the email.
- Follow the instructions and log in to Lagoon UI with created password.
- Add the SSH public key of the user via Settings.
"},{"location":"installing-lagoon/deploy-project/","title":"Deploy Your Project","text":" -
Run the following command to deploy your project:
Deploylagoon deploy branch -p <YOUR-PROJECT-NAME> -b <YOUR-BRANCH-NAME>\n
-
Go to the Lagoon UI and take a look at your project - you should now see the environment for this project!
- Look in your cluster at your pods list, and you should see the build pod as it begins to clone Git repositories, set up services, etc.See all pods
kubectl get pods --all-namespaces | grep lagoon-build\n
"},{"location":"installing-lagoon/gitlab/","title":"GitLab","text":"Not needed for *most* installs, but this is configured to integrate Lagoon with GitLab for user and group authentication.
- Create Personal Access token in GitLab for a user with admin access.
- Create system hooks under
your-gitlab.com/admin/hooks
pointing to: webhookhandler.lagoon.example.com
and define a random secret token. - Enable \u201crepository update events\u201d
-
Update lagoon-core-values.yml
:
lagoon-core-values.ymlapi:\nadditionalEnvs:\nGITLAB_API_HOST: <<URL of GitLab example: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << Personal Access token with Access to API >>\nGITLAB_SYSTEM_HOOK_TOKEN: << System Hook Secret Token >>\nwebhook-haondler:\nadditionalEnvs:\nGITLAB_API_HOST: <<URL of GitLab example: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << Personal Access token with Access to API >>\nGITLAB_SYSTEM_HOOK_TOKEN: << System Hook Secret Token >>\nwebhooks2tasks:\nadditionalEnvs:\nGITLAB_API_HOST: <<URL of GitLab example: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << Personal Access token with Access to API >>\nGITLAB_SYSTEM_HOOK_TOKEN: << System Hook Secret Token >>\n
-
Helm update the lagoon-core
helmchart.
- If you've already created users in Keycloak, delete them.
- Run the following command in an API pod:Sync with GitLab
yarn sync:gitlab:all\n
"},{"location":"installing-lagoon/install-harbor/","title":"Install Harbor","text":" -
Add Helm repository:
Add Helm repositoryhelm repo add harbor https://helm.goharbor.io\n
-
Consider the optimal configuration of Harbor for your particular circumstances - see their docs for more recommendations:
- We recommend using S3-compatible storage for image blobs (
imageChartStorage
). - We recommend using a managed database service for the Postgres service (
database.type
). - In high-usage scenarios we recommend using a managed Redis service. (
redis.type
)
-
Create the file harbor-values.yml
inside of your config directory. The proxy-buffering annotations help with large image pushes:
harbor-values.ymlexpose:\ningress:\nannotations:\nkubernetes.io/tls-acme: \"true\"\nnginx.ingress.kubernetes.io/proxy-buffering: \"off\"\nnginx.ingress.kubernetes.io/proxy-request-buffering: \"off\"\nhosts:\ncore: harbor.lagoon.example.com\ntls:\nenabled: true\ncertSource: secret\nsecret:\nsecretName: harbor-harbor-ingress\nexternalURL: https://harbor.lagoon.example.com\nharborAdminPassword: <your Harbor Admin Password>\nchartmuseum:\nenabled: false\nclair:\nenabled: false\nnotary:\nenabled: false\ntrivy:\nenabled: false\njobservice:\njobLogger: stdout\n
-
Install Harbor, checking the requirements for the currently supported Harbor versions:
Install Harborhelm upgrade --install --create-namespace \\\n--namespace harbor --wait \\\n-f harbor-values.yml \\\nharbor harbor/harbor\n
-
Visit Harbor at the URL you set in harbor.yml
.
- Username: admin
- Password:
Get Harbor secretkubectl -n harbor get secret harbor-core -o jsonpath=\"{.data.HARBOR_ADMIN_PASSWORD}\" | base64 --decode\n
-
You will need to add the above Harbor credentials to the Lagoon Remote values.yml
in the next step, as well as harbor-values.yml
.
"},{"location":"installing-lagoon/install-lagoon-remote/","title":"Install Lagoon Remote","text":"Now we will install Lagoon Remote into the Lagoon namespace. The RabbitMQ service is the broker.
-
Create lagoon-remote-values.yml
in your config directory as you did the previous two files, and update the values.
- rabbitMQPassword
Get RabbitMQ passwordkubectl -n lagoon-core get secret lagoon-core-broker -o jsonpath=\"{.data.RABBITMQ_PASSWORD}\" | base64 --decode\n
- rabbitMQHostname
lagoon-remote-values.ymllagoon-core-broker.lagoon-core.svc.local\n
- taskSSHHost
Update SSH Hostkubectl get service lagoon-core-broker-amqp-ext \\\n-o custom-columns=\"NAME:.metadata.name,IP ADDRESS:.status.loadBalancer.ingress[*].ip,HOSTNAME:.status.loadBalancer.ingress[*].hostname\"\n
- harbor-password
Get Harbor secretkubectl -n harbor get secret harbor-harbor-core -o jsonpath=\"{.data.HARBOR_ADMIN_PASSWORD}\" | base64 --decode\n
-
Add the Harbor configuration from the Install Harbor step.
lagoon-remote-values.ymllagoon-build-deploy:\nenabled: true\nextraArgs:\n- \"--enable-harbor=true\"\n- \"--harbor-url=https://harbor.lagoon.example.com\"\n- \"--harbor-api=https://harbor.lagoon.example.com/api/\"\n- \"--harbor-username=admin\"\n- \"--harbor-password=<from harbor-harbor-core secret>\"\nrabbitMQUsername: lagoon\nrabbitMQPassword: <from lagoon-core-broker secret>\nrabbitMQHostname: lagoon-core-broker.lagoon-core.svc.cluster.local\nlagoonTargetName: <name of lagoon remote, can be anything>\ntaskSSHHost: <IP of ssh service loadbalancer>\ntaskSSHPort: \"22\"\ntaskAPIHost: \"api.lagoon.example.com\"\ndbaas-operator:\nenabled: true\nmariadbProviders:\nproduction:\nenvironment: production\nhostname: 172.17.0.1.nip.io\nreadReplicaHostnames:\n- 172.17.0.1.nip.io\npassword: password\nport: '3306'\nuser: root\ndevelopment:\nenvironment: development\nhostname: 172.17.0.1.nip.io\nreadReplicaHostnames:\n- 172.17.0.1.nip.io\npassword: password\nport: '3306'\nuser: root\n
-
Enable ssh-core service account
-
Install Lagoon Remote:
Install Lagoon remotehelm upgrade --install --create-namespace \\\n--namespace lagoon \\\n-f lagoon-remote-values.yml \\\nlagoon-remote lagoon/lagoon-remote\n
"},{"location":"installing-lagoon/lagoon-backups/","title":"Lagoon Backups","text":"Lagoon uses the K8up backup operator: https://k8up.io. Lagoon isn\u2019t tightly integrated with K8up, it\u2019s more that Lagoon can create its resources in a way that K8up can automatically discover and backup.
Lagoon has been extensively tested with K8up 1.x, but is not compatible with 2.x yet. We recommend using the 1.1.0 chart version (App version v1.2.0).
-
Create new AWS User with policies:
example K8up IAM user{\n\"Version\":\"2012-10-17\",\n\"Statement\":[\n{\n\"Sid\":\"VisualEditor0\",\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:ListAllMyBuckets\",\n\"s3:CreateBucket\",\n\"s3:GetBucketLocation\"\n],\n\"Resource\":\"*\"\n},\n{\n\"Sid\":\"VisualEditor1\",\n\"Effect\":\"Allow\",\n\"Action\":\"s3:ListBucket\",\n\"Resource\":\"arn:aws:s3:::baas-*\"\n},\n{\n\"Sid\":\"VisualEditor2\",\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:PutObject\",\n\"s3:GetObject\",\n\"s3:AbortMultipartUpload\",\n\"s3:DeleteObject\",\n\"s3:ListMultipartUploadParts\"\n],\n\"Resource\":\"arn:aws:s3:::baas-*/*\"\n}\n]\n}\n
-
Create k8up-values.yml
(customize for your provider):
k8up-values.ymlk8up:\nenvVars:\n- name: BACKUP_GLOBALS3ENDPOINT\nvalue: 'https://s3.eu-west-1.amazonaws.com'\n- name: BACKUP_GLOBALS3BUCKET\nvalue: ''\n- name: BACKUP_GLOBALKEEPJOBS\nvalue: '1'\n- name: BACKUP_GLOBALSTATSURL\nvalue: 'https://backup.lagoon.example.com'\n- name: BACKUP_GLOBALACCESSKEYID\nvalue: ''\n- name: BACKUP_GLOBALSECRETACCESSKEY\nvalue: ''\n- name: BACKUP_BACKOFFLIMIT\nvalue: '2'\n- name: BACKUP_GLOBALRESTORES3BUCKET\nvalue: ''\n- name: BACKUP_GLOBALRESTORES3ENDPOINT\nvalue: 'https://s3.eu-west-1.amazonaws.com'\n- name: BACKUP_GLOBALRESTORES3ACCESSKEYID\nvalue: ''\n- name: BACKUP_GLOBALRESTORES3SECRETACCESSKEY\nvalue: ''\ntimezone: Europe/Zurich\n
-
Install K8up:
Install K8up Step 1helm repo add appuio https://charts.appuio.ch\n
Install K8up Step 2kubectl apply -f https://github.com/vshn/k8up/releases/download/v1.2.0/k8up-crd.yaml\n
Install K8up Step 3helm upgrade --install --create-namespace \\\n--namespace k8up \\\n-f k8up-values.yaml \\\n--version 1.1.0 \\\nk8up appuio/k8up\n
-
Update lagoon-core-values.yml
:
lagoon-core-values.ymls3BAASAccessKeyID: <<Access Key ID for restore bucket>>\ns3BAASSecretAccessKey: <<Access Key Secret for restore bucket>>\n
-
Redeploy lagoon-core
.
"},{"location":"installing-lagoon/lagoon-cli/","title":"Install the Lagoon CLI","text":" - Check https://github.com/uselagoon/lagoon-cli#install on how to install for your operating system. For macOS and Linux, you can use Homebrew:
brew tap uselagoon/lagoon-cli
brew install lagoon
-
The CLI needs to know how to communicate with Lagoon, so run the following command:
Lagoon config lagoon config add \\\n--graphql https://YOUR-API-URL/graphql \\\n--ui https://YOUR-UI-URL \\\n--hostname YOUR.SSH.IP \\\n--lagoon YOUR-LAGOON-NAME \\\n--port 22\n
-
Access Lagoon by authenticating with your SSH key.
- In the Lagoon UI (the URL is in
values.yml
if you forget), go to Settings. - Add your public SSH key.
-
You need to set the default Lagoon to your Lagoon so that it doesn\u2019t try to use the amazee.io defaults:
Lagoon config lagoon config default --lagoon <YOUR-LAGOON-NAME>\n
-
Now run lagoon login
. Lagoon talks to SSH and authenticates against your public/private key pair, and gets a token for your username.
-
Verify via lagoon whoami
that you are logged in.
Info
We don\u2019t generally recommend using the Lagoon Admin role, but you\u2019ll need to create an admin account at first to get started. Ideally, you\u2019ll immediately create another account to work from which is not an admin.
"},{"location":"installing-lagoon/lagoon-core/","title":"Install Lagoon Core","text":""},{"location":"installing-lagoon/lagoon-core/#install-the-helm-chart","title":"Install the Helm chart","text":" -
Add Lagoon Charts repository to your Helm Repositories:
Add Lagoon Charts repositoryhelm repo add lagoon https://uselagoon.github.io/lagoon-charts/\n
-
Create a directory for the configuration files we will create, and make sure that it\u2019s version controlled. Ensure that you reference this path in commands referencing your values.yml
files.
- Create
values.yml
in the directory you\u2019ve just created. Update the endpoint URLs (change them from api.lagoon.example.com
to your values). Example: https://github.com/uselagoon/lagoon-charts/blob/main/charts/lagoon-core/ci/linter-values.yaml -
Now run helm upgrade --install
command, pointing to values.yml
, like so:
Upgrade Helm with values.ymlhelm upgrade --install --create-namespace --namespace lagoon-core -f values.yml lagoon-core lagoon/lagoon-core`\n
-
Lagoon Core is now installed!
Warning
Sometimes we run into Docker Hub pull limits. We are considering moving our images elsewhere if this continues to be a problem.
"},{"location":"installing-lagoon/lagoon-core/#configure-keycloak","title":"Configure Keycloak","text":"Visit the Keycloak dashboard at the URL you defined in the values.yml
for Keycloak.
- Click \"Administration Console\"
- Username:
admin
- Password: use
lagoon-core-keycloak
secret, key-value KEYCLOAK_ADMIN_PASSWORD
-
Retrieve the secret like so:
Retrieve secretkubectl -n lagoon-core get secret lagoon-core-keycloak -o jsonpath=\"{.data.KEYCLOAK_ADMIN_PASSWORD}\" | base64 --decode\n
-
Click on User on top right.
- Go to Manage Account.
- Add an Email for the admin account you created.
- Save.
- Go to Realm Lagoon -> Realm Settings -> Email
- Configure email server for Keycloak, test connection via \u201cTest connection\u201d button.
- Go to Realm Lagoon -> Realm Settings -> Login
- Enable \u201cForgot Password\u201d
- Save.
"},{"location":"installing-lagoon/lagoon-core/#log-in-to-the-ui","title":"Log in to the UI","text":"You should now be able to visit the Lagoon UI at the URL you defined in the values.yml
for the UI.
- Username:
lagoonadmin
- Secret: use
lagoon-core-keycloak
secret key-value: LAGOON-CORE-KEYCLOAK
- Retrieve the secret:Retrieve secret
kubectl -n lagoon-core get secret lagoon-core-keycloak -o jsonpath=\"{.data.KEYCLOAK_LAGOON_ADMIN_PASSWORD}\" | base64 --decode\n
"},{"location":"installing-lagoon/lagoon-files/","title":"Lagoon Files","text":"Lagoon files are used to store the file output of tasks, such as backups, and can be hosted on any S3-compatible storage.
-
Create new AWS User with policies:
Example files IAM user{\n\"Version\":\"2012-10-17\",\n\"Statement\":[\n{\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:ListBucket\",\n\"s3:GetBucketLocation\",\n\"s3:ListBucketMultipartUploads\"\n],\n\"Resource\":\"arn:aws:s3:::S3_BUCKET_NAME\"\n},\n{\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:PutObject\",\n\"s3:GetObject\",\n\"s3:DeleteObject\",\n\"s3:ListMultipartUploadParts\",\n\"s3:AbortMultipartUpload\"\n],\n\"Resource\":\"arn:aws:s3:::S3_BUCKET_NAME/*\"\n}\n]\n}\n
-
Update lagoon-core-values.yml
:
lagoon-core-values.ymls3FilesAccessKeyID: <<Access Key ID>>\ns3FilesBucket: <<Bucket Name for Lagoon Files>>\ns3FilesHost: <<S3 endpoint like \"https://s3.eu-west-1.amazonaws.com\" >>\ns3FilesSecretAccessKey: <<Access Key Secret>>\ns3FilesRegion: <<S3 Region >>\n
-
If you use ingress-nginx
in front of lagoon-core
, we suggest setting this configuration which will allow for bigger file uploads:
lagoon-core-values.ymlcontroller:\nconfig:\nclient-body-timeout: '600' # max 600 secs fileuploads\nproxy-send-timeout: '1800' # max 30min connections - needed for websockets\nproxy-read-timeout: '1800' # max 30min connections - needed for websockets\nproxy-body-size: 1024m # 1GB file size\nproxy-buffer-size: 64k # bigger buffer\n
"},{"location":"installing-lagoon/lagoon-logging/","title":"Lagoon Logging","text":"Lagoon integrates with OpenSearch to store application, container and router logs. Lagoon Logging collects the application, router and container logs from Lagoon projects, and sends them to the logs concentrator. It needs to be installed onto each lagoon-remote
instance.
In addition, it should be installed in the lagoon-core
cluster to collect logs from the lagoon-core
service. This is configured in the LagoonLogs
section.
Logging Overview: Lucid Chart
See also: Logging.
Read more about Lagoon logging here: https://github.com/uselagoon/lagoon-charts/tree/main/charts/lagoon-logging
-
Create lagoon-logging-values.yaml
:
lagoon-logging-values.yamltls:\ncaCert: |\n<< content of ca.pem from Logs-Concentrator>>\nclientCert: |\n<< content of client.pem from Logs-Concentrator>>\nclientKey: |\n<< content of client-key.pem from Logs-Concentrator>>\nforward:\nusername: <<Username for Lagoon Remote 1>>\npassword: <<Password for Lagoon Remote 1>>\nhost: <<ExternalIP of Logs-Concentrator Service LoadBalancer>>\nhostName: <<Hostname in Server Cert of Logs-Concentrator>>\nhostPort: '24224'\nselfHostname: <<Hostname in Client Cert of Logs-Concentrator>>\nsharedKey: <<Generated ForwardSharedKey of Logs-Concentrator>>\ntlsVerifyHostname: false\nclusterName: <<Short Cluster Identifier>>\nlogsDispatcher:\nserviceMonitor:\nenabled: false\nlogging-operator:\nmonitoring:\nserviceMonitor:\nenabled: false\nlagoonLogs:\nenabled: true\nrabbitMQHost: lagoon-core-broker.lagoon-core.svc.cluster.local\nrabbitMQUser: lagoon\nrabbitMQPassword: <<RabbitMQ Lagoon Password>>\nexcludeNamespaces: {}\n
-
Install lagoon-logging
:
Install lagoon-logginghelm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com\n\nhelm upgrade --install --create-namespace \\\n--namespace lagoon-logging \\\n-f lagoon-logging-values.yaml \\\nlagoon-logging lagoon/lagoon-logging\n
"},{"location":"installing-lagoon/lagoon-logging/#logging-nginx-ingress-controller","title":"Logging NGINX Ingress Controller","text":"If you'd like logs from ingress-nginx
inside lagoon-logging
:
- The ingress controller must be installed in the namespace
ingress-nginx
-
Add the content of this file to ingress-nginx
:
ingress-nginx log-format-upstreamcontroller:\nconfig:\nlog-format-upstream: >-\n{\n\"time\": \"$time_iso8601\",\n\"remote_addr\": \"$remote_addr\",\n\"x-forwarded-for\": \"$http_x_forwarded_for\",\n\"true-client-ip\": \"$http_true_client_ip\",\n\"req_id\": \"$req_id\",\n\"remote_user\": \"$remote_user\",\n\"bytes_sent\": $bytes_sent,\n\"request_time\": $request_time,\n\"status\": \"$status\",\n\"host\": \"$host\",\n\"request_proto\": \"$server_protocol\",\n\"request_uri\": \"$uri\",\n\"request_query\": \"$args\",\n\"request_length\": $request_length,\n\"request_time\": $request_time,\n\"request_method\": \"$request_method\",\n\"http_referer\": \"$http_referer\",\n\"http_user_agent\": \"$http_user_agent\",\n\"namespace\": \"$namespace\",\n\"ingress_name\": \"$ingress_name\",\n\"service_name\": \"$service_name\",\n\"service_port\": \"$service_port\"\n}\n
-
Your logs should start flowing!
"},{"location":"installing-lagoon/logs-concentrator/","title":"Logs-Concentrator","text":"Logs-concentrator collects the logs being sent by Lagoon clusters and augments them with additional metadata before inserting them into Elasticsearch.
- Create certificates according to ReadMe: https://github.com/uselagoon/lagoon-charts/tree/main/charts/lagoon-logs-concentrator
-
Create logs-concentrator-values.yml
:
logs-concentrator-values.ymltls:\ncaCert: |\n<<contents of ca.pem>>\nserverCert: |\n<<contents of server.pem\nserverKey: |\n<<contents of server-key.pem>>\nelasticsearchHost: elasticsearch-opendistro-es-client-service.elasticsearch.svc.cluster.local\nelasticsearchAdminPassword: <<ElasticSearch Admin Password>>\nforwardSharedKey: <<Random 32 Character Password>>\nusers:\n- username: <<Username for Lagoon Remote 1>>\npassword: <<Random Password for Lagoon Remote 1>>\nservice:\ntype: LoadBalancer\nserviceMonitor:\nenabled: false\n
-
Install logs-concentrator:
Install logs-concentratorhelm upgrade --install --create-namespace \\\n--namespace lagoon-logs-concentrator \\\n-f logs-concentrator-values.yaml \\\nlagoon-logs-concentrator lagoon/lagoon-logs-concentrator\n
"},{"location":"installing-lagoon/opendistro/","title":"OpenDistro","text":"To install an OpenDistro cluster, you will need to configure TLS and secrets so that Lagoon can talk to it securely. You're going to have to create a handful of JSON files - put these in the same directory as the values files you've been creating throughout this installation process.
Install OpenDistro Helm, according to https://opendistro.github.io/for-elasticsearch-docs/docs/install/helm/
"},{"location":"installing-lagoon/opendistro/#create-keys-and-certificates","title":"Create Keys and Certificates","text":" -
Generate certificates
Note:
CFSSL is CloudFlare's PKI/TLS swiss army knife. It is both a command line tool and an HTTP API server for signing, verifying, and bundling TLS certificates. It requires Go 1.12+ to build.
- Install CFSSL: https://github.com/cloudflare/cfssl
- Generate CA. You'll need the following file:
ca-csr.json{\n\"CN\": \"ca.elasticsearch.svc.cluster.local\",\n\"hosts\": [\n\"ca.elasticsearch.svc.cluster.local\"\n],\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n},\n\"ca\": {\n\"expiry\": \"87600h\"\n}\n}\n
-
Run the following two commands:
Generate certificatecfssl gencert -initca ca-csr.json | cfssljson -bare ca -\nrm ca.csr\n
You'll get ca-key.pem
, and ca.pem
. This is your CA key and self-signed certificate.
-
Next, we'll generate the node peering certificate. You'll need the following two files:
ca-config.json{\n\"signing\": {\n\"default\": {\n\"expiry\": \"87600h\"\n},\n\"profiles\": {\n\"peer\": {\n\"expiry\": \"87600h\",\n\"usages\": [\n\"signing\",\n\"key encipherment\",\n\"server auth\",\n\"client auth\"\n]\n},\n\"client\": {\n\"expiry\": \"87600h\",\n\"usages\": [\n\"signing\",\n\"key encipherment\",\n\"client auth\"\n]\n}\n}\n}\n}\n
node.json{\n\"hosts\": [\n\"node.elasticsearch.svc.cluster.local\"\n],\n\"CN\": \"node.elasticsearch.svc.cluster.local\",\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n}\n}\n
-
Run the following two commands:
Generate certificate keyscfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer node.json | cfssljson -bare node\nrm node.csr\n
You'll get node.pem
and node-key.pem
. This is the peer certificate that will be used by nodes in the ES cluster.
-
Next, we'll convert the key to the format supported by Java with the following command:
Convert key formatopenssl pkey -in node-key.pem -out node-key.pkcs8\n
-
Now we'll generate the admin certificate. You'll need the following file:
admin.json{\n\"CN\": \"admin.elasticsearch.svc.cluster.local\",\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n}\n}\n
-
Run the following two commands:
Generate admin certificate keyscfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client admin.json | cfssljson -bare admin\nrm admin.csr\n
You'll get admin.pem
and admin-key.pem
. This is the certificate that will be used to perform admin commands on the opendistro-security plugin.
-
Next, we'll convert the key to the format supported by Java with the following command:
Convert key formatopenssl pkey -in admin-key.pem -out admin-key.pkcs8\n
"},{"location":"installing-lagoon/opendistro/#installing-opendistro","title":"Installing OpenDistro","text":"Now that we have our keys and certificates, we can continue with the installation.
-
Generate hashed passwords.
- The
elasticsearch-secrets-values.yaml
needs two hashed passwords. Create them with this command (run it twice, enter a random password, store both the plaintext and hashed passwords).
Generate hashed passwordsdocker run --rm -it docker.io/amazon/opendistro-for-elasticsearch:1.12.0 sh -c \"chmod +x /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh; /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh\"\n
-
Create secrets:
- You'll need to create
elasticsearch-secrets-values.yaml
. See this gist as an example: https://gist.github.com/Schnitzel/43f483dfe0b23ca0dddd939b12bb4b0b
-
Install secrets with the following commands:
Install secretshelm repo add incubator https://charts.helm.sh/incubator`\nhelm upgrade --namespace elasticsearch --create-namespace --install elasticsearch-secrets incubator/raw --values elasticsearch-secrets-values.yaml `\n
-
You'll need to create elasticsearch-values.yaml
. See this gist as an example: (fill all <\\> with values) https://gist.github.com/Schnitzel/1e386654b6abf75bf4d66a544db4aa6a
-
Install Elasticsearch:
Install Elasticsearchhelm upgrade --namespace elasticsearch --create-namespace --install elasticsearch opendistro-es-X.Y.Z.tgz --values elasticsearch-values.yaml\n
-
Configure security inside Elasticsearch with the following:
Configure securitykubectl exec -n elasticsearch -it elasticsearch-opendistro-es-master-0 -- bash\nchmod +x /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh\n/usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh -nhnv -cacert /usr/share/elasticsearch/config/admin-root-ca.pem -cert /usr/share/elasticsearch/config/admin-crt.pem -key /usr/share/elasticsearch/config/admin-key.pem -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/\n
-
Update lagoon-core-values.yaml
with:
lagoon-core-values.yamlelasticsearchURL: http://elasticsearch-opendistro-es-client-service.elasticsearch.svc.cluster.local:9200\nkibanaURL: https://<<Kibana Public URL>>\nlogsDBAdminPassword: \"<<PlainText Elasticsearch Admin Password>>\"\n
-
Rollout Lagoon Core:
Rollout Lagoon Corehelm upgrade --install --create-namespace --namespace lagoon-core -f values.yaml lagoon-core lagoon/lagoon-core\n
-
Sync all Lagoon Groups with Opendistro Elasticsearch
Sync groupskubectl -n lagoon-core exec -it deploy/lagoon-core-api -- sh\nyarn run sync:opendistro-security\n
"},{"location":"installing-lagoon/querying-graphql/","title":"Querying with GraphQL","text":" -
You\u2019ll need an app for sending and receiving GraphQL queries. We recommend GraphiQL.
- If you\u2019re using Homebrew, you can install it with
brew install --cask graphiql
.
-
We need to tell Lagoon Core about the Kubernetes cluster. The GraphQL endpoint is: https://<YOUR-API-URL>/graphql
-
Go to Edit HTTP Headers, and Add Header.
- Header Name:
Authorization
- Value:
Bearer YOUR-TOKEN-HERE
- In your home directory, the Lagoon CLI has created a
.lagoon.yml
file. Copy the token from that file and use it for the value here. - Save.
-
Now you\u2019re ready to run some queries. Run the following test query to ensure everything is working correctly:
Get all projectsquery allProjects {allProjects {name } }\n
-
This should give you the following response:
API Response {\n \"data\": {\n \"allProjects\": []\n }\n }\n
Read more about GraphQL here in our documentation.
-
Once you get the correct response, we need to add a mutation.
-
Run the following query:
Add mutationmutation addKubernetes {\naddKubernetes(input:\n{\nname: \"<TARGET-NAME-FROM-REMOTE-VALUES.yml>\",\nconsoleUrl: \"<URL-OF-K8S-CLUSTER>\",\ntoken: \"xxxxxx\u201d\nrouterPattern: \"${environment}.${project}.lagoon.example.com\"\n}){id}\n}\n
name
: get from lagoon-remote-values.yml
consoleUrl
: API Endpoint of Kubernetes cluster. Get from values.yml
-
token
: get a token for the ssh-core
service account
Get tokenkubectl -n lagoon get secret/lagoon-remote-ssh-core-token -o json | jq -r '.data.token | @base64d'\n
Info
Authorization tokens for GraphQL are very short term so you may need to generate a new one. Run lagoon login
and then cat the .lagoon.yml
file to get the new token, and replace the old token in the HTTP header with the new one.
"},{"location":"installing-lagoon/requirements/","title":"Installing Lagoon Into Existing Kubernetes Cluster","text":""},{"location":"installing-lagoon/requirements/#requirements","title":"Requirements","text":" - Kubernetes 1.23+ (Kubernetes 1.21 is supported, but 1.23 is recommended)
- Familiarity with Helm and Helm Charts, and kubectl.
- Ingress controller, we recommend ingress-nginx, installed into ingress-nginx namespace
- Cert manager (for TLS) - We highly recommend using letsencrypt
- StorageClasses (RWO as default, RWM for persistent types)
Note
We acknowledge that this is a lot of steps, and our roadmap for the immediate future includes reducing the number of steps in this process.
"},{"location":"installing-lagoon/requirements/#specific-requirements-as-of-january-2023","title":"Specific requirements (as of January 2023)","text":""},{"location":"installing-lagoon/requirements/#kubernetes","title":"Kubernetes","text":"Lagoon supports Kubernetes versions 1.21 onwards. We actively test and develop against Kubernetes 1.24, also regularly testing against 1.21,1.22 and 1.25.
The next large round of breaking changes is in Kubernetes 1.25, and we will endeavour to be across these in advance, although this will require a bump in the minimum supported version of Lagoon.
"},{"location":"installing-lagoon/requirements/#ingress-nginx","title":"ingress-nginx","text":"Lagoon is currently configured only for a single ingress-nginx
controller, and therefore defining an IngressClass
was not necessary in the past.
In order to use the recent ingress-nginx
controllers (v4 onwards, required for Kubernetes 1.22), the following configuration should be used, as per the ingress-nginx
docs.
nginx-ingress
should be configured as the default controller - set .controller.ingressClassResource.default: true
in Helm values nginx-ingress
should be configured to watch ingresses without IngressClass
set - set .controller.watchIngressWithoutClass: true
in Helm values
This will configure the controller to create any new ingresses with itself as the IngressClass
, and also to handle any existing ingresses without an IngressClass
set.
Other configurations may be possible, but have not been tested.
"},{"location":"installing-lagoon/requirements/#harbor","title":"Harbor","text":"Versions 2.1 and 2.2+ of Harbor are currently supported. The method of retrieving robot accounts was changed in 2.2, and the Lagoon remote-controller is able to handle these tokens. This means that Harbor has to be configured with the credentials in lagoon-build-deploy
- not lagoon-core
.
We recommend installing a Harbor version greater than 2.6.0 with Helm chart 1.10.0 or greater.
"},{"location":"installing-lagoon/requirements/#k8up-for-backups","title":"k8up for backups","text":"Lagoon has built in configuration for the K8up backup operator. Lagoon can configure prebackup pods, schedules and retentions, and manage backups and restores for K8up. Lagoon currently only supports the 1.x versions of K8up, owing to a namespace change in v2 onwards, but we are working on a fix.
K8up v2:
Lagoon does not currently support K8up v2 onwards due to a namespace change here.
We recommend installing K8up version 1.2.0 with Helm Chart 1.1.0
"},{"location":"installing-lagoon/requirements/#storage-provisioners","title":"Storage provisioners","text":"Lagoon utilizes a default 'standard' StorageClass
for most workloads, and the internal provisioner for most Kubernetes platforms will suffice. This should be configured to be dynamic provisioning and expandable where possible.
Lagoon also requires a StorageClass
called 'bulk' to be available to support persistant pod replicas (across nodes). This StorageClass
should support ReadWriteMany
(RWX) access mode and should be configured to be dynamic provisioning and expandable where possible. See https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes for more information, and the production drivers list for a complete list of compatible drivers.
We have curently only included the instructions a generic Bulk Storage provisioner using NFS Bulk Storage Provisioner. In AWS the production EFS CSI driver is limited to provisioning no more than 1000 PVCs. We are awaiting an upstream possible fix here - but most other providers CSI drivers should also work, as will configurations with an NFS-compatible server and provisioner.
"},{"location":"installing-lagoon/requirements/#how-much-kubernetes-experienceknowledge-is-required","title":"How much Kubernetes experience/knowledge is required?","text":"Lagoon uses some very involved Kubernetes and cloud-native concepts, and while full familiarity may not be necessary to install and configure Lagoon, diagnosing issues and contributing may prove difficult without a good level of familiarity.
As an indicator, comfort with the curriculum for the Certified Kubernetes Administrator would be suggested as a minimum.
"},{"location":"installing-lagoon/update-lagoon/","title":"Updating","text":" -
Download newest charts using Helm.
Download newest chartshelm repo update\n
-
Check with helm diff
for changes (https://github.com/databus23/helm-diff).
Check for changeshelm diff upgrade --install --create-namespace --namespace lagoon-core \\\n-f values.yml lagoon-core lagoon/lagoon-core\n
-
Back up the Lagoon databases prior to any Helm actions. We also suggest scaling the API to a single pod, to aid the database migration scripts running in the initContainers.
-
Run the upgrade using Helm.
Run upgradehelm upgrade --install --create-namespace --namespace lagoon-core \\\n-f values.yaml lagoon-core lagoon/lagoon-core\n
-
(Note that as of Lagoon v2.11.0, this step is no longer required.) If upgrading Lagoon Core, ensure you run the rerun_initdb.sh
script to perform post upgrade migrations.
Run scriptkubectl --namespace lagoon-core exec -it lagoon-core-api-db-0 -- \\\nsh -c /rerun_initdb.sh\n
-
Re-scale the API pods back to their original level.
-
If upgrading Lagoon Core, and you have enabled groups/user syncing for OpenSearch, you may additionally need to run the sync:opendistro-security
script to update the groups in OpenSearch. This command can also be prefixed with a GROUP_REGEX=<group-to-sync
to sync a single group at a time, as syncing the entire group structure may take a long time.
Run scriptkubectl --namespace lagoon-core exec -it deploy/lagoon-core-api -- \\\nsh -c yarn sync:opendistro-security\n
Check https://github.com/uselagoon/lagoon/releases for additional upgrades.
"},{"location":"installing-lagoon/update-lagoon/#database-backups","title":"Database Backups","text":"You may want to back up the databases before upgrading Lagoon Core, the following will create backups you can use to restore from if required. You can delete them afterwards.
"},{"location":"installing-lagoon/update-lagoon/#api-db","title":"API DB","text":"Back up API DBkubectl --namespace lagoon-core exec -it lagoon-core-api-db-0 -- \\\nsh -c 'mysqldump --max-allowed-packet=500M --events \\\n --routines --quick --add-locks --no-autocommit \\\n --single-transaction infrastructure | gzip -9 > \\\n /var/lib/mysql/backup/$(date +%Y-%m-%d_%H%M%S).infrastructure.sql.gz'\n
"},{"location":"installing-lagoon/update-lagoon/#keycloak-db","title":"Keycloak DB","text":"Back up Keycloak DBkubectl --namespace lagoon-core exec -it lagoon-core-keycloak-db-0 -- \\\nsh -c 'mysqldump --max-allowed-packet=500M --events \\\n --routines --quick --add-locks --no-autocommit \\\n --single-transaction keycloak | gzip -9 > \\\n /var/lib/mysql/backup/$(date +%Y-%m-%d_%H%M%S).keycloak.sql.gz'\n
"},{"location":"interacting/graphql-queries/","title":"GraphQL API","text":""},{"location":"interacting/graphql-queries/#running-graphql-queries","title":"Running GraphQL queries","text":"Direct API interactions in Lagoon are done via GraphQL.
In order to authenticate with the API, we need a JWT (JSON Web Token) that allows us to use the GraphQL API as admin. To generate this token, open the terminal of the storage-calculator
pod via your Kubernetes UI, or via kubectl and run the following command:
Generate JWT token../create_jwt.py\n
This will return a long string which is the JWT token. Make a note of this, as we will need it to send queries.
We also need the URL of the API endpoint, which can be found under \"Ingresses\" in your Kubernetes UI or via kubectl on the command line. Make a note of this endpoint URL, which we will also need.
To compose and send GraphQL queries, we recommend GraphiQL.app, a desktop GraphQL client with features such as autocomplete. To continue with the next steps, install and start the app.
Under \"GraphQL Endpoint\", enter the API endpoint URL with /graphql
on the end. Then click on \"Edit HTTP Headers\" and add a new header:
- \"Header name\":
Authorization
- \"Header value\":
Bearer [JWT token]
(make sure that the JWT token has no spaces, as this would not work)
Press ESC to close the HTTP header overlay and now we are ready to send the first GraphQL request!
Enter this in the left panel
Running a queryquery allProjects{\nallProjects {\nname\n}\n}\n
And press the \u25b6\ufe0f button (or press CTRL+ENTER).
If all went well, your first GraphQL response should appear shortly afterwards in the right pane.
"},{"location":"interacting/graphql-queries/#creating-the-first-project","title":"Creating the first project","text":"Let's create the first project for Lagoon to deploy! For this we'll use the queries from the GraphQL query template in create-project.gql
.
For each of the queries (the blocks starting with mutation {
), fill in all of the empty fields marked by TODO comments and run the queries in GraphiQL.app. This will create one of each of the following two objects:
kubernetes
: The Kubernetes (or Openshift) cluster to which Lagoon should deploy. Lagoon is not only capable of deploying to its own Kubernetes cluster, but also to any Kubernetes cluster anywhere in the world. project
: The Lagoon project to be deployed, which is a Git repository with a .lagoon.yml
configuration file committed in the root.
"},{"location":"interacting/graphql-queries/#allowing-access-to-the-project","title":"Allowing access to the project","text":"In Lagoon, each developer authenticates via their SSH key(s). This determines their access to:
- The Lagoon API, where they can see and edit projects they have access to.
- Remote shell access to containers that are running in projects they have access to.
- The Lagoon logging system, where a developer can find request logs, container logs, Lagoon logs and more.
To allow access to the project, we first need to add a new group to the API:
Add group to APImutation {\naddGroup (\ninput: {\n# TODO: Enter the name for your new group.\nname: \"\"\n}\n) {\nid\nname\n}\n}\n
Then we need to add a new user to the API:
Add new user to APImutation {\naddUser(\ninput: {\nemail: \"michael.schmid@example.com\"\nfirstName: \"Michael\"\nlastName: \"Schmid\"\ncomment: \"CTO\"\n}\n) {\n# TODO: Make a note of the user ID that is returned.\nid\n}\n}\n
Then we can add an SSH public key for the user to the API:
Add SSH public key for the user to APImutation {\naddSshKey(\ninput: {\n# TODO: Fill in the name field.\n# This is a non-unique identifier for the SSH key.\nname: \"\"\n# TODO: Fill in the keyValue field.\n# This is the actual SSH public key (without the type at the beginning and without the comment at the end, ex. `AAAAB3NzaC1yc2EAAAADAQ...3QjzIOtdQERGZuMsi0p`).\nkeyValue: \"\"\n# TODO: Fill in the keyType field.\n# Valid values are either SSH_RSA, SSH_ED25519, ECDSA_SHA2_NISTP256/384/521\nkeyType: SSH_RSA\nuser: {\n# TODO: Fill in the userId field.\n# This is the user ID that we noted from the addUser query.\nid:\"0\",\nemail:\"michael.schmid@example.com\"\n}\n}\n) {\nid\n}\n}\n
After we add the key, we need to add the user to a group:
Add user to groupmutation {\naddUserToGroup (\ninput: {\nuser: {\n#TODO: Enter the email address of the user.\nemail: \"\"\n}\ngroup: {\n#TODO: Enter the name of the group you want to add the user to.\nname: \"\"\n}\n#TODO: Enter the role of the user.\nrole: OWNER\n}\n) {\nid\nname\n}\n}\n
After running one or more of these kinds of queries, the user will be granted access to create tokens via SSH, access containers and more.
"},{"location":"interacting/graphql-queries/#adding-notifications-to-the-project","title":"Adding notifications to the project","text":"If you want to know what is going on during a deployment, we suggest configuring notifications for your project, which provide:
- Push notifications
- Build start information
- Build success or failure messages
- And many more!
As notifications can be quite different in terms of the information they need, each notification type has its own mutation.
As with users, we first add the notification:
Add notificationmutation {\naddNotificationSlack(\ninput: {\n# TODO: Fill in the name field.\n# This is your own identifier for the notification.\nname: \"\"\n# TODO: Fill in the channel field.\n# This is the channel for the message to be sent to.\nchannel: \"\"\n# TODO: Fill in the webhook field.\n# This is the URL of the webhook where messages should be sent, this is usually provided by the chat system to you.\nwebhook: \"\"\n}\n) {\nid\n}\n}\n
After the notification is created, we can now assign it to our project:
Assign notification to projectmutation {\naddNotificationToProject(\ninput: {\nnotificationType: SLACK\n# TODO: Fill in the project field.\n# This is the project name.\nproject: \"\"\n# TODO: Fill in the notification field.\n# This is the notification name.\nnotificationName: \"\"\n# TODO: OPTIONAL\n# The kind notification class you're interested in defaults to DEPLOYMENT\ncontentType: DEPLOYMENT/PROBLEM\n# TODO: OPTIONAL\n# Related to contentType PROBLEM, we can set the threshold for the kinds of problems\n# we'd like to be notified about\nnotificationSeverityThreshold \"NONE/UNKNOWN/NEGLIGIBLE/LOW/MEDIUM/HIGH/CRITICAL\n}\n) {\nid\n}\n}\n
Now for every deployment you will receive messages in your defined channel.
"},{"location":"interacting/graphql-queries/#example-graphql-queries","title":"Example GraphQL queries","text":""},{"location":"interacting/graphql-queries/#adding-a-new-kubernetes-target","title":"Adding a new Kubernetes target","text":"Note
In Lagoon, both addKubernetes
and addOpenshift
can be used for both Kubernetes and OpenShift targets - either will work interchangeably.
The cluster to which Lagoon should deploy.
Add Kubernetes targetmutation {\naddKubernetes(\ninput: {\n# TODO: Fill in the name field.\n# This is the unique identifier of the cluster.\nname: \"\"\n# TODO: Fill in consoleUrl field.\n# This is the URL of the Kubernetes cluster\nconsoleUrl: \"\"\n# TODO: Fill in the token field.\n# This is the token of the `lagoon` service account created in this cluster (this is the same token that we also used during installation of Lagoon).\ntoken: \"\"\n}\n) {\nname\nid\n}\n}\n
"},{"location":"interacting/graphql-queries/#adding-a-group-to-a-project","title":"Adding a group to a project","text":"This query will add a group to a project. Users of that group will be able to access the project. They will be able to make changes, based on their role in that group.
Add a group to a projectmutation {\naddGroupsToProject (\ninput: {\nproject: {\n#TODO: Enter the name of the project.\nname: \"\"\n}\ngroups: {\n#TODO: Enter the name of the group that will be added to the project.\nname: \"\"\n}\n}\n) {\nid\n}\n}\n
"},{"location":"interacting/graphql-queries/#adding-a-new-project","title":"Adding a new project","text":"This query adds a new Lagoon project to be deployed, which is a Git repository with a .lagoon.yml
configuration file committed in the root.
If you omit the privateKey
field, a new SSH key for the project will be generated automatically.
If you would like to reuse a key from another project. you will need to supply the key in the addProject
mutation.
Add a new projectmutation {\naddProject(\ninput: {\n# TODO: Fill in the name field.\n# This is the project name.\nname: \"\"\n# TODO: Fill in the private key field (replace newlines with '\\n').\n# This is the private key for a project, which is used to access the Git code.\nprivateKey: \"\"\n# TODO: Fill in the Kubernetes field.\n# This is the ID of the Kubernetes or OpenShift to assign to the project.\nkubernetes: 0\n# TODO: Fill in the name field.\n# This is the project name.\ngitUrl: \"\"\n# TODO: Fill in the branches to be deployed.\nbranches: \"\"\n# TODO: Define the production environment.\nproductionEnvironment: \"\"\n}\n) {\nname\nkubernetes {\nname\nid\n}\ngitUrl\nbranches\npullrequests\n}\n}\n
"},{"location":"interacting/graphql-queries/#list-projects-and-groups","title":"List projects and groups","text":"This is a good query to see an overview of all projects, clusters and groups that exist within our Lagoon.
Get an overview of all projects, clusters, and groupsquery {\nallProjects {\nname\ngitUrl\n}\nallKubernetes {\nname\nid\n}\nallGroups{\nid\nname\nmembers {\n# This will display the users in this group.\nuser {\nid\nfirstName\nlastName\n}\nrole\n}\ngroups {\nid\nname\n}\n}\n}\n
"},{"location":"interacting/graphql-queries/#single-project","title":"Single project","text":"If you want a detailed look at a single project, this query has been proven quite good:
Take a detailed look at one projectquery {\nprojectByName(\n# TODO: Fill in the project name.\nname: \"\"\n) {\nid\nbranches\ngitUrl\npullrequests\nproductionEnvironment\nnotifications(type: SLACK) {\n... on NotificationSlack {\nname\nchannel\nwebhook\nid\n}\n}\nenvironments {\nname\ndeployType\nenvironmentType\n}\nkubernetes {\nid\n}\n}\n}\n
"},{"location":"interacting/graphql-queries/#querying-a-project-by-its-git-url","title":"Querying a project by its Git URL","text":"Don't remember the name of a project, but know the Git URL? Search no longer, there is a GraphQL query for that:
Query project by Git URLquery {\nprojectByGitUrl(gitUrl: \"git@server.com:org/repo.git\") {\nname\n}\n}\n
"},{"location":"interacting/graphql-queries/#updating-objects","title":"Updating objects","text":"The Lagoon GraphQL API can not only display objects and create objects, it also has the capability to update existing objects, using a patch object.
Update the branches to deploy within a project:
Update deploy branches.mutation {\nupdateProject(\ninput: { id: 109, patch: { branches: \"^(prod|stage|dev|update)$\" } }\n) {\nid\n}\n}\n
Update the production environment within a project:
Warning
This requires a redeploy in order for the changes to be reflected in the containers.
Update prod environment mutation {\nupdateProject(\ninput: { id: 109, patch: { productionEnvironment: \"main\" } }\n) {\nid\n}\n}\n
You can also combine multiple changes at once:
Update prod environment and set deploy branches.mutation {\nupdateProject(\ninput: {\nid: 109\npatch: {\nproductionEnvironment: \"main\"\nbranches: \"^(prod|stage|dev|update)$\"\n}\n}\n) {\nid\n}\n}\n
"},{"location":"interacting/graphql-queries/#deleting-environments","title":"Deleting Environments","text":"You can also use the Lagoon GraphQL API to delete an environment. You'll need to know the project name and the environment name in order to run the command.
Delete environment.mutation {\ndeleteEnvironment(\ninput: {\n# TODO: Fill in the name field.\n# This is the environment name.\nname:\"\"\n# TODO: Fill in the project field.\n# This is the project name.\nproject:\"\"\nexecute:true\n}\n)\n}\n
"},{"location":"interacting/graphql-queries/#querying-a-project-to-see-what-groups-and-users-are-assigned","title":"Querying a project to see what groups and users are assigned","text":"Want to see what groups and users have access to a project? Want to know what their roles are? Do I have a query for you! Using the query below you can search for a project and display the groups, users, and roles that are assigned to that project.
Query groups, users, and roles assigned to projectquery search{\nprojectByName(\n#TODO: Enter the name of the project.\nname: \"\"\n) {\nid,\nbranches,\nproductionEnvironment,\npullrequests,\ngitUrl,\nkubernetes {\nid\n},\ngroups{\nid\nname\ngroups {\nid\nname\n}\nmembers {\nrole\nuser {\nid\nemail\n}\n}\n}\n}\n}\n
"},{"location":"interacting/graphql-queries/#maintaining-project-metadata","title":"Maintaining project metadata","text":"Project metadata can be assigned using arbitrary key/value pairs. Projects can then be queried by the associated metadata; for example you may categorize projects by type of software, version number, or any other categorization you may wish to query on later.
"},{"location":"interacting/graphql-queries/#addupdate-metadata-on-a-project","title":"Add/update metadata on a project","text":"Updates to metadata expect a key/value pair. It operates as an UPSERT
, meaning if a key already exists the value will be updated, otherwise inserted.
You may have any number of k/v pairs stored against a project.
Add a key/value pair to metadatamutation {\nupdateProjectMetadata(\ninput: { id: 1, patch: { key: \"type\", value: \"saas\" } }\n) {\nid\nmetadata\n}\n}\n
"},{"location":"interacting/graphql-queries/#query-for-projects-by-metadata","title":"Query for projects by metadata","text":"Queries may be by key
only (e.g return all projects where a specific key exists) or both key
and value
where both key and value must match.
All projects that have the version
tag:
Query by metadataquery projectsByMetadata {\nprojectsByMetadata(metadata: [{key: \"version\"] ) {\nid\nname\n}\n}\n
All projects that have the version
tag, specifically version 8
:
Query by metadataquery projectsByMetadata {\nprojectsByMetadata(metadata: [{key: \"version\", value: \"8\"] ) {\nid\nname\n}\n}\n
"},{"location":"interacting/graphql-queries/#removing-metadata-on-a-project","title":"Removing metadata on a project","text":"Metadata can be removed on a per-key basis. Other metadata key/value pairs will persist.
Remove metadatamutation {\nremoveProjectMetadataByKey (\ninput: { id: 1, key: \"version\" }\n) {\nid\nmetadata\n}\n}\n
"},{"location":"interacting/graphql/","title":"GraphQL","text":""},{"location":"interacting/graphql/#connect-to-graphql-api","title":"Connect to GraphQL API","text":"API interactions in Lagoon are done via GraphQL. In order to authenticate to the API, you need a JWT (JSON Web Token), which will authenticate you against the API via your SSH public key.
To generate this token, use the remote shell via the token
command:
Get tokenssh -p [PORT] -t lagoon@[HOST] token\n
example.com connection string:
Get example.com tokenssh -p 22 -t lagoon@ssh.example.com token\n
This will return a long string, which is the JWT token.
We also need the URL of the API endpoint. Contact your Lagoon administrator for this.
For example.com this is https://api.example.com/graphql
.
Now we need a GraphQL client! Technically this is just HTTP, but we suggest GraphiQL. It has a nice UI that allows you to write GraphQL requests with autocomplete. Download, install and start it. [GraphiQL App]
Enter the API endpoint URL. Then click on \"Edit HTTP Headers\" and add a new Header:
- \"Header name\":
Authorization
- \"Header value\":
Bearer [jwt token]
(make sure that the JWT token has no spaces, that won't work)
Close the HTTP Header overlay (press ESC) and now you are ready to make your first GraphQL Request!
Enter this on the left window:
Get all projectsquery whatIsThere {\nallProjects {\nid\ngitUrl\nname\nbranches\npullrequests\nproductionEnvironment\nenvironments {\nname\nenvironmentType\n}\n}\n}\n
And press the \u25b6\ufe0f button (or press CTRL+ENTER).
If all went well, you should see your first GraphQL response.
"},{"location":"interacting/graphql/#mutations","title":"Mutations","text":"The Lagoon GraphQL API can not only display objects and create objects, but it also has the capability to update existing objects. All of Lagoon's GraphQL uses best practices.
Info
Mutation queries in GraphQL modify the data in the data store, and return a value. They can be used to insert, update, and delete data. Mutations are defined as a part of the schema._
Update the branches to deploy within a project:
Update deploy branchesmutation editProjectBranches {\nupdateProject(input:{id:109, patch:{branches:\"^(prod|stage|dev|update)$\"}}) {\nid\n}\n}\n
Update the production environment within a project:
Warning
This requires a redeploy in order for all changes to be reflected in the containers.
Update production environmentmutation editProjectProductionEnvironment {\nupdateProject(input:{id:109, patch:{productionEnvironment:\"prod\"}}) {\nid\n}\n}\n
You can also combine multiple changes into a single query:
Multiple changesmutation editProjectProductionEnvironmentAndBranches {\nupdateProject(input:{id:109, patch:{productionEnvironment:\"prod\", branches:\"^(prod|stage|dev|update)$\"}}) {\nid\n}\n}\n
"},{"location":"interacting/lagoon-ui/","title":"The Lagoon UI","text":"The Lagoon UI is your first point of call with Lagoon. If you have any issues with access, please contact your Lagoon administrator.
The UI allows you to complete a variety of tasks with your projects and organizations. Learn more about organizations here. and what you can do with organizations in the UI here.
"},{"location":"interacting/organizations/","title":"Working with Organizations in the UI","text":"Here are some step-by-step guides to help walk you through useful organization-related tasks in the Lagoon UI, working with groups, projects, users, and roles.
"},{"location":"interacting/organizations/#log-in-and-find-organizations","title":"Log in and find organizations","text":""},{"location":"interacting/organizations/#view-who-has-access-to-a-project","title":"View who has access to a project","text":""},{"location":"interacting/organizations/#add-user-to-group-with-role","title":"Add User to Group with Role","text":""},{"location":"interacting/organizations/#remove-a-user-from-a-group","title":"Remove a User from a Group","text":""},{"location":"interacting/organizations/#change-a-user-role","title":"Change a User Role","text":""},{"location":"interacting/organizations/#add-an-email-notification-to-a-project","title":"Add an Email Notification to a Project","text":""},{"location":"interacting/organizations/#add-a-group-to-a-project","title":"Add a Group to a Project","text":""},{"location":"interacting/organizations/#add-a-user-with-organization-owner-privileges","title":"Add a User with Organization Owner Privileges","text":""},{"location":"interacting/organizations/#create-a-new-project-add-a-group-and-create-a-production-environment","title":"Create a new Project, add a Group, and create a Production Environment","text":""},{"location":"interacting/rbac/","title":"Role-Based Access Control (RBAC)","text":"Version 1.0 of Lagoon changed how you access your projects! Access to your project is handled via groups, with projects assigned to one or multiple groups. Users are added to groups with a role. Groups can also be nested within sub-groups. This change provides a lot more flexibility and the possibility to recreate real world teams within Lagoon.
"},{"location":"interacting/rbac/#roles","title":"Roles","text":"When assigning a user to a group, you need to provide a group role for that user inside this group. Each one of the 5 current existing group roles gives the user different permissions to the group and projects assigned to the group. Here are the platform-wide roles and the group roles that are currently found in Lagoon:
"},{"location":"interacting/rbac/#platform-wide-roles","title":"Platform-Wide Roles","text":"Platform-wide roles are typically assigned to people that manage Lagoon.
"},{"location":"interacting/rbac/#platform-wide-owner","title":"Platform-Wide Owner","text":"The platform-wide owner has access to everything across all of Lagoon.
"},{"location":"interacting/rbac/#platform-wide-viewer","title":"Platform-Wide Viewer","text":"Similar to the platform-wide owner, except this role can only view.
"},{"location":"interacting/rbac/#platform-wide-organization-owner","title":"Platform-Wide Organization Owner","text":"The platform-wide organization owner role provides permission to create, update, delete, and all other permissions related to changes withing an organization, including existing organizations. It does not grant full platform-wide owner access, this means the ability to access and deploy projects still needs to be granted via a group within an organization.
This role also has the ability to view all the deploytargets (kubernetes clusters) assigned to Lagoon so that they can be assigned to an organization when it is being created.
NOTE
By default this role does not allow the creation of environments or the ability to trigger deployments within a project within an organization. They can add themselves to a group with a role that does grant them this permission.
"},{"location":"interacting/rbac/#organization-roles","title":"Organization Roles","text":""},{"location":"interacting/rbac/#organization-owner","title":"Organization Owner","text":"The organization owner role allows for the creation and deletion of projects, groups, and notifications within their organization.
They can add users to groups, change the roles of users within those groups, and associate projects with groups. This gives the organization owner the ability to clearly see who has access, and quickly add and remove users.
Organization owners now also have the ability to create Slack or other notifications directly, and associate those notifications with a project without requiring help from your Lagoon administrator.
Organization owners also have the ability to add and remove other owners, admins, or viewers to manage their organization.
NOTE
By default this role does not allow organization owners to create environments or trigger deployments within a project. They can add themselves to a group with a role that does grant them this permission. When creating a project, an organization owner can opt to be added as an owner of the project default group.
"},{"location":"interacting/rbac/#organization-admin","title":"Organization Admin","text":"The organization admin role is the same as organization owner, except that this role cannot make changes to the owners, admins, or viewers of the organization.
"},{"location":"interacting/rbac/#organization-viewer","title":"Organization Viewer","text":"The organization view has access to view the projects, group and user access, and notifications within their organization.
"},{"location":"interacting/rbac/#group-roles","title":"Group Roles","text":""},{"location":"interacting/rbac/#owner","title":"Owner","text":"The owner role can do everything within a group and its associated projects. They can add and manage users of a group. Be careful with this role, as it can delete projects and production environments!
IMPORTANT
If a user has this role in a group that is within the scope of an organization, this role's ability to manage that group's users is removed. Only organization owners or admins can manage groups and their users.
"},{"location":"interacting/rbac/#maintainer","title":"Maintainer","text":"The maintainer role can do everything within a group and its associated projects except deleting the project itself or the production environment. They can add and manage users of a group.
"},{"location":"interacting/rbac/#developer","title":"Developer","text":"The developer role has SSH access only to development environments. This role cannot access, update or delete the production environment. They can run a sync task with the production environment as a source, but not as the destination. Cannot manage users of a group.
IMPORTANT
This role does not prevent the deployment of the production environment as a deployment is triggered via a Git push! You need to make sure that your Git server prevents these users from pushing into the branch defined as production environment.
"},{"location":"interacting/rbac/#reporter","title":"Reporter","text":"The reporter role has view access only. They cannot access any environments via SSH or make modifications to them. They can run cache-clear tasks. This role is mostly used for stakeholders to have access to Lagoon UI and logging.
"},{"location":"interacting/rbac/#guest","title":"Guest","text":"The guest role has the same privileges as the reporter role listed above.
Here is a table that lists the roles and the access they have:
"},{"location":"interacting/rbac/#lagoon-100-rbac-permission-matrix","title":"Lagoon 1.0.0 RBAC Permission Matrix","text":"SelfGuestDeveloperMaintainerOwnerOrganization ViewerOrganization OwnerPlatform-Wide OwnerPlatform-Wide Admin Name Resource Scope Attributes addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID Name Resource Scope Attributes getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add Name Resource Scope Attributes addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID userCanSshToEnvironment environment ssh:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add Name Resource Scope Attributes deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID userCanSshToEnvironment environment ssh:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add Name Resource Scope Attributes deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add Name Resource Scope Attributes getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId Name Resource Scope Attributes getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId Name Resource Scope Attributes addOrUpdateEnvironmentStorage environment storage addNotificationSlack notification add updateNotificationSlack notification update deleteNotificationSlack notification delete addKubernetes kubernetes add updateKubernetes kubernetes update deleteKubernetes kubernetes delete getAllOpenshifts openshift viewAll getAllProjects project viewAll addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID allEnvironments environment viewAll getEnvironmentStorageMonthByEnvironmentId environment storage getEnvironmentHoursMonthByEnvironmentId environment storage getEnvironmentHitsMonthByEnvironmentId environment storage addOrUpdateEnvironmentStorage environment storage addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add getAllOrganizations organization viewAll addOrganization add viewAll updateOrganization update viewAll deleteOrganization delete viewAll getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId Name Resource Scope Attributes getEnvironmentStorageMonthByEnvironmentId environment storage getEnvironmentHoursMonthByEnvironmentId environment storage getEnvironmentHitsMonthByEnvironmentId environment storage getAllOpenshifts openshift viewAll addOrUpdateEnvironmentStorage environment storage addNotificationSlack notification add updateNotificationSlack notification update deleteNotificationSlack notification delete addKubernetes kubernetes add updateKubernetes kubernetes update deleteKubernetes kubernetes delete getAllProjects project viewAll addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add getAllOrganizations organization viewAll addOrganization add viewAll updateOrganization update viewAll deleteOrganization delete viewAll getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId"},{"location":"interacting/ssh/","title":"SSH","text":"Lagoon allows you to connect to your running containers via SSH. The containers themselves don't actually have an SSH server installed, but instead you connect via SSH to Lagoon, which then itself creates a remote shell connection via the Kubernetes API for you.
"},{"location":"interacting/ssh/#ensure-you-are-set-up-for-ssh-access","title":"Ensure you are set up for SSH access","text":""},{"location":"interacting/ssh/#generating-an-ssh-key","title":"Generating an SSH Key","text":"It is recommended to generate a separate SSH key for each device as opposed to sharing the same key between multiple computers. Instructions for generating an SSH key on various systems can be found below:
"},{"location":"interacting/ssh/#osx-mac","title":"OSX (Mac)","text":"Mac
"},{"location":"interacting/ssh/#linux-ubuntu","title":"Linux (Ubuntu)","text":"Linux
"},{"location":"interacting/ssh/#windows","title":"Windows","text":"Windows
"},{"location":"interacting/ssh/#ssh-agent","title":"SSH Agent","text":""},{"location":"interacting/ssh/#osx-mac_1","title":"OSX (Mac)","text":"OSX does not have its SSH agent configured to load configured SSH keys at startup, which can cause some headaches. You can find a handy guide to configuring this capability here: https://www.backarapper.com/add-ssh-keys-to-ssh-agent-on-startup-in-macos/
"},{"location":"interacting/ssh/#linux","title":"Linux","text":"Linux distributions vary in how they use the ssh-agent
. You can find a general guide here: https://www.ssh.com/academy/ssh/agent
"},{"location":"interacting/ssh/#windows_1","title":"Windows","text":"SSH key support in Windows has improved markedly as of recently, and is now supported natively. A handy guide to configuring the Windows 10 SSH agent can be found here: https://richardballard.co.uk/ssh-keys-on-windows-10/
"},{"location":"interacting/ssh/#uploading-ssh-keys","title":"Uploading SSH Keys","text":""},{"location":"interacting/ssh/#via-the-ui","title":"Via the UI","text":"You can upload your SSH key(s) through the UI. Log in as you normally would.
In the upper right hand corner, click on Settings:
You will then see a page where you can upload your SSH key(s), and it will show any uploaded keys. Paste your key into the text box, give it a name, and click \"Add.\" That's it! Add additional keys as needed.
"},{"location":"interacting/ssh/#via-command-line","title":"Via Command Line","text":"A general example of using the Lagoon API via GraphQL to add an SSH key to a user can be found here
"},{"location":"interacting/ssh/#ssh-into-a-pod","title":"SSH into a pod","text":"Note
The easiest way to SSH into a pod is to use the Lagoon CLI.
The instructions below only apply if you want to use the regular ssh
client, or other advanced use cases.
"},{"location":"interacting/ssh/#connection","title":"Connection","text":"Connecting is straightforward and follows the following pattern:
SSHssh [PROJECT-ENVIRONMENT-NAME]@[HOST]\n
HOST
- The remote shell SSH endpoint host (for example ssh.example.com
). PROJECT-ENVIRONMENT-NAME
- The environment you want to connect to. This is most commonly in the pattern PROJECTNAME-ENVIRONMENT
.
As an example:
SSH examplessh drupal-example-main@ssh.example.com\n
This will connect you to a cli
pod in the environment main
of the project drupal-example
.
"},{"location":"interacting/ssh/#podservice-container-definition","title":"Pod/Service, Container Definition","text":"By default the remote shell will try to connect you to the first container in the pod of the service type cli
. If you would like to connect to another service you can specify it using a service=[SERVICE-NAME]
argument to the SSH command.
Note
When you run the ssh
client command with just a USER@HOST
argument, it will assume that you want an interactive session and allocate a pty. This give you a regular shell environment where you can enter commands at a prompt, send interrupts using ^C
etc.
However, when you provide an argument to the ssh
client command, it assumes that you want a non-interactive session (e.g. just run a command and return) and will not allocate a pty.
So when providing an argument such as service=[SERVICE-NAME]
, if you want an interactive shell session you need to tell the ssh
client to not \"auto-detect\" if it needs a pty and just allocate one anyway using the -t
flag.
SSH to another service examplessh -t [PROJECT-ENVIRONMENT-NAME]@[HOST] service=[SERVICE-NAME]\n
If your pod/service contains multiple containers, Lagoon will connect you to the first defined container. You can also define the specific container to connect to via:
Define containerssh -t [PROJECT-ENVIRONMENT-NAME]@[HOST] service=[SERVICE-NAME] container=[CONTAINER-NAME]\n
For example, to connect to the php
container within the nginx
pod:
SSH to php containerssh -t drupal-example-main@ssh.example.com service=nginx container=php\n
"},{"location":"interacting/ssh/#copying-files","title":"Copying files","text":"The common case of copying a file into your cli
pod can be achieved with the usual SSH-compatible tools.
"},{"location":"interacting/ssh/#scp","title":"scp","text":"Copy file with scpscp [local_path] [project_name]-[environment_name]@ssh.example.com:[remote_path]\n
"},{"location":"interacting/ssh/#rsync","title":"rsync","text":"Copy files with rsyncrsync --rsh=ssh [local_path] [project_name]-[environment_name]@ssh.example.com:[remote_path]\n
"},{"location":"interacting/ssh/#tar","title":"tar","text":"Bashssh [project_name]-[environment_name]@ssh.example.com tar -zcf - [remote_path] | tar -zxf - -C /tmp/\n
"},{"location":"interacting/ssh/#specifying-non-cli-podservice","title":"Specifying non-CLI pod/service","text":"In the rare case that you need to specify a non-CLI service you can specify the service=...
and/or container=...
arguments in the copy command.
Piping tar
through the ssh
connection is the simplest method, and can be used to copy a file or directory using the usual tar
flags:
Bashssh [project_name]-[environment_name]@ssh.example.com service=solr tar -zcf - [remote_path] | tar -zxf - -C /tmp/\n
You can also use rsync
with a wrapper script to reorder the arguments to ssh
in the manner required by Lagoon's SSH service:
Bash#!/usr/bin/env sh\nsvc=$1 user=$3 host=$4\nshift 4\nexec ssh -l \"$user\" \"$host\" \"$svc\" \"$@\"\n
Put that in an executable shell script rsh.sh
and specify the service=...
in the rsync
command:
rsync to non-CLI podrsync --rsh=\"/path/to/rsh.sh service=cli\" /tmp/foo [project_name]-[environment_name]@ssh.example.com:/tmp/foo\n
The script could also be adjusted to also handle a container=...
argument.
"},{"location":"lagoonizing/","title":"Lagoonizing Your Existing Site","text":"Lagoonizing, or getting your existing site ready for the Lagoon platform, isn't generally difficult (depending on your site and setup), but does have a handful of steps. We've put together a stepo-by-step guide to make this process easier for you.
"},{"location":"lagoonizing/#requirements","title":"Requirements","text":"Make sure your system meets the requirements for working with Lagoon locally.
"},{"location":"lagoonizing/#local-development-environment","title":"Local Development Environment","text":"Set up your local development environment. You can choose between Pygmy and Lando.
"},{"location":"lagoonizing/#command-line-and-git","title":"Command Line and Git","text":"You'll need to interact with Lagoon via the command line, and you'll need Git as well, so make sure they're ready to go.
"},{"location":"lagoonizing/#command-line","title":"Command line","text":"You\u2019ll need to use a command line terminal for some tasks. Whatever you want to use is fine, including your operating system default tool. Here are a few options:
- iTerm2 (Mac)
- PowerShell (Windows)
- Fish (Mac, Windows, Linux)
- Tabby (Mac, Windows, Linux)
"},{"location":"lagoonizing/#install-git","title":"Install Git","text":"If you don\u2019t have one already, you\u2019ll need a Git client of some kind. Command line, GUI, whatever works for you (our examples will use the command line, FYI). Here are a few options:
- Installing Git (Mac, Windows, Linux)
- SourceTree (Mac, Windows)
- GitHub Desktop (Mac, Windows)
- GitKraken (Mac, Windows, Linux - free for public repositories)
"},{"location":"lagoonizing/#what-your-lagoon-administrator-needs","title":"What your Lagoon administrator Needs","text":"The person setting up your Lagoon, usually your Lagoon administrator will need some information, which is detailed here.
"},{"location":"lagoonizing/#configure-webhooks","title":"Configure Webhooks","text":"Next, you'll need to configure webhooks for your Git respository. You can find those instructions here.
"},{"location":"lagoonizing/#docker-composeyml","title":"docker-compose.yml
","text":"The docker-compose.yml
file is used by Lagoon to:
- Learn which services/containers should be deployed.
- Define how the images for the containers are built.
- Define additional configurations like persistent volumes.
You can read more about it in our docker-compose.yml
documentation.
This is the first of two files we\u2019ll create and set up to get your site ready for Lagoon.
Docker-compose
(the tool) is very strict in validating the content of the YAML file, so we can only do configuration within labels of a service definition.
Warning
Lagoon only reads the labels, service names, image names and build definitions from a docker-compose.yml
file. Definitions like: ports, environment variables, volumes, networks, links, users, etc. are IGNORED. This is intentional, as the docker-compose
file is there to define your local environment configuration. Lagoon learns from the lagoon.type
the type of service you are deploying and from that knows about ports, networks and any additional configuration that this service might need.
Let\u2019s walk through setting up some basic services. In this example, we\u2019ll set up NGINX, PHP, and MariaDB, which you\u2019ll need for many systems like Drupal, Laravel, and other content management systems.
Here is a straightforward example of a docker-compose.yml
file for Drupal:
docker-compose.ymlversion: '2.3'\nx-lagoon-project:\n# Lagoon project name (leave `&lagoon-project` when you edit this)\n&lagoon-project drupal-example\nx-volumes:\n&default-volumes\n# Define all volumes you would like to have real-time mounted into the docker containers\nvolumes:\n- .:/app:delegated\nx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# Route that should be used locally, if you are using pygmy, this route *must* end with .docker.amazee.io\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n# Uncomment if you would like to have the system behave like in production\n#LAGOON_ENVIRONMENT_TYPE: production\n# Uncomment to enable xdebug and then restart via `docker compose up -d`\n#XDEBUG_ENABLE: \"true\"\nx-user:\n&default-user\n# The default user under which the containers should run. Change this if you are on linux and run with a user other than id `1000`.\nuser: '1000'\nservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.name: nginx\nlagoon.persistent: /app/web/sites/default/files/\nmariadb:\nimage: uselagoon/mariadb-10.11-drupal\nlabels:\nlagoon.type: mariadb\n
Now let\u2019s break down what each of these options mean.
"},{"location":"lagoonizing/#basic-settings","title":"Basic Settings","text":"x-lagoon-project
: This is the machine name of your project, define it here. We\u2019ll use \u201cdrupal-example.\u201d
x-volumes
: This tells Lagoon what to mount into the container. Your web application lives in /app
, but you can add or change this if needed.
x-environment
:
- Here you can set your local development URL. If you are using Pygmy, it must end with
.docker.amazee.io.
- If you want to exactly mimic the production environment, uncomment
LAGOON_ENVIRONMENT_TYPE: production
. - If you want to enable x-debug, uncomment
DEBUG_ENABLE: \"true\"
.
x-user
: You are unlikely to need to change this, unless you are on Linux and would like to run with a user other than 1000.
"},{"location":"lagoonizing/#services","title":"services
","text":"This defines all the services you want to deploy. Unfortunately, docker-compose
calls them services, even though they are actually defining the containers. Going forward we'll be calling them services, and throughout this documentation.
The name of the service (nginx
, php
, and mariadb
in the example above) is used by Lagoon as the name of the Kubernetes pod (yet another term - again, we'll be calling them services) that is generated, plus any additional Kubernetes objects that are created based on the defined lagoon.type
. This could be things like services, routes, persistent storage, etc.
"},{"location":"lagoonizing/#docker-images","title":"Docker Images","text":"If you want Lagoon to build a Dockerfile for your service during every deployment, you can define it here:
build
context
- The build context path that should be passed on into the Docker
build
command.
dockerfile
: - Location and name of the Dockerfile that should be built.
Warning
Lagoon does NOT support the short version of build: <Dockerfile>
and will fail if it finds such a definition.
image
- If you don't need to build a Dockerfile and just want to use an existing Dockerfile, define it via
image
.
In our example, we\u2019re giving the path of the current directory. NGINX is set to build nginx.dockerfile
, and PHP, php.dockerfile
. MariaDB is using an existing image at uselagoon/mariadb-10.11-drupal
. You can learn more about our Docker images here.
"},{"location":"lagoonizing/#types","title":"Types","text":"Lagoon needs to know what type of service you are deploying in order to configure the correct Kubernetes objects.
This is done via the lagoon.type
label. There are many different types to choose from. Read our public documentation about Service Types to see all of them and their additional configuration possibilities.
You might have noticed that in our example, both the PHP and NGINX services have their type defined as nginx-php-persistent
. That\u2019s because they are what\u2019s called multi-container pods.
"},{"location":"lagoonizing/#multi-container-pods","title":"Multi-Container Pods","text":"Kubernetes doesn\u2019t deploy plain containers. Instead, it deploys pods, with each one or more containers. Usually Lagoon creates a single pod with a container inside for each defined docker-compose
service. For some cases, we need to put two containers inside a single pod, as these containers are so dependent on each other that they should always stay together. An example for such a situation is the PHP and NGINX containers that both contain PHP code of a web application like Drupal, as we\u2019ve done above.
For these cases, it is possible to tell Lagoon which services should stay together. This is done in the following way (remember that we are calling containers services):
- Define both services with a
lagoon.type
that expects two services (in the example this is nginx-php-persistent
defined on the NGINX and PHP services). - Link the second service with the first one, setting the label
lagoon.name
of the second one to match the first one. (in the example this is done by setting lagoon.name: nginx
).
This will cause Lagoon to realize that the nginx
and php
services are combined in a pod that will be called nginx
.
Lagoon still needs to understand which of the two services is the actual individual service type (nginx
and php
in this case). It does this by searching for the service names of the matching service types. nginx-php-persistent
expects one service with the name nginx
and one with php
in the docker-compose.yml
.
If for any reason you want to use different names for the services, or you need more than one pod with the type nginx-php-persistent
, there is an additional label lagoon.deployment.servicetype
, which can be used to define the actual service type.
Here\u2019s an example showing how multi-container pods can be set up in more detail:
docker-compose.ymlnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # If this isn't present, Lagoon will use the container name, which in this case is nginx.\nlagoon.deployment.servicetype: nginx\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # We want this service to be part of the nginx pod in Lagoon.\nlagoon.deployment.servicetype: php\n
There is quite a bit more you can do in docker-compose.yml, but setting up your services is the most important part. Check out our documentation on docker-compose.yml
to learn what else you can do.
"},{"location":"lagoonizing/#lagoonyml","title":".lagoon.yml
","text":"The .lagoon.yml
file is the central file for setting up your project. It contains configuration in order to do the following:
- Define routes for accessing your sites.
- Define pre-rollout tasks.
- Define post-rollout tasks.
- Set up SSL certificates.
- Add cron jobs for environments.
The .lagoon.yml
file must be created and placed at the root of your Git repository.
Here is an example .lagoon.yml
file showing a variety of configuration options for a Drupal site that we\u2019ll go over:
.lagoon.ymldocker-compose-yaml: docker-compose.yml\nenvironment_variables:\ngit_sha: 'true'\ntasks:\npre-rollout:\n- run:\nname: drush sql-dump\ncommand: mkdir -p /app/web/sites/default/files/private/ && drush sql-dump --ordered-dump --gzip --result-file=/app/web/sites/default/files/private/pre-deploy-dump.sql.gz\nservice: cli\npost-rollout:\n- run:\nname: drush cim\ncommand: drush -y cim\nservice: cli\nshell: bash\n- run:\nname: drush cr\ncommand: drush -y cr\nservice: cli\nroutes:\ninsecure: Redirect\nenvironments:\nmain:\nroutes:\n- nginx:\n- example.com\n- example.net\n- \"www.example.com\":\ntls-acme: 'true'\ninsecure: Redirect\nhsts: max-age=31536000\n- \"example.ch\":\nAnnotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\nstaging:\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\n
"},{"location":"lagoonizing/#general-settings","title":"General Settings","text":""},{"location":"lagoonizing/#docker-compose-yaml","title":"docker-compose-yaml
","text":"This file tells the build script which docker-compose
YAML file should be used, in order to learn which services and containers should be deployed. This defaults to docker-compose.yml
, but could be used for a specific Lagoon docker-compose
YAML file if you need something like that.
"},{"location":"lagoonizing/#environment_variablesgit_sha","title":"environment_variables.git_sha
","text":"This setting allows you to enable injecting the deployed Git SHA into your project as an environment variable. By default this is disabled. Setting the value to true
sets the SHA as the environment variable LAGOON_GIT_SHA
.
"},{"location":"lagoonizing/#tasks","title":"Tasks","text":"There are different type of tasks you can define, and they differ when exactly they are executed in a build flow:
"},{"location":"lagoonizing/#pre-rollout-tasks-pre_rolloutirun","title":"Pre-Rollout Tasks - pre_rollout.[i].run
","text":"The tasks defined as pre_rollout
tasks will run against your project after the new images have been built successfully, and before the project gets altered in any way. This feature enables you, for example, to create a database dump before the rollout is running, as in our example above. This will make it easier to roll back in case of an issue with the rollout.
"},{"location":"lagoonizing/#post-rollout-tasks-post_rolloutirun","title":"Post-Rollout Tasks - post_rollout.[i].run
","text":"Here you can specify tasks which need to run against your project, after:
- All images have been successfully built.
- All containers are updated with the new images.
- All running containers have passed their readiness checks.
Common uses for post_rollout
tasks include running drush updb
, drush cim
, or clearing various caches. In the above example, we run drush cim
and drush cr
.
name
- The name is an arbitrary label for making it easier to identify each task in the logs.
command
- Here you specify what command should run. These are run in the
WORKDIR
of each container. For Lagoon images this is /app
, keep this in mind if you need to cd
into a specific location to run your task.
service
- The service in which to run the task. If following our drupal-example, this will be the CLI container, as it has all your site code, files, and a connection to the database. Typically you do not need to change this.
shell
Which shell should be used to run the task. By default sh
is used, but if the container also has other shells (like bash), you can define it here. This is useful if you want to run some small if/else bash scripts within the post-rollouts. (see the example above for how to write a script with multiple lines).
"},{"location":"lagoonizing/#routes","title":"Routes","text":""},{"location":"lagoonizing/#routesautogenerateenabled","title":"routes.autogenerate.enabled
","text":"This allows for the disabling of the automatically created routes altogether. This does NOT disable the custom routes per environment, see below for more on that.
"},{"location":"lagoonizing/#routesautogenerateinsecure","title":"routes.autogenerate.insecure
","text":"This allows you to define the behavior of the automatically created routes. This does NOT configure the custom routes per environment, see below for more on that. This is the option we\u2019re using in the example above, with insecure: Redirect
.
The following options are allowed:
Allow
- Sets up routes for both HTTP and HTTPS (this is the default).
Redirect
- Will redirect any HTTP requests to HTTPS.
None
- A route for HTTP will not be created, and no redirect.
"},{"location":"lagoonizing/#environments","title":"Environments","text":"Environment names match your deployed branches or pull requests. This allows each environment to have a different configuration. In this example, we have the environments main and staging.
"},{"location":"lagoonizing/#environmentsnameroutes","title":"environments.[name].routes
","text":"In the route section, we identify the domain names to which the environment will respond. It is typical to only have an environment with routes specified for your production environment. All environments receive a generated route, but sometimes there is a need for a non-production environment to have its own domain name. You can specify it here, and then add that domain with your DNS provider as a CNAME to the generated route name (these routes publish in deploy messages).
The first element after the environment is the target service, NGINX in our example. This is how we identify which service incoming requests will be sent to.
The simplest route is the example.com
example in our sample .lagoon.yml
above - you can see it has no additional configuration. This will assume that you want a Let's Encrypt certificate for your route and no redirect from HTTPS to HTTP.
"},{"location":"lagoonizing/#annotations","title":"Annotations","text":"Info
Route/Ingress annotations are only supported by projects that deploy into clusters that run nginx-ingress controllers! Check with your Lagoon administrator if this is supported.
Annotations can be a YAML map of annotations supported by the nginx-ingress
controller, this is specifically useful for easy redirects:
In this example any requests to example.ch
will be redirected to https://www.example.ch
with keeping folders or query parameters intact:
(example.com/folder?query -> https://www.example.ch/folder?query)
.lagoon.yml example - \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\n
You can of course also redirect to any other URL not hosted on Lagoon. This will direct requests to example.de
to https://www.google.com
:
.lagoon.yml example - \"example.de\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.google.com\n
"},{"location":"lagoonizing/#ssl-configuration-tls-acme","title":"SSL Configuration - tls-acme
","text":"tls-acme : \u2018true\u2019
- Tells Lagoon to issue a Let's Encrypt certificate for that route. This is the default.
- If you don't want a Let's Encrypt, set this to
tls-acme: \u2018false\u2019
.
insecure
- Can be set to
None
, Allow
or Redirect
. - Allow simply sets up both routes for HTTP and HTTPS (this is the default).
Redirect
will redirect any HTTP requests to HTTPS.
None
- Will mean a route for HTTP will not be created, and no redirect will take place.
Hsts
- Can be set to a value of
max-age=31536000;includeSubDomains;preload
. - Ensure there are no spaces and no other parameters included.
- Only the
max-age
parameter is required. The required max-age parameter indicates the length of time, in seconds, the HSTS policy is in effect for.
Info
If you plan to switch from a SSL certificate signed by a Certificate Authority (CA) to a Let's Encrypt certificate, it's best to get in touch with your Lagoon administrator to oversee the transition.
"},{"location":"lagoonizing/#environmentsnametypes","title":"environments.[name].types
","text":"The Lagoon build process checks the lagoon.type
label from the docker-compose.yml
file in order to learn what type of service should be deployed (read more about them in the documentation of docker-compose.yml).
Sometimes you might want to override the type just for a single environment, and not for all of them.
"},{"location":"lagoonizing/#service-name-service-type","title":"`service-name: service-type","text":" service-name`` is the name of the service from
docker-compose.yml` you would like to override. service-type
the type of the service you would like to use in your override.
For example, if you want a MariaDB-Galera high availability database for your production environment called main - this is what we\u2019re doing in our example file:
.lagoon.yml exampleenvironments:\nmain:\ntypes:\nmariadb: mariadb-galera\n
"},{"location":"lagoonizing/#environmentsnametemplates","title":"environments.[name].templates
","text":"The Lagoon build process checks the lagoon.template
label from the docker-compose.yml
file in order to check if the service needs a custom template file (read more about them in the documentation of docker-compose.yml).
Sometimes you might want to override the template just for a single environment, and not for all of them:
"},{"location":"lagoonizing/#service-name-template-file","title":"service-name: template-file
","text":" service-name
is the name of the service from docker-compose.yml
you would like to override. template-file
is the path and name of the template to use for this service in this environment.
.lagoon.yml exampleenvironments:\nmain:\ntemplates:\nmariadb: mariadb.main.deployment.yml\n
"},{"location":"lagoonizing/#environmentsnamerollouts","title":"environments.[name].rollouts
","text":"The Lagoon build process checks the lagoon.rollout
label from the docker-compose.yml
file in order to check if the service needs a special rollout type (read more about them in the documentation of docker-compose.yml).
Sometimes you might want to override the rollout type just for a single environment, especially if you also overwrote the template type for the environment:
"},{"location":"lagoonizing/#service-name-rollout-type","title":"service-name: rollout-type
","text":" service-name
is the name of the service from docker-compose.yml
you would like to override. rollout-type
is the type of rollout. See the documentation of docker-compose.yml for possible values.
.lagoon.yml exampleenvironments:\nmain:\nrollouts:\nmariadb: statefulset\n
"},{"location":"lagoonizing/#cron-jobs-environmentsnamecronjobs","title":"Cron jobs - environments.[name].cronjobs
","text":"As most of the time it is not desirable to run the same cron jobs across all environments, you must explicitly define which jobs you want to run for each environment. In our example, we\u2019re creating a drush cron job that will run once per hour.
name
- Just a friendly name for identifying what the cron job will do.
schedule
- The schedule for executing the cron job. This follows the standard convention of cron. If you're not sure about the syntax, Crontab Generator can help.
- You can specify
M
for the minute, and your cron job will run once per hour at a random minute (the same minute each hour), or M/15
to run it every 15 mins, but with a random offset from the hour (like 6, 21, 36, 51). - You can specify
H
for the hour, and your cron job will run once per day at a random hour (the same hour every day), or H(2-4)
to run it once per day within the hours of 2-4.
command
- The command to execute. Like the tasks, this executes in the
WORKDIR
of the service. For Lagoon images, this is /app
.
service
- Which service of your project to run the command in. For most projects, this is the CLI service.
There is quite a bit more you can do in .lagoon.yml
. Check out our documentation on .lagoon.yml
to find out.
"},{"location":"lagoonizing/#drupal-specific-setup","title":"Drupal-specific Setup","text":"If you\u2019re moving a Drupal site to Lagoon, there are a few Drupal-specific tasks to complete in order to get everything all set up.
"},{"location":"lagoonizing/#settings-files","title":"Settings Files","text":"The next step is to update your settings files. Lagoon uses a set of environment-specific settings files which use environment variables, so no sensitive information is stored in these files, and they are all safe to commit. We have a variety of different example projects in our example repository - if you\u2019re starting from scratch, we encourage using one of them. If you\u2019re not, just pick a similar one and copy the relevant settings files. Check out the documentation on environment variables for more information on how to use them.
Copy in the settings files from the example repository, and then review it to remove configuration for services that your site isn\u2019t using (for example, not all sites use Solr or Redis). If you need to override configuration for a specific environment type (things like disabling caching on development environments), additional settings files can be set up (there\u2019s even some in the example repository already), and are loaded in the following order:
settings.php all.settings.php\n all.services.yml\n production.settings.php\n production.services.yml\n development.settings.php\n development.services.yml\n settings.local.php\n services.local.yml\n
"},{"location":"lagoonizing/#update-your-gitignore-settings","title":"Update Your .gitignore
Settings","text":"Make sure your .gitignore
will allow you to commit the settings files. Drupal is shipped with sites/*/settings*.php
and sites/*/services*.yml
in .gitignore.
You can remove that, as with Lagoon we don't ever keep sensitive information in the Git repository.
"},{"location":"lagoonizing/#note-about-webroot-in-drupal","title":"Note About Webroot in Drupal","text":"Unfortunately the Drupal community has not decided on a standardized webroot folder name. Some projects put Drupal within /web
, and others within /docroot
or somewhere else. The Lagoon Drupal settings files assume that your Drupal is within /web
, if this is different for your Drupal installation, please adapt the files accordingly.
"},{"location":"lagoonizing/#build-your-images","title":"Build Your Images","text":"First, we need to build the defined images:
build your imagesdocker compose build\n
This may take several minutes and you\u2019ll get a long response, which should look something like this.
This will tell docker-compose
to build the Docker images for all containers that have a build:
definition in docker-compose.yml
. Usually for Drupal this includes cli
, nginx
and php
. We do this because we want to run specific build commands (like composer install
) or inject specific environment variables (like WEBROOT
) into the images.
Usually building is not needed every time you edit your Drupal code (as the code is mounted into the containers from your host), but rebuilding does not hurt. Plus Lagoon will build the exact same Docker images during a deployment, so you check that your build will also work during a deployment by just running docker compose build
again.
"},{"location":"lagoonizing/#start-containers","title":"Start Containers","text":"Now that the images are built, we can start the containers:
start the containersdocker compose up -d\n
You will get a response something like this:
containers started\u279c lagoon-test git:(main) docker compose up -d\nRecreating lagoon-test_cli_1 ... done\nStarting lagoon-test_redis_1 ... done\nStarting lagoon-test_solr_1 ... done\nStarting lagoon-test_mariadb_1 ... done\nRecreating lagoon-test_php_1 ... done\nRecreating lagoon-test_nginx_1 ... done\nRecreating lagoon-test_varnish_1 ... done\n
This will bring up all containers. After the command is done, you can check with docker compose ps
to ensure that they are all fully up and have not crashed. That response should look something like this:
view running containers\u279c lagoon-test git:(main) docker compose ps\nName Command State Ports\n----------------------------------------------------------------------------------------\nlagoon-test_cli_1 /sbin/tini -- /lagoon/entr ... Up 9000/tcp\nlagoon-test_mariadb_1 /sbin/tini -- /lagoon/entr ... Up 0.0.0.0:32768->3306/tcp\nlagoon-test_nginx_1 /sbin/tini -- /lagoon/entr ... Up 8080/tcp\nlagoon-test_php_1 /sbin/tini -- /lagoon/entr ... Up 9000/tcp\nlagoon-test_redis_1 /sbin/tini -- /lagoon/entr ... Up 6379/tcp\nlagoon-test_solr_1 /sbin/tini -- /lagoon/entr ... Up 0.0.0.0:32769->8983/tcp\n
If there is a problem, check the logs with docker compose logs -f [servicename]
.
"},{"location":"lagoonizing/#re-run-composer-install-for-composer-projects-only","title":"Re-Run `composer install`` (for Composer projects only)","text":"If you\u2019re running a Drupal 8+ project, you should be using Composer, and you\u2019ll need to get all dependencies downloaded and installed. Connect into the cli container and run composer install:
re-run composer installdocker compose exec cli bash\n[drupal-example]cli-drupal:/app$ composer install\n
This might sound weird, as there was already a composer install
executed during the build step, so here\u2019s why we do this again:
- In order to be able to edit files on the host and have them immediately available in the container, the default
docker-composer.yml
mounts the whole folder into the containers (this happens with .:/app:delegated
in the volumes
section). This also means that all dependencies installed during the Docker build are overwritten with the files on the host. - Locally, you probably want access to dependencies defined as
require-dev
in composer.json
, while on a production deployment they would just use unnecessary space. So we run composer install --no-dev
in the Dockerfile and composer install
manually.
If everything went well, open the LAGOON_ROUTE
defined in docker-compose.yml
(for example http://drupal.docker.amazee.io
) and you should be greeted by a nice Drupal error. Don't worry - that's okay right now, the most important thing is that it tries to load a Drupal site.
If you get a 500 or similar error, make sure that everything is loaded properly with Composer.
"},{"location":"lagoonizing/#check-status-and-install-drupal","title":"Check Status and Install Drupal","text":"Finally it's time to install Drupal, but just before that we want to make sure everything works. We suggest using Drush for that with drush status
:
run drush statusdocker compose exec cli bash\n[drupal-example]cli-drupal:/app$ drush status\n
The above command should return something like the following:
drush status results[drupal-example]cli-drupal:/app$ drush status\n[notice] Missing database table: key_value\nDrupal version : 8.6.1\nSite URI : http://drupal.docker.amazee.io\nDatabase driver : mysql\nDatabase hostname : mariadb\nDatabase port : 3306\nDatabase username : drupal\nDatabase name : drupal\nPHP binary : /usr/local/bin/php\nPHP config : /usr/local/etc/php/php.ini\nPHP OS : Linux\nDrush script : /app/vendor/drush/drush/drush\nDrush version : 9.4.0\nDrush temp : /tmp\nDrush configs : /home/.drush/drush.yml\n /app/vendor/drush/drush/drush.yml\nDrupal root : /app/web\nSite path : sites/default\n
You may have to tell pygmy about your public key before the next step. If you get an error like Permission denied (publickey)
, check out the documentation here: pygmy - adding ssh keys.
Now it\u2019s time to install Drupal (if instead you would like to import an existing SQL File, please skip to the next step, but we suggest you install a clean Drupal in the beginning to be sure everything works.)
run drush si
[drupal-example]cli-drupal:/app$ drush site-install\n
This should output something like: drush si results[drupal-example]cli-drupal:/app$ drush site-install\nYou are about to DROP all tables in your 'drupal' database. Do you want to continue? (y/n): y\nStarting Drupal installation. This takes a while. Consider using the --notify global option.\nInstallation complete. User name: admin User password: arbZJekcqh\nCongratulations, you installed Drupal!\n
Now you can visit the URL defined in LAGOON_ROUTE
and you should see a fresh and cleanly installed Drupal - Congrats!
"},{"location":"lagoonizing/#import-existing-database-dump","title":"Import existing Database Dump","text":"If you have an already existing Drupal site you probably want to import its database over to your local site. There are many different ways on how to create a database dump, if your current hosting provider has Drush installed, you can use the following:
drush sql-dump[your-existing-site]$ drush sql-dump --result-file=dump.sql\nDatabase dump saved to dump.sql [success]\n
Now you have a dump.sql
file that contains your whole database. Copy this file into your local Git repository and connect to the CLI, you should see the file in there:
here's our dump file
[drupal-example] docker compose exec cli bash\n[drupal-example]cli-drupal:/app$ ls -l dump.sql\n-rw-r--r-- 1 root root 5281 Dec 19 12:46 dump.sql\n
Now you can import the dump after dropping the current database (still connected to the cli): dump existing db and import dump file[drupal-example]cli-drupal:/app$ drush sql-drop\nDo you really want to drop all tables in the database drupal? (y/n): y\n[drupal-example]cli-drupal:/app$ drush sql-cli < dump.sql\n
"},{"location":"lagoonizing/#drupal-files-directory","title":"Drupal files directory","text":"A Drupal site also consists of the files directory. To migrate your files from your existing site, just add the files into the correct folder (probably web/sites/default/files
, sites/default/files
or something similar). Remember what you've set as your webroot - it may not be the same for all projects.
"},{"location":"lagoonizing/#deploy","title":"Deploy","text":"If you\u2019ve done everything in this guide, and your Lagoon administrator has everything set up, you are now ready to deploy your site!
If you are deploying a Drupal site, follow this deployment guide.
For all other deployments, follow this deployment guide.
"},{"location":"logging/kibana-examples/","title":"Kibana Examples","text":"Have you seen the Kibana getting started video and are now ready to work with logs? We are here to help! This page will give you examples of Kibana queries you can use. This is not a Kibana 101 class, but it can help you understand some of what you can do in Kibana.
Ready to get started? Good!
Note
Make sure that you have selected your tenant before starting! You can do that by on the Tenant
icon on the left-hand menu. Once you have selected your tenant, click on the Discover
icon again to get started.
"},{"location":"logging/kibana-examples/#router-logs","title":"Router Logs","text":"Below you'll find examples for two common log requests:
- Viewing the total number of hits/requests to your site.
- Viewing the number of hits/requests from a specific IP address.
"},{"location":"logging/kibana-examples/#total-number-of-hitsrequests-to-your-site","title":"Total Number of hits/requests to your site","text":" - Let's start Kibana up and select
Discovery
(#1 in screen shot below) - Then the router logs for your project(#2).
- From there, we will filter some of this information down a bit. Let's focus on our main production environment.
-
In the search bar (#3), enter:
openshift_project: \"name of your production project\"
- This will show you all the hits to your production environment in the given time frame.
- You can change the time frame in the upper right hand corner (#4).
- Clicking on the arrow next to the entry (#5) will expand it and show you all the information that was captured.
- You can add any of those fields to the window by hovering over them and clicking add on the left hand side (#6).
- You can also further filter your results by using the search bar.
"},{"location":"logging/kibana-examples/#number-of-hitsrequests-from-a-specific-ip-address","title":"Number of hits/requests from a specific IP address","text":"Running the query above will give you a general look at all the traffic to your site, but what if you want to narrow in on a specific IP address? Perhaps you want to see how many times an IP has hit your site and what specific pages they were looking at. This next query should help.
We are going to start off with the same query as above, but we are going to add a couple of things.
- First, add the following fields:
client_ip
and http_request
. - This will show you a list of all IP addresses and the page they requested. Here is what we see for the amazee.io website:
That looks good, but what if we wanted to just show requests from a specific IP address? You can filter for the address by adding it to your search criteria.
- We are going to add:
AND client_ip: \"IP address\"
. - That will filter the results to just show you hits from that specific IP address, and the page they were requesting. Here is what it looks like for our amazee.io website:
"},{"location":"logging/kibana-examples/#container-logs","title":"Container Logs","text":"Container logs will show you all stout
and sterr
messages for your specific container and project. We are going to show an example for getting logs from a specific container and finding specific error numbers in that container.
"},{"location":"logging/kibana-examples/#logs-from-a-container","title":"Logs from a container","text":"Want to see the logs for a specific container (php, nginx, etc)? This section will help! Let's focus on looking at NGINX logs.
- We start by opening up Kibana and selecting Discover (#1 in the screen shot below).
- From there, we select the container logs for our project (#2).
- Let's go to the search bar (#3) and enter:
kubernetes.container_name: \"nginx\"
- This will display all NGINX logs for our project.
- Clicking on the arrow next to an entry (#4) will expand that entry and show you all of the information it gathered.
- Let's add the message field and the level field to the view. You can do that by clicking on \"Add\" on the left hand side (#5).
- You can change the time frame in the upper right hand corner of the screen (#6), in the example below I'm looking at logs for the last 4 hours.
"},{"location":"logging/kibana-examples/#specific-errors-in-logs","title":"Specific errors in logs","text":"Want to see how many 500 Internal Server errors you've had in your NGINX container? You can do that by changing the search query. If you search:
kubernetes.container_name: \"nginx\" AND message: \"500\"
That will only display 500 error messages in the NGINX container. You can search for any error message in any container that you would like!
"},{"location":"logging/kibana-examples/#visualization","title":"Visualization","text":"Kibana will also give you the option to create visualizations or graphs. We are going to create a chart to show number of hits/requests in a month using the same query we used above.
- Click on Visualize on the left hand side of Kibana.
- Click on the blue plus sign.
- For this example, we are going to select a Vertical Bar chart.
- Select the router logs for your project.
- Click on X-Axis under Buckets and select Date Histogram, with the interval set to daily
- Success!! You should now see a nice bar graph showing your daily traffic.
Note
Make sure that you select an appropriate time frame for the data in the upper right hand corner.
Here is an example of a daily hits visualization chart:
Also note that you can save your visualizations (and searches)! That will make it even faster to access them in the future. And because each account has their own Kibana Tenant, no searches or visualizations are shared with another account.
"},{"location":"logging/kibana-examples/#troubleshooting","title":"Troubleshooting","text":""},{"location":"logging/logging/","title":"Logging","text":"Lagoon provides access to the following logs via Kibana:
- Logs from the Kubernetes Routers, including every single HTTP and HTTPS request with:
- Source IP
- URL
- Path
- HTTP verb
- Cookies
- Headers
- User agent
- Project
- Container name
- Response size
- Response time
- Logs from containers:
stdout
and stderr
messages - Container name
- Project
- Lagoon logs:
- Webhooks parsing
- Build logs
- Build errors
- Any other Lagoon related logs
- Application logs:
- For Drupal: install the Lagoon Logs module in order to receive logs from Drupal Watchdog.
- For Laravel: install the Lagoon Logs for Laravel package.
- For other workloads:
- Send logs to
udp://application-logs.lagoon.svc:5140
- Ensure logs are structured as JSON encoded objects.
- Ensure the
type
field contains the name of the Kubernetes namespace ($LAGOON_PROJECT-$LAGOON_ENVIRONMENT
).
To access the logs, please contact your Lagoon administrator to get the URL for the Kibana route.
Each Lagoon user account has their own login and will see the logs only for the projects to which they have access.
Each Lagoon user account also has their own Kibana Tenant, which means no saved searches or visualizations are shared with another account.
If you would like to know more about how to use Kibana: https://www.elastic.co/webinars/getting-started-kibana.
"},{"location":"other-tools/client-libraries/","title":"Lagoon client libraries","text":"If you're interested in developing tooling for the Lagoon ecosystem, there are a few libraries that you may find helpful.
"},{"location":"other-tools/client-libraries/#golang","title":"Golang","text":""},{"location":"other-tools/client-libraries/#machinery","title":"Machinery","text":"The Machinery library is the most actively supported and developed of the tooling libraries for Lagoon. It is a central store of all the basic operations used across all our golang based tool types, primarily -- but not exclusively -- for API interaction.
https://github.com/uselagoon/machinery/
"},{"location":"other-tools/client-libraries/#php","title":"PHP","text":"If you're looking for PHP integration, the php-sdk may give you a good jumping off point for your work.
https://github.com/uselagoon/lagoon-php-sdk
"},{"location":"other-tools/client-libraries/#third-party-libraries","title":"Third Party Libraries","text":""},{"location":"other-tools/client-libraries/#ansible","title":"Ansible","text":"A frequently updated and expanding Ansible library for interacting with Lagoon.
https://github.com/salsadigitalauorg/lagoon_ansible_collection
"},{"location":"other-tools/sail/","title":"Sail:onLagoon","text":"Sail:onLagoon is a Laravel extension that simplifies the process of Lagoonizing Laravel sites that are already using Laravel Sail to generate their docker-compose setup. This extension provides additional features and configurations tailored for Lagoon environments.
Check out Sail:onLagoon on GitHub: https://github.com/uselagoon/sailonlagoon
Here's a quickstart step by step to get you started:
Watch a short video demonstrating how quickly you can get a Laravel site ready for Lagoon:
"},{"location":"releases/2.10.0/","title":"2.10.0","text":""},{"location":"releases/2.10.0/#release-links","title":"Release Links","text":" - lagoon v2.10.0
- lagoon-ui core-v2.10.0
- lagoon-build-deploy core-v2.10.0
- lagoon-core chart 1.12.0
"},{"location":"releases/2.10.0/#upgrades","title":"Upgrades","text":""},{"location":"releases/2.10.0/#upgrade-to-v29x-first","title":"Upgrade to v2.9.x first","text":"You must upgrade to Lagoon v2.9.x before upgrading to v2.10.0. Ensure you read all the linked release notes.
"},{"location":"releases/2.10.0/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.11.0/","title":"2.11.0","text":""},{"location":"releases/2.11.0/#release-links","title":"Release Links","text":" - lagoon v2.11.0
- lagoon-ui core-v2.11.0
- lagoon-build-deploy core-v2.11.0
- lagoon-core chart 1.16.0
"},{"location":"releases/2.11.0/#upgrades","title":"Upgrades","text":""},{"location":"releases/2.11.0/#upgrade-to-v210x-first","title":"Upgrade to v2.10.x first","text":"You must upgrade to Lagoon v2.10.x before upgrading to v2.11.0. Ensure you read all the linked release notes.
"},{"location":"releases/2.11.0/#essential-database-backups","title":"Essential database backups","text":"Ensure you have a local backup of the api-db and keycloak-db before you commence this update, as there are complex migrations taking place in preparation for the v2.12.0 release.
"},{"location":"releases/2.11.0/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.11.0/#storage-calculator-removed-from-core","title":"Storage Calculator removed from core","text":"The storage-calculator service was removed from core in this release, and the service is now included in lagoon-remote.
"},{"location":"releases/2.12.0/","title":"2.12.0","text":""},{"location":"releases/2.12.0/#release-links","title":"Release Links","text":" - lagoon v2.12.0
- lagoon-ui core-v2.12.0
- lagoon-build-deploy core-v2.12.0
- lagoon-core chart 1.23.0
"},{"location":"releases/2.12.0/#upgrades","title":"Upgrades","text":""},{"location":"releases/2.12.0/#essential-database-backups","title":"Essential database backups","text":"Ensure you have a local backup of the api-db and keycloak-db before you commence this update. The update of these databases from MariaDB 10.4 to 10.6 should update seamlessly. In the event it does not go smoothly, the image cannot be rolled back owing to incompatible storage engines. You will need to drop the db and restore the backup to get running again.
"},{"location":"releases/2.12.0/#kubernetes-121-minimum-requirement","title":"Kubernetes 1.21 minimum requirement","text":"The minimum supported version of Kubernetes is 1.21 as of this release.
"},{"location":"releases/2.12.0/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.13.0/","title":"2.13.0","text":""},{"location":"releases/2.13.0/#release-links","title":"Release Links","text":" - lagoon v2.13.0
- lagoon-ui core-v2.13.0
- lagoon-build-deploy core-v2.13.0
- lagoon-core chart 1.25.0
"},{"location":"releases/2.13.0/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.13.0/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.13.0/#monitoring-urls","title":"monitoring-urls","text":"The storage and use of monitoring-urls provided in lagoon.yml has been removed from the API.
"},{"location":"releases/2.14.0/","title":"2.14.0","text":""},{"location":"releases/2.14.0/#upgrades","title":"Upgrades","text":"This tag was never released, and the 2.14.2 release should be installed instead.
"},{"location":"releases/2.14.0/#deprecations","title":"Deprecations","text":"This tag was never released, and the 2.14.2 release should be installed instead.
"},{"location":"releases/2.14.1/","title":"2.14.1","text":""},{"location":"releases/2.14.1/#release-links","title":"Release Links","text":" - lagoon v2.14.2
- lagoon-ui core-v2.14.2
- lagoon-build-deploy core-v2.14.2
- lagoon-core chart 1.28.0
- lagoon-remote chart 0.76.0
"},{"location":"releases/2.14.1/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.14.2 release is recommended to be installed instead.
"},{"location":"releases/2.14.1/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.14.2 release is recommended to be installed instead.
"},{"location":"releases/2.14.1/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.14.2 release is recommended to be installed instead.
"},{"location":"releases/2.14.2/","title":"2.14.2","text":""},{"location":"releases/2.14.2/#release-links","title":"Release Links","text":" - lagoon v2.14.2
- lagoon-ui core-v2.14.2
- lagoon-build-deploy core-v2.14.2
- lagoon-core chart 1.28.0
- lagoon-remote chart 0.76.0
"},{"location":"releases/2.14.2/#release-notes","title":"Release Notes","text":"This release resolved a couple of minor issues discovered after releasing the 2.14.0 and 2.14.1 releases.
"},{"location":"releases/2.14.2/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.14.2/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.15.0/","title":"2.15.0","text":""},{"location":"releases/2.15.0/#release-links","title":"Release Links","text":" - lagoon v2.15.0
- lagoon-ui core-v2.15.0
- lagoon-build-deploy core-v2.15.0
- lagoon-core chart 1.29.0
"},{"location":"releases/2.15.0/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.0/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.0/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.1/","title":"2.15.1","text":""},{"location":"releases/2.15.1/#release-links","title":"Release Links","text":" - lagoon v2.15.1
- lagoon-ui core-v2.15.1
- lagoon-build-deploy core-v2.15.1
- lagoon-core chart 1.31.0
"},{"location":"releases/2.15.1/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.1/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.1/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.2/","title":"2.15.2","text":""},{"location":"releases/2.15.2/#release-links","title":"Release Links","text":" - lagoon v2.15.2
- lagoon-ui core-v2.15.2
- lagoon-build-deploy core-v2.15.2
- lagoon-core chart 1.34.0
"},{"location":"releases/2.15.2/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.2/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.2/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.3/","title":"2.15.3","text":""},{"location":"releases/2.15.3/#release-links","title":"Release Links","text":" - lagoon v2.15.3
- lagoon-ui core-v2.15.3
- lagoon-build-deploy core-v2.15.3
- lagoon-core chart 1.35.0
"},{"location":"releases/2.15.3/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.3/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.3/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.15.4 release is recommended to be installed instead.
"},{"location":"releases/2.15.4/","title":"2.15.4","text":""},{"location":"releases/2.15.4/#release-links","title":"Release Links","text":" - lagoon v2.15.4
- lagoon-ui core-v2.15.4
- lagoon-build-deploy core-v2.15.4
- lagoon-core chart 1.36.0
"},{"location":"releases/2.15.4/#release-notes","title":"Release Notes","text":"This release resolved a couple of minor issues discovered after releasing the 2.15.0, 2.15.1, 2.15.2, and 2.15.3 releases.
"},{"location":"releases/2.15.4/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.15.4/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.16.0/","title":"2.16.0","text":""},{"location":"releases/2.16.0/#release-links","title":"Release Links","text":" - lagoon v2.16.0
- lagoon-ui core-v2.16.0
- lagoon-build-deploy core-v2.16.0
- lagoon-core chart 1.37.0
"},{"location":"releases/2.16.0/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.16.0/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.17.0/","title":"2.17.0","text":""},{"location":"releases/2.17.0/#release-links","title":"Release Links","text":" - lagoon v2.17.0
- lagoon-ui core-v2.17.0
- lagoon-build-deploy core-v2.17.0
- lagoon-core chart 1.41.0
- lagoon-remote chart 0.87.0
"},{"location":"releases/2.17.0/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.17.0/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.17.0/#activestandby-task-image","title":"activestandby task image","text":" - This release introduces a new active/standby task image that does not require the use of the dioscuri controller. Dioscuri is deprecated and will eventually be removed from the
lagoon-remote
helm chart. If you use active/standby functionality in your clusters, you should upgrade to lagoon v2.17.0 and update your remote clusters to the version of the lagoon-remote
helm chart the in the 2.17.0 release.
"},{"location":"releases/2.17.0/#api-harbor-support","title":"API Harbor support","text":" - Support for Harbor in the API will be removed in a future release. If you currently have your core installation with Harbor support, you should move to using the integration within lagoon-remote instead. See the documentation here and read the section about Harbor.
- Removed in 2.20.1
"},{"location":"releases/2.17.0/#harbor-21-and-earlier-support","title":"Harbor 2.1 and earlier support","text":" - Support for Harbor 2.1.x (chart version 1.5.x) and older in
lagoon-remote
will be removed in a future release. You should consider upgrading Harbor to a newer version (currently Lagoon supports up to v2.9.x (chart version 1.13.x)), following any recommended upgrade paths from Harbor.
"},{"location":"releases/2.18.0/","title":"2.18.0","text":""},{"location":"releases/2.18.0/#release-links","title":"Release Links","text":" - lagoon v2.18.0
- lagoon-ui core-v2.18.0
- lagoon-build-deploy core-v2.18.0
- lagoon-core chart 1.42.0
- lagoon-remote chart 0.88.0
"},{"location":"releases/2.18.0/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.0/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.0/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.1/","title":"2.18.1","text":""},{"location":"releases/2.18.1/#release-links","title":"Release Links","text":" - lagoon v2.18.1
- lagoon-core chart 1.43.0
"},{"location":"releases/2.18.1/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.1/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.1/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.18.2 release is recommended to be installed instead.
"},{"location":"releases/2.18.2/","title":"2.18.2","text":""},{"location":"releases/2.18.2/#release-links","title":"Release Links","text":" - lagoon v2.18.2
- lagoon-core chart 1.44.0
"},{"location":"releases/2.18.2/#release-notes","title":"Release Notes","text":"This release resolved a couple of minor issues discovered after releasing the 2.18.0 and 2.18.1 release.
"},{"location":"releases/2.18.2/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.18.2/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.18.2/#in-built-drupal-tasks","title":"In-built Drupal Tasks","text":" - The standard drupal based tasks that Lagoon ships with (Drush ....) have been flagged as deprecated and should not be used anymore. These will need to be replaced with custom tasks. Example replacement tasks will be provided prior to their removal.
"},{"location":"releases/2.18.2/#setenvironmentservices","title":"setEnvironmentServices","text":" - This release introduces a deprecation of the
setEnvironmentServices
mutation to updated services for an environment, it is being replaced with addOrUpdateEnvironmentService
and deleteEnvironmentService
. This is because the type is being refactored to support additional information, and eventually additional functionality. For now, the actions-handler service will still support the older setEnvironmentServices
for backwards compatibility for a short period to allow older versions of lagoon-remote
to still work, but a new version of lagoon-remote
will be available that will no longer provides the payload that the actions-handler uses.
"},{"location":"releases/2.18.2/#core-registry-variable","title":"Core Registry variable","text":" - The value for
registry
which was previously required by the lagoon-core
chart is no longer required. If you are using this, you will need to add it under the new unauthenticatedRegistry
setting when installing lagoon-remote
in the lagoon-build-deploy
section of your values file. If you aren't using an actual registry and have the example disabled-only-use-harbor-via-deploy-controller.invalid
value, then you do not need to do anything except you can now remove the registry
setting from your core values file.
"},{"location":"releases/2.18.2/#bytesused","title":"bytesUsed","text":" - The environment storage return field named
bytesUsed
is deprecated. The actual value stored is kibibytes
. A new return field called kibUsed
exists and should be used, the returned data is the same and both fields are still returned. bytesUsed
will be removed in a future release, make any adjustments now to use kibUsed
. This will be a breaking change in a future release.
"},{"location":"releases/2.18.2/#addorupdateenvironmentstorage","title":"addOrUpdateEnvironmentStorage","text":" addOrUpdateEnvironmentStorage
is deprecated, addOrUpdateStorageOnEnvironment
is the replacement to use as it supports the updated input value for kibUsed
. addOrUpdateEnvironmentStorage
will be completely removed in a future release.
"},{"location":"releases/2.18.2/#activesystems","title":"activesystems","text":" - The ability to configure projects to use different subsystems for managing deployments/tasks has been removed. Setting any values for the
activeSystems*
fields on the project will have no effect and the fields will be removed in a future release.
"},{"location":"releases/2.19.0/","title":"2.19.0","text":""},{"location":"releases/2.19.0/#release-links","title":"Release Links","text":" - lagoon v2.19.0
- lagoon-ui core-v2.19.0
- lagoon-build-deploy core-v2.19.0
- lagoon-core chart 1.45.0
- lagoon-remote chart 0.89.0
"},{"location":"releases/2.19.0/#upgrades","title":"Upgrades","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.19.0/#deprecations","title":"Deprecations","text":"There are no required actions or considerations with this release. As always, we suggest upgrading all minor versions.
"},{"location":"releases/2.20.0/","title":"2.20.0","text":""},{"location":"releases/2.20.0/#release-links","title":"Release Links","text":" - lagoon v2.20.0
- lagoon-ui core-v2.20.0
- lagoon-build-deploy core-v2.20.0
- lagoon-core chart 1.46.0
- lagoon-remote chart 0.92.0
"},{"location":"releases/2.20.0/#release-notes","title":"Release Notes","text":"This release was superseded, and the 2.20.1 release is recommended to be installed instead.
"},{"location":"releases/2.20.0/#upgrades","title":"Upgrades","text":"This release was superseded, and the 2.20.1 release is recommended to be installed instead.
"},{"location":"releases/2.20.0/#deprecations","title":"Deprecations","text":"This release was superseded, and the 2.20.1 release is recommended to be installed instead.
"},{"location":"releases/2.20.1/","title":"2.20.1","text":""},{"location":"releases/2.20.1/#release-links","title":"Release Links","text":" - lagoon v2.20.1
- lagoon-ui core-v2.20.1
- lagoon-build-deploy core-v2.20.1
- lagoon-core chart 1.47.0
"},{"location":"releases/2.20.1/#release-notes","title":"Release Notes","text":"This release resolved a couple of minor issues discovered after releasing the 2.20.0 release.
"},{"location":"releases/2.20.1/#upgrades","title":"Upgrades","text":"This release contains changes that you may need to be aware of. Read carefully before you upgrade.
"},{"location":"releases/2.20.1/#harbor-21x-and-earlier","title":"Harbor 2.1.x and earlier","text":" - This release removes the support for Harbor from the Lagoon API. If you're still using the Harbor support in the API, you should NOT upgrade until you have configured your
lagoon-remote
installations to use Harbor instead. See the documentation here and read the section about Harbor. - We also recommend that if you're using Harbor version 2.1.x and earlier, that you upgrade this as soon as possible. Follow any instructions that Harbor recommend for upgrading. As of this release,
lagoon-remote
has been tested up to Harbor version 2.10.0 (helm chart version 1.14.0). Lagoon will stop supporting Harbor 2.1.x and earlier in a future release.
"},{"location":"releases/2.20.1/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.20.1/#kubernetes-minimum-supported-version-is-now-125-tested-up-to-130","title":"Kubernetes minimum supported version is now 1.25, tested up to 1.30","text":" - The minimum supported version of Kubernetes is now 1.25, owing to deprecations in some core API functions, and the availability of upstream charts. The v2.20.0 release will not install into an earlier version of Kubernetes, so any Kubernetes upgrades will need to be performed prior to the Lagoon update.
"},{"location":"releases/2.20.1/#deleted-backups","title":"Deleted Backups","text":" - When a backup is deleted via the webhook, it will now actually be removed from the API rather than being flagged as deleted. The
Backup
type field deleted
is deprecated, and will be removed in a future release. Additionally, includeDeleted
if requested when querying backups will not change the result as there will be no deleted backups to include.
"},{"location":"releases/2.20.1/#api-harbor-support","title":"API Harbor support","text":" - In 2.17.0 we announced that Harbor support in the API was deprecated. This release of Lagoon removes all support for Harbor from the API. See upgrade notes above.
"},{"location":"releases/2.20.1/#deleteallremoveall-mutations-removed","title":"DeleteAll/RemoveAll mutations removed","text":" - This release removes all
DeleteAllX
and RemoveAllX
from the API. These were only ever meant for local development and are no longer relevant.
"},{"location":"releases/2.20.1/#error-handling-on-deployment-triggers","title":"Error handling on deployment triggers","text":" - In the past, if triggering a deployment using any of the
DeployEnvironmentX
mutations and an error was encountered, the API would not return an actual error, just a string that contained the error. This was changed in this release to actually return an error now. As this is a change in behaviour, it may impact any users that may have previously been capturing the string error text and parsing it to check for errors.
"},{"location":"releases/2.21.0/","title":"2.21.0","text":""},{"location":"releases/2.21.0/#release-links","title":"Release Links","text":" - lagoon v2.21.0
- lagoon-ui core-v2.21.0
- lagoon-build-deploy core-v2.21.0
- lagoon-core chart 1.48.0
- lagoon-remote chart 0.94.0
"},{"location":"releases/2.21.0/#release-notes","title":"Release Notes","text":"This release is a standard Lagoon release.
"},{"location":"releases/2.21.0/#upgrades","title":"Upgrades","text":""},{"location":"releases/2.21.0/#upgrade-to-v220x-first","title":"Upgrade to v2.20.x first","text":"You must upgrade to Lagoon v2.20.x before upgrading to v2.21.0. Ensure you read all the linked release notes. The upgrade to v2.20.x is to ensure that the functionality used to enable the feature flags in the broker service is present prior to being called as a pre-upgrade job in v2.22.x
"},{"location":"releases/2.21.0/#keycloak-24","title":"Keycloak 24","text":"This release includes an update to Keycloak 24. This should be a seamless experience for all users.
"},{"location":"releases/2.21.0/#deprecations","title":"Deprecations","text":""},{"location":"releases/2.21.0/#organization-notification-graphql-commands","title":"Organization & Notification GraphQL commands","text":"Some of the GraphQL commands used to modify organization user roles have changed. The API schema documents them. Some of the GRaphQL command inputs used to interact with Notifications may have changed. The API schema documents them.
"},{"location":"releases/2.22.0/","title":"2.22.0","text":""},{"location":"releases/2.22.0/#release-links","title":"Release Links","text":" - lagoon v2.22.0
- lagoon-ui core-v2.22.0
- lagoon-build-deploy core-v2.22.0
- lagoon-core chart 1.49.0
- lagoon-remote chart 0.95.0
"},{"location":"releases/2.22.0/#release-notes","title":"Release Notes","text":"This release is a standard Lagoon release. There are changes required for teams managing their own Lagoon installations (core and remote).
"},{"location":"releases/2.22.0/#upgrades","title":"Upgrades","text":"Self-managed Lagoon installs will need to be aware of three changes in lagoon-core and lagoon-remote. Please read the following sections carefully to ensure you update components that apply to your installation correctly.
"},{"location":"releases/2.22.0/#lagoon-custom-resource-definitions-crds","title":"Lagoon Custom Resource Definitions (CRDs)","text":"We introduced a new API version of the Lagoon Build and Task CRDs in https://github.com/uselagoon/lagoon-charts/pull/688. You must upgrade these after installing the latest version of lagoon-remote
. Failure to update the CRDs will result in the remote controller failing to start, or builds and tasks failing.
If you're installing the version defined in the top of these release notes, you can use the following to upgrade the CRDs to the version required.
Text Onlyhelm show crds lagoon/lagoon-build-deploy --version 0.30.2 | kubectl apply -f -\n
Alternatively, see the README in the lagoon-build-deploy chart for further examples on how to update the Lagoon Build and Task CRDs.
"},{"location":"releases/2.22.0/#dockerhost-statefulset","title":"DockerHost StatefulSet","text":"To help with improving or distributing build loads, we converted the docker-host from a Deployment
to a StatefulSet
in https://github.com/uselagoon/lagoon-charts/pull/687. This allows the docker-host to be scaled.
This will provide the ability to load-balance docker build workloads. It will result in a new docker-host cache being created the first time any replica starts up (including on the first deployment), this may result in the first few builds being less-optimized whilst the cache rebuilds. This StatefulSet must only be scaled up or down via helm, and not directly in kubernetes otherwise the load-balancing of the workloads will not be able to be fully utilised.
"},{"location":"releases/2.22.0/#nats-ssh-portal","title":"NATS / SSH Portal","text":"The version of NATS used by Lagoon was updated in https://github.com/uselagoon/lagoon-charts/pull/602. If your installation of Lagoon utilises SSH portals and NATS, you need to be aware of changes to the structure of the NATS values. This upgrade requires minimal config structure changes in your lagoon-core and lagoon-remote values files. There are no changes to the certs or keys, just the naming of the YAML items. See the pullrequest description for more information.
"},{"location":"releases/2.22.0/#deprecations","title":"Deprecations","text":"tbc
"},{"location":"releases/policy/","title":"Policy","text":""},{"location":"releases/policy/#upgrade-policy","title":"Upgrade Policy","text":"Our general policy is that you should upgrade to the latest version of each minor version before you upgrade to the latest version.
You should check all upgrade requirements and deprecation notices for all versions as you upgrade.
An example of this policy is as follows
- Currently installed v2.13.0, planning to upgrade to v2.16.0
- Upgrade to v2.14.2 (the latest 2.14.x release)
- Upgrade to v2.15.4 (the latest 2.15.x release)
- Upgrade to v2.16.0
We may, from time to time, provide additional context to the upgrades listed in these pages.
"},{"location":"releases/policy/#deprecation-policy","title":"Deprecation Policy","text":"As Lagoon continues to evolve, we occasionally need to replace, rename or retire existing processes, tools or configuration. Where this may impact a user's processes or procedures, we intend to outline a timeframe to allow any necessary changes to be made.
Deprecations will be tracked by the release they are announced in, and then updated when the actual deprecation occurs. All deprecations should provide a rough timeline (in months or releases).
We may, from time to time, provide additional context to the deprecations listed in these pages.
"},{"location":"resources/faq/","title":"FAQ","text":""},{"location":"resources/faq/#i-found-a-bug","title":"I found a bug! \ud83d\udc1e","text":"If you've found a bug, please raise a GitHub issue for it, or contact your Lagoon administrator.
"},{"location":"resources/faq/#i-found-a-security-issue","title":"I found a security issue! \ud83d\udc1e","text":"If you've found a security issue, please send your findings to security@amazee.io. Please DO NOT file a GitHub issue for it.
"},{"location":"resources/faq/#im-interested-in-amazeeios-hosting-services-with-lagoon","title":"I'm interested in amazee.io's hosting services with Lagoon","text":"That's great news! You can contact them via email at sales@amazee.io.
"},{"location":"resources/faq/#im-getting-an-invalid-ssl-certificate-error","title":"I'm getting an invalid SSL certificate error","text":"The first thing to try is what is listed in our documentation about SSL.
If you follow those steps, and you are still seeing an error, please submit a ticket or send us a message on chat and we can help resolve this for you.
"},{"location":"resources/faq/#im-getting-an-array-error-when-running-a-drush-command","title":"I'm getting an \"Array\" error when running a Drush command","text":"This was a bug that was prevalent in Drush versions 8.1.16 and 8.1.17. There error would look something like this:
BashThe command could not be executed successfully (returned: Array [error]\n(\n[default] => Array\n(\n[default] => Array\n(\n[driver] => mysql\n[prefix] => Array\n(\n[default] =>\n)\n, code: 0)\nError: no database record could be found for source @main [error]\n
Upgrading Drush should fix that for you. We strongly suggest that you use version 8.3 or newer. Once Drush is upgraded the command should work!
"},{"location":"resources/faq/#im-seeing-an-internal-server-error-when-trying-to-access-my-kibana-logs","title":"I'm seeing an Internal Server Error when trying to access my Kibana logs","text":"No need to panic! This usually happens when a tenant has not been selected. To fix this, follow these steps:
- Go to \"Tenants\" on the left-hand menu of Kibana.
- Click on your tenant name.
- You'll see a pop-up window that says: \"Tenant Change\" and the name of your tenant.
- Go back to the \"Discover\" tab and attempt your query again.
You should now be able to see your logs.
"},{"location":"resources/faq/#im-unable-to-ssh-into-any-environment","title":"I'm unable to SSH into any environment","text":"I'm unable to SSH into any environment. I'm getting the following message: Permission denied (publickey)
. When I run drush sa
no aliases are returned.
This typically indicates an issue with Pygmy. You can find our troubleshooting docs for Pygmy here: https://pygmystack.github.io/pygmy/troubleshooting/
"},{"location":"resources/faq/#how-can-i-check-the-status-of-a-build","title":"How can I check the status of a build?","text":""},{"location":"resources/faq/#how-do-i-add-a-cron-job","title":"How do I add a cron job?","text":""},{"location":"resources/faq/#how-do-i-add-a-new-route","title":"How do I add a new route?","text":""},{"location":"resources/faq/#how-do-i-remove-a-route","title":"How do I remove a route?","text":"Lagoon will detect the removal of routes from your .lagoon.yml
during a deployment. Check the deployment logs to confirm that the routes were removed automatically or for instructions on how to remove them.
"},{"location":"resources/faq/#when-i-run-pygmy-status-no-keys-are-loaded","title":"When I run pygmy status
, no keys are loaded","text":"You'll need to load your SSH key into pygmy. Here's how: https://pygmystack.github.io/pygmy/ssh_agent
"},{"location":"resources/faq/#when-i-run-drush-sa-no-aliases-are-returned","title":"When I run drush sa
no aliases are returned","text":"This typically indicates an issue with Pygmy. You can find our troubleshooting docs for Pygmy here: https://pygmystack.github.io/pygmy/troubleshooting
"},{"location":"resources/faq/#my-deployments-fail-with-a-message-saying-drush-needs-a-more-functional-environment","title":"My deployments fail with a message saying: \"drush needs a more functional environment\"","text":"This usually means that there is no database uploaded to the project. Follow our step-by-step guide to add a database to your project.
"},{"location":"resources/faq/#when-i-start-pygmy-i-see-an-address-already-in-use-error","title":"When I start Pygmy I see an \"address already in use\" error?","text":"Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use Error: failed to start containers: amazeeio-haproxy
This is a known error! Most of the time it means that there is already something running on port 80. You can find the culprit by running the following query:
netstat -ltnp | grep -w ':80'\n
That should list everything running on port 80. Kill the process running on port 80. Once port 80 is freed up, Pygmy should start up with no further errors.
"},{"location":"resources/faq/#how-can-i-change-branchespr-environmentsproduction-on-my-project","title":"How can I change branches/PR environments/production on my project?","text":"You can make that change using the Lagoon API! You can find the documentation for this change in our GraphQL documentation.
"},{"location":"resources/faq/#how-do-i-add-a-redirect","title":"How do I add a redirect?","text":""},{"location":"resources/faq/#how-can-i-add-new-users-and-ssh-keys-to-my-projectgroup","title":"How can I add new users (and SSH keys) to my project/group?","text":"This can be done via the Lagoon API. You can find the steps documentation for this change in our GraphQL documentation.
"},{"location":"resources/faq/#can-an-environment-be-completely-deleted-to-roll-out-large-code-changes-to-my-project","title":"Can an environment be completely deleted to roll out large code changes to my project?","text":"Environments are fully built from scratch at each deploy, dropping the old database and files and pushing your code would result in a fresh clean build, Don\u2019t forget to re-sync!
It is possible to delete an environment via GraphQL. You can find the instructions in our GraphQL documentation.
"},{"location":"resources/faq/#how-do-i-get-my-new-environment-variable-to-show-up","title":"How do I get my new environment variable to show up?","text":"Once you've added a runtime environment variable to your production environment via GraphQL, then all you need to do a deploy in order to get your change to show up on your environment.
"},{"location":"resources/faq/#how-do-i-sftp-files-tofrom-my-lagoon-environment","title":"How do I SFTP files to/from my Lagoon environment?","text":"For cloud hosting customers, you can SFTP to your Lagoon environment by using the following information:
- Server Hostname:
ssh.example.com
- Port: 22
- Username: <Project-Environment-Name>
Your username is going to be the name of the environment you are connecting to, most commonly in the pattern PROJECTNAME-ENVIRONMENT
.
You may also be interested in checking out our new Lagoon Sync tool, which you can read about here: https://github.com/uselagoon/lagoon-sync
Authentication also happens automatically via SSH Public & Private Key Authentication.
"},{"location":"resources/faq/#i-dont-want-to-use-lets-encrypt-i-have-an-ssl-certificate-i-would-like-to-install","title":"I don't want to use Let's Encrypt. I have an SSL certificate I would like to install","text":"We can definitely help with that. Once you have your own SSL certificate, feel free to submit a ticket or send us a message via chat and we will be more than happy to help! You will need to send us the following files:
- Certificate key (.key)
- Certificate file (.crt)
- Intermediate certificates (.crt)
Also, you will need to set the tls-acme
option in .lagoon.yml
to false.
"},{"location":"resources/faq/#is-it-possible-to-mount-an-external-volume-efsfusesmbetc-into-lagoon","title":"Is it possible to mount an external volume (EFS/Fuse/SMB/etc) into Lagoon?","text":"Mounting an external volume would need to be handled completely inside of your containers, Lagoon does not provide a provision for this type of connection as part of the platform.
A developer can handle this by installing the necessary packages into the container (via the Dockerfile), and ensuring the volume mount is connected via a pre- or post-rollout task.
"},{"location":"resources/faq/#is-there-a-way-to-stop-a-lagoon-build","title":"Is there a way to stop a Lagoon build?","text":"If you have a build that has been running for a long time, and want to stop it, you will need to reach out to support. Currently, builds can only be stopped by users with admin access to the cluster.
"},{"location":"resources/faq/#we-installed-the-elasticsearchsolr-service-on-our-website-how-can-we-get-access-to-the-ui-port-92008983-from-a-browser","title":"We installed the Elasticsearch\\Solr service on our website. How can we get access to the UI (port 9200/8983) from a browser?","text":"We suggest only exposing web services (NGINX/Varnish/Node.js) in your deployed environments. Locally, you can get the ports mapped for these services by checking docker compose ps
, and then load http://localhost
:<port>
in your browser.
"},{"location":"resources/faq/#i-have-a-question-that-isnt-answered-here","title":"I have a question that isn't answered here","text":"You should contact your Lagoon administrator for any hosting-related enquiries, but you can also reach out to the Lagoon team via Discord or email at uselagoon@amazee.io.
"},{"location":"resources/glossary/","title":"Glossary","text":"Term Definition Access Mode Controls how a persistent volume can be accessed. Active/Standby Active/Standby deployments, also known as blue/green deployments, are a way to seamlessly switch over your production content. Ansible An open-source suite of software tools that enables infrastructure as code. AWS Amazon Web Services Amazon S3 Glacier A secure and inexpensive S3 storage for long-term backup. BitBucket Git hosting owned by Atlassian, which integrates with their tools. Brew Homebrew is a package manager for OSX. CA A Certificate Authority is a trusted entity that issues Secure Sockets Layer (SSL) certificates. CDN Content Delivery Network - distributes content via caching CI Continuous Integration CIDR Classess Inter-Domain Routing - a method of assigning IP addresses CLI Command Line Interface Cluster A unified group of servers or VMs, distributed and managed together, which serves one entity to ensure high availability, load balancing, and scalability. CMS Content Management System Cron job The cron command-line utility is a job scheduler on Unix-like operating systems. Users who set up and maintain software environments use cron to schedule jobs, also known as cron jobs, to run periodically at fixed times, dates, or intervals. Composer A package manager DDEV A Docker-based PHP development environment popular in the Drupal community. DDoS Distributed Denial of Service DNS Domain Name System Docker A container engine using Linux features and automating application deployment. Docker Compose A tool for defining and running Docker applications via YAML files. Drupal Open-source Content Management System Drush A command line shell for Drupal. EC2 Amazon Elastic Compute Cloud Elasticsearch An open-source search engine. It provides a distributed, multi-tenant-capable full-text search engine with a web interface and schema-free JSON documents. Galera A generic synchronous multi-master replication library for transactional databases. Git A free and open-source distributed version control system. Git Hash/SHA A generated string that identifies each commit. Uses the SHA-1 algorithm GitHub A proprietary version control hosting company using Git. A subsidiary of Microsoft, it offers all of the distributed version control and source code management functionality of Git as well as additional features. GitLab A web-based Git repository manager with CI capabilities. Grafana An open-source analytics and monitoring solution. GraphQL An open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. Harbor An open source container image registry that secures images with role-based access control, scans images for vulnerabilities, and signs images as trusted. Helm A package manager for Kubernetes, it helps you manage Kubernetes applications. Helm Charts Helm Charts help you define, install, and upgrade even the most complex Kubernetes application. HTTP HyperText Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. IAM AWS Identity and Access Management (IAM) is a web service that helps you securely control access to AWS resources. IDE An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools, and a debugger. Ingress controller An Ingress controller is a specialized load balancer for Kubernetes (and other containerized) environments. IPTables A command line utility for configuring Linux kernel firewall. Jenkins An open-source automation server. JWT JSON Web Token. k3s A highly available, certified Kubernetes distribution. k3d k3d is a lightweight wrapper to run k3s in Docker. k8s Numeronym for Kubernetes (K + 8 letters + s) k8up K8up is a backup operator that will handle storage and app backups on a k8s/OpenShift cluster. Keycloak An open-source identity and access management system. Kibana An open-source data visualization plugin for Elasticsearch. It provides visualization capabilities on top of the content indexed on an Elasticsearch cluster. KinD Kubernetes in Docker - a tool for running local Kubernetes clusters using Docker container \u201cnodes\u201d. Kind was primarily designed for testing Kubernetes itself, but may be used for local development or CI. kubectl The Kubernetes command-line tool which allows you to run commands against Kubernetes clusters. Kubernetes An open-source system for automating deployment, scaling, and management of containerized applications. Lagoon An open-source application delivery platform for Kubernetes. Lagoonize Configuration changes to allow your app to run on Lagoon. Lando A free, open source, cross-platform, local development environment and DevOps tool built on Docker. Laravel A free, open-source PHP web framework, following the model\u2013view\u2013controller (MVC) architectural pattern and based on Symfony. Let's Encrypt Aa free, automated, and open certificate authority (CA). MariaDB A community-developed, commercially supported fork of the MySQL relational database management system, intended to remain free and open-source software under the GNU General Public License. Master node A single node in the cluster on which a collection of processes which manage the cluster state are running. Microservice The practice of breaking up an application into a series of smaller, more specialized parts, each of which communicate with one another across common interfaces such as APIs and REST interfaces like HTTP MongoDB MongoDB is a cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schema. Multi-Tenant A single instance of software runs on a server and serves multiple tenants - a tenant is a group of users who share common access with privileges to access the software instance. The software is designed to provide each tenant a share of the resources. MVC Model-view-controller - an architectural pattern that separates an application into three main logical components: the model, the view, and the controller. Each of these components are built to handle specific development aspects of an application. MySQL MySQL is an open-source relational database management system. NGINX NGINX is a web server which can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. Node Single EC2 instance (AWS virtual machine) Node.js An open-source, cross-platform, JavaScript runtime environment that executes JavaScript code outside of a browser. Open source A type of computer software in which source code is released under a license in which the copyright holder grants users the rights to study, change, and distribute the software to anyone and for any purpose. Open-source software may be developed in a collaborative public manner. OpenSearch A community-driven, Apache 2.0-licensed open source search and analytics suite that makes it easy to ingest, search, visualize, and analyze data. OpenShift Container application platform that brings Docker and Kubernetes to the enterprise. PHP PHP (Personal Home Page) is a general-purpose programming language originally designed for web development. PhpStorm A development tool (IDE) for PHP and web projects. Pod A group of containers that are deployed together on the same host. The basic unit that Kubernetes works with. PostgreSQL A free and open-source relational database management system emphasizing extensibility and technical standards compliance. Public/Private Key Public-key encryption is a cryptographic system that uses two keys -- a public key known to everyone and a private or secret key known only to the recipient of the message. Puppet An open-source software configuration management and deployment tool. PV PersistentVolume - a piece of storage in the cluster that has been provisioned by an administrator or dynamically provisioned using Storage Classes. PVC Persistent Volume Claim - a request for storage by a user. Pygmy A Lagoon flavored local development system. Python Python is an open-source, interpreted, high-level, general-purpose programming language. RabbitMQ An open-source message-broker software. RBAC Role-Based Access Control RDS Relational Database Service Redis An open source, in-memory data store used as a database, cache, streaming engine, and message broker. Restic An open-source backup program. ROX Kubernetes access mode ReadOnlyMany - the volume can be mounted as read-only by many nodes. Ruby An interpreted, high-level, general-purpose programming language which supports multiple programming paradigms. It was designed with an emphasis on programming productivity and simplicity. In Ruby, everything is an object, including primitive data types. RWO Kubernetes access mode ReadWriteOnce - the volume can be mounted as read-write by a single node. ReadWriteOnce access mode still can allow multiple pods to access the volume when the pods are running on the same node. RWOP Kubernetes access mode ReadWriteOncePod - the volume can be mounted as read-write by a single Pod. Use ReadWriteOncePod access mode if you want to ensure that only one pod across whole cluster can read that PVC or write to it. This is only supported for CSI volumes and Kubernetes version 1.22+. RWX Kubernetes access mode ReadWriteMany - the volume can be mounted as read-write by many nodes. S3 Amazon Simple Storage Service. SBOM Software Bill of Materials. SHA-1 Secure Hash Algorithm 1, a hash function which takes an input and produces a 160-bit hash value known as a message digest \u2013 typically rendered as 40 hexadecimal digits. It was designed by the United States National Security Agency, and is a U.S. Federal Information Processing Standard. Solr An open-source enterprise-search platform, written in Java. SSH Secure Socket Shell, a network protocol that provides administrators with a secure way to access a remote computer. SSL Secure Socket Layer Storage Classes A StorageClass provides a way for Kubernetes administrators to describe the \"classes\" of storage they offer. Different classes might map to quality-of-service levels, or to backup policies, or to arbitrary policies determined by the cluster administrators Symfony Symfony is a PHP web application framework and a set of reusable PHP components/libraries, Drupal 8 and up are based on Symfony. TCP Transmission Control Protocol, a standard that defines how to establish and maintain a network conversation through which application programs can exchange data. TLS Transport Layer Security Trivy A simple and comprehensive vulnerability scanner for containers, suitable for CI. TTL Time to live or hop limit is a mechanism that limits the lifespan or lifetime of data in a computer or network. Varnish A powerful, open-source HTTP engine/reverse HTTP proxy that can speed up a website by caching (or storing) a copy of a webpage the first time a user visits. VM Virtual Machine Webhook A webhook is a way for an app like GitHub, GitLab, Bitbucket, etc, to provide other applications with immediate data and act upon something, like a pull request. YAML YAML Ain't Markup Language - YAML is a human-readable data-serialization language. It is commonly used for configuration files and in applications where data is being stored or transmitted."},{"location":"resources/tutorials-and-webinars/","title":"Tutorials, Webinars, and Videos","text":""},{"location":"resources/tutorials-and-webinars/#intro-to-lagoon-webinar","title":"Intro to Lagoon Webinar","text":"[Slides]
"},{"location":"resources/tutorials-and-webinars/#advance-lando-ing-with-lagoon","title":"Advance Lando-ing with Lagoon","text":""},{"location":"resources/tutorials-and-webinars/#webinar-lagoon-insights","title":"Webinar - Lagoon Insights","text":""},{"location":"resources/tutorials-and-webinars/#lagoon-deployment-demo","title":"Lagoon Deployment Demo","text":""},{"location":"resources/tutorials-and-webinars/#how-to-manage-multiple-drupal-sites-with-lagoon","title":"How to Manage Multiple Drupal Sites with Lagoon","text":"[Slides]
"},{"location":"resources/tutorials-and-webinars/#kubernetes-webinar-101","title":"Kubernetes Webinar 101","text":"[Slides]
"},{"location":"resources/tutorials-and-webinars/#kubernetes-webinar-102","title":"Kubernetes Webinar 102","text":"[Slides]
"},{"location":"resources/tutorials-and-webinars/#server-side-rendering-best-practices-how-we-run-decoupled-websites-with-110-million-hits-per-month","title":"Server-side Rendering Best Practices: How We Run Decoupled Websites with 110 Million Hits per Month","text":""},{"location":"resources/tutorials-and-webinars/#lagoon-opensource-docker-build-deployment-system-with-full-drupal-support","title":"Lagoon: OpenSource Docker Build & Deployment System with Full Drupal Support","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-fix-an-internal-server-error-in-kibana","title":"How do I fix an internal server error in Kibana?","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-add-a-new-route","title":"How do I add a new route?","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-check-the-status-of-a-build","title":"How do I check the status of a build?","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-add-a-redirect-in-lagoon","title":"How do I add a redirect in Lagoon?","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-download-a-database-dump","title":"How do I download a database dump?","text":""},{"location":"resources/tutorials-and-webinars/#how-do-i-add-a-cron-job","title":"How do I add a cron job?","text":""},{"location":"resources/tutorials-and-webinars/#deploying-web-applications-on-kubernetes-toby-bellwood-techweek21-talk","title":"Deploying web applications on Kubernetes - Toby Bellwood | Techweek21 Talk","text":""},{"location":"resources/tutorials-and-webinars/#dealing-with-unprecedented-scale-during-covid-19-sean-hamlin-techweek21-talk","title":"Dealing with unprecedented scale during Covid-19 - Sean Hamlin| Techweek21 Talk","text":""},{"location":"resources/tutorials-and-webinars/#silverstripe-from-local-to-live-on-lagoon-thom-toogood-techweek21-talk","title":"Silverstripe from local to live on Lagoon -Thom Toogood | Techweek21 Talk","text":""},{"location":"using-lagoon-advanced/","title":"Using Lagoon - Advanced","text":"This section covers some of the more advanced features and functionality of Lagoon. If you're new to Lagoon, start with Using Lagoon - the Basics.
If you need help, contact your Lagoon administrator or reach out to the community and maintainers in our Discord.
"},{"location":"using-lagoon-advanced/active-standby/","title":"Active/Standby","text":""},{"location":"using-lagoon-advanced/active-standby/#configuration","title":"Configuration","text":"To change an existing project to support active/standby you'll need to configure some project settings with the Lagoon API.
productionEnviromment
should be set to the branch name of the current active environment. standbyProductionEnvironment
should be set to the branch name of the current environment that is in standby.
Update project settingsmutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionEnvironment:\"production-brancha\"\nstandbyProductionEnvironment:\"production-branchb\"\n}\n}){\nstandbyProductionEnvironment\nname\nproductionEnvironment\n}\n}\n
"},{"location":"using-lagoon-advanced/active-standby/#lagoonyml-production_routes","title":".lagoon.yml
- production_routes
","text":"To configure a project for active/standby in the .lagoon.yml
file, you'll need to configure the production_routes
section with any routes you want to attach to the active
environment, and any routes to the standby
environment. During an active/standby switch, these routes will migrate between the two environments.
If you have two production environments, production-brancha
and production-branchb
, with the current active production environment as production-brancha
then:
- Routes under
production_routes.active
will direct you to production-brancha
. - Routes under
production_routes.standby
will direct you to production-branchb
.
During an active/standby switch, the routes will swap:
- Routes under
production_routes.active
will direct you to production-branchb
. - Routes under
production_routes.standby
will direct you to production-brancha
.
.lagoon.ymlproduction_routes:\nactive:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'false'\n- active.example.com:\ntls-acme: 'false'\nstandby:\nroutes:\n- nginx:\n- standby.example.com:\ntls-acme: 'false'\n
Info
Any routes that are under the section environments..routes
will not be moved as part of active/standby. These routes will always be attached to the environment as defined. Ensure that if you do need a specific route to be migrated during an active/standby switch, that you remove them from the environments section and place them under the production_routes
section specific to if it should be an active or standby route. See more about routes in .lagoon.yml
.
"},{"location":"using-lagoon-advanced/active-standby/#triggering-a-switch-event","title":"Triggering a switch event","text":""},{"location":"using-lagoon-advanced/active-standby/#via-the-ui","title":"via the UI","text":"To trigger the switching of environment routes, you can visit the standby environment in the Lagoon UI and click on the button labeled Switch Active/Standby environments
. You will be prompted to confirm your action.
Once confirmed, it will take you to the tasks page where you can view the progress of the switch.
"},{"location":"using-lagoon-advanced/active-standby/#via-the-api","title":"via the API","text":"To trigger an event to switch the environments, run the following GraphQL mutation. This will tell Lagoon to begin the process.
Active Standby Switchmutation ActiveStandby {\nswitchActiveStandby(\ninput:{\nproject:{\nname:\"drupal-example\"\n}\n}\n){\nid\nremoteId\n}\n}\n
A task is created in the current active environment tasks
tab when a switch event is triggered. You can check the status of the switch here.
Using the remoteId
from the switchActiveStandby
mutation, we can also check the status of the task.
Check task statusquery getTask {\ntaskByRemoteId(id: \"<remoteId>\") {\nid\nname\ncreated\nstarted\ncompleted\nstatus\nlogs\n}\n}\n
"},{"location":"using-lagoon-advanced/active-standby/#drush-aliases","title":"drush
aliases","text":"By default, projects will be created with the following aliases that will be available when active/standby is enabled on a project.
lagoon-production
lagoon-standby
The lagoon-production
alias will point to whichever site is defined as productionEnvironment
, and lagoon-standby
will always point to the site that is defined as standbyProductionEnvironment
.
These aliases are configurable by updating the project. Be aware that changing them may require you to update any scripts that rely on them.
Update Drush Aliasesmutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionAlias:\"custom-lagoon-production-alias\"\nstandbyAlias:\"custom-lagoon-standby-alias\"\n}\n}){\nproductionAlias\nname\nstandbyAlias\n}\n}\n
"},{"location":"using-lagoon-advanced/active-standby/#disabling-activestandby","title":"Disabling Active/Standby","text":"You need to decide which of these 2 branches are the one you want to go forward with as being the main environment and then ensure it is set as the active branch (e.g production-branchb
).
- In your
.lagoon.yml
file in this (now active) branch, move the routes from the production_routes.active.routes
section into the environments.production-branchb
section. This will mean that they are then attached to the production-branchb environment
only. - Once you've done this, you can delete the entire production_routes section from the
.lagoon.yml
file and re-deploy the production-branchb environment. - If you no longer need the other branch
production-brancha
, you can delete it. - If you keep the branch in Git, you should also remove the
production_routes
from that branch .lagoon.yml
too, just to prevent any confusion. The branch will remain as production
type unless you delete and redeploy it (wiping all storage and databases, etc). - Once you've got the project in a state where there is only the
production-branchb
production environment, and all the other environments are development
, update the project to remove the standbyProductionEnvironment
from the project so that the active/standby labels on the environments go away.
Turn off Active/Standbymutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionEnvironment:\"production-branchb\"\nstandbyProductionEnvironment:\"\"\n}\n}){\nstandbyProductionEnvironment\nname\nproductionEnvironment\n}\n}\n
"},{"location":"using-lagoon-advanced/active-standby/#notes","title":"Notes","text":"When the active/standby trigger has been executed, the productionEnvironment
and standbyProductionEnvironments
will switch within the Lagoon API. Both environments are still classed as production
environment types. We use the productionEnvironment
to determine which one is labelled as active
. For more information on the differences between environment types, read the documentation for environment types
Get environments via GraphQLquery projectByName {\nprojectByName(name:\"drupal-example\"){\nproductionEnvironment\nstandbyProductionEnvironment\n}\n}\n
Before switching environments:
Results of environment query{\n\"data\": {\n\"projectByName\": {\n\"productionEnvironment\": \"production-brancha\",\n\"standbyProductionEnvironment\": \"production-branchb\"\n}\n}\n}\n
After switching environments:
Results of environment query{\n\"data\": {\n\"projectByName\": {\n\"productionEnvironment\": \"production-branchb\",\n\"standbyProductionEnvironment\": \"production-brancha\"\n}\n}\n}\n
"},{"location":"using-lagoon-advanced/blackfire/","title":"Blackfire","text":""},{"location":"using-lagoon-advanced/blackfire/#blackfire-variables","title":"Blackfire variables","text":"The Lagoon Base Images have support for Blackfire included in the PHP Images (see the PHP images).
In order to use Blackfire in Lagoon, these three environment variables need to be defined:
Environment Variable Default Description BLACKFIRE_ENABLED
(not set) Used to enable blackfire
extension with setting variable to TRUE
or true
BLACKFIRE_SERVER_ID
(not set) Set to Blackfire Server ID provided by Blackfire.io. Needs BLACKFIRE_ENABLED
set to true
BLACKFIRE_SERVER_TOKEN
(not set) Set to Blackfire Server Token provided by Blackfire.io. Needs BLACKFIRE_ENABLED
set to true
"},{"location":"using-lagoon-advanced/blackfire/#local-usage-of-blackfire","title":"Local Usage of Blackfire","text":"For local usage of Blackfire with Lagoon Images, set the above environment variables for the PHP container. Here is an example for a Drupal application:
docker-compose.ymlservices:\n[[snip]]\nphp:\n[[snip]]\nenvironment:\n<< : *default-environment # loads the defined environment variables from the top\nBLACKFIRE_ENABLED: TRUE\nBLACKFIRE_SERVER_ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\nBLACKFIRE_SERVER_TOKEN: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n
After restarting the containers, you should be able to profile via the Blackfire Browser Plugin or the Blackfire CLI.
"},{"location":"using-lagoon-advanced/blackfire/#remote-usage-of-blackfire","title":"Remote Usage of Blackfire","text":"In order to use Blackfire in deployed Lagoon environments the same enviornment variables need to be set, this time via one of the possibilities of adding environment variables to Lagoon. Important: Environment variables set in the docker-compose.yml
for local development are not used by Lagoon in remote environments!
"},{"location":"using-lagoon-advanced/blackfire/#debugging","title":"Debugging","text":"The Blackfire Agent running in the PHP containers outputs logs as normal container logs, which can be seen via docker compose logs
or via the Lagoon Logging Infrastructure for remote environments.
By default the Logs are set to Level 3
(info), via the environment variable BLACKFIRE_LOG_LEVEL
the level can be increased to 4
(debug) to generate more debugging ouput.
"},{"location":"using-lagoon-advanced/custom-tasks/","title":"Custom Tasks","text":"Lagoon allows for the definition of custom tasks at environment, project, and group levels. This is presently accomplished through the GraphQL API and exposed in the UI.
"},{"location":"using-lagoon-advanced/custom-tasks/#defining-a-custom-task","title":"Defining a custom task","text":"When defining a task you need to determine a number of things.
"},{"location":"using-lagoon-advanced/custom-tasks/#which-task-do-you-want-to-run","title":"Which task do you want to run?","text":"In most cases, the custom task you will be running will be something that will be run in a shell on one of the containers in your application.
For instance, in a Node.js application, you may be interested in running a yarn audit
in your node
container. The command, in this case, would simply be yarn audit
.
"},{"location":"using-lagoon-advanced/custom-tasks/#where-will-this-task-be-run","title":"Where will this task be run?","text":"We have to define where this task will be run -- this means two things, first, which project or environment we'll be running the task in, and, second, which service.
Let's say that we'd like for our yarn audit
task to be available to run in any environment in a specific project (let's say the project's ID is 42 for this example). We will therefore specify the project's ID when we create our task definition, as we will describe below.
The second question regards which environment we want to target with our task. When you set up your project, you specify several services in your docker-compose.yml
. We use this service name to determine where the command is actually executed.
"},{"location":"using-lagoon-advanced/custom-tasks/#who-can-run-this-task","title":"Who can run this task?","text":"There are three levels of permissions to the task system corresponding to project roles. Guest, Developer, and Maintainer -- from most restrictive to least restrictive, with each role being able to invoke the tasks defined for the lower role (Developer can see Guest tasks, Maintainers can see all tasks).
"},{"location":"using-lagoon-advanced/custom-tasks/#defining-a-task","title":"Defining a task","text":"Tasks are defined by calling the addAdvancedTaskDefinition
mutation. Importantly, this simply defines the task, it does not invoke it. It simply makes it avaliable to be run in an environment.
Schematically, the call looks like this
Define a new taskmutation addAdvancedTask {\naddAdvancedTaskDefinition(input:{\nname: string,\nconfirmationText: string,\ntype: [COMMAND|IMAGE],\n[project|environment]: int,\ndescription: string,\nservice: string,\ncommand: string,\nadvancedTaskDefinitionArguments: [\n{\nname: \"ENVIROMENT_VARIABLE_NAME\",\ndisplayName: \"Friendly Name For Variable\",\ntype: [STRING | ENVIRONMENT_SOURCE_NAME | ENVIRONMENT_SOURCE_NAME_EXCLUDE_SELF]\n}\n]\n}) {\n... on AdvancedTaskDefinitionImage {\nid\nname\ndescription\nservice\nimage\nconfirmationText\nadvancedTaskDefinitionArguments {\ntype\nrange\nname\ndisplayName\n}\n...\n}\n... on AdvancedTaskDefinitionCommand {\nid\nname\ndescription\nservice\ncommand\nadvancedTaskDefinitionArguments {\ntype\nrange\nname\ndisplayName\n}\n...\n}\n}\n}\n
Fields name
and description
are straightforward. They're simply the name and description of the task - these are used primarily in the UI.
The type
field needs some explanation - for now, only platform admins are able to define IMAGE
type commands - these allow for the running of specifically created task images as tasks, rather than targeting existing services. Most tasks, though, will be COMMAND
types.
The [project|environment]
set of fields will attach the task to either the project
or environment
(depending on the key you use), with the value being the id. In the case we're considering for our yarn audit
we will specify we're targeting a project
with an ID of 42
.
We put the service we'd like to target with our task in the service
field, and command
is the actual command that we'd like to run.
"},{"location":"using-lagoon-advanced/custom-tasks/#arguments-passed-to-tasks","title":"Arguments passed to tasks","text":"In order to give more flexibility to the users invoking the tasks via the Lagoon UI, we support defining task arguments. These arguments are displayed as text boxes or drop downs and are required for the task to be invoked.
Here is an example of how we might set up two arguments.
Define task argumentsadvancedTaskDefinitionArguments: [\n{\nname: \"ENV_VAR_NAME_SOURCE\",\ndisplayName: \"Environment source\",\ntype: ENVIRONMENT_SOURCE_NAME\n},\n{\nname: \"ENV_VAR_NAME_STRING\",\ndisplayName: \"Echo value\",\ntype: STRING\n}\n]\n})\n
This fragment shows both types of arguments the system currently supports. The first, ENV_VAR_NAME_SOURCE
is an example of type ENVIRONMENT_SOURCE_NAME
, which will present the user of the UI a dropdown of the different environments inside of a project. If we don't want to allow the task to be run on the invoking environment (say, if we want to import a database from another environment), we can restrict the environment list by using ENVIRONMENT_SOURCE_NAME_EXCLUDE_SELF
. The second ENV_VAR_NAME_STRING
is of type STRING
and will present the user with a textbox to fill in.
The values that the user selects will be available as environment variables in the COMMAND
type tasks when the task is run.
"},{"location":"using-lagoon-advanced/custom-tasks/#system-wide-tasks","title":"System wide tasks","text":"Only your Lagoon administrator is able to register system wide tasks. These tasks will appear for all environments, subject to the user's permission to invoke them.
Creating a system wide task is almost exactly the same as other task types, with two exceptions.
First, you set the systemWide: true
field in your addAdvancedTaskDefinition
mutation.
Second, you make sure you have not specified groupName
, project
, or environment
- which would defeat the purpose, since these fields are used to target specific contexts.
"},{"location":"using-lagoon-advanced/custom-tasks/#confirmation","title":"Confirmation","text":"When the confirmationText
field has text, it will be displayed with a confirmation modal in the UI before the user is able to run the task.
"},{"location":"using-lagoon-advanced/custom-tasks/#invoking-the-task","title":"Invoking the task","text":"With the task now defined, the task should now show up in the tasks dropdown in the Lagoon UI.
We are also able to invoke it via the GraphQL api by using the invokeTask
mutation.
Invoke taskmutation invokeTask {\ninvokeRegisteredTask(advancedTaskDefinition: int, environment: int) {\nstatus\n}\n}\n
Note that invokeTask
will always invoke a task on a specific environment.
"},{"location":"using-lagoon-advanced/custom-tasks/#example","title":"Example","text":"Let's now setup our yarn audit
example.
Define task mutationmutation runYarnAudit {\naddAdvancedTaskDefinition(input:{\nname:\"Run yarn audit\",\nproject: 42,\ntype:COMMAND,\npermission:DEVELOPER,\ndescription: \"Runs a 'yarn audit'\",\nservice:\"node\",\ncommand: \"yarn audit\"})\n{\nid\n}\n}\n
This, then, will define our task for our project (42). When we run this, we will get the ID of the task definition back (for argument's sake, let's say it's 9
)
This task will now be available to run from the UI for anyone with the DEVELOPER
or MAINTAINER
role.
"},{"location":"using-lagoon-advanced/deploytarget-configs/","title":"DeployTarget Configurations","text":"DeployTarget configurations are a way to define how a project can deploy to multiple clusters. This feature is useful when you have two clusters, one which could be dedicated for running production workloads, and another that is used for running development workloads.
The configuration for these is not limited to just a production/development split though, so projects could perceivably target more than one specific cluster.
The basic idea of a DeployTarget configuration is that it is a way to easily define how a project can deploy across multiple clusters. It uses the existing methods of checking if a environment is valid
"},{"location":"using-lagoon-advanced/deploytarget-configs/#important-information","title":"Important Information","text":"Before going in to how to configure a project to leverage DeployTarget configurations, there are some things you need to know.
-
Environments now have two new fields available to them to identify which DeployTarget(Kubernetes or OpenShift) they have been created on.
kubernetesNamespacePattern
kubernetes
-
Once an environment has been deployed to a specific DeployTarget, it will always deploy to this target, even if the DeployTarget configuration, or project configuration is modified.
- This offers some safety to existing environments by preventing changes to DeployTarget configurations from creating new environments on different clusters.
- This is a new feature that is part of Lagoon, not specifically for DeployTarget configurations.
-
By default, if no DeployTarget configurations are associated to a project, that project will continue to use the existing methods to determine which environments to deploy. These are the following fields used for this.
branches
pullrequests
kubernetesNamespacePattern
kubernetes
-
As soon as any DeployTarget configurations are added to a project, then all future deployments for this project will use these configurations. What is defined in the project is ignored, and overwritten to inform users that DeployTarget configurations are in use.
-
DeployTarget configurations are weighted, which means that a DeployTarget configuration with a larger weight is prioritized over one with lower weight.
1. The order in which they are returned by the query is the order they are used to determine where an environment should be deployed.
-
Active/Standby environments can only be deployed to the same cluster, so your DeployTarget configuration must be able to deploy both those environments to the same target.
-
Projects that leverage the promote
feature of Lagoon must be aware that DeployTarget configurations are ignored for the destination
environment.
- The destination environment will always be deployed to the same target that the
source
environment is on, your DeployTarget configuration MUST be configured correctly for this source
environment. - For safety, it is best to define both the
source
and destination
environment in the same DeployTarget configuration branch regex.
"},{"location":"using-lagoon-advanced/deploytarget-configs/#configuration","title":"Configuration","text":"To configure a project to use DeployTarget configurations, the first step is to add a configuration to a project.
The following GraphQL mutation can be used, this particular example will add a DeployTarget configuration to the project with the project ID 1. It will allow only the branches that match the name main
to be deployed, and pullrequests
is set to false
. This means no other branches will be able to deploy to this particular target, and no pull requests will be deployed to this particular target. The deployTarget
is ID 1, this could be a Kubernetes cluster in a specific region, or designated for a specific type of workload (production or development).
Configure DeployTargetmutation addDeployTargetConfig{\naddDeployTargetConfig(input:{\nproject: 1\nbranches: \"main\"\npullrequests: \"false\"\ndeployTarget: 1\nweight: 1\n}){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n
Info
deployTarget
is an alias the Kubernetes or OpenShift ID in the Lagoon API
It is also possible to configure multiple DeployTarget configurations.
The following GraphQL mutation can be used, this particular example will add a DeployTarget configuration to the same project as above.
It will allow only the branches that regex match with ^feature/|^(dev|test|develop)$
to be deployed, and pullrequests
is set to true
so all pull requests will reach this target.
The targeted cluster in this example is ID 2, which is a completely different Kubernetes cluster to what was defined above for the main
branch.
Configure DeployTargetmutation addDeployTargetConfig{\naddDeployTargetConfig(input:{\nproject: 1\nbranches: \"^feature/|^(dev|test|develop)$\"\npullrequests: \"true\"\ndeployTarget: 2\nweight: 1\n}){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n
Once these have been added to a project, you can return all the DeployTarget configurations for a project using the following query
Get DeployTargetsquery deployTargetConfigsByProjectId{\ndeployTargetConfigsByProjectId(project:1){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n# result:\n{\n\"data\": {\n\"deployTargetConfigsByProjectId\": [\n{\n\"id\": 1,\n\"weight\": 1,\n\"branches\": \"main\",\n\"pullrequests\": \"false\",\n\"deployTargetProjectPattern\": null,\n\"deployTarget\": {\n\"name\": \"production-cluster\",\n\"id\": 1\n},\n\"project\": {\n\"name\": \"my-project\"\n}\n},\n{\n\"id\": 2,\n\"weight\": 1,\n\"branches\": \"^feature/|^(dev|test|develop)$\",\n\"pullrequests\": \"true\",\n\"deployTargetProjectPattern\": null,\n\"deployTarget\": {\n\"name\": \"development-cluster\",\n\"id\": 2\n},\n\"project\": {\n\"name\": \"my-project\"\n}\n}\n]\n}\n}\n
"},{"location":"using-lagoon-advanced/nodejs/","title":"Node.js Graceful Shutdown","text":"Node.js has integrated web server capabilities. Plus, with Express, these can be extended even more.
Unfortunately, Node.js does not handle shutting itself down very nicely out of the box. This causes many issues with containerized systems. The biggest issue is that when a Node.js container is told to shut down, it will immediately kill all active connections, and does not allow them to stop gracefully.
This part explains how you can teach Node.js to behave like a real web server: finishing active requests and then gracefully shutting down.
As an example we use a no-frills Node.js server with Express:
app.jsconst express = require('express');\nconst app = express();\n// Adds a 5 second delay for all requests.\napp.use((req, res, next) => setTimeout(next, 5000));\napp.get('/', function (req, res) {\nres.send(\"Hello World\");\n})\nconst server = app.listen(3000, function () {\nconsole.log('Example app listening on port 3000!');\n})\n
This will just show \"Hello World\" in when the web server is visited at localhost:3000
. Note the 5 second delay in the response in order to simulate a request that takes some computing time.
"},{"location":"using-lagoon-advanced/nodejs/#part-a-allow-requests-to-be-finished","title":"Part A: Allow requests to be finished","text":"If we run the above example and stop the Node.js process while the request is handled (within the 5 seconds), we will see that the Node.js server immediately kills the connection, and our browser will show an error.
To explain to our Node.js server that it should wait for all the requests to be finished before actually stopping itself, we add the following code:
Graceful Shutdownconst startGracefulShutdown = () => {\nconsole.log('Starting shutdown of express...');\nserver.close(function () {\nconsole.log('Express shut down.');\n});\n}\nprocess.on('SIGTERM', startGracefulShutdown);\nprocess.on('SIGINT', startGracefulShutdown);\n
This basically calls server.close()
, which will instruct the Node.js HTTP server to:
- Not accept any more requests.
- Finish all running requests.
It will do this on SIGINT
(when you press CTRL + C
) or on SIGTERM
(the standard signal for a process to terminate).
With this small addition, our Node.js will wait until all requests are finished, and then stop itself.
If we were not running Node.js in a containerized environment, we would probably want to include some additional code that actually kills the Node.js server after a couple of seconds, as it is technically possible that some requests are either taking very long or are never stopped. Because it is running in a containerized system, if the container is not stopped, Docker and Kubernetes will run a SIGKILL
after a couple of seconds (usually 30) which cannot be handled by the process itself, so this is not a concern for us.
"},{"location":"using-lagoon-advanced/nodejs/#part-b-yarn-and-npm-children-spawning-issues","title":"Part B: Yarn and NPM children spawning issues","text":"If we only implemented Part A, we would have a good experience. In the real world, many Node.js systems are built with Yarn or NPM, which provide not only package management systems to Node.js, but also script management.
With these script functionalities, we simplify the start of our application. We can see many package.json
files that look like:
package.json{\n\"name\": \"node\",\n\"version\": \"1.0.0\",\n\"main\": \"index.js\",\n\"license\": \"MIT\",\n\"dependencies\": {\n\"express\": \"^4.15.3\"\n},\n\"scripts\": {\n\"start\": \"node index.js\"\n}\n}\n
and with the defined scripts
section we can run our application just with:
Start applicationyarn start\n
or
Start applicationnpm start\n
This is nice and makes the life of developers easier. So we also end up using the same within Dockerfiles:
.dockerfileCMD [\"yarn\", \"start\"]\n
Unfortunately there is a big problem with this:
If yarn
or npm
get a SIGINT
or SIGTERM
signal, they correctly forward the signal to spawned child process (in this case node index.js
). However, it does not wait for the child processes to stop. Instead, yarn
/npm
immediately stop themselves. This signals to Docker/Kubernetes that the container is finished and Docker/Kubernetes will kill all children processes immediately. There are issues open for Yarn and NPM but unfortunately they are not solved yet.
The solution for the problem is to not use Yarn or NPM to start your application and instead use node
directly:
.dockerfileCMD [\"node\", \"index.js\"]\n
This allows Node.js to properly terminate and Docker/Kubernetes will wait for Node.js to be finished.
"},{"location":"using-lagoon-advanced/private-repositories/","title":"Private Repositories","text":" - Give the deploy key access to the Git repositories in your GitHub/GitLab/BitBucket.
- Add
ARG LAGOON_SSH_PRIVATE_KEY
to your dockerfile
(before the step of the build process that needs the SSH key). - Add
RUN /lagoon/entrypoints/05-ssh-key.sh
to your dockerfile
(before the step of the build process that needs the SSH key).
Set up your private respositoryRUN /lagoon/entrypoints/05-ssh-key.sh && composer install && rm /home/.ssh/key\n
"},{"location":"using-lagoon-advanced/project-default-users-keys/","title":"Project Default Users and SSH Keys","text":"When a Lagoon project is created, by default an associated SSH \"project key\" is generated and the private key made available inside the CLI pods of the project. A service account default-user@project
is also created and given MAINTAINER
access to the project. The SSH \"project key\" is attached to that default-user@project
.
The result of this is that from inside the CLI pod of any environment it is possible to SSH to any other environment within the same project. This access is used for running tasks from the command line such as synchronizing databases between environments (e.g. drush sql-sync
).
There is more information on the MAINTAINER
role available in the RBAC documentation.
"},{"location":"using-lagoon-advanced/project-default-users-keys/#specifying-the-project-key","title":"Specifying the project key","text":"It is possible to specify an SSH private key when creating a project, but this is not recommended as it has security implications.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/","title":"Setting up Xdebug with Lagoon","text":""},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#enable-xdebug-extension-in-the-containers","title":"Enable Xdebug extension in the containers","text":"The Lagoon base images are pre-configured with Xdebug but, for performance reasons, the extension is not loaded by default. To enable the extension, the XDEBUG_ENABLE
environment variable must be set to true
:
-
Locally (Pygmy and Lando)
- If your project is based off the lagoon-examples
docker-compose.yml
file, the environment variable already exists. Uncomment these lines. - Make sure to rebuild and restart the containers after changing any environment variables. - Remotely (dev/prod)
- You can use the Lagoon API to add the environment variable to a running environment.
- Make sure to redeploy the environment after changing this any environment variables.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#activate-xdebug-extension","title":"Activate Xdebug Extension","text":"The default Xdebug configuration requires a \"trigger\" to activate the extension and start a session. You can view the complete documentation for activating the debugger but the most straightforward instructions are below.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#cli","title":"CLI","text":"The php-cli
image is configured to always activate Xdebug when it\u2019s enabled, so there is nothing else that needs to be done. Running any PHP script will start a debugging session.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#web","title":"Web","text":"Install a browser extension to set/unset an activation cookie.
Make sure the activation cookie is set for the website you want to start debugging.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#configure-phpstorm","title":"Configure PHPStorm","text":" - PHPStorm is configured correctly by default.
- Click the \u201cStart Listening for PHP Debug Connections\u201d icon in the toolbar.
- Load a webpage or run a Drush command.
- On first run, PHPStorm should pop up a window asking you to:
- Confirm path mappings.
- Select the correct file locally that was triggered on the server.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#configure-visual-studio-code","title":"Configure Visual Studio Code","text":" - Install the PHP Debug extension by Felix Becker.
- Follow the instructions to create a basic
launch.json
for PHP. -
Add correct path mappings. For a typical Drupal site, an example would be:
launch.json\"pathMappings\": {\n\"/app\": \"${workspaceFolder}\",\n},\n
-
In the Run tab of Visual Studio Code, click the green arrow next to \u201cListen for Xdebug\u201d
- Load a webpage or run a Drush command.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#troubleshooting","title":"Troubleshooting","text":" - Verify that Xdebug extension is loaded. The best way to do this on a Drupal site is to check the PHP status page. You should find a section about Xdebug and all its settings.
- Verify the following settings:
Directive Local Value xdebug.mode debug xdebug.client_host host.docker.internal
or your IP address xdebug.client_port 9003 - Enable Xdebug logging within the running containers. All you need is an environment variable named
XDEBUG_LOG
set to anything to enable logging. Logs will be saved to /tmp/xdebug.log
. If you are using the lagoon-examples then you can uncomment some existing lines. - Verify you have the activation cookie set. You can use the browser tools in Chrome or Firefox to check that a
XDEBUG_SESSION
cookie is set. - Verify that Xdebug is activated and attempting to start a debug session with your computer. You can use the
nc -l 9003
command line tool to open the Xdebug port. If everything is configured in PHP correctly, you should get a Xdebug init response when you load a webpage or run a Drush command. - Verify that the
xdebug.client_host
has been set correctly. For local debugging with Docker for Mac, this value should be host.docker.internal
. For remote debugging this value should be your IP address. If this value was not correctly determined, you can override it by setting the DOCKERHOST
environment variable. - When using Lando locally, in order to debug scripts run from the CLI you must first SSH into the CLI container via
lando ssh
. You won\u2019t be able to debug things by running lando drush
or lando php
.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#mac-specific-troubleshooting","title":"Mac specific troubleshooting","text":" -
Verify that Docker for Mac networking is not broken. On your host machine, run nc -l 9003
, then in a new terminal window, run:
Verify Docker for Mac networkingdocker compose run cli nc -zv host.docker.internal 9003\n
You should see a message like: host.docker.internal (192.168.65.2:9003) open
.
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#linux-specific-troubleshooting","title":"Linux specific troubleshooting","text":" -
Ensure the host host.docker.internal
can be reached. If docker
has been installed manually (and not through Docker Desktop), this host will not resolve. You can force this to resolve with an additional snippet in your docker-compose.yml
file (instructions taken from this blog post):
docker-compose.yml alterations for Linux services:\ncli:\nextra_hosts:\nhost.docker.internal: host-gateway\nphp:\nextra_hosts:\nhost.docker.internal: host-gateway\n
"},{"location":"using-lagoon-advanced/setting-up-xdebug-with-lagoon/#xdebug-2","title":"Xdebug 2","text":"If you're running older images you may still be using Xdebug version 2. All the information on this page still applies, but some of the configuration names and values have changes:
v3 v2 xdebug.mode xdebug.remote_enabled On xdebug.client_host xdebug.remote_host host.docker.internal
or your IP address xdebug.client_port xdebug.remote_port 9000"},{"location":"using-lagoon-advanced/simplesaml/","title":"SimpleSAML","text":""},{"location":"using-lagoon-advanced/simplesaml/#simplesamlphp","title":"SimpleSAMLphp","text":"This is an example of how to add SimpleSAMLphp to your project and then modify configuration to serve it via NGINX.
"},{"location":"using-lagoon-advanced/simplesaml/#requirements","title":"Requirements","text":"Add SimpleSAMLphp to your project:
Add SimpleSAMLphp to your project via Composercomposer req simplesamlphp/simplesamlphp\n
"},{"location":"using-lagoon-advanced/simplesaml/#modify-configuration-for-simplesamlphp","title":"Modify configuration for SimpleSAMLphp","text":"Copy authsources.php
and config.php
from vendor/simplesamlphp/simplesamlphp/config-templates
to somewhere outside vendor directory, such as conf/simplesamlphp
. You also need saml20-idp-remote.php
from vendor/simplesamlphp/simplesamlphp/metadata-templates
.
In config.php
set following values for Lagoon:
Base URL path where SimpleSAMLphp is accessed:
config.php 'baseurlpath' => 'https://YOUR_DOMAIN.TLD/simplesaml/',\n
Store sessions to database:
config.php 'store.type' => 'sql',\n 'store.sql.dsn' => vsprintf('mysql:host=%s;port=%s;dbname=%s', [\n getenv('MARIADB_HOST'),\n getenv('MARIADB_PORT'),\n getenv('MARIADB_DATABASE'),\n ]),\n
Alter other settings to your liking:
- Check the paths for logs and certs.
- Secure SimpleSAMLphp dashboard.
- Set up level of logging.
- Set
technicalcontact
and timezone
.
Add authsources (IdPs) to authsources.php
, see example:
authsources.php 'default-sp' => [\n 'saml:SP',\n // The entity ID of this SP.\n 'entityID' => 'https://YOUR_DOMAIN.TLD',\n // The entity ID of the IdP this should SP should contact.\n // Can be NULL/unset, in which case the user will be shown a list of available IdPs.\n 'idp' => 'https://YOUR_IDP_DOMAIN.TLD',\n // The URL to the discovery service.\n // Can be NULL/unset, in which case a builtin discovery service will be used.\n 'discoURL' => null,\n 'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',\n 'certificate' => '/app/conf/simplesamlphp/certs/saml.crt',\n 'privatekey' => '/app/conf/simplesamlphp/certs/saml.pem',\n 'redirect.sign' => TRUE,\n 'redirect.validate' => TRUE,\n 'authproc' => [\n 50 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6' => 'eduPersonPrincipalName',\n ],\n 51 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:2.5.4.42' => 'givenName',\n ],\n 52 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:2.5.4.4' => 'sn',\n ],\n 53 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:0.9.2342.19200300.100.1.3' => 'mail',\n ],\n ],\n ],\n
Add IdP metadata to saml20-idp-remote.php
, see example:
saml20-idp-remote.php<?php\n/**\n * SAML 2.0 remote IdP metadata for SimpleSAMLphp.\n *\n * Remember to remove the IdPs you don't use from this file.\n *\n * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-remote\n */\n/**\n * Some IdP.\n */\n$metadata['https://YOUR_IDP_DOMAIN.TLD'] = [\n'entityid' => 'https://YOUR_IDP_DOMAIN.TLD',\n'name' => [\n'en' => 'Some IdP',\n],\n'description' => 'Some IdP',\n...\n];\n
In your build process, copy configuration files to SimpleSAMLphp:
vendor/simplesamlphp/simplesamlphp/config/authsources.php
vendor/simplesamlphp/simplesamlphp/config/config.php
vendor/simplesamlphp/simplesamlphp/metadata/saml20-idp-remote.php
"},{"location":"using-lagoon-advanced/simplesaml/#create-nginx-conf-for-simplesamlphp","title":"Create NGINX conf for SimpleSAMLphp","text":"Create file lagoon/nginx/location_prepend_simplesamlphp.conf
:
location_prepend_simplesamlphp.conflocation ^~ /simplesaml {\nalias /app/vendor/simplesamlphp/simplesamlphp/www;\nlocation ~ ^(?<prefix>/simplesaml)(?<phpfile>.+?\\.php)(?<pathinfo>/.*)?$ {\ninclude fastcgi_params;\nfastcgi_pass ${NGINX_FASTCGI_PASS:-php}:9000;\nfastcgi_param SCRIPT_FILENAME $document_root$phpfile;\n# Must be prepended with the baseurlpath\nfastcgi_param SCRIPT_NAME /simplesaml$phpfile;\nfastcgi_param PATH_INFO $pathinfo if_not_empty;\n}\n}\n
This will route /simplesaml
URLs to SimpleSAMLphp in vendor.
"},{"location":"using-lagoon-advanced/simplesaml/#add-additional-nginx-conf-to-nginx-image","title":"Add additional NGINX conf to NGINX image","text":"Modify nginx.dockerfile
and add location_prepend_simplesamlphp.conf
to the image:
nginx.dockerfileARG CLI_IMAGE\nFROM ${CLI_IMAGE} AS cli\n\nFROM uselagoon/nginx-drupal\n\nCOPY --from=cli /app /app\n\nCOPY lagoon/nginx/location_prepend_simplesamlphp.conf /etc/nginx/conf.d/drupal/location_prepend_simplesamlphp.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/location_prepend_simplesamlphp.conf\n\n# Define where the Drupal Root is located\nENV WEBROOT=public\n
"},{"location":"using-lagoon-advanced/triggering-deployments/","title":"Triggering Deployments","text":""},{"location":"using-lagoon-advanced/triggering-deployments/#trigger-a-new-deployment-using-azure-pipelines","title":"Trigger a new deployment using Azure Pipelines","text":"In order to automatically trigger new deployments using Azure Pipelines follow these instructions:
- Add your deployment SSH private key to Azure as a secure file as
id_rsa_lagoon
. For more information about secure files have a look at the Azure Documentation Site. - Add the following configuration to your
azure-pipelines.yml
:
azure-pipelines.ymlpool:\nvmImage: 'ubuntu-latest'\nstages:\n# .. other stages\n- stage: Deploy\ncondition: and(succeeded(), in(variables['Build.SourceBranch'], 'refs/heads/staging', 'refs/heads/develop'))\njobs:\n- job: DeployLagoon\nsteps:\n- task: DownloadSecureFile@1\nname: lagoonSshKey\ndisplayName: 'Download Lagoon SSH key'\ninputs:\nsecureFile: id_rsa_lagoon\n- script: |\ncurl -L \"https://github.com/uselagoon/lagoon-cli/releases/download/v0.21.3/lagoon-cli-v0.21.3-linux-amd64\" -o ./lagoon\nchmod +x ./lagoon\ndisplayName: 'Download lagoon-cli'\n- script: ./lagoon login -i $(lagoonSshKey.secureFilePath)\ndisplayName: 'Log into Lagoon'\n- script: ./lagoon deploy branch -e $(Build.SourceBranchName) -p my-awesome-project -b $(Build.SourceBranchName) --force\ndisplayName: 'Trigger deployment using lagoon-cli'\n
This will trigger a new deployment whenever changes are made on the develop
or staging
branch. Adjust these values accordingly so they fit your deployment strategy and configuration.
"},{"location":"using-lagoon-advanced/triggering-deployments/#push-without-deploying","title":"Push without deploying","text":"There may be a case where you want to push without a deployment. Make sure your commit message contains \"[skip deploy]
\" or \"[deploy skip]
\" and Lagoon will not trigger a deployment from that commit.
"},{"location":"using-lagoon-advanced/using-harbor/","title":"Harbor","text":"Harbor is used as the default package repository for Lagoon when deploying to Kubernetes infrastructure. Harbor provides a Docker registry and a container security scanning solution provided by Trivy.
Note
When running Lagoon locally, the configuration for Harbor is handled entirely automagically.
If you are running Lagoon locally, you can access that UI at localhost:8084. The username is admin
and the password is admin
.
Note
If you are hosting a site with a provider, they may not allow customer access to the Harbor UI.
Once logged in, the first screen is a list of all repositories your user has access to. Each \"repository\" in Harbor correlates to a project in Lagoon.
Within each Harbor repository, you'll see a list of container images from all environments with a single Lagoon project.
From here, you can drill down into an individual container in order to see its details, including an overview of its security scan results.
"},{"location":"using-lagoon-advanced/using-harbor/security-scanning/","title":"Security Scanning","text":"Harbor comes with a built-in security scanning solution provided by the Trivy service. This service analyzes a specified container image for any installed packages, and collects the version numbers of those installed packages. The Trivy service then searches the National Vulnerability Database for any CVEs (common vulnerabilities and exposures) affecting those package versions. Trivy is also library aware, so it will scan any Composer files or other package library definition files and report any vulnerabilities found within those package versions. These vulnerabilities are then reported within Harbor for each individual container.
An example of a security scan in Harbor, showing applicable vulnerabilities for a scanned container:
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/","title":"Running Harbor Locally","text":"Lagoon supports running Harbor locally, where it makes use of MinIO as a storage backend, which is an AWS S3 compatible local storage solution.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/#settings","title":"Settings","text":"Harbor is composed of multiple containers, which all require different settings in order for them to run successfully.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/#environment-variables","title":"Environment Variables","text":"The following environment variables are required to be set in order for Harbor to properly start:
HARBOR_REGISTRY_STORAGE_AMAZON_BUCKET
- This needs to be set to the name of the AWS bucket which Harbor will save images to.
- Defaults to
harbor-images
when Lagoon is run locally or during CI testing.
HARBOR_REGISTRY_STORAGE_AMAZON_REGION
- This needs to be set to the AWS region in which Harbor's bucket is located.
- Defaults to
us-east-1
when Lagoon is run locally or during CI testing.
REGISTRY_STORAGE_S3_ACCESSKEY
- This needs to be set to the AWS access key Harbor should use to read and write to the AWS bucket.
- Defaults to an empty string when Lagoon is run locally or during CI testing, as MinIO does not require authentication.
REGISTRY_STORAGE_S3_SECRETKEY
- This needs to be set to the AWS secret key Harbor should use to read and write to the AWS bucket.
- Defaults to an empty string when Lagoon is run locally or during CI testing, as MinIO does not require authentication.
The following environment variables can be set if required:
HARBOR_REGISTRY_STORAGE_AMAZON_ENDPOINT
- If this variable is set, the Harbor registry will use its value as the address of the s3 entrypoint.
- Defaults to
https://s3.amazonaws.com
when this variable is not set.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/#container-specific-settings","title":"Container Specific Settings","text":"The following containers make use of configuration files:
- HarborRegistry
- HarborRegistryCtl
- Harbor-Core
- Harbor-Database
- Harbor-Jobservice
- Harbor-Trivy
The following containers do not require configuration files to run:
- Harbor-Nginx
- Harbor-Portal
- Harbor-Redis
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-core/","title":"Harbor-Core","text":"Harbor-Core requires a configuration file to start, which is located at /etc/core/app.conf
within the container. Any changes made to this config file are temporary and will not persist once the pod is restarted.
The configmap from which this config file is generated is stored within Lagoon in the services/harbor-core/harbor-core.yml
file. Any changes made to this configmap will be persisted across container restarts.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-core/#config-file-contents","title":"Config File Contents","text":" _REDIS_URL
- Tells harbor-core and the Chartmuseum service connection info for the Redis server.
- The default value is
harbor-redis:6379,100,
.
_REDIS_URL_REG
- The url which harborregistry should use to connect to the Redis server.
- The default value is
redis://harbor-redis:6379/2
.
ADMIRAL_URL
- Tells harbor-core where to find the admiral service.
- This service is not used with Lagoon's implementation of Harbor.
- The default value is
NA
.
CFG_EXPIRATION
- This value is not used.
- The default value is
5
.
CHART_CACHE_DRIVER
- Tells harbor-core where to store any uploaded charts.
- The default value is
redis
.
CLAIR_ADAPTER_URL
- The URL that harbor-core should use to connect to the harbor-trivy service.
- The default value is
http://harbor-trivy:8080
.
CLAIR_DB
- The database type harborclair should use.
- This value is not used, and is included only for legacy support
- The default value is
postgres
.
CLAIR_DB_HOST
- This value is not used, and is included only for legacy support
- Tells harbor-core where to find the harborclair service.
- The default value is
harbor-database
.
CLAIR_DB_PASSWORD
- The password used to access harborclair's postgres database.
- The default value is
test123
when run locally or during CI testing. - This value is not used, and is included only for legacy support
- This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
CLAIR_DB_PORT
- The port harborclair should use to connect to the harborclair server.
- This value is not used, and is included only for legacy support
- The default value is
5432
.
CLAIR_DB_SSLMODE
- Whether or not harborclair should use SSL to connect to the postgresql server.
- This value is not used, and is included only for legacy support
- The default value is
disable
.
CLAIR_DB_USERNAME
- The user harborclair should use to connect to the postgresql server.
- This value is not used, and is included only for legacy support
- The default value is
postgres
.
CLAIR_HEALTH_CHECK_SERVER_URL
- This value tells harbor-core where it should issue health checks to for the harbor-trivy service.
- The default value is
http://harbor-trivy:8080
CLAIR_URL
- The URL that harbor-core should use to connect to the harbor-trivy service.
- The default value is
http://harbor-trivy:6060
.
CONFIG_PATH
- Where harbor-core should look for its config file.
- The default value is
/etc/core/app.conf
.
CORE_SECRET
- This value is a pre-shared key that must match between the various services connecting to harbor-core.
- The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
CORE_URL
- The URL that harbor-core should publish to other Harbor services in order for them to connect to the harbor-core service.
- The default value is
http://harbor-core:8080
.
DATABASE_TYPE
- The database type Harbor should use.
- The default value is
postgresql
.
HARBOR_ADMIN_PASSWORD
- The password which should be used to access harbor using the
admin
user. - The default value is
admin
when run locally or during CI testing. - This value is retreived from a secret created when Harbor is first set up on a running Lagoon.
HARBOR_NGINX_ENDPOINT
- This environment variable tells harborregistry where its NGINX ingress controller, harbor-nginx, is running in order to construct proper push and pull instructions in the UI, among other things.
- The default value is set to
http://harbor-nginx:8080
when run locally or during CI testing. - Lagoon attempts to obtain and set this variable automagically when run in production. If that process fails, this service will fail to run.
HTTP_PROXY
- The default value is an empty string.
HTTPS_PROXY
- The default value is an empty string.
JOBSERVICE_SECRET
- This value is a pre-shared key that must match between the various services connecting to harbor-jobservice.
- The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
JOBSERVICE_URL
- The URL that harbor-core should use to connect to the harbor-jobservice service.
- The default value is
http://harbor-jobservice:8080
.
LOG_LEVEL
- The default log level of the harbor-core service.
- The default value is
error
.
NO_PROXY
- A list of hosts which should never have their requests proxied.
- The default is
harbor-core,harbor-jobservice,harbor-database,harbor-trivy,harborregistry,harbor-portal,127.0.0.1,localhost,.local,.internal
.
PORTAL_URL
- This value tells the service where to connect to the harbor-portal service.
- The default value is
http://harbor-portal:8080
.
POSTGRESQL_DATABASE
- The postgres database harbor-core should use when connecting to the postgresql server.
- The default value is
registry
.
POSTGRESQL_HOST
- Where harbor-core should connect to the postgresql server.
- The default value is
harbor-database
.
POSTGRESQL_MAX_IDLE_CONNS
- The maximum number of idle connections harbor-core should leave open to the postgresql server.
- The default value is
50
.
POSTGRESQL_MAX_OPEN_CONNS
- The maximum number of open connections harbor-core should have to the postgresql server.
- The default value is
100
.
POSTGRESQL_PASSWORD
- The password Harbor should use to connect to the postgresql server.
- The default value is a randomly generated value.
POSTGRESQL_PORT
- The port harbor-core should use to connect to the postgresql server.
- The default value is
5432
.
POSTGRESQL_USERNAME
- The username harbor-core should use to connect to the postgresql server.
- The default value is
postgres
.
POSTGRESQL_SSLMODE
- Whether or not harbor-core should use SSL to connect to the postgresql server.
- The default value is
disable
.
REGISTRY_HTTP_SECRET
- This value is a pre-shared key that must match between the various services connecting to harborregistry.
- The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retreived from a secret created when Harbor is first set up on a running Lagoon.
REGISTRY_STORAGE_PROVIDER_NAME
- The storage backend that harborregistry should use.
- The default value is
s3
.
REGISTRY_URL
- The URL that harbor-core should use to connect to the harborregistry service..
- The default value is
http://harborregistry:5000
.
REGISTRYCTL_URL
- This value tells the service where to connect to the harborregistryctl service.
- The default value is set to
http://harborregistryctl:8080
.
ROBOT_TOKEN_DURATION
- This values sets how many days each issues robot token should be valid for.
- The default value is set to
999
.
SYNC_REGISTRY
- This value is not used.
- The default value is
false
.
TOKEN_SERVICE_URL
- The URL that the harbor-core service publishes to other services in order to retrieve a JWT token.
- The default value is
http://harbor-core:8080/service/token
.
TRIVY_ADAPTER_URL
- The URL that the harbor-core service should use to connect to the harbor-trivy service.
- The default value is
http://harbor-trivy:8080
.
WITH_CHARTMUSEUM
- Tells harbor-core if the Chartmuseum service is being used.
- This service is not used with Lagoon's implementation of Harbor.
- The default value is
false
.
WITH_CLAIR
- Tells harbor-core if the harborclair service is being used.
- Lagoon does use this service in its implementation of Harbor.
- The default value is
true
.
WITH_NOTARY
- Tells harbor-core if the Notary service is being used.
- This service is not used with Lagoon's implementation of Harbor.
- The default value is
false
.
WITH_TRIVY
- Tells harbor-core if the Trivy service is being used.
- The default value is
true
.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-database/","title":"Harbor-Database","text":"Harbor-Database requires specific environment variables to be set in order to start, which are stored within secrets as described in the services/harbor-database/harbor-core.yml
file.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-database/#config-file-contents","title":"Config File Contents","text":" POSTGRES_DB
- The default database to be set up when initializing the Postgres service.
- The default value is
postgres
.
POSTGRES_PASSWORD
- The root password for the Postgres database.
- The default value is
test123
. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
POSTGRES_USER
- The default user to be set up when initializing the Postgres service.
- The default value is
postgres
.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-jobservice/","title":"Harbor-Jobservice","text":"Harbor-Jobservice requires a configuration file to start, which is located at /etc/jobservice/config.yml
within the container. Any changes made to this config file are temporary and will not persist once the pod is restarted.
The configmap from which this config file is generated is stored within Lagoon in the services/harbor-jobservice/harbor-jobservice.yml
file. Any changes made to this configmap will be persisted across container restarts.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-jobservice/#config-file-contents","title":"Config File Contents","text":" CORE_URL
- This value tells
harbor-jobservice
where harbor-core
can be reached. - The default value is
http://harbor-core:8080
.
CORE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-core
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
HTTP_PROXY
- The default value is an empty string.
HTTPS_PROXY
- The default value is an empty string.
JOBSERVICE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-jobservice
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
LOG_LEVEL
- The logging level this service should use.
- The default value is
error
. - This can also be set to
debug
to enable very verbose logging.
NO_PROXY
- A list of hosts which should never have their requests proxied.
- The default is
harbor-core,harbor-jobservice,harbor-database,harbor-trivy,harborregistry,harbor-portal,127.0.0.1,localhost,.local,.internal
.
REGISTRY_CONTROLLER_URL
- This value tells the service where to connect to the
harborregistryctl
service. - The default value is set to
http://harborregistryctl:8080
SCANNER_LOG_LEVEL
- The logging level the scanning service should use.
- The default value is
error
. - This can also be set to
debug
to enable very verbose logging.
SCANNER_STORE_REDIS_URL
- This value tells
harbor-trivy
how to connect to its Redis store. - The default value is
redis://harbor-redis:6379/4
.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-trivy/","title":"Harbor-Trivy","text":"Harbor-Trivy is configured via specific environment variables and does not use a config file.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harbor-trivy/#environment-variables","title":"Environment Variables","text":" SCANNER_LOG_LEVEL
- The logging level this service should use.
- The default value is
error
. - This can be set to
debug
to enable very verbose logging.
SCANNER_STORE_REDIS_URL
- This value tells harbor-trivy how to connect to its Redis store.
- The default value is
redis://harbor-redis:6379/4
.
SCANNER_JOB_QUEUE_REDIS_URL
- This value tells harbor-trivy how to connect to its Redis store.
- The default value is
redis://harbor-redis:6379/4
.
SCANNER_TRIVY_VULN_TYPE
- This value tells harbor-trivy what types of vulnerabilities it should be searching for.
- The default value is
os,library
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harborregistry/","title":"HarborRegistry","text":"HarborRegistry requires a configuration file to start, which is located at /etc/registry/config.yml
within the container. Any changes made to this config file are temporary and will not persist once the pod is restarted.
This config file is stored within the services/harborregistry/harborregistry.yml
file and loaded into the container as /etc/registry/pre-config.yml
.
A custom container entrypoint, services/harborregistry/entrypoint.sh
, then transposes provided environment variables into this config file and saves the results as /etc/registry/config.yml
.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harborregistry/#config-file-contents","title":"Config File Contents","text":" CORE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-core
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
HARBOR_NGINX_ENDPOINT
- This environment variable tells
harborregistry
where its NGINX ingress controller, harbor-nginx
, is running in order to construct proper push and pull instructions in the UI, among other things. - The default value is set to
http://harbor-nginx:8080
when run locally or during CI testing. - Lagoon attempts to obtain and set this variable automagically when run in production. If that process fails, this service will fail to run.
JOBSERVICE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-jobservice
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
REGISTRY_HTTP_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harborregistry
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
REGISTRY_REDIS_PASSWORD
- This environment variable tells
harborregistryctl
the password that should be used to connect to Redis. - The default value is an empty string.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harborregistryctl/","title":"HarborRegistryCtl","text":"HarborRegistryCtl requires a configuration file to start, which is located at /etc/registryctl/config.yml
within the container. Any changes made to this config file are temporary and will not persist once the pod is restarted.
The configmap from which this config file is generated is stored within Lagoon in the services/harborregistryctl/harborregistry.yml
file. Any changes made to this configmap will be persisted across container restarts.
"},{"location":"using-lagoon-advanced/using-harbor/harbor-settings/harborregistryctl/#config-file-contents","title":"Config File Contents","text":" CORE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-core
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
JOBSERVICE_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harbor-jobservice
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
REGISTRY_HTTP_SECRET
- This value is a pre-shared key that must match between the various services connecting to
harborregistry
. - The default value is set to
secret123
when Harbor is run locally or during CI testing. - This value is retrieved from a secret created when Harbor is first set up on a running Lagoon.
REGISTRY_REDIS_PASSWORD
- This environment variable tells
harborregistryctl
the password that should be used to connect to Redis. - The default value is an empty string.
"},{"location":"using-lagoon-the-basics/","title":"Using Lagoon - Overview","text":"This section covers some of the basic features and functionality in Lagoon. If you're familiar with these, move on to Using Lagoon - Advanced.
If you need help, contact your Lagoon administrator or reach out to the community and maintainers in our Discord.
"},{"location":"using-lagoon-the-basics/#requirements","title":"Requirements","text":""},{"location":"using-lagoon-the-basics/#docker","title":"Docker","text":"To run a Lagoon Project, your system must meet the requirements to run Docker. We suggest installing the latest version of Docker for your workstation. You can download Docker here. We also suggest allowing Docker at least 4 CPUs and 4 GB RAM.
"},{"location":"using-lagoon-the-basics/#local-development-environments","title":"Local Development Environments","text":"You can choose from pygmy, Lando, or DDEV - it's up to you!
Learn more about Lagoon and Local Development Environments
"},{"location":"using-lagoon-the-basics/#step-by-step-guides","title":"Step by Step Guides","text":" - General: set up a new project in Lagoon
- General: first deployment
- Drupal: first deployment in Drupal
- Drupal: Lagoonize your Drupal site
- All: build and deployment process of Lagoon
"},{"location":"using-lagoon-the-basics/#overview-of-lagoon-configuration-files","title":"Overview of Lagoon Configuration Files","text":""},{"location":"using-lagoon-the-basics/#lagoonyml","title":".lagoon.yml
","text":"This is the main file that will be used by Lagoon to understand what should be deployed, as well as many other things. See documentation for .lagoon.yml
.
"},{"location":"using-lagoon-the-basics/#docker-composeyml","title":"docker-compose.yml
","text":"This file is used by Docker Compose
to start your local development environment. Lagoon also uses it to understand which of the services should be deployed, which type, and how to build them. This happens via labels
. See documentation for docker-compose.yml
.
"},{"location":"using-lagoon-the-basics/#dockerfiles","title":"Dockerfiles","text":"Some Docker images and containers need additional customizations from the provided images. This usually has two reasons:
- Application code: Containers like NGINX, PHP, Node.js, etc, need the actual programming code within their images. This is done during a Docker build step, which is configured in a Dockerfile. Lagoon has full support for Docker, and therefore also allows you full control over the resulting images via Dockerfile customizations.
- Customization of images: Lagoon also allows you to customize the base images according to your needs. This can be to inject an additional environment variable, change a service configuration, or even install additional tools. We advise caution with installing additional tools to the Docker images, as you will need to maintain any adaptions in the future!
"},{"location":"using-lagoon-the-basics/#supported-services-base-images-by-lagoon","title":"Supported Services & Base Images by Lagoon","text":"Type Versions Dockerfile MariaDB 10.4, 10.5, 10.6, 10.11 mariadb/Dockerfile PostgreSQL 11, 12, 13, 14, 15, 16 postgres/Dockerfile MongoDB 4 mongo/Dockerfile NGINX openresty/1.25 nginx/Dockerfile Node.js 18, 20, 22 node/Dockerfile PHP FPM 8.1, 8.2, 8.3 php/fpm/Dockerfile PHP CLI 8.1, 8.2, 8.3 php/cli/Dockerfile Python 3.8, 3.9, 3.10, 3.11, 3.12 python/Dockerfile Redis 6, 7 redis/Dockerfile Solr 8, 9 solr/Dockerfile Varnish 6, 7 varnish/Dockerfile Opensearch 2 opensearch/Dockerfiles RabbitMQ 3.10 rabbitmq/Dockerfile Ruby 3.1, 3.2, 3.3 ruby/Dockerfile All images are pushed to https://hub.docker.com/u/uselagoon. We suggest always using the latest tag (like uselagoon/nginx:latest
) as they are kept up to date in terms of features and security.
If you choose to use a specific Lagoon version of an image like uselagoon/nginx:20.10.0
or uselagoon/node-10:20.10.0
it is your own responsibility to upgrade the version of the images as soon as a new Lagoon version is released!
"},{"location":"using-lagoon-the-basics/configure-webhooks/","title":"Configure Webhooks","text":"Your Lagoon administrator will also give you the route to the webhook-handler
. You will add this to your repository as an outgoing webhook, and choose which events to send to Lagoon. Typically, you will send all push and pull request events. In Lagoon it is possible to add a regular expression to determine which branches and pull requests actually result in a deploy, and your Lagoon administrator can set that up for you. For example, all branches that start with feature-
could be deployed to Lagoon.
Info for amazee.io customers If you are an amazee.io customer, the route to the webhook-handler is: https://hooks.lagoon.amazeeio.cloud
.
Danger
Managing the following settings will require you to have a high level of access to these repositories, which will be controlled by your organization. If you cannot access these settings, please contact your systems administrator or the appropriate person within your organization.
"},{"location":"using-lagoon-the-basics/configure-webhooks/#github","title":"GitHub","text":" - Proceed to Settings -> Webhooks ->
Add webhook
in your GitHub repository. - The
Payload URL
is the route to the webhook-handler
of your Lagoon instance, provided by your Lagoon administrator. - Set
Content type
to application/json
. - Choose \"
Let me select individual events
.\" - Choose which events will trigger your webhook. We suggest that you send
Push
and Pull request
events, and then filter further in the Lagoon configuration of your project. - Make sure the webhook is set to
Active
. - Click
Add webhook
to save your configuration.
"},{"location":"using-lagoon-the-basics/configure-webhooks/#gitlab","title":"GitLab","text":" - Navigate to Settings -> Integrations in your GitLab repository.
- The
URL
is the route to the webhook-handler
of your Lagoon instance, provided by your Lagoon administrator. - Select the
Trigger
events which will send a notification to Lagoon. We suggest that you send Push events
and Merge request events
, and then filter further in the Lagoon configuration of your project. - Click
Add webhook
to save your configuration.
"},{"location":"using-lagoon-the-basics/configure-webhooks/#bitbucket","title":"Bitbucket","text":" - Navigate to Settings -> Webhooks -> Add new webhook in your repository.
Title
is for your reference. URL
is the route to the webhook-handler
of your Lagoon instance, provided by your Lagoon administrator. -
Choose from a full list of triggers
and select the following:
- Repository
- Push
- Pull Request
- Created
- Updated
- Approved
- Approval removed
- Merged
- Declined
5. Click Save
to save the webhook configurations for Bitbucket.
"},{"location":"using-lagoon-the-basics/first-deployment/","title":"First Deployment","text":"Note
If you are deploying a Drupal Project, skip this and read the Drupal-specific first deployment documentation.
"},{"location":"using-lagoon-the-basics/first-deployment/#1-make-sure-you-are-ready","title":"1. Make sure you are ready","text":"In order to make your first deployment a successful one, please make sure that your project is Lagoonized and that you have set up the project in Lagoon. If not, or you're not sure, or that doesn't sound familiar, don't worry, go back and follow the Step-by-Step Guides which show you how this works, and then come back and deploy!
"},{"location":"using-lagoon-the-basics/first-deployment/#2-push","title":"2. Push","text":"With Lagoon, you create a new deployment by pushing into a branch that is configured to be deployed.
If you don't have any new code to push, don't worry! Run:
Git pushgit commit --allow-empty -m \"go, go! Power Rangers!\"\ngit push\n
This will trigger a push, and your Git hosting will inform Lagoon about this push via the configured webhook.
If all is correct, you should see a notification in your configured chat system. (Contact your Lagoon administrator for this):
This informs you that Lagoon has just started to deploy your code. Depending on the size of the code and amount of containers, this will take a couple of seconds. Just relax. If you want to know what's happening now, check out the Build and Deploy Process of Lagoon.
You can also check your Lagoon UI to see the progress of any deployment. (Contact your Lagoon administrator for this).
"},{"location":"using-lagoon-the-basics/first-deployment/#3-its-done","title":"3. It's done","text":"As soon as Lagoon is done building and deploying it will send a second notification to the chat system, here an example:
It tells you:
- Which project has been deployed.
- Which branch and Git SHA have been deployed.
- A link to the full logs of the build and deployment.
- Links to all routes (URLs) where the environment can be reached.
You can also quickly tell what kind of notification it is by the emoji at the beginning - whether it's just info that the build has started, a success, or fail.
That's it! We hope that wasn't too hard - making devOps accessible is what we are striving for!
"},{"location":"using-lagoon-the-basics/first-deployment/#but-wait-how-about-other-branches-or-the-production-environment","title":"But wait, how about other branches or the production environment?","text":"That's the beauty of Lagoon: it's exactly the same! Just push the name of the branch and that one will be deployed.
"},{"location":"using-lagoon-the-basics/first-deployment/#failure-dont-worry","title":"Failure? Don't worry","text":"Did the deployment fail? Oh no! But we're here to help:
- If you deployed a Drupal site, make sure to read the Drupal-specific first deployment documentation, which explains why this happens.
- Click on the
Logs
link in the error notification, it will tell you where in the deployment process the failure happened. - If you can't figure it out, just ask your Lagoon administrator, they are here to help!
- Reach out to us in your support channel or in the community Discord.
"},{"location":"using-lagoon-the-basics/going-live/","title":"Going Live","text":"Congratulations, you're this close to going live with your website on Lagoon! In order to make this as seamless as possible, we've got this final checklist for you. It leads you through the last few things you should check before taking your site live.
"},{"location":"using-lagoon-the-basics/going-live/#check-your-lagoonyml","title":"Check your .lagoon.yml
","text":""},{"location":"using-lagoon-the-basics/going-live/#routes-ssl","title":"Routes / SSL","text":"Check to be sure that all routes have been set up in your .lagoon.yml
. Be aware that if you don't point the domains towards Lagoon, you should disable Let's Encrypt (LE) certificate creation, as it will lead to issues. Domains not pointing towards Lagoon will be disabled after a while in order to not exceed the Let's Encrypt quotas.
If you use Certificate Authority (CA) signed certificates, you can set tls-acme
to false
, but leave the insecure
flag set to Allow
or Redirect
. In the case of CA certificates, contact your Lagoon administrator with the routes and the SSL certificate that needs to be put in place.
.lagoon.ymlenvironments:\nmain:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'false'\ninsecure: Allow\n- www.example.com:\ntls-acme: 'false'\ninsecure: Allow\n
As soon as the DNS entries point towards your Lagoon installation, you can switch the flags: tls-acme
to true
and insecure
to Redirect
.lagoon.ymlenvironments:\nmain:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'true'\ninsecure: Redirect\n- www.example.com:\ntls-acme: 'true'\ninsecure: Redirect\n
Note
As checking every page of your website might be a bit a tedious job, you can make use of mixed-content-scan. This will crawl the entire site and give you back pages that include assets from a non-HTTPS site.
"},{"location":"using-lagoon-the-basics/going-live/#redirects","title":"Redirects","text":"If you need non-www to www redirects, make sure you have them set up in the redirects-map.conf
- see Documentation.
"},{"location":"using-lagoon-the-basics/going-live/#cron-jobs","title":"Cron jobs","text":"Check if your cron jobs have been set up for your production environment - see .lagoon.yml
.
"},{"location":"using-lagoon-the-basics/going-live/#dns","title":"DNS","text":"To make it as smooth as possible for you to get your site pointing to our servers, we have dedicated load-balancer DNS records. Those technical DNS resource records are used for getting your site linked to the amazee.io infrastructure and serve no other purpose. If you are in doubt of the CNAME record, contact your Lagoon administrator about the exact CNAME you need to set up.
Example on amazee.io : <region-identifier>.amazee.io
Before you switch over your domain to Lagoon, make sure you lower the Time-to-Live (TTL) before you go live. This will ensure that the switch from the old to the new servers will go quickly. We usually advise a TTL of 300-600 seconds prior to the DNS switch. More information about TTL.
Info
This information only relates to amazee.io hosted projects, and will shortly be removed from these docs and added to amazee.io specific ones
"},{"location":"using-lagoon-the-basics/going-live/#recommended-settings-for-fastly","title":"Recommended settings for Fastly:","text":""},{"location":"using-lagoon-the-basics/going-live/#subdomains-cname","title":"Subdomains (CNAME)","text":"The recommended method of pointing your subdomain's (e.g. www.example.com) DNS records at Lagoon is via a CNAME record as shown below:
CNAME
: cdn.amazee.io
"},{"location":"using-lagoon-the-basics/going-live/#root-domains-aaaaa","title":"Root domains (A/AAAA)","text":"Configuring the root domain (e.g. example.com.) can be tricky because the DNS specification does not allow root domains to point to a CNAME. Therefore, the following A and AAAA records should be used. Please ensure you set up individual records for each IP listed below:
A
: 151.101.2.191
A
: 151.101.66.191
A
: 151.101.130.191
A
: 151.101.194.191
AAAA
: 2a04:4e42::703
AAAA
: 2a04:4e42:200::703
AAAA
: 2a04:4e42:400::703
AAAA
: 2a04:4e42:600::703
"},{"location":"using-lagoon-the-basics/going-live/#production-environment","title":"Production environment","text":"Lagoon understands the concept of development and production environments. Development environments automatically send noindex
and nofollow
headers in order to prohibit indexing by search engines.
X-Robots-Tag: noindex, nofollow
During project setup, the production environment should already be defined. If that's omitted, your environment will run in development mode. You can check if the environment is set as production environment in the Lagoon user interface. If the production environment is not set, let your Lagoon administrator know, and they will configure the system accordingly.
"},{"location":"using-lagoon-the-basics/lagoon-build-errors-and-warnings/","title":"Lagoon Build Errors and Warnings","text":"Newer releases of Lagoon have the capability to identify potential issues with the build, and highlight them as warnings without failing. This is also a way for the Lagoon team to inform users of pending deprecations and changes to functionality.
For example, if the Lagoon team makes a change to a setting in lagoon.yml
, and there\u2019s something that users need to change, the warning will mention it, so users will be able to change it before it becomes a breaking change. They should be resolved ASAP wherever possible, as future releases of Lagoon may not be able to handle the errors, but they shouldn't stop your build.
If you aren't sure how to resolve these errors, please reach out to your Lagoon administrator, or ask a question in the Lagoon community.
"},{"location":"using-lagoon-the-basics/lagoon-build-errors-and-warnings/#docker-compose-errors","title":"Docker Compose Errors","text":"Please also see the section on Common Docker Compose Issues, as some of these issues may be covered there
Lagoon Build output indicating env_file error> an env_file is defined in your docker-compose file, but no matching file found\n
Docker Compose expects a referenced env file to be present at build time, but that env file is only present in local development, or has been excluded from the Dockerfile. The Lagoon team is working to hopefully allow Docker Compose to ignore this error, so this warning will remain until we have a resolution.
Lagoon Build output indicating string key error> an invalid string key was detected in your docker-compose file\n
There is an error in your Docker Compose file, most likely relating to a malformed or misused alias or anchor. The error message should help you understand where.
Lagoon Build output indicating yaml validation error> There are yaml validation errors in your docker-compose file that should be corrected\n
There is an error in your Docker Compose file, most likely relating to a malformed or misused alias or anchor. The error message should help you understand where.
"},{"location":"using-lagoon-the-basics/lagoon-build-errors-and-warnings/#deprecated-images","title":"Deprecated Images","text":"Please see the dedicated page on how to handle this warning
"},{"location":"using-lagoon-the-basics/local-development-environments/","title":"Local Development Environments","text":"Even though Lagoon has only a hard dependency on Docker and Docker Compose (which is mostly shipped with Docker) there are some things which are nice for local development that are not included in Docker:
- An HTTP reverse proxy for nice URLs and HTTPS offloading.
- A DNS system so we don't have to remember IP addresses.
- SSH agents to use SSH keys within containers.
- A system that receives and displays mail locally.
Warning You do not need to install Lagoon locally to use it locally! That sounds confusing but follow the documentation. Lagoon is the system that deploys your local development environment to your production environment, it's not the environment itself.
"},{"location":"using-lagoon-the-basics/local-development-environments/#pygmy-ddev-or-lando-the-choice-is-yours","title":"pygmy, DDEV, or Lando - the choice is yours","text":""},{"location":"using-lagoon-the-basics/local-development-environments/#pygmy","title":"pygmy","text":"Lagoon has traditionally worked best with pygmy
, which is a preconfigured system of the above tools and works out of the box with Lagoon. It lives at https://github.com/pygmystack/pygmy
pygmy
is written in Golang, so to install it, run:
Install with HomeBrewbrew tap pygmystack/pygmy && brew install pygmy\n
For detailed usage or installation info on pygmy, see its documentation.
"},{"location":"using-lagoon-the-basics/local-development-environments/#lando","title":"Lando","text":"Lagoon is well-integrated with Lando! For more information, please see the documentation at https://docs.lando.dev/config/lagoon.html to get yourself up and running.
Lando's workflow for Lagoon will be familiar to users of Lando, and will also be the easiest way for Lagoon newcomers to get up and running. Pygmy presents a closer integration with Docker, which will lend itself better to more complex scenarios and use cases but will also require a deeper understanding.
"},{"location":"using-lagoon-the-basics/local-development-environments/#ddev","title":"DDEV","text":"Lagoon is also supported on DDEV! Check out their documentation to get started: https://ddev.readthedocs.io/en/stable/users/providers/lagoon/.
We have previously evaluated adding support for other systems like Docksal and Docker4Drupal, and while we may add support for these in the future, our current focus is on supporting our current tools.
"},{"location":"using-lagoon-the-basics/setup-project/","title":"Set Up a New Project","text":"Note
We are working hard on getting our CLI and GraphQL API set up to allow everyone using Lagoon to set up and configure their projects themselves. Right now, it needs more testing before we can release those features, so hold tight!
Until then, the setup of a new project involves talking to your Lagoon administrator, which is ok, as they are much friendlier than APIs. \ud83d\ude0a
Please have the following information ready for your Lagoon administrator:
- A name you would like the project to be known by
- This name can only contain lowercase characters, numbers and dashes
- Double dashes (
--
) are not allowed within a project name
- SSH public keys, email addresses and the names of everybody that will work on this project. Here are instructions for generating and copying SSH keys for GitHub, GitLab, and Bitbucket.
- The URL of the Git repository where your code is hosted (
git@example.com:test/test.git
). - The name of the Git branch you would like to use for your production environment (see Environment Types for details about the environments).
- Which branches and pull requests you would like to deploy to your additional environments. With Lagoon, you can filter branches and pull requests by name with regular expressions, and your Lagoon administrator can get this set up for you.
We suggest deploying specific important branches (like develop
and main
) and pull requests. But that's all up to you! (see Workflows for some more information)
"},{"location":"using-lagoon-the-basics/setup-project/#1-make-sure-your-project-is-lagoonized","title":"1. Make sure your project is Lagoonized","text":"This means that the .lagoon.yml
and docker-compose.yml
files are available in your Git repository and configured accordingly.
If this is not the case, check out the list of Step-by-Step Guides on how to do so before proceeding.
"},{"location":"using-lagoon-the-basics/setup-project/#2-provide-access-to-your-code","title":"2. Provide access to your code","text":"In order to deploy your code, Lagoon needs access to it. By design and for security, Lagoon only needs read access to your Git repository.
You may need your Lagoon administrator to tell you the SSH public key or the Git account to give read access to.
"},{"location":"using-lagoon-the-basics/setup-project/#3-configure-webhooks","title":"3. Configure Webhooks","text":"Lagoon needs to be informed about a couple of events that are happening to your Git repository. Currently these are pushes and pull requests, but we may add more in the future.
As Lagoon supports many different Git hosts, we have split off those instructions into this documentation: Configure Webhooks.
"},{"location":"using-lagoon-the-basics/setup-project/#4-next-first-deployment","title":"4. Next: First deployment","text":"Congratulations, you are now ready to run your first deployment.
"},{"location":"ja/#lagoon-kubernetes","title":"Lagoon - Kubernetes\u5411\u3051\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30c7\u30ea\u30d0\u30ea\u30fc\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0","text":"Lagoon\u306f\u958b\u767a\u8005\u304c\u7406\u60f3\u3068\u3059\u308b\u3082\u306e\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u305d\u308c\u306f\u958b\u767a\u8005\u304c\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u3067\u307e\u3063\u305f\u304f\u540c\u3058\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3059\u308b\u30b7\u30b9\u30c6\u30e0\u3067\u3059\u3002\u540c\u3058Docker\u30a4\u30e1\u30fc\u30b8\u3001\u540c\u3058\u30b5\u30fc\u30d3\u30b9\u8a2d\u5b9a\u3001\u305d\u3057\u3066\u540c\u3058\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/#_1","title":"\u306f\u3058\u3081\u306b","text":"\u3042\u306a\u305f\u304cLagoon\u3092\u4f7f\u7528\u3057\u3066\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3084\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30db\u30b9\u30c8\u3057\u305f\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Lagoon\u306e\u6a5f\u80fd\u306b\u3064\u3044\u3066\u3088\u308a\u6df1\u304f\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u306f\u3001Lagoon\u306e\u9ad8\u5ea6\u306a\u4f7f\u3044\u65b9\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
Lagoon\u306e\u4ed5\u7d44\u307f\u3092\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u306f\u3001Lagoon\u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u305d\u3057\u3066\u3001\u3088\u308a\u6df1\u3044\u7406\u89e3\u306e\u305f\u3081\u306b\u3001Lagoon\u306e\u9ad8\u5ea6\u306a\u6982\u5ff5\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u3042\u306a\u305f\u304cLagoon\u3092\u958b\u767a\u3057\u305f\u3044(\u6a5f\u80fd\u3092\u8ffd\u52a0\u3001\u30d0\u30b0\u3092\u4fee\u6b63)\u5834\u5408\u306f\u3001Lagoon\u306e\u958b\u767a\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/#tldr-lagoon","title":"TL;DR: Lagoon\u306e\u4ed5\u7d44\u307f","text":" - \u958b\u767a\u8005\u306f\u3001YAML \u30d5\u30a1\u30a4\u30eb\u5185\u3067\u5fc5\u8981\u306a\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3001\u8a2d\u5b9a\u3057\u307e\u3059\u3002
- \u4fee\u6b63\u3057\u305f\u30b3\u30fc\u30c9\u3092 Git \u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
- Lagoon \u306f YAML \u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u3057\u3001\u5fc5\u8981\u306a\u69cb\u6210\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
- Lagoon \u306f\u5fc5\u8981\u306a Docker \u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002
- Lagoon \u306f\u305d\u308c\u3089\u3092 Docker \u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
- Lagoon \u306f Kubernetes \u306b\u5fc5\u8981\u306a\u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
- Lagoon \u306f\u30b3\u30f3\u30c6\u30ca\u306e\u5c55\u958b\u3092\u76e3\u8996\u3057\u307e\u3059\u3002
- \u3059\u3079\u3066\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001Lagoon \u306f\u3055\u307e\u3056\u307e\u306a\u65b9\u6cd5 (Slack\u3001\u30e1\u30fc\u30eb\u3001Web \u30b5\u30a4\u30c8\u306a\u3069) \u3067\u958b\u767a\u8005\u306b\u901a\u77e5\u3057\u307e\u3059\u3002
"},{"location":"ja/#_2","title":"\u30d8\u30eb\u30d7","text":"\u8cea\u554f\u3084\u30a2\u30a4\u30c7\u30a2\u304c\u3042\u308a\u307e\u3057\u305f\u3089\u30b3\u30fc\u30c9\u30e1\u30f3\u30c6\u30ca\u30fc\u3084\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30bf\u306b\u4f1a\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
Lagoon Discord\u306e\u4f1a\u8a71\u3078\u3054\u53c2\u52a0\u304f\u3060\u3055\u3044\uff1ahttps://discord.gg/te5hHe95JE
"},{"location":"ja/#lagoon_1","title":"Lagoon\u306b\u3064\u3044\u3066","text":" - Lagoon \u306f\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3068\u30d3\u30eb\u30c9\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u975e\u5e38\u306b\u8907\u96d1\u3067\u3059\u3002\u8907\u6570\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30bd\u30fc\u30b9\u3001\u8907\u6570\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u3001\u8907\u6570\u306e\u901a\u77e5\u30b7\u30b9\u30c6\u30e0\u304c\u3042\u308a\u307e\u3059\u3002\u5404\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306f1\u30641\u3064\u304c\u7279\u6709\u306e\u3082\u306e\u3067\u3042\u308a\u3001\u6570\u79d2\u304b\u3089\u6570\u6642\u9593\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u67d4\u8edf\u6027\u3068\u5805\u7262\u6027\u3092\u8003\u616e\u3057\u3066\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0 \u30b7\u30b9\u30c6\u30e0\u3092\u4ecb\u3057\u3066\u901a\u4fe1\u3059\u308b\u305f\u3081\u3001\u500b\u3005\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u30b9\u30b1\u30fc\u30eb\u30a2\u30c3\u30d7\u304a\u3088\u3073\u30b9\u30b1\u30fc\u30eb\u30c0\u30a6\u30f3\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u500b\u3005\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30c0\u30a6\u30f3\u30bf\u30a4\u30e0\u3092\u4e57\u308a\u5207\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001\u4ed6\u306e\u90e8\u5206\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u3053\u3068\u306a\u304f\u3001\u672c\u756a\u74b0\u5883\u3067 Lagoon \u306e\u65b0\u3057\u3044\u90e8\u5206\u3092\u8a66\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
- Lagoon \u3067\u306f\u591a\u304f\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5404\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u306f\u305d\u308c\u305e\u308c\u56fa\u6709\u306e\u9577\u6240\u304c\u3042\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u3001\u5404\u30b5\u30fc\u30d3\u30b9\u306b\u6700\u3082\u9069\u3057\u305f\u8a00\u8a9e\u3092\u6c7a\u5b9a\u3059\u308b\u3088\u3046\u52aa\u3081\u3066\u3044\u307e\u3059\u3002\u73fe\u5728\u3001Lagoon \u306e\u591a\u304f\u306f Node.js \u3067\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u6700\u521d\u306bNode.js\u3092\u4f7f\u3044\u59cb\u3081\u305f\u304b\u3089\u3060\u3051\u3067\u306a\u304f\u3001Node.js\u304cwebhooks\u3001\u30bf\u30b9\u30af\u306a\u3069\u306e\u975e\u540c\u671f\u51e6\u7406\u3092\u53ef\u80fd\u306b\u3059\u308b\u304b\u3089\u3067\u3059\u3002\u4e00\u90e8\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3092\u8003\u3048\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u306e\u7d20\u6674\u3089\u3057\u3044\u3068\u3053\u308d\u3067\u3042\u308a\u3001\u4ed6\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3078\u306e\u5f71\u97ff\u3092\u61f8\u5ff5\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u4e00\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5225\u306e\u8a00\u8a9e\u3067\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- Lagoon\u306fDrupal\u7279\u6709\u306e\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u4efb\u610f\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002Drupal\u7528\u306e\u65e2\u5b58\u306eDocker\u30a4\u30e1\u30fc\u30b8\u304c\u3042\u308a\u3001Drush\u306e\u3088\u3046\u306aDrupal\u7279\u6709\u306e\u30c4\u30fc\u30eb\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u304c\u3001Drupal\u7279\u6709\u306e\u90e8\u5206\u306f\u305d\u3053\u3060\u3051\u3067\u3059\u3002
- Lagoon\u306fDevOps\u3067\u3059\u3002\u958b\u767a\u8005\u304c\u5fc5\u8981\u306a\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u304c\u6b63\u3057\u3044\u65b9\u6cd5\u3067\u306a\u3044\u3068\u601d\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3057\u3001\u958b\u767a\u8005\u306b\u3042\u307e\u308a\u306b\u3082\u591a\u304f\u306e\u6a29\u9650\u3092\u4e0e\u3048\u3066\u3044\u308b\u3068\u601d\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3057\u304b\u3057\u3001\u79c1\u305f\u3061\u306f\u30b7\u30b9\u30c6\u30e0\u30a8\u30f3\u30b8\u30cb\u30a2\u3068\u3057\u3066\u3001\u958b\u767a\u8005\u3092\u5f37\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002\u958b\u767a\u8005\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u308c\u3089\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u30c6\u30b9\u30c8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308c\u3070\u3001\u5f7c\u3089\u81ea\u8eab\u304c\u30d0\u30b0\u3084\u30df\u30b9\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- Lagoon\u306fDocker\u3068Kubernetes\u4e0a\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002
- Lagoon\u306f\u5b8c\u5168\u306b\u30ed\u30fc\u30ab\u30eb\u3067\u958b\u767a\u30fb\u30c6\u30b9\u30c8\u304c\u53ef\u80fd\u3067\u3059\u3002
- Lagoon\u306f\u5b8c\u5168\u306b\u7d71\u5408\u30c6\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u79c1\u305f\u3061\u304c \u5168\u30d7\u30ed\u30bb\u30b9\u3092\u30c6\u30b9\u30c8\u3067\u304d\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002Git\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u306e\u53d7\u4fe1\u304b\u3089Docker\u30b3\u30f3\u30c6\u30ca\u3078\u306e\u30c7\u30d7\u30ed\u30a4\u307e\u3067\u3001\u540c\u3058Git\u30cf\u30c3\u30b7\u30e5\u304c\u30af\u30e9\u30b9\u30bf\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002
- \u6700\u3082\u91cd\u8981\u306a\u70b9: \u3053\u308c\u306f\u9032\u884c\u4e2d\u306e\u4f5c\u696d\u3067\u3059\u3002\u307e\u3060\u7d42\u308f\u308a\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002amazee.io\u3067\u306f\u3001\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u3057\u3066\u3001\u53ef\u80fd\u306a\u9650\u308a\u30b3\u30fc\u30c9\u3092\u5171\u6709\u3057\u3001\u5354\u529b\u3057\u3066\u4f5c\u696d\u3092\u9032\u3081\u308b\u5fc5\u8981\u304c\u3042\u308b\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002
\u79c1\u305f\u3061\u306f\u3042\u306a\u305f\u304cLagoon\u306e\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3068\u30b5\u30fc\u30d3\u30b9\u304c\u3069\u306e\u3088\u3046\u306b\u9023\u643a\u3057\u3066\u52d5\u4f5c\u3059\u308b\u304b\u3001\u7406\u89e3\u3057\u3066\u3082\u3089\u3048\u308b\u3053\u3068\u3092\u671b\u3093\u3067\u3044\u307e\u3059\u3002\u3053\u3053\u306b\u30b9\u30ad\u30fc\u30de\u304c\u3042\u308a\u307e\u3059(\u5c11\u3057\u53e4\u304f\u3001\u6700\u8fd1\u8ffd\u52a0\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u3084Kubernetes\u3092\u30ab\u30d0\u30fc\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u66f4\u65b0\u4f5c\u696d\u4e2d\u3067\u3059):Lucid Chart
"},{"location":"ja/#lagoon_2","title":"Lagoon\u306e\u6b74\u53f2","text":"\u8aac\u660e\u3057\u305f\u3088\u3046\u306b\u3001Lagoon\u306f\u7406\u60f3\u3092\u73fe\u5b9f\u306b\u3057\u305f\u3082\u306e\u3067\u3059\u3002amazee.io\u3067\u306f\u3001Drupal\u30928\u5e74\u4ee5\u4e0a\u30db\u30b9\u30c8\u3057\u3066\u304d\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u79c1\u305f\u3061\u306e\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e4\u56de\u76ee\u306e\u5927\u304d\u306a\u6539\u8a02\u3067\u3059\u30023\u56de\u76ee\u306e\u6539\u8a02\u306fPuppet\u3068Ansible\u3092\u4e2d\u5fc3\u306b\u69cb\u7bc9\u3055\u308c\u307e\u3057\u305f\u3002\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u5404\u90e8\u5206\u306f\u5168\u3066\u8a2d\u5b9a\u7ba1\u7406\u3067\u884c\u308f\u308c\u307e\u3057\u305f\u3002\u3053\u308c\u306b\u3088\u308a\u65b0\u3057\u3044\u30b5\u30fc\u30d0\u30fc\u306e\u8a2d\u5b9a\u304c\u975e\u5e38\u306b\u901f\u304f\u3067\u304d\u307e\u3057\u305f\u304c\u3001\u540c\u6642\u306b\u958b\u767a\u8005\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306e\u4f59\u5730\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3057\u305f\u3002\u79c1\u305f\u3061\u306f\u3044\u304f\u3064\u304b\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3092\u5b9f\u88c5\u3057\u307e\u3057\u305f\u304c\u3001\u3059\u3067\u306bDocker\u3092\u672c\u756a\u74b0\u5883\u3067\u4f7f\u7528\u3057\u3066\u3044\u307e\u3057\u305f\u3002\u3057\u304b\u3057\u3001\u79c1\u305f\u3061\u306f\u305d\u306e\u3053\u3068\u306b\u5b8c\u5168\u306b\u6e80\u8db3\u3057\u3066\u3044\u305f\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u79c1\u305f\u3061\u306f\u3001\u65e2\u5b58\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3060\u3051\u3067\u306f\u8db3\u308a\u306a\u3044\u3068\u6c17\u3065\u304d\u307e\u3057\u305f\u3002\u30c7\u30ab\u30c3\u30d7\u30ebDrupal\u306e\u53f0\u982d\u3001\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u3067\u306eNode.js\u306e\u52d5\u4f5c\u8981\u6c42\u3001Elasticsearch\u3078\u306e\u8981\u671b\u3001\u7570\u306a\u308bSolr\u30d0\u30fc\u30b8\u30e7\u30f3\u306a\u3069\u3001\u591a\u304f\u306b\u5bfe\u5fdc\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3057\u305f\u3002
\u540c\u6642\u306b\u3001\u79c1\u305f\u3061\u306f\u9577\u5e74\u306b\u308f\u305f\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u305f\u3081\u306bDocker\u3092\u4f7f\u7528\u3057\u3066\u304d\u307e\u3057\u305f\u3002\u672c\u756a\u74b0\u5883\u3067\u5168\u3066\u3092Docker\u3067\u884c\u3046\u3068\u3044\u3046\u306e\u306f\u5e38\u306b\u8003\u3048\u3066\u3044\u307e\u3057\u305f\u3002\u552f\u4e00\u306e\u554f\u984c\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u3068\u672c\u756a\u74b0\u5883\u3068\u306e\u9023\u643a\u3067\u3057\u305f\u3002\u4ed6\u306b\u3082\u3001\u672c\u756a\u74b0\u5883\u3067Drupal\u3092Docker\u3067\u52d5\u4f5c\u3055\u305b\u308b\u30b7\u30b9\u30c6\u30e0\u304c\u5b58\u5728\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u30ed\u30fc\u30ab\u30eb\u3068\u672c\u756a\u74b0\u5883\u3067\u6b63\u78ba\u306b\u540c\u3058\u30a4\u30e1\u30fc\u30b8\u3068\u30b5\u30fc\u30d3\u30b9\u3092\u30c6\u30b9\u30c8\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3059\u308b\u3082\u306e\u306f\u4f55\u3082\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
Lagoon\u306f2017\u5e74\u306b\u8a95\u751f\u3057\u307e\u3057\u305f\u3002\u305d\u308c\u4ee5\u6765\u3001\u672c\u756a\u74b0\u5883\u3067Docker\u3092\u52d5\u4f5c\u3055\u305b\u308b\u30b7\u30b9\u30c6\u30e0\u306b\u767a\u5c55\u3057\u307e\u3057\u305f\u3002Lagoon\u306f\u3001\u6211\u3005\u306e\u7b2c3\u4e16\u4ee3\u306e\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u3001\u6700\u5148\u7aef\u306e\u5168Docker\u30d9\u30fc\u30b9\u306e\u30b7\u30b9\u30c6\u30e0\u306b\u7f6e\u304d\u63db\u3048\u307e\u3057\u305f\u3002
"},{"location":"ja/#_3","title":"\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9","text":"amazee.io\u3067\u306f\u3001\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u53ef\u80fd\u6027\u3092\u4fe1\u3058\u3066\u3044\u307e\u3059\u3002Drupal\u306e\u3088\u3046\u306a\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304c\u72ec\u5360\u7684\u306a\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u30db\u30b9\u30c8\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306f\u5e38\u306b\u6211\u3005\u306b\u3068\u3063\u3066\u554f\u984c\u3067\u3057\u305f\u3002\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u4f1a\u793e\u306e\u5f37\u3055\u3068\u6210\u529f\u306f\u3001\u5358\u306b\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30b7\u30b9\u30c6\u30e0\u3084\u30b5\u30fc\u30d3\u30b9\u306e\u8a2d\u5b9a\u3060\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u308c\u306f\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u52d5\u304b\u3059\u4eba\u3005\u3068\u77e5\u8b58\u3067\u3059\u3002 \u30d7\u30ed\u30bb\u30b9\u3001\u30b9\u30ad\u30eb\u3001\u4e88\u671f\u3057\u306a\u3044\u72b6\u6cc1\u306b\u5bfe\u5fdc\u3059\u308b\u80fd\u529b\u3001\u305d\u3057\u3066\u6700\u5f8c\u306b\u5fd8\u308c\u3066\u306f\u306a\u3089\u306a\u3044\u306e\u306f\u3001\u5f7c\u3089\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u63d0\u4f9b\u3059\u308b\u30b5\u30dd\u30fc\u30c8\u3067\u3059\u3002
"},{"location":"ja/#_4","title":"\u30e9\u30a4\u30bb\u30f3\u30b9","text":"Lagoon\u306f\u3001Apache 2.0 \u30e9\u30a4\u30bb\u30f3\u30b9
\u306e\u4e0b\u3067\u5229\u7528\u53ef\u80fd\u3067\u3059\u3002
"},{"location":"ja/code-of-conduct/","title":"\u884c\u52d5\u898f\u7bc4","text":""},{"location":"ja/code-of-conduct/#our-pledge","title":"\u79c1\u305f\u3061\u306e\u8a93\u3044","text":"\u30aa\u30fc\u30d7\u30f3\u3067\u6b53\u8fce\u7684\u306a\u74b0\u5883\u3092\u80b2\u3066\u308b\u305f\u3081\u306b\u3001\u79c1\u305f\u3061\u306f\u8ca2\u732e\u8005\u3084\u30e1\u30f3\u30c6\u30ca\u3068\u3057\u3066\u3001\u5e74\u9f62\u3001\u4f53\u578b\u3001\u969c\u5bb3\u3001\u6c11\u65cf\u6027\u3001\u6027\u81ea\u8a8d\u3068\u6027\u8868\u73fe\u3001\u7d4c\u9a13\u306e\u30ec\u30d9\u30eb\u3001\u56fd\u7c4d\u3001\u500b\u4eba\u306e\u5916\u898b\u3001\u4eba\u7a2e\u3001\u5b97\u6559\u3001\u307e\u305f\u306f\u6027\u7684\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u6027\u7684\u6307\u5411\u306b\u95a2\u4fc2\u306a\u304f\u3001\u79c1\u305f\u3061\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3078\u306e\u53c2\u52a0\u3092\u8ab0\u3082\u304c\u30cf\u30e9\u30b9\u30e1\u30f3\u30c8\u306e\u306a\u3044\u7d4c\u9a13\u306b\u3059\u308b\u3053\u3068\u3092\u8a93\u3044\u307e\u3059\u3002
"},{"location":"ja/code-of-conduct/#our-standards","title":"\u79c1\u305f\u3061\u306e\u57fa\u6e96","text":"\u7a4d\u6975\u7684\u306a\u74b0\u5883\u4f5c\u308a\u306b\u8ca2\u732e\u3059\u308b\u884c\u52d5\u306e\u4f8b:
- \u30a6\u30a7\u30eb\u30ab\u30df\u30f3\u30b0\u3067\u5305\u62ec\u7684\u306a\u8a00\u8449\u9063\u3044\u3092\u3059\u308b\u3053\u3068\u3002
- \u7570\u306a\u308b\u8996\u70b9\u3068\u7d4c\u9a13\u3092\u5c0a\u91cd\u3059\u308b\u3053\u3068\u3002
- \u5efa\u8a2d\u7684\u306a\u6279\u8a55\u3092\u7a4f\u3084\u304b\u306b\u53d7\u3051\u5165\u308c\u308b\u3053\u3068\u3002
- \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u305f\u3081\u306b\u6700\u5584\u3092\u5c3d\u304f\u3059\u3053\u3068\u3002
- \u4ed6\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30e1\u30f3\u30d0\u30fc\u306b\u5bfe\u3059\u308b\u5171\u611f\u3092\u793a\u3059\u3053\u3068\u3002
\u53c2\u52a0\u8005\u306b\u3088\u308b\u8a31\u3055\u308c\u306a\u3044\u884c\u52d5\u306e\u4f8b:
- \u6027\u7684\u306a\u8a00\u8449\u3084\u30a4\u30e1\u30fc\u30b8\u306e\u4f7f\u7528\u3001\u304a\u3088\u3073\u6b53\u8fce\u3055\u308c\u306a\u3044\u6027\u7684\u306a\u95a2\u5fc3\u3084\u30a2\u30c9\u30d0\u30f3\u30b9\u3002
- \u30c8\u30ed\u30fc\u30ea\u30f3\u30b0\u3001\u4fae\u8fb1\u7684/\u8511\u8996\u7684\u306a\u30b3\u30e1\u30f3\u30c8\u3001\u304a\u3088\u3073\u500b\u4eba\u307e\u305f\u306f\u653f\u6cbb\u7684\u306a\u653b\u6483\u3002
- \u516c\u5171\u306e\u5834\u307e\u305f\u306f\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u3067\u306e\u30cf\u30e9\u30b9\u30e1\u30f3\u30c8\u3002
- \u660e\u78ba\u306a\u8a31\u53ef\u306a\u3057\u306b\u4ed6\u4eba\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u60c5\u5831(\u7269\u7406\u7684\u307e\u305f\u306f\u96fb\u5b50\u7684\u306a\u4f4f\u6240\u306a\u3069)\u3092\u516c\u958b\u3059\u308b\u3053\u3068\u3002
- \u5408\u7406\u7684\u306b\u4e0d\u9069\u5207\u3068\u8003\u3048\u3089\u308c\u308b\u4ed6\u306e\u884c\u70ba\u3002 \u5c02\u9580\u7684\u306a\u74b0\u5883\u3067\u306f\u4e0d\u9069\u5207\u3068\u8003\u3048\u3089\u308c\u308b\u5834\u5408\u3002
"},{"location":"ja/code-of-conduct/#our-responsibilities","title":"\u79c1\u305f\u3061\u306e\u8cac\u4efb","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7ba1\u7406\u8005\u306f\u3001\u53d7\u3051\u5165\u308c\u3089\u308c\u308b\u884c\u52d5\u306e\u57fa\u6e96\u3092\u660e\u78ba\u306b\u3057\u3001\u4e0d\u53d7\u3051\u5165\u308c\u53ef\u80fd\u306a\u884c\u52d5\u306e\u4e8b\u4f8b\u306b\u5bfe\u3057\u3066\u9069\u5207\u3067\u516c\u6b63\u306a\u662f\u6b63\u63aa\u7f6e\u3092\u3068\u308b\u3053\u3068\u304c\u671f\u5f85\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7ba1\u7406\u8005\u306f\u3001\u3053\u306e\u884c\u52d5\u898f\u7bc4\u306b\u5408\u81f4\u3057\u3066\u3044\u306a\u3044\u30b3\u30e1\u30f3\u30c8\u3001\u30b3\u30df\u30c3\u30c8\u3001\u30b3\u30fc\u30c9\u3001\u30a6\u30a3\u30ad\u306e\u7de8\u96c6\u3001\u554f\u984c\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u8ca2\u732e\u3092\u524a\u9664\u3001\u7de8\u96c6\u3001\u307e\u305f\u306f\u62d2\u5426\u3059\u308b\u6a29\u5229\u3068\u8cac\u4efb\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u4e0d\u9069\u5207\u3001\u8105\u5a01\u7684\u3001\u653b\u6483\u7684\u3001\u307e\u305f\u306f\u6709\u5bb3\u3068\u898b\u306a\u3059\u4ed6\u306e\u884c\u52d5\u3092\u884c\u3063\u305f\u8ca2\u732e\u8005\u3092\u4e00\u6642\u7684\u307e\u305f\u306f\u6c38\u4e45\u306b\u7981\u6b62\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/code-of-conduct/#scope","title":"\u9069\u7528\u7bc4\u56f2","text":"\u3053\u306e\u884c\u52d5\u898f\u7bc4\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b9\u30da\u30fc\u30b9\u5185\u3060\u3051\u3067\u306a\u304f\u3001\u500b\u4eba\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u305d\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u4ee3\u8868\u3057\u3066\u516c\u5171\u306e\u30b9\u30da\u30fc\u30b9\u306b\u3044\u308b\u3068\u304d\u306b\u3082\u9069\u7528\u3055\u308c\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u4ee3\u8868\u3059\u308b\u4f8b\u3068\u3057\u3066\u306f\u3001\u516c\u5f0f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3001\u516c\u5f0f\u306e\u30bd\u30fc\u30b7\u30e3\u30eb\u30e1\u30c7\u30a3\u30a2\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u901a\u3058\u3066\u6295\u7a3f\u3059\u308b\u3053\u3068\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u307e\u305f\u306f\u30aa\u30d5\u30e9\u30a4\u30f3\u306e\u30a4\u30d9\u30f3\u30c8\u3067\u6307\u540d\u3055\u308c\u305f\u4ee3\u8868\u8005\u3068\u3057\u3066\u884c\u52d5\u3059\u308b\u3053\u3068\u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4ee3\u8868\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7ba1\u7406\u8005\u306b\u3088\u3063\u3066\u3055\u3089\u306b\u5b9a\u7fa9\u3055\u308c\u3001\u660e\u78ba\u5316\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/code-of-conduct/#enforcement","title":"\u57f7\u884c","text":"\u8650\u5f85\u7684\u3001\u5acc\u304c\u3089\u305b\u306e\u3042\u308b\u3001\u307e\u305f\u306f\u305d\u308c\u4ee5\u5916\u306e\u4e0d\u53d7\u3051\u5165\u308c\u53ef\u80fd\u306a\u884c\u52d5\u306e\u4e8b\u4f8b\u306f\u3001\u9023\u7d61\u5148\u306b\u5831\u544a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c1\u30fc\u30e0\u306fuselagoon@amazee.io\u306b\u3044\u307e\u3059\u3002\u307e\u305f\u3001CoC\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u5b8c\u4e86\u3057\u305fLagoon\u30c1\u30fc\u30e0\u306e\u30e1\u30f3\u30d0\u30fc\u3067\u3042\u308bAlanna\u307e\u305f\u306fBrandon\u306b\u76f4\u63a5\u9023\u7d61\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c1\u30fc\u30e0\u306f\u3059\u3079\u3066\u306e\u82e6\u60c5\u3092\u30ec\u30d3\u30e5\u30fc\u3057\u3001\u8abf\u67fb\u3057\u3001\u72b6\u6cc1\u306b\u9069\u3057\u305f\u3068\u8003\u3048\u308b\u65b9\u6cd5\u3067\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c1\u30fc\u30e0\u306f\u3001\u4e8b\u8c61\u306e\u5831\u544a\u8005\u306b\u95a2\u3059\u308b\u6a5f\u5bc6\u6027\u3092\u7dad\u6301\u3059\u308b\u7fa9\u52d9\u304c\u3042\u308a\u307e\u3059\u3002\u5177\u4f53\u7684\u306a\u65bd\u884c\u30dd\u30ea\u30b7\u30fc\u306e\u8a73\u7d30\u306f\u3001\u5225\u9014\u6295\u7a3f\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30f3\u30c6\u30ca\u30fc\u304c\u8aa0\u5b9f\u306b\u884c\u52d5\u898f\u7bc4\u306b\u5f93\u308f\u306a\u3044\u5834\u5408\u3001\u307e\u305f\u306f\u305d\u308c\u3092\u5f37\u5236\u3057\u306a\u3044\u5834\u5408\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30ea\u30fc\u30c0\u30fc\u30b7\u30c3\u30d7\u306e\u4ed6\u306e\u30e1\u30f3\u30d0\u30fc\u306b\u3088\u3063\u3066\u4e00\u6642\u7684\u307e\u305f\u306f\u6c38\u4e45\u7684\u306a\u5f71\u97ff\u3092\u53d7\u3051\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/code-of-conduct/#attribution","title":"\u30a2\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3","text":"\u3053\u306e\u884c\u52d5\u898f\u7bc4\u306f\u3001Contributor Covenant\u3001\u30d0\u30fc\u30b8\u30e7\u30f31.4\u304b\u3089\u30a2\u30c0\u30d7\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u3061\u3089\u3067\u3054\u89a7\u3044\u305f\u3060\u3051\u307e\u3059 http://contributor-covenant.org/version/1/4\u3002
"},{"location":"ja/contributing/","title":"\u8ca2\u732e","text":"\u6211\u3005\u306fLagoon\u3078\u306e\u3042\u3089\u3086\u308b\u7a2e\u985e\u306e\u8ca2\u732e\u3092\u5fc3\u304b\u3089\u6b53\u8fce\u3057\u307e\u3059\uff01
"},{"location":"ja/contributing/#what-kind-of-contributions-do-we-need","title":"\u3069\u306e\u3088\u3046\u306a\u8ca2\u732e\u304c\u5fc5\u8981\u3067\u3059\u304b\uff1f","text":"Lagoon\u306f\u3069\u3093\u306a\u7a2e\u985e\u306e\u8ca2\u732e\u3067\u3082\u6069\u6075\u3092\u53d7\u3051\u307e\u3059 - \u30d0\u30b0\u4fee\u6b63\u3001\u65b0\u6a5f\u80fd\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u66f4\u65b0\u3001\u3042\u308b\u3044\u306f\u5358\u7d14\u306a\u30ad\u30e5\u30fc\u306e\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u306a\u3069 - \u3042\u306a\u305f\u304c\u52a9\u3051\u3066\u304f\u308c\u308b\u3053\u3068\u3092\u6211\u3005\u306f\u5b09\u3057\u304f\u601d\u3044\u307e\u3059\u3002
"},{"location":"ja/contributing/#developing-for-lagoon","title":"Lagoon\u306e\u958b\u767a","text":"Lagoon\u3092\u3042\u306a\u305f\u306e\u30ed\u30fc\u30ab\u30eb\u30de\u30b7\u30f3\u4e0a\u3067\u52d5\u304b\u3059\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3001KinD\u3092\u4f7f\u7528\u3057\u305fDeveloping Lagoon\u3068\u3044\u3046\u30bb\u30af\u30b7\u30e7\u30f3\u5168\u4f53\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u307e\u3060\u975e\u5e38\u306bWIP\u3067\u3059\u304c\u3001\u3042\u306a\u305f\u3092\u52a9\u3051\u308b\u305f\u3081\u306e\u591a\u304f\u306eMakefile\u30eb\u30fc\u30c1\u30f3\u304c\u5b58\u5728\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing/#installing-lagoon","title":"Lagoon\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u6211\u3005\u306fLagoon\u3092Helm\u30c1\u30e3\u30fc\u30c8\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5\u3092\u6982\u8aac\u3057\u305f\u5225\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u540d\u3082Installing Lagoon Into Existing Kubernetes Cluster - \u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u53ef\u80fd\u306a\u9650\u308a\u30b9\u30e0\u30fc\u30ba\u306b\u3057\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\uff01
"},{"location":"ja/contributing/#help-us-with-our-examples","title":"\u6211\u3005\u306e\u4f8b\u984c\u3067\u306e\u52a9\u3051","text":"\u73fe\u5728\u3001\u6211\u3005\u306e\u6700\u5927\u306e\u30cb\u30fc\u30ba\u306e\u4e00\u3064\u306f\u3001Lagoon\u304cDrupal\u4ee5\u5916\u306e\u5404\u7a2e\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30de\u30cd\u30b8\u30e1\u30f3\u30c8\u30b7\u30b9\u30c6\u30e0\u306a\u3069\u3068\u3069\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3059\u308b\u304b\u306e\u4f8b\u3092\u307e\u3068\u3081\u308b\u3053\u3068\u3067\u3059\u3002
\u3082\u3057\u3001\u3042\u306a\u305f\u304c\u73fe\u5728\u6211\u3005\u304cDocker Compose\u30b9\u30bf\u30c3\u30af\u3068\u3057\u3066\u6301\u3063\u3066\u3044\u306a\u3044\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9CMS\u307e\u305f\u306f\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u7acb\u3061\u4e0a\u3052\u308b\u3053\u3068\u304c\u3067\u304d\u308c\u3070\u3001PR\u3092\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u65e2\u5b58\u306e\u4f8b\u3092https://github.com/uselagoon/lagoon-ex\u3067\u3054\u89a7\u304f\u3060\u3055\u3044\u3002 \u30d2\u30f3\u30c8\u3001\u30a2\u30c9\u30d0\u30a4\u30b9\u3001\u30b9\u30bf\u30fc\u30bf\u30fc\u306e\u554f\u984c\u306b\u3064\u3044\u3066\u306f\u3001examples\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
\u305f\u3060\u3057\u3001\u53ef\u80fd\u306a\u9650\u308a\u3001\u57fa\u672c\u306eDocker Hub\u30a4\u30e1\u30fc\u30b8https://hub.docker.com/u/uselagoon\u3092\u4f7f\u7528\u3057\u3066\u4f5c\u6210\u3057\u3066\u3044\u305f\u3060\u304d\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002\u9069\u5207\u306a\u30a4\u30e1\u30fc\u30b8\u304c\u306a\u3044\u5834\u5408\u3084\u3001\u5f53\u793e\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001PR(\u53ef\u80fd\u306a\u5834\u5408)\u3092\u6295\u3052\u3066\u3044\u305f\u3060\u304f\u304b\u3001\u554f\u984c\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044(\u4ed6\u306e\u8ab0\u304b\u304c\u5bfe\u5fdc\u3067\u304d\u308b\u3088\u3046\u306b)https://github.com/uselagoon/lagoon-images\u306b\u3066\u3002
\u65e2\u5b58\u306e\u4f8b\u3092\u6539\u5584\u3059\u308b\u305f\u3081\u306b\u79c1\u305f\u3061\u3092\u624b\u4f1d\u3063\u3066\u304f\u3060\u3055\u3044\u3001\u3082\u3057\u3054\u53ef\u80fd\u3067\u3042\u308c\u3070 - \u79c1\u305f\u3061\u306f\u6700\u826f\u306e\u65b9\u6cd5\u3092\u8ffd\u6c42\u3057\u3066\u3044\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3001\u4f55\u304b\u610f\u5473\u306e\u306a\u3044\u3053\u3068\u3092\u3057\u3066\u3044\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f
\u3053\u308c\u3089\u306e\u4f8b\u306e\u3044\u305a\u308c\u304b\u306e\u30c6\u30b9\u30c8\u306b\u8ca2\u732e\u3059\u308b\u4eba\u306b\u306f\u30dc\u30fc\u30ca\u30b9\u30dd\u30a4\u30f3\u30c8\u304c\u3042\u308a\u307e\u3059 \u2013 https://github.com/amazeeio/drupal-example-simple/blob/8.x/TESTING_dockercompose.md\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3044\u304f\u3064\u304b\u306e\u4f8b\u30c6\u30b9\u30c8\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001\u305d\u308c\u3089\u3092\u30ac\u30a4\u30c0\u30f3\u30b9\u306b\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u79c1\u305f\u3061\u304c\u4f7f\u7528\u3057\u3066\u3044\u308b\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001Lando\u306e\u512a\u308c\u305f\u30c1\u30fc\u30e0\u304b\u3089\u306eLeia\u3067\u3059\u3002
\u4ed6\u306e\u4f8b\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u6539\u5584\u3059\u308b\u305f\u3081\u306b\u79c1\u305f\u3061\u3092\u624b\u4f1d\u3063\u3066\u304f\u3060\u3055\u3044 \u2013 \u79c1\u305f\u3061\u306f\u5b8c\u5168\u306a\u3082\u306e\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3001 \u539f\u7a3f\u3001\u6574\u7406\u3001\u5f79\u7acb\u3064\u30ea\u30bd\u30fc\u30b9\u3078\u306e\u30ea\u30f3\u30af\u3001\u660e\u78ba\u306a\u58f0\u660e\u306f\u5168\u3066\u8d85\u7d20\u6674\u3089\u3057\u3044\u3067\u3059\u3002
\u4f55\u304b\u8cea\u554f\u304c\u3042\u308b\u5834\u5408\u306f\u3001Discord\u3067\u79c1\u305f\u3061\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\uff01
"},{"location":"ja/contributing/#i-found-a-security-issue","title":"\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u554f\u984c\u3092\u898b\u3064\u3051\u307e\u3057\u305f \ud83d\udd13","text":"\u79c1\u305f\u3061\u306f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u975e\u5e38\u306b\u91cd\u8996\u3057\u3066\u3044\u307e\u3059\u3002 \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u554f\u984c\u3092\u767a\u898b\u3057\u305f\u308a\u3001\u767a\u898b\u3057\u305f\u3068\u601d\u3063\u305f\u3089\u3001\u662f\u975e\u30e1\u30f3\u30c6\u30ca\u306b\u6ce8\u610f\u3092\u4fc3\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u5371\u967a
\u7d50\u679c\u3092security@amazee.io\u306b\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002 GitHub\u306e\u554f\u984c\u3068\u3057\u3066\u305d\u308c\u3089\u3092\u30d5\u30a1\u30a4\u30eb\u3057\u3066\u306f\u7d76\u5bfe\u306b\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002
\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ec\u30dd\u30fc\u30c8\u306f\u975e\u5e38\u306b\u8a55\u4fa1\u3055\u308c\u3001\u516c\u5171\u306e\u30ab\u30eb\u30de\u3068\u30b9\u30ef\u30c3\u30b0\u304c\u3082\u3089\u3048\u307e\u3059\uff01 \u79c1\u305f\u3061\u306f\u307e\u305f\u3001\u30d0\u30b0\u30d0\u30a6\u30f3\u30c6\u30a3\u30b7\u30b9\u30c6\u30e0\u306e\u4f5c\u696d\u3082\u9032\u3081\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/contributing/#i-found-an-issue","title":"\u554f\u984c\u3092\u898b\u3064\u3051\u307e\u3057\u305f","text":"\u79c1\u305f\u3061\u306f\u5e38\u306b\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u3053\u3068\u306b\u8208\u5473\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001\u554f\u984c\u5831\u544a\u306f\u5927\u6b53\u8fce\u3067\u3059\u3002 \u3042\u306a\u305f\u306e\u554f\u984c\u304c\u3059\u3067\u306b\u554f\u984c\u30ad\u30e5\u30fc\u306b\u5b58\u5728\u3057\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/contributing/#i-have-a-feature-request-or-idea","title":"\u6a5f\u80fd\u306e\u8981\u671b\u3084\u30a2\u30a4\u30c7\u30a2\u304c\u3042\u308a\u307e\u3059","text":"\u7d20\u6575\u3067\u3059\uff01 \u554f\u984c\u3092\u4f5c\u6210\u3057\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u3001\u79c1\u305f\u3061\u306f\u305d\u308c\u3092\u691c\u8a0e\u3059\u308b\u3053\u3068\u3092\u559c\u3073\u307e\u3059\u3002 \u305d\u308c\u304c\u5b9f\u88c5\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 \u3057\u304b\u3057\u3001\u79c1\u305f\u3061\u306f\u5e38\u306bLagoon\u306b\u4f55\u3092\u3082\u305f\u3089\u3059\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u306e\u30a2\u30a4\u30c7\u30a2\u3092\u805e\u304f\u3053\u3068\u306b\u8208\u5473\u304c\u3042\u308a\u307e\u3059\u3002
\u5225\u306e\u826f\u3044\u65b9\u6cd5\u306f\u3001\u3042\u306a\u305f\u306e\u30a2\u30a4\u30c7\u30a2\u306b\u3064\u3044\u3066Discord\u7d4c\u7531\u3067\u79c1\u305f\u3061\u3068\u8a71\u3059\u3053\u3068\u3082\u3067\u3059\u3002 . \u4eca\u65e5\u53c2\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\uff01
"},{"location":"ja/contributing/#i-wrote-some-code","title":"\u79c1\u306f\u3044\u304f\u3064\u304b\u306e\u30b3\u30fc\u30c9\u3092\u66f8\u304d\u307e\u3057\u305f","text":"\u7d20\u6674\u3089\u3057\u3044\uff01\u305d\u308c\u306b\u3064\u3044\u3066\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u304a\u9001\u308a\u304f\u3060\u3055\u3044\u3001\u53ef\u80fd\u306a\u9650\u308a\u30ec\u30d3\u30e5\u30fc\u3057\u3001\u53ef\u80fd\u3067\u3042\u308c\u3070\u30de\u30fc\u30b8\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/","title":"Lagoon\u306f\u5e45\u5e83\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001\u8a00\u8a9e\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059","text":"Lagoon\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b9\u30bf\u30c3\u30af\u3092\u5927\u304d\u304f3\u3064\u306e\u30ec\u30d9\u30eb\u306b\u5206\u985e\u3057\u3066\u3044\u307e\u3059:
"},{"location":"ja/applications/#_1","title":"\u8a00\u8a9e","text":"Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u57fa\u672c\u7684\u306a\u69cb\u6210\u8981\u7d20\u3067\u3042\u308a\u3001\u901a\u5e38\u306fLagoon\u5c02\u7528\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/#_2","title":"\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af","text":"\u3053\u308c\u3089\u306e\u57fa\u672c\u30a4\u30e1\u30fc\u30b8\u3092\u57fa\u306b\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3092\u63d0\u4f9b\u3057\u305f\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u99c6\u52d5\u3057\u305f\u308a\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u30ed\u30b8\u30c3\u30af\u3001\u30c4\u30fc\u30eb\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/#_3","title":"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3","text":"\u901a\u5e38\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u4e0a\u306b\u69cb\u7bc9\u3055\u308c\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u7de8\u96c6\u8005\u3084\u958b\u767a\u8005\u304c\u6700\u7d42\u88fd\u54c1\u3092\u5f62\u4f5c\u308b\u305f\u3081\u306b\u64cd\u4f5c\u3059\u308b\u30ec\u30a4\u30e4\u30fc\u3067\u3059\u3002
Lagoon\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u53c2\u7167\u3059\u308b\u3068\u304d\u3001\u901a\u5e38\u306f3\u3064\u306e\u65b9\u6cd5\u3067\u305d\u308c\u3089\u3092\u53c2\u7167\u3057\u307e\u3059:
"},{"location":"ja/applications/#_4","title":"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8","text":"\u3053\u308c\u3089\u306f\u5b8c\u5168\u306b\u6a5f\u80fd\u3059\u308b\u3001\u30af\u30ed\u30fc\u30f3\u53ef\u80fd\u306a\u30b9\u30bf\u30fc\u30bf\u30fc\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u3059\u3002\u5b9a\u671f\u7684\u306b\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3068\u66f4\u65b0\u304c\u884c\u308f\u308c\u3001\u308f\u305a\u304b\u306a\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3067\u62e1\u5f35\u3057\u3066\u4f7f\u7528\u3067\u304d\u308b\u72b6\u614b\u306b\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/#_5","title":"\u4f8b","text":"\u3053\u308c\u3089\u306f\u5b8c\u5168\u306b\u6a5f\u80fd\u3059\u308b\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u3001\u5b9a\u671f\u7684\u306b\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3068\u66f4\u65b0\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u500b\u5225\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u52d5\u4f5c\u3055\u305b\u308b\u306b\u306f\u3042\u308b\u7a0b\u5ea6\u306e\u52b4\u529b\u304c\u5fc5\u8981\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/#_6","title":"\u30c7\u30e2","text":"\u3053\u308c\u3089\u306f\u5b9f\u8a3c\u306e\u305f\u3081\u306b\u69cb\u7bc9\u3055\u308c\u305f\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u3001\u6982\u5ff5\u691c\u8a3c\u3068\u3057\u3066\u306f\u4f7f\u7528\u53ef\u80fd\u3067\u3059\u304c\u3001\u5b9a\u671f\u7684\u306a\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3084\u66f4\u65b0\u306f\u884c\u308f\u308c\u3066\u3044\u307e\u305b\u3093\u3002
\u3088\u308a\u5b8c\u5168\u306a\u30ea\u30b9\u30c8\u306b\u3064\u3044\u3066\u306f\u3001\u79c1\u305f\u3061\u306eGitHub\u30ea\u30dd\u30b8\u30c8\u30ea:https://www.github.com/lagoon-examples \u3068\u79c1\u305f\u3061\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8 https://lagoon.sh/application/ \u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/laravel/","title":"Laravel\u3092Lagoon\u3067\u5b9f\u884c","text":"Laravel\u3092Lagoon\u3067\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u8907\u6570\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002
- \u65e2\u5b58\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u81ea\u5206\u3067\u300clagoonize\u300d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff08Lagoonizing\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\uff09\u3002
- \u53c2\u8003\u3068\u3057\u3066\u3001\u30b7\u30f3\u30d7\u30eb\u306alagoonize\u3055\u308c\u305fLaravel\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u4f8b\u793a\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u7528\u610f\u3057\u3066\u3044\u307e\u3059\u3002
- \uff08\u63a8\u5968\uff09 \"Sail:onLagoon\"\u3068\u3044\u3046\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u6a19\u6e96\u7684\u306aLaravel Sail\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u53d6\u308a\u3001\u9069\u5207\u306aLagoon\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u81ea\u52d5\u751f\u6210\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/laravel/#_1","title":"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u74b0\u5883\u30ad\u30fc","text":"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ad\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001CLI\u307e\u305f\u306fUI\u3092\u901a\u3058\u3066APP_KEY
\u74b0\u5883\u5909\u6570(environment variable)\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u3053\u308c\u306b\u3088\u308a\u3001\u30ad\u30fc\u3092\u30b3\u30fc\u30c9\u5185\uff08\u4f8b\u3048\u3070.env
\u30d5\u30a1\u30a4\u30eb\uff09\u306b\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u306a\u304f\u306a\u308a\u307e\u3059\u3002
\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ad\u30fc\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001php artisan key:generate --show
\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u5909\u66f4\u305b\u305a\u306b\u3001\u6709\u52b9\u306a\u30ad\u30fc\u3092\u51fa\u529b\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/node/#_1","title":"\u306f\u3058\u3081\u306b","text":"Lagoon\u306f\u3001\u516c\u5f0f\u306eNode Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u305fNode.js\u30a4\u30e1\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002
Lagoon\u4e0a\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u52d5\u304b\u3059\u305f\u3081\u306e\u9069\u5fdc\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306e\u8a73\u3057\u3044\u60c5\u5831\u306f\u3001Node.js Docker\u30a4\u30e1\u30fc\u30b8\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/options/","title":"Lagoon\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u5b9a","text":""},{"location":"ja/applications/options/#lagoonyml","title":"lagoon.yml
","text":"Lagoon\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u304a\u3088\u3073\u74b0\u5883\u30ec\u30d9\u30eb\u306e\u8a2d\u5b9a\u306f\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u306e .lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002
lagoon-yml.md
\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/options/#docker-composeyml","title":"docker-compose.yml
","text":"Lagoon\u306e\u30b5\u30fc\u30d3\u30b9\u30ec\u30d9\u30eb\u306e\u8a2d\u5b9a\u306f\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u306edocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7279\u306b\u3001lagoon.type
\u3068\u95a2\u9023\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u30e9\u30d9\u30eb\u306f\u3001\u500b\u3005\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002
docker-compose-yml.md
\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/options/#_1","title":"\u30b9\u30c8\u30ec\u30fc\u30b8","text":"Lagoon\u306f\u307b\u3068\u3093\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u63d0\u4f9b\u3059\u308b\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002Lagoon\u7d44\u307f\u8fbc\u307f\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u306b\u306f\u3001\u5fc5\u8981\u306aPVC\u3001\u30dc\u30ea\u30e5\u30fc\u30e0\u306a\u3069\u3092\u8ffd\u52a0\u3067\u304d\u308b-persistent
\u30d0\u30ea\u30a2\u30f3\u30c8\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u53cd\u6620\u3059\u308b\u3088\u3046\u306b\u4f8b\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\u3002
"},{"location":"ja/applications/options/#_2","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9","text":"Lagoon\u306f\u4ee5\u4e0b\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059:
- Mariadb - \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5168\u30d0\u30fc\u30b8\u30e7\u30f3
- PostgreSQL - \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5168\u30d0\u30fc\u30b8\u30e7\u30f3
"},{"location":"ja/applications/options/#_3","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30a2\u30ba\u30fb\u30a2\u30fb\u30b5\u30fc\u30d3\u30b9","text":"Lagoon\u306f\u307e\u305f\u3001dbaas-operator\u3092\u5229\u7528\u3057\u3066\u3001\u57fa\u76e4\u3068\u306a\u308b\u30de\u30cd\u30fc\u30b8\u30c9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9\uff08\u4f8b\uff1aRDS\u3001Google Cloud Databases\u3001Azure Database\uff09\u3092\u4f7f\u7528\u3057\u3066\u3053\u308c\u3089\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u81ea\u52d5\u7684\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3059\u308b\u6a5f\u80fd\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u30af\u30e9\u30b9\u30bf\u7528\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u304a\u3088\u3073\u8a2d\u5b9a\u3055\u308c\u308b\u3068\u3001\u81ea\u52d5\u7684\u306b\u884c\u308f\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u304c\u5229\u7528\u3067\u304d\u306a\u3044\u5834\u5408\u306f\u3001\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u3068\u3057\u3066\u30dd\u30c3\u30c9\u304c\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/options/#_4","title":"\u30ad\u30e3\u30c3\u30b7\u30e5","text":"Lagoon\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u3057\u3066Redis\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u672c\u756a\u74b0\u5883\u3067\u306f\u3001\u4e00\u90e8\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3092\u652f\u63f4\u3059\u308b\u305f\u3081\u306b\u3001\u30de\u30cd\u30fc\u30b8\u30c9Redis\u30b5\u30fc\u30d3\u30b9\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/options/#_5","title":"\u691c\u7d22","text":"Lagoon\u306f\u691c\u7d22\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3068\u3057\u3066Elasticsearch\u3001Solr\u3001OpenSearch\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u5916\u90e8\u306e\u691c\u7d22\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3082\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/options/#_6","title":"\u30a4\u30f3\u30b0\u30ec\u30b9/\u30eb\u30fc\u30c8","text":"Lagoon\u306f\u3001\u30a4\u30f3\u30b0\u30ec\u30b9\u8981\u4ef6\u3092\u6301\u3064\u30b5\u30fc\u30d3\u30b9\u306e\u30eb\u30fc\u30c8\u3092\u81ea\u52d5\u751f\u6210\u3057\u307e\u3059\u3002\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u306f\u3001\u5404\u30b5\u30fc\u30d3\u30b9\u3054\u3068\u306b .lagoon.yml
\u306b\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/options/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"Lagoon\u306f\u3001\u30d3\u30eb\u30c9\u6642\u3068\u30e9\u30f3\u30bf\u30a4\u30e0\u6642\u306b\u74b0\u5883\u5909\u6570\u3092\u591a\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u91cd\u8981\u306a\u8a2d\u5b9a(\u4f8b:\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a/\u8a8d\u8a3c\u60c5\u5831)\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u5834\u5408\u3001\u30ed\u30fc\u30ab\u30eb\u3068Lagoon\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u540c\u69d8\u306e\u540d\u524d\u3092\u4ed8\u3051\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002
\u8a73\u7d30\u306f environment-variables.md\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/other/","title":"Lagoon\u3067\u4ed6\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c","text":"Lagoon\u304c\u7279\u5b9a\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001\u8a00\u8a9e\u7528\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u6301\u3063\u3066\u3044\u306a\u304f\u3066\u3082\u3001Lagoon\u3067\u30d3\u30eb\u30c9\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002
commons\u30a4\u30e1\u30fc\u30b8\u3092\u62e1\u5f35\u307e\u305f\u306f\u7d99\u627f\u3059\u308b\u3053\u3068\u3067\u3001Lagoon\u306f\u307b\u307c\u3042\u3089\u3086\u308b\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/other/#hugo","title":"Hugo","text":"\u3053\u306e\u7c21\u5358\u306a\u4f8b\u306f\u3001Hugo\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3092\u30d3\u30eb\u30c9\u3057\u3001NGINX\u30a4\u30e1\u30fc\u30b8\u3067\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u63d0\u4f9b\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002commons\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066Hugo\u3092\u8ffd\u52a0\u3057\u3001\u30b5\u30a4\u30c8\u3092\u30b3\u30d4\u30fc\u3057\u3066\u30d3\u30eb\u30c9\u3057\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3055\u308c\u305fNGINX\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u305fNGINX\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u30b5\u30a4\u30c8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
nginx.dockerfileFROM uselagoon/commons AS builder\n\nRUN apk add hugo git\nWORKDIR /app\nCOPY . /app\nRUN hugo\n\nFROM uselagoon/nginx\n\nCOPY --from=builder /app/public/ /app\nCOPY lagoon/static-files.conf /etc/nginx/conf.d/app.conf\n\nRUN fix-permissions /usr/local/openresty/nginx\n
docker-compose.ymlservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: lagoon/nginx.Dockerfile\nlabels:\nlagoon.type: nginx\n
"},{"location":"ja/applications/php/#_1","title":"\u306f\u3058\u3081\u306b","text":"Lagoon\u306f\u3001Drupal\u3001Laravel\u3001Wordpress\u3001Magento\u3001Symfony\u306a\u3069\u3001\u69d8\u3005\u306aPHP\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002
Lagoon\u3067PHP\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u9069\u5fdc\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306f\u3001PHP-cli Docker\u30a4\u30e1\u30fc\u30b8\u304a\u3088\u3073PHP-FPM Docker\u30a4\u30e1\u30fc\u30b8\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/python/#_1","title":"\u306f\u3058\u3081\u306b","text":"Lagoon\u306f\u3001Python\u30d9\u30fc\u30b9\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3084\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308bPython 3.7\u4ee5\u4e0a\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
Lagoon\u4e0a\u3067Python\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u52d5\u4f5c\u3055\u305b\u308b\u305f\u3081\u306e\u8abf\u6574\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306f\u3001Python Docker\u30a4\u30e1\u30fc\u30b8\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/ruby/","title":"Ruby\u3068Ruby on Rails","text":""},{"location":"ja/applications/ruby/#_1","title":"\u306f\u3058\u3081\u306b","text":"\u79c1\u305f\u3061\u306f\u3001\u516c\u5f0f\u306e Ruby alpine Docker \u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u305f Ruby 3.0 \u4ee5\u4e0a\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002 \u4ee5\u4e0b\u3067\u306f\u3001Rails \u30a2\u30d7\u30ea\u3092 Lagoon \u306b\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u3053\u3053\u3067\u8aac\u660e\u3059\u308b\u8a73\u7d30\u306e\u591a\u304f\u306f\u5b9f\u969b\u306b\u306f\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u4f9d\u5b58\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/applications/ruby/#lagoon-rails","title":"Lagoon \u3067 Rails \u3092\u5b9f\u884c\u3059\u308b","text":""},{"location":"ja/applications/ruby/#_2","title":"\u30ea\u30af\u30a8\u30b9\u30c8\u3078\u306e\u5fdc\u7b54","text":"Lagoon\u306e\u4f8b\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u3042\u308bRuby on Rails\u306e\u4f8b\u304c\u53c2\u8003\u306b\u306a\u308a\u307e\u3059\u3002
docker-compose.yml
\u3067\u306f\u3001\u52d5\u7684\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u4e3b\u8981\u30b5\u30fc\u30d3\u30b9\u3068\u3057\u3066ruby
\u3068\u3044\u3046\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
ruby
\u30b5\u30fc\u30d3\u30b9\u7528\u306b\u6307\u5b9a\u3055\u308c\u305fdockerfile\u3092\u898b\u3066\u307f\u308b\u3068\u3001\u30dd\u30fc\u30c83000\u3092\u516c\u958b\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002nginx
\u30b5\u30fc\u30d3\u30b9\u306f\u3001\u975e\u9759\u7684\u30a2\u30bb\u30c3\u30c8\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u3053\u306e\u30dd\u30fc\u30c8\u306eruby
\u30b5\u30fc\u30d3\u30b9\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059(\u8a73\u7d30\u306fnginx\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044)\u3002
"},{"location":"ja/applications/ruby/#_3","title":"\u30ed\u30ae\u30f3\u30b0","text":"Lagoon\u306e\u30ed\u30ae\u30f3\u30b0\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306b\u3064\u3044\u3066\u306f\u3001\u6b21\u306e\u6587\u66f8\u3067\u8aac\u660e\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u3061\u3089\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\u57fa\u672c\u7684\u306b\u3001\u3053\u306e\u30a4\u30f3\u30d5\u30e9\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u30ed\u30b0\u3092UDP\u30e1\u30c3\u30bb\u30fc\u30b8\u3067udp://application-logs.lagoon.svc:5140
\u306b\u9001\u4fe1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
Rails\u306e\u4f8b\u3067\u306f\u3001logstash-logger
\u3068\u3044\u3046gem\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3001\u305d\u306e\u5f8cconfig/application.rb
\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u521d\u671f\u5316\u3057\u3066\u3044\u307e\u3059\uff1a
config/application.rb if ENV.has_key?('LAGOON_PROJECT') && ENV.has_key?('LAGOON_ENVIRONMENT') then\nlagoon_namespace = ENV['LAGOON_PROJECT'] + \"-\" + ENV['LAGOON_ENVIRONMENT']\nLogStashLogger.configure do |config|\nconfig.customize_event do |event|\nevent[\"type\"] = lagoon_namespace\nend\nend\nconfig.logstash.host = 'application-logs.lagoon.svc'\nconfig.logstash.type = :udp\nconfig.logstash.port = 5140\nend\n
"},{"location":"ja/applications/ruby/#_4","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a","text":"\u3053\u306e\u4f8b\u3067\u306f\u3001\u79c1\u305f\u3061\u306ePostgreSQL\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059(docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044)\u3002Lagoon\u3067\u306eRails\u3092\u7528\u3044\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u306e\u8a2d\u5b9a\u306f\u975e\u5e38\u306b\u7c21\u5358\u3067\u3059\u3002Lagoon \u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u306b\u5fc5\u8981\u306a\u60c5\u5831\u3092\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u63d0\u4f9b\u3057\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001config/database.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u3053\u308c\u3089\u306e\u74b0\u5883\u5909\u6570\u3092\u5229\u7528\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u7c21\u5358\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u3092\u69cb\u6210\u3067\u304d\u307e\u3059\u3002
config/database.ymldefault: &default\nadapter: postgresql\nencoding: unicode\npool: <%= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } %>\nusername: <%= ENV.fetch(\"POSTGRES_USERNAME\") { \"drupal\" } %>\npassword: <%= ENV.fetch(\"POSTGRES_PASSWORD\") { \"drupal\" } %>\nhost: <%= ENV.fetch(\"POSTGRES_HOST\") { \"postgres\" } %>\ndatabase: <%= ENV.fetch(\"'POSTGRES_DATABASE'\") { \"drupal\" } %>\n
"},{"location":"ja/applications/wordpress/","title":"WordPress\u3092Lagoon\u3067\u5b9f\u884c","text":"WordPress\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001Composer\u3092\u4f7f\u7528\u3057\u3066WordPress\u3001\u305d\u306e\u4f9d\u5b58\u95a2\u4fc2\u3001\u304a\u3088\u3073\u30c6\u30fc\u30de\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u306eWordPress\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001https://github.com/roots/bedrock\u306e\u30dc\u30a4\u30e9\u30fc\u30d7\u30ec\u30fc\u30c8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u6a19\u6e96\u5316\u3055\u308c\u305fLagoon\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30d1\u30bf\u30fc\u30f3\u306b\u5408\u308f\u305b\u3066\u62e1\u5f35\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/wordpress/#composer","title":"Composer\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u3053\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001WordPress\u3068\u305d\u306e\u30c6\u30fc\u30de\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u305f\u3081\u306bComposer\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/wordpress/#_1","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9","text":"Lagoon\u306fMariaDB\u3068PostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u304c\u3001WordPress\u3067\u306ePostgreSQL\u306e\u30b5\u30dd\u30fc\u30c8\u306f\u9650\u5b9a\u7684\u306a\u306e\u3067\u3001\u4f7f\u7528\u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/applications/wordpress/#nginx","title":"NGINX\u306e\u8a2d\u5b9a","text":"Lagoon\u306b\u306fWordPress\u7528\u306e\u7d44\u307f\u8fbc\u307f\u8a2d\u5b9a\u304c\u3042\u308a\u307e\u305b\u3093 - \u4ee3\u308f\u308a\u306b\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u306f\u521d\u671f\u8a2d\u5b9a\u306enginx.conf\u304c\u4ed8\u5c5e\u3057\u3066\u3044\u307e\u3059\u3002\u6539\u5584\u70b9\u304c\u3042\u308c\u3070\u3001\u305c\u3072\u8ca2\u732e\u3057\u3066\u304f\u3060\u3055\u3044\uff01
"},{"location":"ja/applications/wordpress/#wp-cli","title":"WP-CLI","text":"Lagoon\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001WordPress\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306bwp-cli
\u3092cli\u30a4\u30e1\u30fc\u30b8\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/","title":"\u6982\u8981","text":"Lagoon\u306fDrupal\u30b5\u30a4\u30c8\u3092\u30db\u30b9\u30c8\u3059\u308b\u305f\u3081\u306b\u4f5c\u3089\u308c\u307e\u3057\u305f(\u3044\u3084\u3001\u672c\u5f53\u306b\u3001\u5c11\u306a\u304f\u3068\u3082\u6700\u521d\u306f\u305d\u3046\u3067\u3057\u305f\uff01)
\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Drupal\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3055\u308c\u305f\u69d8\u3005\u306a\u30b5\u30fc\u30d3\u30b9\u306b\u95a2\u3059\u308b\u8a73\u7d30\u60c5\u5831\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/#drupal_integrations-drupal","title":"drupal_integrations
Drupal\u30b9\u30ad\u30e3\u30d5\u30a9\u30fc\u30eb\u30c7\u30a3\u30f3\u30b0\u30d1\u30c3\u30b1\u30fc\u30b8","text":"packagist\u3067\u5229\u7528\u53ef\u80fd\u306adrupal_integrations
\u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u3001Lagoon\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306bDrupal\u306ecore-composer-scaffold\u3092\u62e1\u5f35\u3057\u307e\u3059\u3002\u307e\u305f\u3001Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eDrush\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u8ffd\u52a0\u306eDrush\u30b3\u30de\u30f3\u30c9drush la
\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/#lagoon-logs-drupal","title":"lagoon-logs
Drupal\u30e2\u30b8\u30e5\u30fc\u30eb","text":"drupal.org\u3067\u5229\u7528\u53ef\u80fd\u306alagoon_logs
\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001Lagoon\u4e0a\u306eDrupal\u306b\u5bfe\u3057\u3066\u8a2d\u5b9a\u4e0d\u8981\u306e\u30ed\u30ae\u30f3\u30b0\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/automatic-updates/","title":"\u81ea\u52d5\u66f4\u65b0","text":"Lagoon\u306f\u3001Drupal\u306e\u30b3\u30a2\u90e8\u5206\u3084contrib\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u66f4\u65b0\u65b9\u6cd5\u306e\u4e00\u90e8\u3068\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002Lagoon\u306f\u5909\u66f4\u3067\u304d\u306a\u3044\u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3057\u3001\u5909\u66f4\u3067\u304d\u306a\u3044\u30b3\u30f3\u30c6\u30ca\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30fc\u30c9\u304c\u5b9f\u884c\u6642\u306b\u5909\u66f4\u3055\u308c\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
- \u30b3\u30f3\u30c6\u30ca\u306e\u518d\u8d77\u52d5\u306b\u3088\u308b\u5909\u66f4\u306e\u6d88\u5931: \u30b3\u30f3\u30c6\u30ca\u306fKubernetes\u306b\u3088\u3063\u3066\u81ea\u52d5\u7684\u306b\u7ba1\u7406\u3055\u308c\u3066\u304a\u308a\u3001\u3044\u3064\u3067\u3082\u79fb\u52d5\u3001\u518d\u8d77\u52d5\u3001\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u304c\u767a\u751f\u3059\u308b\u3068\u3001\u6700\u521d\u306b\u69cb\u7bc9\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u304c\u5b9f\u884c\u3055\u308c\u3001\u5b9f\u884c\u6642\u306b\u52a0\u3048\u3089\u308c\u305f\u5909\u66f4\u306f\u3059\u3079\u3066\u5931\u308f\u308c\u307e\u3059\u3002
- \u30bf\u30b9\u30af\u3068Cron\u30b8\u30e7\u30d6\u306e\u554f\u984c: \u30bf\u30b9\u30af\u3084Cron\u30b8\u30e7\u30d6\u306f\u6700\u521d\u306b\u69cb\u7bc9\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u3067\u5b9f\u884c\u3055\u308c\u308b\u305f\u3081\u3001\u66f4\u65b0\u3055\u308c\u305f\u30b3\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002
- \u8aad\u307f\u53d6\u308a\u5c02\u7528\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306b\u3088\u308b\u66f4\u65b0\u306e\u5236\u9650: \u66f4\u65b0\u306b\u306f\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3078\u306e\u66f8\u304d\u8fbc\u307f\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\u304c\u3001\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u5f37\u5236\u3059\u308b\u74b0\u5883\u3092\u69cb\u6210\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002
- \u8907\u6570\u30b3\u30f3\u30c6\u30ca\u66f4\u65b0\u6642\u306e\u4e0d\u4e00\u81f4: \u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3067\u306f\u3001\u305d\u308c\u305e\u308c\u5358\u4e00\u306e\u6a5f\u80fd\u3092\u6301\u3064\u5c0f\u3055\u306a\u30b3\u30f3\u30c6\u30ca\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u3092\u63a8\u5968\u3057\u307e\u3059\u3002\u4e00\u822c\u7684\u306aDrupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30b3\u30fc\u30c9\u306e\u30b3\u30d4\u30fc\u3092\u542b\u3080
cli
\u3001php
\u3001nginx
\u306e\u30b3\u30f3\u30c6\u30ca\u304c3\u3064\u5b58\u5728\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30b3\u30f3\u30c6\u30ca\u306e\u3046\u30611\u3064\u3060\u3051\u3092\u66f4\u65b0\u3059\u308b\u3068\u3001\u30b3\u30fc\u30c9\u306e\u4e0d\u4e00\u81f4\u306b\u3088\u308b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3059\u3002
Lagoon\u3067\u306f\u4ee5\u4e0b\u306e\u66f4\u65b0\u65b9\u6cd5\u304c\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/automatic-updates/#drupal","title":"Drupal \u81ea\u52d5\u66f4\u65b0","text":"Drupal \u81ea\u52d5\u66f4\u65b0\u30e2\u30b8\u30e5\u30fc\u30eb:contrib\u30e2\u30b8\u30e5\u30fc\u30eb\u306e[\u81ea\u52d5\u66f4\u65b0] (https ://www.drupal.org/project/automatic_updates)\u306f\u7121\u52b9\u5316\u3055\u308c\u3066\u304a\u308a\u3001Drupal\u30b3\u30a2\u306b\u79fb\u884c\u3057\u3066\u3082\u7121\u52b9\u5316\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/automatic-updates/#drush","title":"Drush","text":"drush pm-install
\u307e\u305f\u306fdrush pm-update
\u30b3\u30de\u30f3\u30c9\u306f\u3001amazeeio/drupal-integrations\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4e00\u90e8\u3068\u3057\u3066\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/drush-9/#_1","title":"\u30a8\u30a4\u30ea\u30a2\u30b9","text":"\u6b8b\u5ff5\u306a\u304c\u3089\u3001Drush 9\u3067\u306f Drush 8\u306e\u3088\u3046\u306a\u52d5\u7684\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u6ce8\u5165\u6a5f\u80fd\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002Drush\u30c1\u30fc\u30e0\u3068\u5354\u529b\u3057\u3066\u3001\u3053\u306e\u6a5f\u80fd\u3092\u518d\u3073\u5b9f\u88c5\u3067\u304d\u308b\u3088\u3046\u306b\u53d6\u308a\u7d44\u3093\u3067\u3044\u307e\u3059\u3002\u5f53\u9762\u306e\u9593\u3001Drush 9\u3092Lagoon\u3068\u4e00\u7dd2\u306b\u4f7f\u7528\u3059\u308b\u969b\u306e\u56de\u907f\u7b56\u3092\u3054\u7d39\u4ecb\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/drush-9/#_2","title":"\u57fa\u672c\u7684\u306a\u8003\u3048\u65b9","text":"Drush 9\u306f\u65b0\u3057\u3044\u30b3\u30de\u30f3\u30c9drush site:alias-convert
\u3092\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001Drush 8 \u5f62\u5f0f\u306e\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092 Drush 9\u306eYAML\u5f62\u5f0f\u306e\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001Lagoon\u306b\u73fe\u5728\u5b58\u5728\u3059\u308b\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4e00\u5ea6\u3060\u3051\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u3001\u305d\u308c\u3089\u3092/app/drush/sites
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001\u3053\u308c\u3089\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u306f drush sa
\u306e\u3088\u3046\u306a\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u969b\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/drush-9/#_3","title":"\u6e96\u5099","text":"drush site:alias-convert
\u3092\u4f7f\u7528\u3059\u308b\u524d\u306b\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
drush
\u30d5\u30a9\u30eb\u30c0\u5185\u306ealiases.drushrc.php
\u3092lagoon.aliases.drushrc.php
\u306b\u30ea\u30cd\u30fc\u30e0\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/drush-9/#_4","title":"\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u751f\u6210","text":"cli
\u30b3\u30f3\u30c6\u30ca\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001Drush\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u5909\u63db\u3067\u304d\u307e\u3059:
\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u751f\u6210
docker-compose exec cli drush site:alias-convert /app/drush/sites --yes\n
\u751f\u6210\u3055\u308c\u305fYAML\u30d5\u30a1\u30a4\u30eb\u306fGit\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30df\u30c3\u30c8\u3059\u308b\u306e\u304c\u826f\u3044\u7fd2\u6163\u3067\u3059\u3002\u305d\u3046\u3059\u308b\u3053\u3068\u3067\u3001\u4ed6\u306e\u958b\u767a\u8005\u3082\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002"},{"location":"ja/applications/drupal/drush-9/#_5","title":"\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u4f7f\u7528","text":"Drush 9\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306f\u30b0\u30eb\u30fc\u30d7\u540d\u3067\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u304c\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002\u4eca\u56de\u3067\u3042\u308c\u3070\u3001\u305d\u306e\u30b0\u30eb\u30fc\u30d7\u540d\u306flagoon\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u3001\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u4ed8\u304d\u306e\u3059\u3079\u3066\u306e\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002
\u3059\u3079\u3066\u306e\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u8868\u793adrush sa --format=list\n
\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u5229\u7528\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u3088\u3046\u306b\u3057\u307e\u3059:
Drush \u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u4f7f\u7528drush @lagoon.main ssh\n
"},{"location":"ja/applications/drupal/drush-9/#_6","title":"\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u66f4\u65b0","text":"Lagoon\u3067\u65b0\u3057\u3044\u74b0\u5883\u304c\u4f5c\u6210\u3055\u308c\u305f\u5834\u5408\u3001drush site:alias-convert
\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u30d5\u30a1\u30a4\u30eb (.yml) \u3092\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3067lagoon.site.yml
\u304c\u66f4\u65b0\u3055\u308c\u306a\u3044\u5834\u5408\u306f\u3001\u6700\u521d\u306blagoon.site.yml
\u3092\u524a\u9664\u3057\u3066\u304b\u3089\u3001\u3082\u3046\u4e00\u5ea6drush site:alias-convert
\u3092\u5b9f\u884c\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/drush-9/#drush-rsync","title":"\u30ed\u30fc\u30ab\u30eb\u304b\u3089\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u3078\u306eDrush rsync
","text":"\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u304b\u3089\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u540c\u671f\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u8ffd\u52a0\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6e21\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
Drush rsyncdrush rsync @self:%files @lagoon.main:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n
\u3053\u308c\u306f\u3001Lagoon\u306e\u30bf\u30b9\u30afUI\u3092\u4f7f\u7528\u305b\u305a\u306b\u3001\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u9593\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u540c\u671f\u3059\u308b\u5834\u5408\u306b\u3082\u5f53\u3066\u306f\u307e\u308a\u307e\u3059\u3002
\u305f\u3068\u3048\u3070\u3001@lagoon.main
\u304b\u3089@lagoon.dev
\u3078\u30d5\u30a1\u30a4\u30eb\u3092\u540c\u671f\u3057\u305f\u3044\u5834\u5408\u3001\u4e0a\u8a18\u306e\u8ffd\u52a0\u30d1\u30e9\u30e1\u30fc\u30bf\u306a\u3057\u3067\u30ed\u30fc\u30ab\u30eb\u3067drush rsync @lagoon.main @lagoon.dev
\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\"Cannot specify two remote aliases\" (2 \u3064\u306e\u30ea\u30e2\u30fc\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093) \u3068\u3044\u3046\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
\u3053\u308c\u3092\u89e3\u6c7a\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u5b9b\u5148\u306e\u74b0\u5883\u306bSSH\u3067\u63a5\u7d9a drush @lagoon.dev ssh
\u3057\u3001\u4e0a\u8a18\u3068\u540c\u69d8\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066 rsync
\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
Drush rsyncdrush rsync @lagoon.main:%files @self:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n
\u4e0a\u8a18\u306e\u5185\u5bb9\u306f\u3001\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u304b\u3089\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u3078 rsync
\u3092\u4f7f\u3063\u3066\u540c\u671f\u3059\u308b\u5834\u5408\u306b\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002
\u307e\u305f\u3001\u79c1\u305f\u3061\u306fDrush\u306e\u30e1\u30f3\u30c6\u30ca\u3068\u5354\u529b\u3057\u3066\u3001\u3053\u308c\u3092\u81ea\u52d5\u7684\u306b\u6ce8\u5165\u3059\u308b\u65b9\u6cd5\u3092\u6a21\u7d22\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/","title":"Drupal\u306e\u521d\u56de\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8","text":""},{"location":"ja/applications/drupal/first-deployment-of-drupal/#1-make-sure-you-are-all-set","title":"1. \u6e96\u5099\u3092\u6574\u3048\u307e\u3057\u3087\u3046","text":"\u521d\u56de\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u6210\u529f\u3055\u305b\u308b\u305f\u3081\u306b\u306f\u3001Drupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304cLagoon\u5316\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3068\u3001Lagoon\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u3067\u3082\u5fc3\u914d\u306f\u3044\u308a\u307e\u305b\u3093\uff01\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#2-push","title":"2. \u30d7\u30c3\u30b7\u30e5","text":"Lagoon \u3092\u5229\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30c7\u30d7\u30ed\u30a4\u7528\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u306b push \u3059\u308b\u3053\u3068\u3067\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002
\u65b0\u3057\u3044\u30b3\u30fc\u30c9\u3092push\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u5834\u5408\u3067\u3082\u5fc3\u914d\u306f\u3044\u308a\u307e\u305b\u3093\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002
Git\u306bpushgit commit --allow-empty -m \"go, go! Power Rangers!\"\ngit push\n
\u30d7\u30c3\u30b7\u30e5\u304c\u5b9f\u884c\u3055\u308c\u308b\u3068\u3001Git\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u304c\u8a2d\u5b9a\u6e08\u307f\u306eWebhook\u3092\u4ecb\u3057\u3066Lagoon\u306b\u901a\u77e5\u3057\u307e\u3059\u3002
\u3059\u3079\u3066\u6b63\u5e38\u3067\u3042\u308c\u3070\u3001\u8a2d\u5b9a\u6e08\u307f\u306e\u30c1\u30e3\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u306b\u901a\u77e5\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002(\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u306fLagoon\u7ba1\u7406\u8005\u306b\u554f\u3044\u5408\u308f\u305b\u3066\u304f\u3060\u3055\u3044):
\u3053\u306e\u901a\u77e5\u306f\u3001Lagoon\u304c\u30b3\u30fc\u30c9\u306e\u30c7\u30d7\u30ed\u30a4\u3092\u958b\u59cb\u3057\u305f\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u6642\u9593\u306f\u3001\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u306e\u30b5\u30a4\u30ba\u3068\u30b3\u30f3\u30c6\u30ca\u306e\u6570\u306b\u3088\u3063\u3066\u6570\u79d2\u304b\u304b\u308a\u307e\u3059\u3002\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u3002\u73fe\u5728\u306e\u72b6\u6cc1\u3092\u78ba\u8a8d\u3057\u305f\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u30d7\u30ed\u30bb\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u30c7\u30d7\u30ed\u30a4\u306e\u9032\u884c\u72b6\u6cc1\u306f\u3001LagoonUI\u3067\u3082\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002(URL\u304c\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001Lagoon\u7ba1\u7406\u8005\u306b\u554f\u3044\u5408\u308f\u305b\u3066\u304f\u3060\u3055\u3044)
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#3-a-fail","title":"3. \u5931\u6557","text":".lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30c7\u30d7\u30ed\u30a4\u5f8c\u51e6\u7406\u30bf\u30b9\u30af\u306b\u3088\u3063\u3066\u306f\u3001drush updb
\u3084drush cr
\u306a\u3069\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306eDrush\u30bf\u30b9\u30af\u306f\u3001\u74b0\u5883\u5185\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u5b58\u5728\u3059\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u30c7\u30d7\u30ed\u30a4\u76f4\u5f8c\u3067\u306f\u5f53\u7136\u306a\u304c\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u65b9\u6cd5\u3092\u6b21\u306b\u8aac\u660e\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#4-synchronize-local-database-to-the-remote-lagoon-environment","title":"4. \u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30ea\u30e2\u30fc\u30c8\u306eLagoon\u74b0\u5883\u306b\u540c\u671f","text":"Lagoon\u306f\u5b8c\u5168\u306aDrush\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u30ea\u30e2\u30fc\u30c8\u306eLagoon\u74b0\u5883\u3092\u540c\u671f\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u8b66\u544a
\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306e\u524d\u306b\u3001pygmy\u306b\u516c\u958b\u30ad\u30fc\u3092\u767b\u9332\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
Permission denied (publickey)
\u306a\u3069\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u3001\u3053\u3061\u3089\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044:pygmy - ssh\u30ad\u30fc\u306e\u8ffd\u52a0
\u307e\u305a\u306f\u3001Drush \u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046:
\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u53d6\u5f97drush sa\n
\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u73fe\u5728\u30c7\u30d7\u30ed\u30a4\u6e08\u307f\u306e\u74b0\u5883\u304c\u53d6\u5f97\u3055\u308c\u307e\u3059\uff08\u6700\u65b0\u306e\u72b6\u614b\u306f\u3001develop
\u30d6\u30e9\u30f3\u30c1\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u305f\u6642\u70b9\u306e\u3082\u306e\u3068\u4eee\u5b9a\u3057\u307e\u3059\uff09:
\u8fd4\u3055\u308c\u305f\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9[drupal-example]cli-drupal:/app$ drush sa\n@develop\n@self\ndefault\n
\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9(Drush\u3067\u306f\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9@self
\u3067\u8868\u3055\u308c\u307e\u3059)\u3068\u30ea\u30e2\u30fc\u30c8\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9(@develop
)\u3092\u540c\u671f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
Drush sql-syncdrush sql-sync @self @develop\n
\u6b21\u306e\u3088\u3046\u306a\u7d50\u679c\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059:
Drush sql-sync\u306e\u7d50\u679c[drupal-example]cli-drupal:/app$ drush sql-sync @self @develop\nYou will destroy data in ssh.example.com/drupal and replace with data from drupal.\nDo you really want to continue? (y/n): y\nStarting to dump database on Source. [ok]\nDatabase dump saved to /home/drush-backups/drupal/20180227075813/drupal_20180227_075815.sql.gz [success]\nStarting to discover temporary files directory on Destination. [ok]\nYou will delete files in drupal-example-develop@ssh.example.com:/tmp/drupal_20180227_075815.sql.gz and replace with data from /home/drush-backups/drupal/20180227075813/drupal_20180227_075815.sql.gz\nDo you really want to continue? (y/n): y\nCopying dump file from Source to Destination. [ok]\nStarting to import dump file onto Destination database.\n
\u3055\u3066\u3001\u518d\u5ea6\u30c7\u30d7\u30ed\u30a4\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u4eca\u5ea6\u306f\u7a7a\u306e\u30d7\u30c3\u30b7\u30e5\u3067\u3059:
Git pushgit commit --allow-empty -m \"\u884c\u3051\u3001\u884c\u3051\uff01 \u30d1\u30ef\u30fc\u30ec\u30f3\u30b8\u30e3\u30fc\uff01\"\ngit push\n
\u4eca\u5ea6\u306f\u3059\u3079\u3066\u6b63\u5e38\u306b\u52d5\u4f5c\u3059\u308b\u306f\u305a\u3067\u3059:
\u901a\u77e5\u5185\u306e\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001Drupal\u30b5\u30a4\u30c8\u304c\u3059\u3079\u3066\u306e\u6a5f\u80fd\u3092\u5099\u3048\u3066\u30ed\u30fc\u30c9\u3055\u308c\u305f\u72b6\u614b\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u304a\u305d\u3089\u304f\u307e\u3060\u753b\u50cf\u306f\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u305d\u308c\u306f\u30b9\u30c6\u30c3\u30d75\u3067\u51e6\u7406\u3057\u307e\u3059\u3002
\u30c7\u30d7\u30ed\u30a4\u304c\u4f9d\u7136\u3068\u3057\u3066\u5931\u6557\u3059\u308b\u5834\u5408\u306f\u3001\u8a73\u7d30\u60c5\u5831\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u30ed\u30b0\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#5-synchronize-local-files-to-the-remote-lagoon-environment","title":"5. \u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u3092\u30ea\u30e2\u30fc\u30c8\u306eLagoon\u74b0\u5883\u306b\u540c\u671f","text":"\u304a\u305d\u3089\u304f\u4e88\u60f3\u901a\u308a\u3067\u3059\u304c\u3001Drush\u3092\u4f7f\u3063\u3066\u540c\u671f\u3067\u304d\u307e\u3059:
Drush rsyncdrush rsync @self:%files @develop:%files\n
\u6b21\u306e\u3088\u3046\u306a\u8868\u793a\u304c\u51fa\u308b\u306f\u305a\u3067\u3059:
Drush rsync results[drupal-example]cli-drupal:/app$ drush rsync @self:%files @develop:%files\nYou will delete files in drupal-example-develop@ssh.example.com:/app/web/sites/default/files and replace with data from /app/web/sites/default/files/\nDo you really want to continue? (y/n): y\n
\u3057\u304b\u3057\u3001\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u3053\u306e\u3088\u3046\u306b\u6b63\u3057\u304f\u8868\u793a\u3055\u308c\u306a\u3044\u3053\u3068\u3082\u3042\u308b\uff1a
Drush rsync results[drupal-example]cli-drupal:/app$ drush rsync @self:%files @develop:%files\nYou will delete files in drupal-example-develop@ssh.example.com:'/app/web/%files' and replace with data from '/app/web/%files'/\nDo you really want to continue? (y/n):\n
\u3053\u306e\u7406\u7531\u306f\u3001Drupal\u304c\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3092\u89e3\u6c7a\u3067\u304d\u306a\u3044\u305f\u3081\u3067\u3059\u3002\u3053\u308c\u306f\u304a\u305d\u3089\u304f\u3001Drupal\u304c\u5b8c\u5168\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u304b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u5b58\u5728\u3057\u306a\u3044\u3053\u3068\u304c\u539f\u56e0\u3067\u3059\u3002\u56de\u907f\u7b56\u3068\u3057\u3066\u306fdrush rsync @self:sites/default/files @develop:sites/default/files
\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u5b9f\u969b\u306b\u306f\u30ed\u30fc\u30ab\u30eb\u3068\u30ea\u30e2\u30fc\u30c8\u306e Drupal \u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059 (drush status
\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059)
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#6-its-done","title":"6. \u5b8c\u4e86","text":"Lagoon\u304c\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u3092\u5b8c\u4e86\u3059\u308b\u3068\u3001\u30c1\u30e3\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u306b\u6b21\u306e\u3088\u3046\u306a2\u56de\u76ee\u306e\u901a\u77e5\u304c\u9001\u4fe1\u3055\u308c\u307e\u3059\u3002:
\u901a\u77e5\u306f\u6b21\u306e\u3088\u3046\u306a\u5185\u5bb9\u3092\u793a\u3057\u3066\u3044\u307e\u3059:
- \u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8
- \u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u3068Git SHA
- \u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u306e\u30ed\u30b0\u3078\u306e\u30ea\u30f3\u30af
- \u74b0\u5883\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c8(URL)\u3078\u306e\u30ea\u30f3\u30af
\u3053\u308c\u3067\u4f5c\u696d\u306f\u5b8c\u4e86\u3067\u3059! DevOps\u3092\u7c21\u5358\u306b\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u79c1\u305f\u3061\u306e\u76ee\u6a19\u3067\u3059\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#but-wait-how-about-other-branches-or-the-production-environment","title":"\u3057\u304b\u3057\u3001\u4ed6\u306e\u30d6\u30e9\u30f3\u30c1\u3084\u672c\u756a\u74b0\u5883\u306f\u3069\u3046\u306a\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f","text":"Lagoon\u306e\u512a\u308c\u305f\u70b9\u306f\u3001\u307e\u3063\u305f\u304f\u540c\u3058\u65b9\u6cd5\u3067\u51e6\u7406\u3067\u304d\u308b\u3053\u3068\u3067\u3059\u3002\u672c\u756a\u74b0\u5883\u30d6\u30e9\u30f3\u30c1\u3068\u3057\u3066\u5b9a\u7fa9\u3057\u305f\u30d6\u30e9\u30f3\u30c1\u540d\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3068\u3001\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/first-deployment-of-drupal/#failure-dont-worry","title":"\u30c7\u30d7\u30ed\u30a4\u306e\u5931\u6557","text":"\u30c7\u30d7\u30ed\u30a4\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u304b\uff1f \u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u30d8\u30eb\u30d7\u3092\u7528\u610f\u3057\u3066\u3044\u307e\u3059:
- \u30a8\u30e9\u30fc\u901a\u77e5\u5185\u306e
logs
\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u30d7\u30ed\u30bb\u30b9\u3067\u3069\u3053\u3067\u5931\u6557\u3057\u305f\u304b\u304c\u308f\u304b\u308a\u307e\u3059\u3002 - \u554f\u984c\u304c\u89e3\u6c7a\u3067\u304d\u306a\u3044\u5834\u5408\u306f\u3001Lagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30b5\u30dd\u30fc\u30c8\u3044\u305f\u3057\u307e\u3059!
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/","title":"Drupal\u3068Fastly\u306e\u7d71\u5408","text":""},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_1","title":"\u524d\u63d0\u6761\u4ef6","text":" - Drupal 7\u4ee5\u964d
- Fastly\u30b5\u30fc\u30d3\u30b9ID
- \u30d1\u30fc\u30b8\u6a29\u9650\u3092\u6301\u3064Fastly API\u30c8\u30fc\u30af\u30f3
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#drupal-7url","title":"Drupal 7\u3067\u306eURL\u30d9\u30fc\u30b9\u306e\u30d1\u30fc\u30b8","text":" - Fastly Drupal\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
- Fastly\u30b5\u30fc\u30d3\u30b9ID\u3068API\u30c8\u30fc\u30af\u30f3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
- \u5fc5\u8981\u306b\u5fdc\u3058\u3066Webhooks\u3092\u8a2d\u5b9a\u3057\u307e\u3059(\u4f8b\u3048\u3070\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30d1\u30fc\u30b8\u304c\u9001\u4fe1\u3055\u308c\u305f\u3068\u304d\u306bSlack\u306b\u901a\u77e5\u3059\u308b\u306a\u3069)\u3002
- Drupal 7\u3067\u306fURL\u30d9\u30fc\u30b9\u306e\u30d1\u30fc\u30b8(\u7c21\u6613\u30d1\u30fc\u30b8)\u306e\u307f\u304c\u53ef\u80fd\u3067\u3059\u3002
settings.php
\u3067Drupal\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8IP\u3092\u5909\u66f4\u3057\u307e\u3059:
Drupal 7\u306e\u305f\u3081\u306esettings.php\u306e\u5909\u66f4$conf['reverse_proxy_header'] = 'HTTP_TRUE_CLIENT_IP';\n
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#drupal-10","title":"Drupal 10\u4ee5\u964d\u3067\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u30d1\u30fc\u30b8","text":"Composer\u3092\u4f7f\u3063\u3066\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u53d6\u5f97\u3057\u307e\u3059:
Fastly Drupal\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u4f9d\u5b58\u95a2\u4fc2\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9composer require drupal/fastly drupal/http_cache_control drupal/purge\n
\u6b21\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
fastly
fastlypurger
http_cache_control
(2.x) purge
purge_ui
(\u6280\u8853\u7684\u306b\u306f\u5fc5\u9808\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u672c\u756a\u74b0\u5883\u3067\u6709\u52b9\u306b\u3059\u308b\u3068\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3059) purge_processor_lateruntime
purge_processor_cron
purge_queuer_coretags
purge_drush
(Drush\u3092\u4f7f\u3063\u305f\u30d1\u30fc\u30b8\u306b\u4fbf\u5229\u3067\u3059\u3002\u3053\u3061\u3089\u306b\u30b3\u30de\u30f3\u30c9\u306e\u30ea\u30b9\u30c8\u304c\u3042\u308a\u307e\u3059)
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#drupalfastly_1","title":"Drupal\u3067Fastly\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8a2d\u5b9a\u3057\u307e\u3059","text":"Fastly\u30b5\u30fc\u30d3\u30b9ID\u3068API\u30c8\u30fc\u30af\u30f3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30b5\u30a4\u30c8ID\u306f\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u5b9f\u884c\u6642\u74b0\u5883\u5909\u6570\u3092\u5229\u7528\u3059\u308b\u304b\u3001/admin/config/services/fastly
\u306b\u3042\u308b\u8a2d\u5b9a\u30d5\u30a9\u30fc\u30e0\u3092\u7de8\u96c6\u3067\u304d\u307e\u3059:
FASTLY_API_TOKEN
FASTLY_API_SERVICE
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_2","title":"\u30d1\u30fc\u30b8\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a","text":" - \u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u30cf\u30c3\u30b7\u30e5\u9577: 4\u6587\u5b57
- \u30d1\u30fc\u30b8\u65b9\u5f0f: \u30bd\u30d5\u30c8\u30d1\u30fc\u30b8\u3092\u4f7f\u7528
\u307b\u3068\u3093\u3069\u306e\u30b5\u30a4\u30c8\u3067\u306f4
\u6587\u5b57\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u3067\u5341\u5206\u3067\u3059\u304c\u3001\u6570\u767e\u4e07\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u6301\u3064\u30b5\u30a4\u30c8\u3067\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u306e\u885d\u7a81\u3092\u6e1b\u3089\u3059\u305f\u3081\u306b5
\u6587\u5b57\u306e\u65b9\u304c\u826f\u3044\u3067\u3057\u3087\u3046\u3002
\u6ce8\u610f:
\u30bd\u30d5\u30c8\u30d1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002Fastly\u5185\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u53e4\u304f\u306a\u3063\u305f\u3068\u30de\u30fc\u30af\u3055\u308c\u3001\u5b8c\u5168\u306b\u524a\u9664\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u306e\u3067\u3001\u30aa\u30ea\u30b8\u30f3\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u308b\u5834\u5408\u306b\u3082\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059(\u53e4\u304f\u306a\u3063\u305f\u3082\u306e\u3092\u63d0\u4f9b\u3059\u308b\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u305f\u5834\u5408)
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_3","title":"\u53e4\u3044\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a","text":"\u30b5\u30a4\u30c8\u306b\u9069\u3057\u305f\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u6700\u5c0f1\u6642\u9593(3600
)\u3001\u6700\u59271\u9031\u9593(604800
)\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8a2d\u5b9a\u304c\u4e00\u822c\u7684\u3067\u3059:
- \u518d\u691c\u8a3c\u6642\u306b\u30b9\u30c6\u30fc\u30eb - \u30aa\u30f3\u3001
14440
\u79d2 - \u30a8\u30e9\u30fc\u6642\u306b\u30b9\u30c6\u30fc\u30eb - \u30aa\u30f3\u3001
604800
\u79d2
\u5fc5\u8981\u306b\u5fdc\u3058\u3066Webhook\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059(\u305f\u3068\u3048\u3070\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30d1\u30fc\u30b8\u304c\u9001\u4fe1\u3055\u308c\u305f\u3068\u304d\u306bSlack\u306b\u901a\u77e5\u3092\u9001\u308b\u306a\u3069)
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#purge","title":"Purge\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u8a2d\u5b9a","text":"\u30d1\u30fc\u30b8\u30da\u30fc\u30b8/admin/config/development/performance/purge
\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002
\u4ee5\u4e0b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3057\u307e\u3059:
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_4","title":"\u30ad\u30e3\u30c3\u30b7\u30e5\u7121\u52b9\u5316","text":" - Drupal Origin: \u30bf\u30b0
- Fastly: E\u3001\u30bf\u30b0\u3001URL
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_5","title":"\u30ad\u30e5\u30fc","text":" - \u30ad\u30e5\u30fc\u30ef\u30fc:\u30b3\u30a2\u30bf\u30b0\u30ad\u30e5\u30fc\u30ef\u30fc\u3001\u30d1\u30fc\u30b8\u30d6\u30ed\u30c3\u30af(\u8907\u6570\u53ef)
- \u30ad\u30e5\u30fc:\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9
- \u30d7\u30ed\u30bb\u30c3\u30b5:\u30b3\u30a2\u30d7\u30ed\u30bb\u30c3\u30b5\u3001\u30ec\u30a4\u30c8\u30e9\u30f3\u30bf\u30a4\u30e0\u30d7\u30ed\u30bb\u30c3\u30b5\u3001\u30d1\u30fc\u30b8\u30d6\u30ed\u30c3\u30af(\u8907\u6570\u53ef)
\u3053\u308c\u306f\u3001Drupal\u306e\u7d44\u307f\u8fbc\u307f\u306e\u30b3\u30a2\u30bf\u30b0\u30ad\u30e5\u30fc\u30ef\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30ad\u30e5\u30fc\u306b\u30bf\u30b0\u3092\u8ffd\u52a0\u3057\u3001\u30ad\u30e5\u30fc\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3055\u308c (\u30c7\u30d5\u30a9\u30eb\u30c8)\u3001\u4ee5\u4e0b\u306e\u30d7\u30ed\u30bb\u30c3\u30b5\u306b\u3088\u3063\u3066\u51e6\u7406\u3055\u308c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
- Cron\u30d7\u30ed\u30bb\u30c3\u30b5
- \u30ec\u30a4\u30c8\u30e9\u30f3\u30bf\u30a4\u30e0\u30d7\u30ed\u30bb\u30c3\u30b5
cron\u30d7\u30ed\u30bb\u30c3\u30b5\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u30b5\u30a4\u30c8\u3067cron\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 (\u7406\u60f3\u7684\u306b\u306f1\u5206\u3054\u3068)\u3002cli
\u30dd\u30c3\u30c9\u3067cron\u3092\u624b\u52d5\u5b9f\u884c\u3057\u3066\u3001purge_processor_cron_cron()
\u304c\u30a8\u30e9\u30fc\u306a\u304f\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
cron\u306e\u958b\u59cb[drupal8]production@cli-drupal:/app$ drush cron -v\n...\n[notice] purge_processor_cron_cron()\u306e\u5b9f\u884c\u3092\u958b\u59cb\u3001node_cron()\u306e\u5b9f\u884c\u306f21.16ms\u304b\u304b\u308a\u307e\u3057\u305f\u3002\n
\u30ec\u30a4\u30a2\u30a6\u30c8\u30d1\u30fc\u30b8\u306f\u3001\u30da\u30fc\u30b8\u30ed\u30fc\u30c9\u3054\u3068\u306bhook_exit()\u3067\u5b9f\u884c\u3055\u308c\u308bLate runtime processor
\u306b\u3088\u3063\u3066\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30d1\u30fc\u30b8\u8981\u6c42\u304c\u30ad\u30e5\u30fc\u306b\u8ffd\u52a0\u3055\u308c\u308b\u3068\u307b\u307c\u540c\u6642\u306b\u51e6\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3059\u3002
\u4e21\u65b9\u306e\u65b9\u5f0f\u3092\u4f75\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30d1\u30fc\u30b8\u304c\u53ef\u80fd\u306a\u9650\u308a\u8fc5\u901f\u306b\u5b9f\u884c\u3055\u308c\u308b\u3053\u3068\u304c\u4fdd\u8a3c\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#_6","title":"\u6700\u9069\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30d8\u30c3\u30c0\u30fc\u8a2d\u5b9a","text":"Drupal\u306f\u6a19\u6e96\u8a2d\u5b9a\u3067\u306f\u3001\u30d6\u30e9\u30a6\u30b6\u3068Fastly\u3067\u7570\u306a\u308b\u30ad\u30e3\u30c3\u30b7\u30e5\u6709\u52b9\u671f\u9650\u3092\u8a2d\u5b9a\u3059\u308b\u6a5f\u80fd\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u306e\u305f\u3081\u3001Drupal\u3067\u9577\u3044\u30ad\u30e3\u30c3\u30b7\u30e5\u6709\u52b9\u671f\u9650\u3092\u8a2d\u5b9a\u3057\u3066\u3082\u3001\u30d6\u30e9\u30a6\u30b6\u304c\u65e2\u306b\u30da\u30fc\u30b8\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30e6\u30fc\u30b6\u30fc\u306f\u5909\u66f4\u3092\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093\u3002HTTP Cache Control\u30e2\u30b8\u30e5\u30fc\u30eb\u306e2.x
\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3068\u3001\u3055\u307e\u3056\u307e\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u5bfe\u3057\u3066\u3001\u3088\u308a\u8a73\u7d30\u306a\u6709\u52b9\u671f\u9650\u8a2d\u5b9a\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002
\u307b\u3068\u3093\u3069\u306e\u30b5\u30a4\u30c8\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8a2d\u5b9a\u304c\u59a5\u5f53\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306b\u306a\u308b\u3067\u3057\u3087\u3046\u3002
- \u5171\u6709\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: 1\u30f6\u6708
- \u30d6\u30e9\u30a6\u30b6\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: 10\u5206
- 404 \u30a8\u30e9\u30fc\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: 15\u5206
- 302 \u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: 1\u6642\u9593
- 301 \u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: 1\u6642\u9593
- 5xx \u30a8\u30e9\u30fc\u30ad\u30e3\u30c3\u30b7\u30e5\u6700\u5927\u6709\u52b9\u671f\u9650: \u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u306a\u3044
\u6ce8\u610f:
\u3053\u306e\u8a2d\u5b9a\u306f\u3001\u30b5\u30a4\u30c8\u4e0a\u306e\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u5bfe\u3057\u3066\u9069\u5207\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#ip","title":"\u5b9f\u969b\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8IP","text":"Fastly\u306f\u3001\u5b9f\u969b\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306eIP\u30a2\u30c9\u30ec\u30b9\u3092True-Client-IP
HTTP\u30d8\u30c3\u30c0\u30fc\u3067\u8fd4\u9001\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002settings.php
\u3067\u4ee5\u4e0b\u306e\u5909\u66f4\u3092\u884c\u3046\u3053\u3068\u3067\u3001Drupal\u304c\u3053\u306e\u30d8\u30c3\u30c0\u30fc\u3092\u5c0a\u91cd\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
Drupal < 8.7.0\u7528\u306esettings.php\u306e\u5909\u66f4$settings['reverse_proxy'] = TRUE;\n$settings['reverse_proxy_header'] = 'HTTP_TRUE_CLIENT_IP';\n
\u3057\u304b\u3057\u3001Drupal 8.7.0\u3067\u306f\u3001\u3053\u306e\u6a5f\u80fd\u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u30b9\u30cb\u30da\u30c3\u30c8\u3067\u540c\u69d8\u306e\u52d5\u4f5c\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002
Drupal >= 8.7.0\u7528\u306esettings.php\u306e\u5909\u66f4/**\n * Drupal\u306bTrue-Client-IP HTTP\u30d8\u30c3\u30c0\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u6307\u793a\u3057\u307e\u3059\u3002\n */\nif (isset($_SERVER['HTTP_TRUE_CLIENT_IP'])) {\n $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_TRUE_CLIENT_IP'];\n}\n
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#drush","title":"Drush\u7d71\u5408","text":"settings.php fastly:\n fastly:purge:all (fpall) \u30b5\u30fc\u30d3\u30b9\u5168\u4f53\u3092\u30d1\u30fc\u30b8\n fastly:purge:key (fpkey) \u30ad\u30fc\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30d1\u30fc\u30b8\n fastly:purge:url (fpurl) URL\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30d1\u30fc\u30b8\n## cURL\u3092\u4f7f\u7528\u3057\u3066Fastly\u30ad\u30e3\u30c3\u30b7\u30e5\u30d8\u30c3\u30c0\u30fc\u3092\u8868\u793a\u3059\u308b\n\u4ee5\u4e0b\u306e\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044:(Linux\u3068Mac OSX\u3067\u52d5\u4f5c\u3057\u307e\u3059)\n```bash title=\"cURL function\"\nfunction curlf() { curl -sLIXGET -H 'Fastly-Debug:1' \"$@\" | grep -iE 'X-Cache|Cache-Control|Set-Cookie|X-Varnish|X-Hits|Vary|Fastly-Debug|X-Served|surrogate-control|surrogate-key' }\n
Using cURL$ curlf https://www.example-site-fastly.com\ncache-control: max-age=601, public, s-maxage=2764800\nsurrogate-control: max-age=2764800, public, stale-while-revalidate=3600, stale-if-error=3600\nfastly-debug-path: (D cache-wlg10427-WLG 1612906144) (F cache-wlg10426-WLG 1612906141) (D cache-fra19179-FRA 1612906141) (F cache-fra19122-FRA 1612906141)\nfastly-debug-ttl: (H cache-wlg10427-WLG - - 3) (M cache-fra19179-FRA - - 0)\nfastly-debug-digest: 1118d9fefc8a514ca49d49cb6ece04649e1acf1663398212650bb462ba84c381\nx-served-by: cache-fra19179-FRA, cache-wlg10427-WLG\nx-cache: MISS, HIT\nx-cache-hits: 0, 1\nvary: Cookie, Accept-Encoding\n
\u4e0a\u8a18\u306e\u30d8\u30c3\u30c0\u30fc\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u60c5\u5831\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059:
- HTML\u30da\u30fc\u30b8\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u53ef\u80fd
- \u30d6\u30e9\u30a6\u30b6\u306f\u30da\u30fc\u30b8\u3092601\u79d2\u9593\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u307e\u3059
- Fastly\u306f\u30da\u30fc\u30b8\u309232\u65e5\u9593(
2764800
\u79d2)\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u307e\u3059 - \u968e\u5c64\u578b\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u6709\u52b9(Wellington\u306e\u30a8\u30c3\u30b8PoP\u3001\u30d5\u30e9\u30f3\u30b9\u306e\u30b7\u30fc\u30eb\u30c9PoP)
- HTML\u30da\u30fc\u30b8\u306f\u30a8\u30c3\u30b8PoP\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u30d2\u30c3\u30c8\u3057\u307e\u3057\u305f
"},{"location":"ja/applications/drupal/integrate-drupal-and-fastly/#fastly","title":"Fastly\u306b\u624b\u52d5\u3067\u30d1\u30fc\u30b8\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b","text":"\u7279\u5b9a\u306e\u30da\u30fc\u30b8\u3092\u624b\u52d5\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u304b\u3089\u524a\u9664\u3057\u305f\u3044\u5834\u5408\u3001\u3044\u304f\u3064\u304b\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002
\u5358\u4e00\u306eURL\u3067Fastly\u3092\u30d1\u30fc\u30b8curl -Ssi -XPURGE -H 'Fastly-Soft-Purge:1' -H \"Fastly-Key:$FASTLY_API_TOKEN\" https://www.example.com/subpage\n
\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u3092\u6307\u5b9a\u3057\u3066\u30d1\u30fc\u30b8\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u3067Fastly\u3092\u30d1\u30fc\u30b8curl -XPOST -H 'Fastly-Soft-Purge:1' -H \"Fastly-Key:$FASTLY_API_TOKEN\" https://api.fastly.com/service/$FASTLY_API_SERVICE/purge/<surrogatekey>\n
Fastly CLI\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u3088\u308a\u7c21\u5358\u306b\u30d1\u30fc\u30b8\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/","title":"PHPUnit\u3068PhpStorm","text":"\u6ce8\u610f:
\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u306f\u3001\u4ee5\u4e0b\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059:
- Docker\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b
- docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u6301\u3064\u6a19\u6e96\u7684\u306aAmazee/Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b
- Mac\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b(\u4ed6\u306eOS\u3067\u3082\u52d5\u4f5c\u3059\u308b\u306f\u305a\u3067\u3059\u304c\u3001\u30d5\u30a9\u30eb\u30c0\u69cb\u9020\u3084\u8a2d\u5b9a\u304c\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059)
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_1","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a","text":" /core/phpunit.xml.dist
\u30d5\u30a1\u30a4\u30eb\u3092\u8907\u88fd\u3057\u3001/core/phpunit.xml
\u3068\u3044\u3046\u540d\u524d\u3067\u4fdd\u5b58\u3057\u307e\u3059\u3002 -
/core/phpunit.xml
\u3092\u7de8\u96c6\u3057\u3001\u4ee5\u4e0b\u306e\u5909\u6570\u3092\u8a2d\u5b9a\u3057\u307e\u3059:
- SIMPLETEST_DB:
mysql://drupal:drupal@mariadb:3306/drupal#db
- SIMPLETEST_BASE_URL:
<PROJECT_URL>
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#phpstorm","title":"PhpStorm\u306e\u8a2d\u5b9a","text":""},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#docker","title":"Docker\u306e\u8a2d\u5b9a","text":" - PhpStorm\u3067\u3001\u30d5\u30a1\u30a4\u30eb > \u8a2d\u5b9a > \u30d3\u30eb\u30c9\u3001\u5b9f\u884c\u3001\u30c7\u30d7\u30ed\u30a4 > Docker\u3078\u79fb\u52d5\u3057\u307e\u3059\u3002
+
\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002 Docker for Mac
\u3092\u9078\u629e\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#cli","title":"CLI\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u306e\u8a2d\u5b9a","text":"\u65b0\u3057\u3044CLI\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u3092\u8ffd\u52a0:
- PhpStorm\u3067\u3001\u30d5\u30a1\u30a4\u30eb > \u8a2d\u5b9a > \u8a00\u8a9e & \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af > PHP\u3078\u79fb\u52d5\u3057\u307e\u3059\u3002
...
\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001 +
\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002 - \u6b21\u306b\u3001Docker\u3001vagrant\u306a\u3069\u304b\u3089\u65b0\u3057\u3044CLI\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u3092\u8ffd\u52a0\u3092\u9078\u629e\u3057\u307e\u3059\u3002
- \u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059: * \u30b5\u30fc\u30d0\u30fc:
<DOCKER>
* \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb: ./docker-compose.yml
* \u30b5\u30fc\u30d3\u30b9: cli
* \u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb: \u65e2\u5b58\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a ('docker-compose exec')
- \u30d1\u30b9\u306e\u30de\u30c3\u30d4\u30f3\u30b0:
- \u30ed\u30fc\u30ab\u30eb\u30d1\u30b9:
<ROOT_PATH>
- \u30ea\u30e2\u30fc\u30c8\u30d1\u30b9:
/app
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_2","title":"\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u306e\u8a2d\u5b9a","text":"\u30ea\u30e2\u30fc\u30c8\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u306e\u8ffd\u52a0:
- PhpStorm\u3067\u3001\u30d5\u30a1\u30a4\u30eb > \u8a2d\u5b9a > \u8a00\u8a9e & \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af > PHP > \u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3078\u79fb\u52d5\u3057\u307e\u3059\u3002
+
\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u3001PHPUnit by Remote Interpreter
\u3092\u9078\u629e\u3057\u307e\u3059\u3002 - \u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059:
- CLI\u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf:
<CLI_INTERPRETER>
- \u30d1\u30b9\u30de\u30c3\u30d4\u30f3\u30b0:
<PROJECT_ROOT> -> /app
- PHPUnit:
Use Composer autoloader
- \u30b9\u30af\u30ea\u30d7\u30c8\u3078\u306e\u30d1\u30b9:
/app/vendor/autoload.php
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb:
/app/web/core/phpunit.xml
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_3","title":"\u30e9\u30f3\u30ca\u30fc\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u8a2d\u5b9a/\u69cb\u6210","text":" - \u30e9\u30f3\u30ca\u30fc\u306e\u8a2d\u5b9a:
- PhpStorm\u3067\u3001\u5b9f\u884c > \u8a2d\u5b9a\u306e\u7de8\u96c6... > \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 > PHPUnit\u3078\u79fb\u52d5\u3057\u307e\u3059\u3002
- \u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059:
1. \u30c6\u30b9\u30c8\u30b9\u30b3\u30fc\u30d7: Defined in the configuration file
2. \u30a4\u30f3\u30bf\u30fc\u30d7\u30ea\u30bf\u30fc: <CLI_INTERPRETER>
\u6ce8\u610f:
Mac\u4ee5\u5916\u306eOS\u3067\u306f\u624b\u9806\u304c\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_4","title":"\u6700\u7d42\u30c1\u30a7\u30c3\u30af","text":""},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_5","title":"\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u524d\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u78ba\u8a8d\u304c\u5fc5\u8981\u3067\u3059\u3002","text":" - \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u8d77\u52d5\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059:
$ docker-compose up -d
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u30a8\u30e9\u30fc\u306a\u304f\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059 (\u30b5\u30a4\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u3059\u3079\u3066\u60f3\u5b9a\u901a\u308a\u306b\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044)\u3002\u5fc5\u305a\u3057\u3082\u5fc5\u8981\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304a\u304f\u3068\u5b89\u5fc3\u3067\u3059\u3002
- \u3053\u308c\u3067\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\uff01
"},{"location":"ja/applications/drupal/phpunit-and-phpstorm/#_6","title":"\u5b9f\u884c\u6e96\u5099\u5b8c\u4e86","text":"\u4e0a\u8a18\u306e\u8a2d\u5b9a\u304c\u5b8c\u4e86\u3057\u3066\u3044\u308c\u3070\u3001\u5b9f\u884c\u3057\u305f\u3044\u30c6\u30b9\u30c8\u306b\u79fb\u52d5\u3057\u3001\u7dd1\u8272\u306e\u77e2\u5370\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3060\u3051\u3067\u7c21\u5358\u306b\u5b9f\u884c\u3067\u304d\u307e\u3059\uff01
PhpStorm\u306f\u3001Docker\u3092\u4f7f\u7528\u3057\u3066CLI\u30b3\u30f3\u30c6\u30ca\u306b\u5165\u308a\u3001\u8a2d\u5b9a\u306b\u57fa\u3065\u3044\u3066PHPUnit\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/","title":"\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7:Drupal\u3092Lagoon\u3067\u5b9f\u884c\u3059\u308b\u6e96\u5099","text":""},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#1-lagoon-drupal-setting-files","title":"1. Lagoon Drupal \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"Drupal\u304cLagoon\u3068\u9023\u643a\u3059\u308b\u305f\u3081\u306b\u306f\u3001Drupal\u306bLagoon\u306e\u3053\u3068\u3092\u3001Lagoon\u306bDrupal\u306e\u3053\u3068\u3092\u6559\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u7279\u5b9a\u306eYAML\u3068PHP\u30d5\u30a1\u30a4\u30eb\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002
Drupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u53d6\u308a\u7d44\u3093\u3067\u3044\u308b\u5834\u5408\u306f\u3001\u79c1\u305f\u3061\u306e\u4f8b\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u3042\u308b\u69d8\u3005\u306aDrupal\u30b5\u30f3\u30d7\u30eb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5229\u7528\u3067\u304d\u307e\u3059\u3002\u30cb\u30fc\u30ba\u306b\u5408\u308f\u305b\u3066 Drupal 8\u3001Drupal 9 \u3060\u3051\u3067\u306a\u304f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u7a2e\u985e\u306a\u3069\u30d0\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u3082\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u958b\u59cb\u3059\u308b\u306b\u306f\u3001\u81ea\u5206\u306e\u30cb\u30fc\u30ba\u306b\u5408\u3063\u305f\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\uff01
\u4ee5\u4e0b\u306f\u3001Lagoon\u3068Drupal\u306b\u7279\u5316\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u6982\u8981\u3067\u3059\uff1a
.lagoon.yml
- Lagoon\u304c\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3059\u308b\u5185\u5bb9\u306a\u3069\u3092\u7406\u89e3\u3059\u308b\u305f\u3081\u306e\u30e1\u30a4\u30f3\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002Drupal\u5411\u3051\u306e\u9069\u5207\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7de8\u96c6\u3084\u5909\u66f4\u3092\u884c\u3046\u5834\u5408\u306f\u3001.lagoon.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 docker-compose.yml
\u3001.dockerignore
\u3001\u304a\u3088\u3073 *.dockerfile
(\u307e\u305f\u306f Dockerfile
) - \u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u30ed\u30fc\u30ab\u30eb\u306eDrupal\u958b\u767a\u74b0\u5883\u306e\u5b9f\u884c\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001Docker\u306b\u5bfe\u3057\u3066\u8d77\u52d5\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u306e\u7a2e\u985e\u3084\u30d3\u30eb\u30c9\u65b9\u6cd5\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u9069\u5207\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3068\u3001\u591a\u304f\u306e\u30b3\u30e1\u30f3\u30c8\u884c\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u5185\u5bb9\u304c\u8aad\u307f\u53d6\u308c\u308b\u3088\u3046\u5341\u5206\u306a\u30b3\u30e1\u30f3\u30c8\u304c\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001docker-compose.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002 sites/default/*
- .php
\u3068.yml
\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001Drupal\u304c\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u306e\u4e21\u65b9\u3067Lagoon\u30b3\u30f3\u30c6\u30ca\u3068\u901a\u4fe1\u3059\u308b\u65b9\u6cd5\u3092Drupal\u306b\u6307\u793a\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u958b\u767a\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u3067\u7279\u5b9a\u306e\u8a2d\u5b9a\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9 (\u4e0a\u66f8\u304d) \u3059\u308b\u305f\u3081\u306e\u30b7\u30f3\u30d7\u30eb\u306a\u4ed5\u7d44\u307f\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002\u4ed6\u306eDrupal\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3068\u306f\u7570\u306a\u308a\u3001Lagoon\u306fDrupal\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u4e00\u5207\u5e72\u6e09\u3057\u307e\u305b\u3093\u3002\u305d\u306e\u305f\u3081\u3001\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u81ea\u7531\u306b\u7de8\u96c6\u3067\u304d\u307e\u3059\u3002\u4ed6\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u540c\u69d8\u306b\u3001\u9069\u5207\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3068\u3001\u4e00\u90e8\u30b3\u30e1\u30f3\u30c8\u4ed8\u304d\u306e\u90e8\u5206\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 drush/aliases.drushrc.php
- Drush\u72ec\u81ea\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u3001Drush\u304cLagoon\u306eGraphQL API\u3092\u4f7f\u3063\u3066\u30b5\u30a4\u30c8\u30a8\u30a4\u30ea\u30a2\u30b9 (\u30b5\u30a4\u30c8\u306e\u5225\u540d) \u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5\u3092Drush\u306b\u6307\u793a\u3057\u307e\u3059\u3002 drush/drushrc.php
- Drush\u30b3\u30de\u30f3\u30c9\u7528\u306e\u9069\u5207\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#update-your-gitignore-settings","title":".gitignore
\u8a2d\u5b9a\u306e\u66f4\u65b0","text":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30df\u30c3\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u3001.gitignore
\u30d5\u30a1\u30a4\u30eb\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Drupal\u306fsites/*/settings*.php
\u3068sites/*/services*.yml
\u3092.gitignore
\u3067\u30b3\u30df\u30c3\u30c8\u304b\u3089\u9664\u5916\u3059\u308b\u3088\u3046\u306b\u521d\u671f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002Lagoon \u74b0\u5883\u3067\u306f\u6a5f\u5bc6\u60c5\u5831\u306f Git \u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u4fdd\u5b58\u3057\u306a\u3044\u306e\u3067\u3001\u3053\u306e\u9664\u5916\u8a2d\u5b9a\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#note-about-webroot-in-drupal-8","title":"Drupal 8\u306eWEBROOT
\u306b\u95a2\u3059\u308b\u6ce8\u610f\u4e8b\u9805","text":"\u6b8b\u5ff5\u306a\u304c\u3089\u3001Drupal\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u306fWEBROOT
\u30d5\u30a9\u30eb\u30c0\u540d\u306e\u6a19\u6e96\u5316\u304c\u307e\u3060\u6c7a\u307e\u3063\u3066\u3044\u307e\u305b\u3093\u3002Drupal\u3092web
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306b\u914d\u7f6e\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3082\u3042\u308c\u3070\u3001docroot
\u3084\u5225\u306e\u5834\u6240\u306b\u5165\u308c\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3082\u3042\u308a\u307e\u3059\u3002Lagoon\u306eDrupal\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u3001Drupal\u304cweb
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306b\u914d\u7f6e\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u3082\u3057\u3042\u306a\u305f\u306eDrupal\u306e\u69cb\u6210\u304c\u7570\u306a\u308b\u5834\u5408\u306f\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u305d\u308c\u306b\u5408\u308f\u305b\u3066\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#note-about-composerjson","title":"composer.json
\u306b\u95a2\u3059\u308b\u6ce8\u610f\u4e8b\u9805","text":"Composer \u3092\u4f7f\u3063\u3066 Drupal \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u5834\u5408\u3001composer.json
\u3092\u78ba\u8a8d\u3057\u3001name
\u304cdrupal/drupal
\u3067\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u540d\u524d\u306f Drush \u3084\u305d\u306e\u4ed6\u306e Drupal \u95a2\u9023\u30c4\u30fc\u30eb\u3068\u7af6\u5408\u3057\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001myproject/drupal
\u306a\u3069\u3001\u5225\u306e\u540d\u524d\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#2-customize-docker-composeyml","title":"2. docker-compose.yml
\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba","text":"lagoon-project
\u3068LAGOON_ROUTE
\u306e\u5024\u3092\u5fd8\u308c\u305a\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3001\u30b5\u30a4\u30c8\u540d\u3068\u30a2\u30af\u30bb\u30b9\u3057\u305f\u3044URL\u306b\u66f8\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u4ee5\u4e0b\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059:
docker-compose.ymlx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# Route that should be used locally. If you are using pygmy, this route *must* end with .docker.amazee.io.\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#3-build-images","title":"3. \u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9","text":"\u307e\u305a\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9docker-compose build\n
\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001docker-compose.yml
\u5185\u3067build:
\u306e\u5b9a\u7fa9\u304c\u3042\u308b\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u3088\u3046\u306bdocker-compose
\u306b\u6307\u793a\u3057\u307e\u3059\u3002\u901a\u5e38\u3001Drupal\u3067\u306fcli
\u3001nginx
\u3001php
\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u8a72\u5f53\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u7279\u5b9a\u306e\u30d3\u30eb\u30c9\u30b3\u30de\u30f3\u30c9(composer install
\u306a\u3069)\u3092\u5b9f\u884c\u3057\u305f\u308a\u3001\u7279\u5b9a\u306e\u74b0\u5883\u5909\u6570(WEBROOT
\u306a\u3069)\u3092\u30a4\u30e1\u30fc\u30b8\u306b\u6ce8\u5165\u3059\u308b\u305f\u3081\u3067\u3059\u3002
\u901a\u5e38\u3001Drupal \u30b3\u30fc\u30c9\u3092\u7de8\u96c6\u3059\u308b\u305f\u3073\u306b\u30d3\u30eb\u30c9\u3092\u884c\u3046\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093 (\u30b3\u30fc\u30c9\u306f\u30db\u30b9\u30c8\u304b\u3089\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u308b\u305f\u3081)\u3002\u3068\u306f\u3044\u3048\u3001\u30d3\u30eb\u30c9\u3092\u3057\u3066\u3082\u4f55\u3089\u304b\u306e\u554f\u984c\u304c\u751f\u3058\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3055\u3089\u306b\u3001Lagoon \u306f\u30c7\u30d7\u30ed\u30a4\u4e2d\u306b\u307e\u3063\u305f\u304f\u540c\u3058 Docker \u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u306e\u3067\u3001docker-compose build
\u30b3\u30de\u30f3\u30c9\u3092\u3082\u3046\u4e00\u5ea6\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u3001\u30c7\u30d7\u30ed\u30a4\u6642\u306b\u3082\u30d3\u30eb\u30c9\u304c\u6b63\u5e38\u306b\u52d5\u4f5c\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#4-start-containers","title":"4. \u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5","text":"\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u305f\u306e\u3067\u3001\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3067\u304d\u307e\u3059:
\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5docker-compose up -d\n
\u3053\u308c\u306b\u3088\u308a\u3001\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002\u30b3\u30de\u30f3\u30c9\u304c\u5b8c\u4e86\u3057\u305f\u5f8c\u3001docker-compose ps
\u3067\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u5b8c\u5168\u306b\u7acb\u3061\u4e0a\u304c\u3063\u3066\u3044\u308b\u304b\u3001\u30af\u30e9\u30c3\u30b7\u30e5\u3057\u3066\u3044\u306a\u3044\u304b\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u554f\u984c\u304c\u3042\u308b\u5834\u5408\u306f\u3001docker-compose logs -f [servicename]
\u3067\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#5-rerun-composer-install","title":"5. composer install
\u3092\u518d\u5b9f\u884c\u3057\u307e\u3059\uff08composer\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u307f\uff09","text":"\u30ed\u30fc\u30ab\u30eb\u306e\u958b\u767a\u74b0\u5883\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u3044\u3068\u601d\u3046\u3067\u3057\u3087\u3046\u3002\u305d\u306e\u305f\u3081\u3001cli
\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3057\u3066composer install
\u3092\u5b9f\u884c\u3057\u307e\u3059:
CLI\u3067composer install\u3092\u5b9f\u884cdocker-compose exec cli bash\ncomposer install\n
\u5c11\u3057\u5947\u5999\u306b\u611f\u3058\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u30d3\u30eb\u30c9\u624b\u9806\u3067\u3059\u3067\u306bcomposer install
\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u8aac\u660e\u3092\u52a0\u3048\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3059:
- \u30db\u30b9\u30c8\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3057\u3066\u3001\u3059\u3050\u306b\u30b3\u30f3\u30c6\u30ca\u3067\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e
docker-composer.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u3059\u3079\u3066\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u30b3\u30f3\u30c6\u30ca\u5185\u306b\u30de\u30a6\u30f3\u30c8\u3057\u3066\u3044\u307e\u3059 (\u30dc\u30ea\u30e5\u30fc\u30e0\u30bb\u30af\u30b7\u30e7\u30f3\u306e.:/app:delegated
\u304c\u3053\u308c\u306b\u8a72\u5f53\u3057\u307e\u3059)\u3002\u3064\u307e\u308a\u3001Docker\u30d3\u30eb\u30c9\u6642\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u306f\u3001\u30db\u30b9\u30c8\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u4e0a\u66f8\u304d\u3055\u308c\u307e\u3059\u3002 - \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u306b\u304a\u3044\u3066\u306f\u3001
composer.json
\u3067require-dev
\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u4f9d\u5b58\u95a2\u4fc2\u3082\u5b58\u5728\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308b\u3067\u3057\u3087\u3046\u3002\u4e00\u65b9\u3001\u672c\u756a\u74b0\u5883\u3067\u306f\u3001\u305d\u3046\u3057\u305f\u4f9d\u5b58\u95a2\u4fc2\u306f\u305f\u3060\u7121\u99c4\u306a\u5bb9\u91cf\u3092\u6d88\u8cbb\u3059\u308b\u3060\u3051\u3067\u3059\u3002\u305d\u306e\u305f\u3081\u3001Dockerfile\u5185\u3067\u306f composer install --no-dev
\u3092\u5b9f\u884c\u3057\u3001\u624b\u52d5\u3067composer install
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u3059\u3079\u3066\u554f\u984c\u306a\u304f\u52d5\u4f5c\u3057\u3066\u3044\u308b\u5834\u5408\u3001docker-compose.yml
(\u4f8b\u3048\u3070 http://drupal.docker.amazee.io
)\u3067\u5b9a\u7fa9\u3055\u308c\u305fLAGOON_ROUTE
\u3092\u958b\u304f\u3068\u3001Drupal\u30a8\u30e9\u30fc\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u4eca\u306e\u6bb5\u968e\u3067\u306f\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u91cd\u8981\u306a\u306e\u306f\u3001Drupal\u30b5\u30a4\u30c8\u304c\u8aad\u307f\u8fbc\u307e\u308c\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u3053\u3068\u3067\u3059\u3002
500\u30a8\u30e9\u30fc\u3084\u540c\u69d8\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001Composer\u306b\u3088\u3063\u3066\u3059\u3079\u3066\u304c\u6b63\u3057\u304f\u8aad\u307f\u8fbc\u307e\u308c\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#6-check-status-and-install-drupal","title":"6. \u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u78ba\u8a8d\u3068Drupal\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u3044\u3088\u3044\u3088Drupal\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u304c\u3001\u305d\u306e\u524d\u306b\u3059\u3079\u3066\u304c\u6a5f\u80fd\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u306bDrush\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059:
Drush statusdocker-compose exec cli bash\ndrush status\n
\u3053\u308c\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u7d50\u679c\u304c\u8fd4\u3055\u308c\u308b\u306f\u305a\u3067\u3059:
Drush status result[drupal-example]cli-drupal:/app$ drush status\n[notice] Missing database table: key_value\nDrupal version : 8.6.1\nSite URI : http://drupal.docker.amazee.io\nDatabase driver : mysql\nDatabase hostname : mariadb\nDatabase port : 3306\nDatabase username : drupal\nDatabase name : drupal\nPHP binary : /usr/local/bin/php\nPHP config : /usr/local/etc/php/php.ini\nPHP OS : Linux\nDrush script : /app/vendor/drush/drush/drush\nDrush version : 9.4.0\nDrush temp : /tmp\nDrush configs : /home/.dr ush/drush.yml\n /app/vendor/drush/drush/drush.yml\nDrupal root : /app/web\nSite path : sites/default\n
\u8b66\u544a
\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u524d\u306b\u3001pygmy\u306b\u516c\u958b\u9375\u306b\u3064\u3044\u3066\u4f1d\u3048\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
Permission denied (publickey)
\u306e\u3088\u3046\u306a\u30a8\u30e9\u30fc\u304c\u51fa\u305f\u5834\u5408\u306f\u3001\u3053\u3061\u3089\u304b\u3089SSH\u30ad\u30fc\u306e\u8ffd\u52a0\u65b9\u6cd5\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u304f\u3060\u3055\u3044: pygmy - ssh\u30ad\u30fc\u306e\u8ffd\u52a0
\u6b21\u306bDrupal\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059(\u65e2\u5b58\u306eSQL\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u30b9\u30c6\u30c3\u30d77\u3078\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305f\u3060\u3057\u3001\u3059\u3079\u3066\u304c\u6a5f\u80fd\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001\u6700\u521d\u304b\u3089\u30af\u30ea\u30fc\u30f3\u306aDrupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002))\u3002
Drupal\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebdrush site-install\n
\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u51fa\u529b\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059:
drush site-install[drupal-example]cli-drupal:/app$ drush site-install\nYou are about to DROP all tables in your 'drupal' database. Do you want to continue? (y/n): y\nStarting Drupal installation. This takes a while. Consider using the --notify global option.\nInstallation complete. User name: admin User password: a7kZJekcqh\nCongratulations, you installed Drupal!\n
LAGOON_ROUTE
\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308bURL\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u65b0\u3057\u304f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305fDrupal\u30b5\u30a4\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u304a\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307e\u3059\uff01
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#7-import-existing-database-dump","title":"7. \u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b","text":"\u65e2\u306b\u65e2\u5b58\u306eDrupal\u30b5\u30a4\u30c8\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30ed\u30fc\u30ab\u30eb\u30b5\u30a4\u30c8\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u3044\u3068\u601d\u3046\u3067\u3057\u3087\u3046\u3002
\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u306f\u591a\u6570\u3042\u308a\u307e\u3059\u3002\u73fe\u5728\u306e\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306bDrush\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059:
Drush sql-dumpdrush sql-dump --result-file=dump.sql\n\n\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u306fdump.sql\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f\n
\u3053\u308c\u3067\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5168\u4f53\u3092\u542b\u3080dump.sql
\u30d5\u30a1\u30a4\u30eb\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002
\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30d4\u30fc\u3057\u3001cli
\u306b\u63a5\u7d9a\u3059\u308b\u3068\u3001\u305d\u306e\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059:
dump.sql\u306e\u8868\u793a[drupal-example]cli-drupal:/app$ ls -l dump.sql\n-rw-r--r-- 1 root root 5281 Dec 19 12:46 dump.sql\n
\u73fe\u5728\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u524a\u9664\u3057\u3001\u30c0\u30f3\u30d7\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002
dump.sql\u306e\u30a4\u30f3\u30dd\u30fc\u30c8drush sql-drop\n\ndrush sql-cli < dump.sql\n
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eURL\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u3059\u3079\u3066\u304c\u6b63\u5e38\u306b\u52d5\u4f5c\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3067\u3001Drupal\u30b5\u30a4\u30c8\u304c\u6b63\u5e38\u306b\u6a5f\u80fd\u3057\u3066\u3044\u308b\u306f\u305a\u3067\u3059\uff01
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#8-drupal-files-directory","title":"8. Drupal\u30d5\u30a1\u30a4\u30eb \u30c7\u30a3\u30ec\u30af\u30c8\u30ea","text":"Drupal\u30b5\u30a4\u30c8\u306b\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3082\u5fc5\u8981\u3067\u3059\u3002\u3053\u306e\u30d5\u30a9\u30eb\u30c0\u5168\u4f53\u306fDocker\u30b3\u30f3\u30c6\u30ca\u5185\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u308b\u305f\u3081\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u6b63\u3057\u3044\u30d5\u30a9\u30eb\u30c0\u306b\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044 (\u304a\u305d\u3089\u304fweb/sites/default/files
\u3001sites/default/files
\u307e\u305f\u306f\u540c\u69d8\u306e\u30d5\u30a9\u30eb\u30c0\u3067\u3059)\u3002\u8a2d\u5b9a\u3057\u305fWEBROOT
\u3092\u899a\u3048\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044 - \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3054\u3068\u306b\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093
"},{"location":"ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/#done","title":"9. \u5b8c\u4e86","text":"\u30ed\u30fc\u30ab\u30eb\u8a2d\u5b9a\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002Lagoon \u30c1\u30fc\u30e0\u306f\u3001\u7686\u69d8\u306e\u697d\u3057\u3044 Drupaling \u3092\u5fdc\u63f4\u3057\u3066\u3044\u307e\u3059\uff01
"},{"location":"ja/applications/drupal/subfolders/","title":"\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0","text":"\u4f8b\u3048\u3070\u3001www.example.com
\u306f\u3042\u308bDrupal\u30b5\u30a4\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u63d0\u4f9b\u3057\u3001www.example.com/blog
\u306f\u5225\u306eDrupal\u3067\u69cb\u7bc9\u3055\u308c\u305f\u30d6\u30ed\u30b0\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002
\u3053\u306e\u5834\u5408\u3001\u4e21\u65b9\u306eDrupal\u3092\u5358\u4e00\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u7ba1\u7406\u3057\u3001\u307e\u3068\u3081\u3066\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u5168\u3066\u306e\u30c1\u30fc\u30e0\u306b\u9069\u3057\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u306a\u304f\u3001\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f\u5225\u3005\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f7f\u7528\u3057\u305f\u65b9\u304c\u826f\u3044\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/subfolders/#_2","title":"\u30eb\u30fc\u30c8\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5909\u66f4","text":"\u30eb\u30fc\u30c8\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3(\u3053\u306e\u4f8b\u3067\u306fwww.example.com
\u306eDrupal\u30b5\u30a4\u30c8)\u306f\u3001NGINX\u3092\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3078\u306e\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306eNGINX\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u3044\u304f\u3064\u304b\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059:
"},{"location":"ja/applications/drupal/subfolders/#location_prependconf","title":"location_prepend.conf
","text":"Drupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u30eb\u30fc\u30c8\u306blocation_prepend.conf
\u3068\u3044\u3046\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059:
location_prepend.confresolver 8.8.8.8 valid=30s;\n\nlocation ~ ^/subfolder {\n # $http_x_forwarded_proto\u304c\u7a7a\u306e\u5834\u5408 (\u4e0a\u6d41\u306e\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u304b\u3089\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408)\n # \u73fe\u5728\u306e\u30b9\u30ad\u30fc\u30e0\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\n set_if_empty $http_x_forwarded_proto $scheme;\n\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;\n proxy_set_header X-Lagoon-Forwarded-Host $ \u30db\u30b9\u30c8;\n # \u5143\u306e\u30db\u30b9\u30c8\u3092\u4e0b\u6d41\u304c\u77e5\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\n proxy_set_header X-REVERSEPROXY $hostname;\n proxy_set_header FORWARDED \"\";\n # Drupal 8\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u305f\u3081\u3001FORWARDED\u30d8\u30c3\u30c0\u30fc\u3092\u524a\u9664\u3057\u307e\u3059\u3002\n proxy_set_header Proxy \"\";\n # Drupal 8\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u305f\u3081\u3001Proxy\u30d8\u30c3\u30c0\u30fc\u3092\u524a\u9664\u3057\u307e\u3059\u3002\n proxy_ssl_server_name on;\n\n # NGINX\u3067DNS\u89e3\u6c7a\u3092\u6b63\u3057\u304f\u52d5\u4f5c\u3055\u305b\u308b\u306b\u306f\u3001\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n set $subfolder_drupal_host \"https://nginx-lagoonproject-${LAGOON_GIT_SAFE_BRANCH}.clustername.com:443\";\n # LAGOON_GIT_SAFE_BRANCH\u5909\u6570\u306fdocker\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u6642\u306b\u7f6e\u63db\u3055\u308c\u307e\u3059\u3002\n proxy_pass $subfolder_drupal_host;\n proxy_set_header Host $proxy_host;\n # $proxy_host\u306f\u3001NGINX\u304cproxy_pass\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6(\u30b9\u30ad\u30fc\u30e0\u3068\u30dd\u30fc\u30c8\u3092\u9664\u304f\u30db\u30b9\u30c8\u540d)\u3092\u5143\u306b\u81ea\u52d5\u751f\u6210\u3055\u308c\u307e\u3059\u3002\n\n expires off; # \u30d7\u30ed\u30ad\u30b7\u304b\u3089\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30d8\u30c3\u30c0\u30fc\u3092\u5c0a\u91cd\u3057\u3001\u4e0a\u66f8\u304d\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\n
\u4ee5\u4e0b\u306e\u6587\u5b57\u5217\u3092\u7f6e\u63db\u3057\u3066\u304f\u3060\u3055\u3044:
/subfolder
\uff1a\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u4f8b\u3048\u3070\u3001/blog
\u3002 nginx
\uff1a\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u53c2\u7167\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 lagoonproject
\uff1a\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eLagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/subfolders/#n-ginx-dockerfile","title":"N GINX Dockerfile","text":"\u4ee5\u4e0b\u306e\u5185\u5bb9\u3092NGINX Dockerfile(nginx.dockerfile
\u307e\u305f\u306fDockerfile.nginx
)\u306b\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044:
nginx.dockerfileCOPY location_prepend.conf /etc/nginx/conf.d/drupal/location_prepend.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/*\n
"},{"location":"ja/applications/drupal/subfolders/#_3","title":"\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5909\u66f4","text":"\u30eb\u30fc\u30c8\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u540c\u69d8\u306b\u3001\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3(\u3053\u306e\u4f8b\u3067\u306f\u3001www.example.com/blog
\u306eDrupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb)\u306b\u5bfe\u3057\u3066\u3082\u3001\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u3067\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059:
"},{"location":"ja/applications/drupal/subfolders/#location_drupal_append_subfolderconf","title":"location_drupal_append_subfolder.conf
","text":"\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306eDrupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3001location_drupal_append_subfolder.conf
\u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059:
location_drupal_append_subfolder.conf# Drupal\u306f\u3001`subfolder`\u3067\u59cb\u307e\u308b\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u304c\u4ed8\u3044\u305f\u30b9\u30af\u30ea\u30d7\u30c8\u540d\u3092\u6ce8\u5165\u3059\u308b\u3068\u3001\n# \u3059\u3079\u3066\u306eURL\u306b`subfolder`\u3092\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u3057\u3066\u4ed8\u52a0\u3057\u3066\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002\nfastcgi_param SCRIPT_NAME /subfolder/index.php;\n\n# \u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u7d4c\u7531\u3067\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30aa\u30ea\u30b8\u30ca\u30eb\u306eHOST URL\u3092\n# PHP\u306b\u6ce8\u5165\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Drupal\u306f\u73fe\u5728\u306eHOST\u3067\u306f\u306a\u304f\u3001\n# \u30aa\u30ea\u30b8\u30ca\u30eb\u306eHOST URL\u3092\u7528\u3044\u3066\u3059\u3079\u3066\u306e URL \u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002\n\n# \u6700\u521d\u306b\u3001HOST\u3092\u901a\u5e38\u306e\u30db\u30b9\u30c8\u5909\u6570\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\nfastcgi_param HTTP_HOST $http\n``` _host;\n# \u305d\u308c\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u306f\u3001`X-Lagoon-Forwarded-Host`\u3067\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002\nfastcgi_param HTTP_HOST $http_x_lagoon_forwarded_host if_not_empty;\n
\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30fc\u540d\u3067 /subfolder
\u3092\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001/blog
\u306e\u3088\u3046\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/subfolders/#server_prepend_subfolderconf","title":"server_prepend_subfolder.conf
","text":"\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30fc\u3067\u306eDrupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3001server_prepend_subfolder.conf
\u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044:
server_prepend_subfolder.conf# \u5185\u90e8NGINX\u30ea\u30e9\u30a4\u30c8\u306f`last`\u30d5\u30e9\u30b0\u3092\u4f7f\u3046\u305f\u3081\u3001\n# \u30ea\u30e9\u30a4\u30c8\u306e\u524d\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u6709\u7121\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\n# `last`\u30d5\u30d5\u30e9\u30b0\u306fNGINX\u306b\u5bfe\u3057\u3066\u3001\u3053\u308c\u4ee5\u964d\u306e\u30ea\u30e9\u30a4\u30c8\u51e6\u7406\u3092\u884c\u308f\u306a\u3044\u3088\u3046\u6307\u793a\u3057\u307e\u3059\u3002\n# (\u307e\u305f\u3001`if`\u306f\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4e00\u90e8\u3067\u3059\u3002)\ninclude /etc/nginx/helpers/010_redirects.conf;\n\n# \u3053\u306e\u30ea\u30e9\u30a4\u30c8\u306f\u30ea\u30af\u30a8\u30b9\u30c8URL\u304b\u3089`/subfolder/`\u3092\u524a\u9664\u3057\u3001\n# \u3042\u305f\u304b\u3082\u6700\u521d\u304b\u3089`/`\u3067\u3042\u3063\u305f\u304b\u306e\u3088\u3046\u306bNGINX\u304c\n# \u51e6\u7406\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002\n# `last`\u30d5\u30e9\u30b0\u3082\u91cd\u8981\u3067\u3059\u3002\n# \u3053\u308c\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u306e\u30ea\u30e9\u30a4\u30c8\u304c\u6c38\u7d9a\u7684\u306b\u7e70\u308a\u8fd4\u3055\u308c\u308b\u306e\u3092\u9632\u304e\u307e\u3059\u3002\nrewrite ^/subfolder/(.*) /$1 last;\n\n# NGINX\u306b\u3088\u3063\u3066\u73fe\u5728\u51e6\u7406\u3055\u308c\u3066\u3044\u308b\u30db\u30b9\u30c8\u60c5\u5831\u304c\u4e0a\u66f8\u304d\u3055\u308c\u306a\u3044\u3088\u3046\u3001\n# \u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u7d76\u5bfe\u30d1\u30b9\u3092\u4f7f\u7528\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002\nabsolute_redirect off;\n\n# `/subfolder`\u3060\u3051\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u5834\u5408\u3001301\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3067\n# `/subfolder`(Drupal\u306f\u672b\u5c3e\u306e\u30b9\u30e9\u30c3\u30b7\u30e5\u3092\u597d\u307f\u307e\u3059)\u306b\u8ee2\u9001\u3057\u307e\u3059\u3002\nrewrite ^/subfolder /subfolder/ permanent;\n\n# \u305d\u306e\u4ed6\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5bfe\u3057\u3066\u306f\u3001301\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u30d1\u30b9\u306b`/subfolder/`\u3092\u5148\u982d\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002\nrewrite ^\\/(.*) /subfolder/$1 permanent;\n
/subfolder
\u306f\u3001\u4f7f\u7528\u3059\u308b\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u540d\u524d\u3068\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001\u30d6\u30ed\u30b0\u7528\u306e\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u30fc\u3067\u3042\u308c\u3070 /blog
\u3068\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/subfolders/#nginx-dockerfile","title":"NGINX Dockerfile","text":"NGINX Dockerfile\u3082\u7de8\u96c6\u304c\u5fc5\u8981\u3067\u3059\u3002
NGINX Dockerfile(\u901a\u5e38\u306fnginx.dockerfile
\u307e\u305f\u306f Dockerfile.nginx
)\u306b\u4ee5\u4e0b\u306e\u5185\u5bb9\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044:
nginx.dockerfileCOPY location_drupal_append_subfolder.conf /etc/nginx/conf.d/drupal/location_drupal_append_subfolder.conf\nCOPY server_prepend_subfolder.conf /etc/nginx/conf.d/drupal/server_prepend_subfolder.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/*\n
"},{"location":"ja/applications/drupal/services/","title":"\u6982\u8981","text":""},{"location":"ja/applications/drupal/services/#mariadbmysql","title":"MariaDB\u306f\u3001\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306eMySQL\u306e\u5f8c\u7d99\u8005\u3067\u3059","text":"Drupal\u3068MariaDB\u306b\u3064\u3044\u3066\u5b66\u3076
\u6a19\u6e96\u7684\u306aMariaDB\u30a4\u30e1\u30fc\u30b8\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3(\u3053\u306eMariaDB-Drupal\u30a4\u30e1\u30fc\u30b8\u306f\u3053\u308c\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059)
"},{"location":"ja/applications/drupal/services/#redis","title":"Redis\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u30d6\u30ed\u30fc\u30ab\u30fc\u3001\u30ad\u30e5\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u3001\u9ad8\u901f\u3067\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30a4\u30f3\u30e1\u30e2\u30ea\u30fb\u30ad\u30fc\u30d0\u30ea\u30e5\u30fc\u30fb\u30c7\u30fc\u30bf\u30b9\u30c8\u30a2\u3067\u3059","text":"Drupal\u3068Redis\u306b\u3064\u3044\u3066\u5b66\u3076
Redis-persistent\u30a4\u30e1\u30fc\u30b8\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3
"},{"location":"ja/applications/drupal/services/#solr","title":"Solr\u306f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u691c\u7d22\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059","text":"Drupal\u3068Solr\u306b\u3064\u3044\u3066\u5b66\u3076
\u6a19\u6e96\u7684\u306aSolr\u30a4\u30e1\u30fc\u30b8\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 (\u3053\u306eSolr-Drupal\u30a4\u30e1\u30fc\u30b8\u306f\u3053\u308c\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059)
"},{"location":"ja/applications/drupal/services/#varnishhttphttp","title":"Varnish\u306f\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u901f\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306e\u5f37\u529b\u306a\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306eHTTP\u30a8\u30f3\u30b8\u30f3\u304a\u3088\u3073\u30ea\u30d0\u30fc\u30b9HTTP\u30d7\u30ed\u30ad\u30b7\u3067\u3059","text":"Drupal\u3068Varnish\u306b\u3064\u3044\u3066\u5b66\u3076
\u6a19\u6e96\u7684\u306aVarnish\u30a4\u30e1\u30fc\u30b8\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 (\u3053\u306eVarnish-Drupal\u30a4\u30e1\u30fc\u30b8\u306f\u3053\u308c\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059)
"},{"location":"ja/applications/drupal/services/mariadb/","title":"MariaDB","text":"Lagoon\u306e mariadb-drupal
Docker\u30a4\u30e1\u30fc\u30b8 Dockerfile \u306f\u3001Lagoon\u306eDrupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3055\u308c\u305f mariadb
\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002 mariadb
\u30a4\u30e1\u30fc\u30b8\u3068\u7570\u306a\u308b\u306e\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u74b0\u5883\u5909\u6570\u306b\u3088\u3063\u3066\u884c\u308f\u308c\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u521d\u671f\u8a2d\u5b9a\u3060\u3051\u3067\u3059:
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e MARIADB_DATABASE
drupal \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308bDrupal\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 MARIADB_USER
drupal \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc MARIADB_PASSWORD
drupal \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 LAGOON_ENVIRONMENT_TYPE
\u5909\u6570\u304c production
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306f MARIADB_INNODB_BUFFER_POOL_SIZE=1024
\u304a\u3088\u3073 MARIADB_INNODB_LOG_FILE_SIZE=256
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u6700\u9069\u5316\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/mariadb/#mariadb_1","title":"MariaDB \u30ed\u30b0\u306e\u8ffd\u52a0\u8a2d\u5b9a","text":"\u958b\u767a\u306e\u904e\u7a0b\u3067\u3001\u30af\u30a8\u30ea\u30ed\u30b0\u307e\u305f\u306f\u30b9\u30ed\u30fc\u30af\u30a8\u30ea\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u305d\u3046\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u74b0\u5883\u5909\u6570 MARIADB_LOG_SLOW
\u307e\u305f\u306f MARIADB_LOG_QUERIES
\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306fdocker-compose.yml
\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059.
"},{"location":"ja/applications/drupal/services/mariadb/#mysql","title":"\u30db\u30b9\u30c8\u304b\u3089MySQL\u30b3\u30f3\u30c6\u30ca\u3078\u306e\u63a5\u7d9a","text":"Sequel Pro\u3001MySQL Workbench\u3001HeidiSQL\u3001DBeaver\u3001\u6a19\u6e96\u7684\u306amysql-cli
\u306a\u3069\u306e\u5916\u90e8\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066\u3001Docker\u30b3\u30f3\u30c6\u30ca\u5185\u306eMySQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3057\u305f\u3044\u5834\u5408\u3001IP\u30a2\u30c9\u30ec\u30b9\u3068\u30dd\u30fc\u30c8\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5\u3092\u4ee5\u4e0b\u306b\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/mariadb/#mysql_1","title":"\u30b3\u30f3\u30c6\u30ca\u304b\u3089\u516c\u958b\u3055\u308c\u305f MySQL \u30dd\u30fc\u30c8\u3092\u53d6\u5f97\u3059\u308b","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Docker\u306f\u5404\u30b3\u30f3\u30c6\u30ca\u8d77\u52d5\u6642\u306bMySQL\u306e\u516c\u958b\u30dd\u30fc\u30c8\u3092\u30e9\u30f3\u30c0\u30e0\u306b\u5272\u308a\u5f53\u3066\u307e\u3059\u3002\u3053\u308c\u306f\u30dd\u30fc\u30c8\u306e\u885d\u7a81\u3092\u9632\u3050\u305f\u3081\u306b\u884c\u308f\u308c\u307e\u3059\u3002
docker
\u3092\u4f7f\u3063\u3066\u516c\u958b\u30dd\u30fc\u30c8\u3092\u53d6\u5f97\u3059\u308b\u306b\u306f:
docker port [container_name]
\u3092\u5b9f\u884c
\u30dd\u30fc\u30c8\u3092\u53d6\u5f97\u3059\u308b$ docker port drupal_example_mariadb_1\n3306/tcp -> 0.0.0.0:32797\n
\u307e\u305f\u306f\u3001Drupal\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306edocker-compose
\u3092\u4f7f\u7528\u3057\u3066:
docker-compose port [service_name] [internal_port]
\u3092\u5b9f\u884c
\u30dd\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308bdocker-compose port mariadb 3306\n0.0.0.0:32797\n
"},{"location":"ja/applications/drupal/services/mariadb/#_1","title":"\u9759\u7684\u30dd\u30fc\u30c8\u306e\u8a2d\u5b9a(\u975e\u63a8\u5968)","text":"\u958b\u767a\u4e2d\u306b\u5916\u90e8\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001MySQL\u63a5\u7d9a\u30dd\u30fc\u30c8\u3092\u5e38\u306b\u78ba\u8a8d\u3057\u8a2d\u5b9a\u3059\u308b\u306e\u306f\u9762\u5012\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
\u9759\u7684\u30dd\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001docker-compose.yml
\u306e\u30b5\u30fc\u30d3\u30b9\u5b9a\u7fa9\u3092\u7de8\u96c6\u3057\u307e\u3059\u3002
docker-compose.yml mariadb:\n...\nports:\n- \"33772:3306\" # \u30dd\u30fc\u30c83306\u3092\u30db\u30b9\u30c8\u30dd\u30fc\u30c8\u306e33772\u3092\u6307\u5b9a\u3057\u3066\u516c\u958b\u3057\u307e\u3059\u3002\u3053\u308c\u3092\u884c\u3046\u3053\u3068\u3067\u3001\u30dd\u30fc\u30c8\u306e\u885d\u7a81\u3092\u7ba1\u7406\u3059\u308b\u8cac\u4efb\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\u3002\n
\u8b66\u544a
\u9759\u7684\u30dd\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u30dd\u30fc\u30c8\u306e\u885d\u7a81\u3092\u7ba1\u7406\u3059\u308b\u8cac\u4efb\u304c\u751f\u3058\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/mariadb/#mysql_2","title":"MySQL\u3078\u306e\u63a5\u7d9a","text":"\u3053\u308c\u3089\u306e\u8a73\u7d30\u3092\u4f7f\u7528\u3057\u3066\u3001\u304a\u597d\u307f\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30c4\u30fc\u30eb\u306b\u63a5\u7d9a\u3067\u304d\u307e\u3059\u3002
Linux OS X IP/\u30db\u30b9\u30c8 \u30b3\u30f3\u30c6\u30ca\u304b\u3089\u306eIP docker.amazee.io
\u30dd\u30fc\u30c8 \u30b3\u30f3\u30c6\u30ca\u304b\u3089\u516c\u958b\u3055\u308c\u305f\u30dd\u30fc\u30c8 \u30b3\u30f3\u30c6\u30ca\u304b\u3089\u516c\u958b\u3055\u308c\u305f\u30dd\u30fc\u30c8 \u30e6\u30fc\u30b6\u30fc\u540d drupal
drupal
\u30d1\u30b9\u30ef\u30fc\u30c9 drupal
drupal
\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 drupal
drupal
"},{"location":"ja/applications/drupal/services/nginx/","title":"NGINX","text":"Lagoon\u306enginx-drupal
Docker\u30a4\u30e1\u30fc\u30b8\u3002Drupal\u3068\u9023\u643a\u3059\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002Lagoon\u306enginx
\u30a4\u30e1\u30fc\u30b8\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/nginx/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u3001Lagoon\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 drupal.conf
\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u3067\u304d\u308b\u3060\u3051\u30b7\u30f3\u30d7\u30eb\u3067\u3001\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3084\u3059\u3044\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30e1\u30a4\u30f3\u30bb\u30af\u30b7\u30e7\u30f3(server
\u3001location /
\u3001location @drupal
\u3001location @php
)\u306binclude
\u6307\u793a\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f\u3002 Drupal.conf
\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u3055\u3089\u306a\u308b\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/nginx/#drupal-drupalconf","title":"\u542b\u307e\u308c\u308bDrupal\u8a2d\u5b9a - drupal.conf
","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Drupal 7, 8, 9\u306e\u5b8c\u5168\u306aNGINX\u52d5\u4f5c\u8a2d\u5b9a\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8ffd\u52a0\u6a5f\u80fd\u3082\u542b\u307e\u308c\u3066\u3044\u307e\u3059:
humanstxt
Drupal\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30b5\u30dd\u30fc\u30c8 robotstxt
Drupal\u30e2\u30b8\u30e5\u30fc\u30eb - \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u7528\u306e
vagrant
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u7981\u6b62\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/nginx/#drupalconf-customization","title":"Drupal.conf
\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba","text":"drupal.conf
\u30d5\u30a1\u30a4\u30eb\u306f\u3001nginx
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092Drupal\u7528\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u305f\u3082\u306e\u3067\u3059\u3002\u9867\u5ba2\u306b\u3088\u3063\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u65b9\u6cd5\u306f\u69d8\u3005\u3067\u3059:
- \u4fee\u6b63\u304c\u56f0\u96e3 (\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u96e3\u3057\u3044 )
*.conf
\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u305f\u7d44\u307f\u8fbc\u307f\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba
drupal.conf
\u30d5\u30a1\u30a4\u30eb\u306f\u3044\u304f\u3064\u304b\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u5206\u304b\u308c\u3066\u3044\u307e\u3059\u3002\u79c1\u305f\u3061\u304c\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306b\u542b\u3081\u305f\u30bb\u30af\u30b7\u30e7\u30f3\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059:
server
location /
location @drupal
location @php
.
\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u306f\u3001\u305d\u308c\u305e\u308c2\u3064\u306e\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u304c\u3042\u308a\u307e\u3059:
*_prepend.conf
*_append.conf
location @drupal
\u30bb\u30af\u30b7\u30e7\u30f3\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:
drupal.conflocation @drupal {\ninclude /etc/nginx/conf.d/drupal/location_drupal_prepend*.conf;\ninclude /etc/nginx/fastcgi.conf;\nfastcgi_param SCRIPT_NAME /index.php;\nfastcgi_param SCRIPT_FILENAME $realpath_root/index.php;\nfastcgi_pass ${NGINX_FASTCGI_PASS:-php}:9000;\ninclude /etc/nginx/conf.d/drupal/location_drupal_append*.conf;\n}\n
\u3053\u306e\u8a2d\u5b9a\u306f\u3001\u304a\u5ba2\u3055\u307e\u304clocation_drupal_prepend.conf
\u304a\u3088\u3073location_drupal_append.conf
\u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u4ed6\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u524d\u306b\u633f\u5165\u3057\u305f\u3044\u8a2d\u5b9a\u3068\u3001\u5f8c\u306b\u633f\u5165\u3057\u305f\u3044\u8a2d\u5b9a\u3092\u3059\u3079\u3066\u8a18\u8ff0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u4e00\u5ea6\u4f5c\u6210\u3055\u308c\u308b\u3068\u3001nginx
\u30b3\u30f3\u30c6\u30ca\u5185\u306b\u5fc5\u305a\u5b58\u5728\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u306e\u3067\u3001Dockerfile.nginx
\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8ffd\u52a0\u3057\u307e\u3059:
dockerfile.nginxCOPY location_drupal_prepend.conf /etc/nginx/conf.d/drupal/location_drupal_prepend.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/location_drupal_prepend.conf\n
"},{"location":"ja/applications/drupal/services/nginx/#drupal-core-statistics-module-configuration","title":"Drupal Core Statistics\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u8a2d\u5b9a","text":"\u30b3\u30a2\u306eStatistics\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u7c21\u5358\u306a\u8a2d\u5b9a\u5909\u66f4\u304c\u5fc5\u8981\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
\u30c7\u30d5\u30a9\u30eb\u30c8\u306eNGINX\u8a2d\u5b9a\u3067\u306f\u3001\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8/core/modules/statistics/statistics.php
\u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u62d2\u5426\u3055\u308c\u307e\u3059(404)
\u3053\u308c\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306eNGINX\u8a2d\u5b9a\u306b\u95a2\u9023\u3057\u3066\u3044\u307e\u3059:
drupal.conflocation ~* ^.+\\.php$ {\n try_files /dev/null @drupal;\n}\n
\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u3001\u7279\u5b9a\u306e\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u30eb\u30fc\u30eb\u3092\u5b9a\u7fa9\u3057\u3001\u3053\u308c\u3092\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d7\u30ea\u30da\u30f3\u30c9\u8a2d\u5b9a\u3068\u3057\u3066\u6ce8\u5165\u3057\u307e\u3059:
drupal.conf## Allow access to to the statistics endpoint.\nlocation ~* ^(/core/modules/statistics/statistics.php) {\n try_files /dev/null @php;\n}\n
NGINX\u30b3\u30f3\u30c6\u30ca\u306e\u30d3\u30eb\u30c9\u6642\u306b\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002
dockerfile.nginx# Drupal Statistics\u30e2\u30b8\u30e5\u30fc\u30eb\u306eNGINX\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3059\u308b\nCOPY .lagoon/nginx/location_prepend_allow_statistics.conf /etc/nginx/conf.d/drupal/location_prepend_allow_statistics.conf\n
"},{"location":"ja/applications/drupal/services/php-cli/","title":"PHP-cli","text":"Lagoon\u306ephp-cli-drupal
Docker\u30a4\u30e1\u30fc\u30b8\u306fDrupal\u3068\u9023\u643a\u3059\u308b\u305f\u3081\u306b\u6700\u9069\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306fLagoon\u306ephp-cli
\u30a4\u30e1\u30fc\u30b8\u3092\u57fa\u306b\u4f5c\u3089\u308c\u3066\u304a\u308a\u3001Drupal\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u65e5\u3005\u306e\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u306b\u5fc5\u8981\u306a\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u5168\u3066\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
drush
drupal console
drush launcher
(Drush\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u30b5\u30a4\u30c8\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001Drush 8\u306b\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u3057\u307e\u3059)
"},{"location":"ja/applications/drupal/services/php-cli/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 7.3 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306b\u5229\u7528\u53ef\u80fd\u3067\u3059\u304c\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86) -
uselagoon/php-7.3-cli-drupal
- 7.4 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306b\u5229\u7528\u53ef\u80fd\u3067\u3059\u304c\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86) -
uselagoon/php-7.4-cli-drupal
- 8.0 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306b\u5229\u7528\u53ef\u80fd\u3067\u3059\u304c\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86) -
uselagoon/php-8.0-cli-drupal
- 8.1 Dockerfile -
uselagoon/php-8.1-cli-drupal
- 8.2 Dockerfile -
uselagoon/php-8.2-cli-drupal
- 8.3 Dockerfile -
uselagoon/php-8.3-cli-drupal
\u5168\u3066\u306ePHP\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u305d\u308c\u305e\u308c\u306eDockerfiles\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/php-cli/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/redis/","title":"Redis","text":"\u5185\u90e8\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\u306b\u306f\u3001Redis\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002Redis\u30b5\u30fc\u30d3\u30b9\u3092 docker-compose.yaml
\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
docker-compose.yml redis:\nimage: uselagoon/redis-5\nlabels:\nlagoon.type: redis\n<< : *default-user # \u5b9a\u7fa9\u6e08\u307f\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\nenvironment:\n<< : *default-environment\n
\u307e\u305f\u3001Redis\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u3092settings.php
\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/redis/#drupal-7","title":"Drupal 7","text":"settings.php if(getenv('LAGOON')){\n $conf['redis_client_interface'] = 'PhpRedis';\n $conf['redis_client_host'] = 'redis';\n $conf['lock_inc'] = 'sites/all/modules/contrib/redis/redis.lock.inc';\n $conf['path_inc'] = 'sites/all/modules/contrib/redis/redis.path.inc';\n $conf['cache_backends'][] = 'sites/all/modules/contrib/redis/redis.autoload.inc';\n $conf['cache_default_class'] = 'Redis_Cache';\n $conf['cache_class_cache_form'] = 'DrupalDatabaseCache';\n $conf['cache_class_cache_field'] = 'DrupalDatabaseCache';\n }\n
\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u9020\u306b\u3088\u3063\u3066\u306f\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30d1\u30b9\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/applications/drupal/services/redis/#drupal-8","title":"Drupal 8","text":"Drupal 8 \u306e\u8a2d\u5b9a\u306f\u307b\u3068\u3093\u3069\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u306e\u307e\u307e\u3067\u3059\u304c\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6642\u306b Redis \u306f\u7121\u52b9\u5316\u3055\u308c\u307e\u3059\u3002
settings.phpif (getenv('LAGOON')){\n $settings['redis.connection']['interface'] = 'PhpRedis';\n $settings['redis.connection']['host'] = getenv('REDIS_HOST') ?: 'redis';\n $settings['redis.connection']['port'] = getenv('REDIS_SERVICE_PORT') ?: '6379';\n $settings['cache_prefix']['default'] = getenv('LAGOON_PROJECT') . '_' . getenv('LAGOON_GIT_SAFE_BRANCH');\n // Drupal\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u4e2d\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u8a2d\u5b9a\u3057\u306a\u3044\u3002\n if (!drupal_installation_attempted() && extension_loaded('redis')) {\n $settings['cache']['default'] = 'cache.backend.redis';\n // \u305d\u3057\u3066\u3001Redis\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u306a\u304f\u3066\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\n $class_loader->addPsr4('Drupal\\\\redis\\\\', 'modules/contrib/redis/src');\n $settings['bootstrap_container_definition'] = [\n 'parameters' => [],\n 'services' => [\n 'redis.factory' => [\n 'class' => 'Drupal\\redis\\ClientFactory',\n ],\n 'cache.backend.redis' => [\n 'class' => 'Drupal\\redis\\Cache\\CacheBackendFactory',\n 'arguments' => ['@redis.factory', '@cache_tags_provider.container', '@serialization.phpserialize'],\n ],\n 'cache.container' => [\n 'class' => '\\Drupal\\redis\\Cache\\PhpRedis',\n 'factory' => ['@cache.backend.redis', 'get'],\n 'arguments' => ['container'],\n ],\n 'cache_tags_provider.container' => [\n 'class' => 'Drupal\\redis\\Cache\\RedisCacheTagsChecksum',\n 'arguments' => ['@redis.factory'],\n ],\n 'serialization.phpserialize' => [\n 'class' => 'Drupal\\Component\\Serialization\\PhpSerialize',\n ],\n ],\n ];\n }\n}\n
"},{"location":"ja/applications/drupal/services/redis/#_1","title":"\u6c38\u7d9a\u6027","text":"Redis\u306f\u3001\u6c38\u7d9a\u7684\u306a\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
docker-compose.ymlredis:\nimage: uselagoon/redis-5-persistent\nlabels:\nlagoon.type: redis-persistent\nenvironment:\n<< : *default-environment\n
"},{"location":"ja/applications/drupal/services/redis/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u74b0\u5883\u5909\u6570\u306f\u3001Redis\u306b\u95a2\u3059\u308b\u4e00\u822c\u7684\u306a\u60c5\u5831\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e LOGLEVEL
notice
Redis\u306e\u30ed\u30b0\u30ec\u30d9\u30eb DATABASES
1
\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u6570 MAXMEMORY
100mb
Redis\u306e\u6700\u5927\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf"},{"location":"ja/applications/drupal/services/redis/#redis_1","title":"Redis\u306e\u30d5\u30a7\u30a4\u30eb\u30aa\u30fc\u30d0\u30fc","text":"Redis\u30b3\u30f3\u30c6\u30ca\u304c\u5229\u7528\u3067\u304d\u306a\u3044\u5834\u5408(\u4f8b\u3048\u3070\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u4e2d\u306a\u3069)\u306bRedis\u306e\u30d5\u30a7\u30a4\u30eb\u30aa\u30fc\u30d0\u30fc\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u30b9\u30cb\u30da\u30c3\u30c8\u3092\u4ee5\u4e0b\u306b\u793a\u3057\u307e\u3059\u3002
\u4ee5\u4e0b\u3092Drupal\u306e\u30a2\u30af\u30c6\u30a3\u30d6\u306asettings.php
\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
settings.phpif (getenv('LAGOON')) {\n $contrib_path = is_dir('sites/all/modules/contrib') ? 'sites/all/modules/contrib' : 'sites/all/modules';\n $redis = DRUPAL_ROOT . '/sites/all/modules/contrib/redis';\n if (file_exists(\"$redis/redis.module\")) {\n require_once \"$redis/redis.module\";\n $conf['redis_client_host'] = getenv('REDIS_HOST') ?: 'redis';\n $conf['redis_client_port'] = getenv('REDIS_SERVICE_PORT') ?: 6379;\n $conf['cache_prefix'] = getenv('REDIS_CACHE_PREFIX') ?: getenv('LAGOON_PROJECT') . '_' . getenv('LAGOON_GIT_SAFE_BRANCH');\n try {\n // Redis\u306b\u63a5\u7d9a\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\n $client = Redis_Client::getClient();\n $response = $client->ping();\n if (!$response) {\n throw new \\Exception('Redis\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3057\u305f\u304c\u3001\u6b63\u3057\u304f\u5fdc\u7b54\u3057\u3066\u3044\u307e\u305b\u3093\u3002');\n }\n $conf['redis_client_interface'] = 'PhpRedis';\n $conf['lock_inc'] = $contrib_path . '/redis/redis.lock.inc';\n $conf['path_inc'] = $contrib_path . '/redis/redis.path.inc';\n $conf['cache_backends'][] = $contrib_path . '/redis/redis.autoload.inc';\n $conf['cache_default_class'] = 'Redis_Cache';\n } catch (\\Exception $e) {\n // Redis \u3053\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u306f\u5229\u7528\u3067\u304d\u306a\u3044\u305f\u3081\u3001Redis\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u8a2d\u5b9a\u3092\u884c\u308f\u305a\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u4f7f\u7528\u3055\u308c\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u6b21\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u518d\u8a66\u884c\u3055\u308c\u307e\u3059\u3002\n // 'DrupalFakeCache'\u30af\u30e9\u30b9\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\n if (!class_exists('DrupalFakeCache')) {\n $conf['cache_backends'][] = 'includes/cache-install.inc';\n }\n $conf['cache_default_class'] = 'DrupalFakeCache';\n }\n }\n}\n
"},{"location":"ja/applications/drupal/services/solr/","title":"Solr","text":""},{"location":"ja/applications/drupal/services/solr/#_1","title":"\u6a19\u6e96\u7684\u306a\u4f7f\u3044\u65b9","text":"Solr 5.5\u30016.6\u3001\u304a\u3088\u3073 7.7\u3067\u306f\u3001search_api_solr Drupal\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b9\u30ad\u30fc\u30de\u30d5\u30a1\u30a4\u30eb\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002\u4f7f\u7528\u3059\u308bSolr\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4f8b\u306e\u3088\u3046\u306bdocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/services/solr/#_2","title":"\u30ab\u30b9\u30bf\u30e0\u30b9\u30ad\u30fc\u30de","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067Solr\u306e\u30b9\u30ad\u30fc\u30de\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3092\u5b9f\u88c5\u3059\u308b\u306b\u306f\u3001Lagoon\u304c\u3069\u306e\u3088\u3046\u306b\u6a19\u6e96\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u4f5c\u6210\u3059\u308b\u304b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306e solr
\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u3001 image: uselagoon/solr:8
\u3092\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059:
docker-compose.yml build:\ncontext: .\ndockerfile: solr.dockerfile\n
- \u30b9\u30ad\u30fc\u30de\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30fc\u30c9\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002\u901a\u5e38\u3001
.lagoon/solr
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 solr.dockerfile
\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
solr.dockerfileFROM uselagoon/solr:8\n\nCOPY .lagoon/solr /solr-conf/conf\n\nCMD solr-recreate drupal /solr-conf && solr-foreground\n
\u76ee\u6a19\u306f\u3001\u30d3\u30eb\u30c9\u3059\u308b\u30a4\u30e1\u30fc\u30b8\u306e/solr-conf/conf
Solr\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3059\u308b\u3053\u3068\u3067\u3059\u3002
"},{"location":"ja/applications/drupal/services/solr/#_3","title":"\u30de\u30eb\u30c1\u30b3\u30a2","text":"\u8907\u6570\u306e\u30b3\u30a2\u3092\u5b9f\u88c5\u3059\u308b\u306b\u306f\u3001\u4e0a\u8a18\u306e\u3088\u3046\u306b\u72ec\u81ea\u306eSolr\u30b9\u30ad\u30fc\u30de\u3092\u7528\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5fc5\u8981\u306a\u5909\u66f4\u306fDockerfile\u306eCMD
\u3060\u3051\u3067\u3001\u5fc5\u8981\u306a\u30b3\u30a2\u3054\u3068\u306bprecreate-core corename /solr-conf/ ;
\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002
solr.dockerfileFROM uselagoon/solr:8-drupal\n\nCMD solr-recreate drupal /solr-conf && solr-recreate more-drupal /solr-conf && solr-foreground\n
"},{"location":"ja/applications/drupal/services/varnish/","title":"Varnish","text":"Drupal\u3092Varnish\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3068\u4e00\u7dd2\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002Lagoon\u306fVarnish\u304c\u3059\u3067\u306b\u8a2d\u5b9a\u6e08\u307f\u306eDrupal Varnish config\u3067varnish-drupal
Docker\u30a4\u30e1\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002
\u3053\u306eVarnish config\u306f\u4ee5\u4e0b\u306e\u3053\u3068\u3092\u884c\u3044\u307e\u3059:
- Drupal\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u30af\u30c3\u30ad\u30fc\u3092\u7406\u89e3\u3057\u3001\u8a8d\u8a3c\u3055\u308c\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5bfe\u3057\u3066Varnish\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u81ea\u52d5\u7684\u306b\u7121\u52b9\u306b\u3057\u307e\u3059\u3002
- \u3053\u306e\u6a5f\u80fd\u306f\u3001\u30a2\u30bb\u30c3\u30c8(\u753b\u50cf\u3001CSS\u3001JS\u306a\u3069)\u3092\u81ea\u52d5\u7684\u306b 1 \u304b\u6708\u9593\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3001\u30d6\u30e9\u30a6\u30b6\u306b\u3082\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u305b\u308b\u305f\u3081\u306e\u30d8\u30c3\u30c0\u30fc\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u8a8d\u8a3c\u3055\u308c\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u3082\u8a8d\u8a3c\u3055\u308c\u3066\u3044\u306a\u3044\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u3082\u884c\u308f\u308c\u307e\u3059\u3002
- Drupal 8\u306e\u30d1\u30fc\u30b8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u4f7f\u7528\u3055\u308c\u308b
BAN
\u304a\u3088\u3073URIBAN
\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 - Google Analytics\u306e\u30ea\u30f3\u30af\u304c\u8907\u6570\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u306e\u3092\u9632\u3050\u305f\u3081\u306b\u3001URL\u30d1\u30e9\u30e1\u30fc\u30bf\u304b\u3089
utm_
\u3068gclid
\u3092\u524a\u9664\u3057\u307e\u3059\u3002 - \u4ed6\u306b\u3082\u826f\u3044\u3053\u3068\u304c\u305f\u304f\u3055\u3093\u3042\u308a\u307e\u3059 - drupal.vcl\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/services/varnish/#drupal-8","title":"Drupal 8\u3068\u306e\u4f7f\u7528","text":"\u8981\u7d04: examples repo\u306edrupal8-advanced example\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5fc5\u8981\u306a\u30e2\u30b8\u30e5\u30fc\u30eb\u3068Drupal\u306e\u8a2d\u5b9a\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u6ce8\u610f:\u3053\u308c\u3089\u306e\u4f8b\u306e\u591a\u304f\u306f\u3001\u540c\u3058drupal-example-simple
\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306e\u7570\u306a\u308b\u30d6\u30e9\u30f3\u30c1/\u30cf\u30c3\u30b7\u30e5\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u5fc5\u305a\u3001\u30b5\u30f3\u30d7\u30eb\u30ea\u30b9\u30c8\u304b\u3089\u6b63\u78ba\u306a\u30d6\u30e9\u30f3\u30c1\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044!
"},{"location":"ja/applications/drupal/services/varnish/#purgevarnish-purge","title":"Purge\u3068Varnish Purge\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"Drupal 8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u3067Varnish\u3092\u5b8c\u5168\u306b\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001Purge\u3068Varnish Purge\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u591a\u304f\u306e\u30b5\u30d6\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u5c11\u306a\u304f\u3068\u3082\u4ee5\u4e0b\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\uff1a
purge
purge_drush
purge_tokens
purge_ui
purge_processor_cron
purge_processor_lateruntime
purge_queuer_coretags
varnish_purger
varnish_purge_tags
\u4e00\u5ea6\u306b\u3059\u3079\u3066\u3092\u53d6\u5f97\u3057\u307e\u3059:
Purge\u3068Varnish Purge\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebcomposer require drupal/purge drupal/varnish_purge\n\ndrush en purge purge_drush purge_tokens purge_ui purge_processor_cron purge_processor_lateruntime purge_queuer_coretags varnish_purger varnish_purge_tags\n
"},{"location":"ja/applications/drupal/services/varnish/#varnish-purge","title":"Varnish Purge\u306e\u8a2d\u5b9a","text":" Configuration > Development > Performance > Purge
\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002 Add purger
\u304b\u3089\u30d1\u30fc\u30b8\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002 Varnish Bundled Purger
\u3092\u9078\u629e\u3057\u307e\u3059(Varnish Purger
\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002#Behind the Scenes\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044) - \u8ffd\u52a0\u3057\u305f\u3070\u304b\u308a\u306e\u30d1\u30fc\u30b8\u306e\u6a2a\u306b\u3042\u308b\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001
Configure
\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002 - \u308f\u304b\u308a\u3084\u3059\u3044\u540d\u524d\u3092\u3064\u3051\u3066\u4e0b\u3055\u3044\u3002
Lagoon Varnish
\u304c\u826f\u3044\u3067\u3057\u3087\u3046\u3002 -
\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059:
Varnish Purge\u306e\u8a2d\u5b9a TYPE: \u30bf\u30b0\n\n REQUEST:\n \u30db\u30b9\u30c8\u540d: varnish\n (\u307e\u305f\u306fdocker-compose.yml\u3067Varnish\u304c\u547c\u3070\u308c\u3066\u3044\u308b\u540d\u524d)\n \u30dd\u30fc\u30c8: 8080\n \u30d1\u30b9: /\n \u30ea\u30af\u30a8\u30b9\u30c8\u65b9\u6cd5: BAN\n \u30b9\u30ad\u30fc\u30e0: http\n\n HEADERS:\n \u30d8\u30c3\u30c0\u30fc: Cache-Tags\n \u5024: [invalidations:separated_pipe]\n
-
Save configuration
\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002
\u4ee5\u4e0a\u3067\u8a2d\u5b9a\u306f\u5b8c\u4e86\u3067\u3059\uff01\u30ed\u30fc\u30ab\u30eb\u3067\u30c6\u30b9\u30c8\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u8aad\u3093\u3067\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/services/varnish/#varnishdrupal","title":"Varnish\u7528\u306eDrupal\u306e\u8a2d\u5b9a","text":"\u4ed6\u306b\u3082\u3044\u304f\u3064\u304b\u306e\u8a2d\u5b9a\u304c\u53ef\u80fd\u3067\u3059:
drush pmu page_cache
\u3092\u4f7f\u7528\u3057\u3066Internal Page Cache
Drupal\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30a2\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u5947\u5999\u306a\u4e8c\u91cd\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001Varnish \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u307f\u304c\u30af\u30ea\u30a2\u3055\u308c\u3001\u5185\u90e8\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u30af\u30ea\u30a2\u3055\u308c\u306a\u3044\u305f\u3081\u3001\u5909\u66f4\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u975e\u5e38\u306b\u9045\u304f\u53cd\u6620\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u5927\u304d\u306a\u30b5\u30a4\u30c8\u3067\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5927\u91cf\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 production.settings.php
\u5185\u306e$config['system.performance']['cache']['page']['max_age']
\u30922628000
\u306b\u5909\u66f4\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Varnish \u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u30b5\u30a4\u30c8\u3092\u6700\u5927 1 \u30f6\u6708\u9593\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u4e00\u898b\u9577\u3044\u3088\u3046\u306b\u601d\u308f\u308c\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001Drupal 8 \u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u30b7\u30b9\u30c6\u30e0\u306f\u975e\u5e38\u306b\u512a\u79c0\u3067\u3001\u4f55\u3089\u304b\u306e\u5909\u66f4\u304c\u884c\u308f\u308c\u308b\u3068\u3001Varnish \u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u81ea\u52d5\u7684\u306b\u66f4\u65b0\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/varnish/#varnish_1","title":"\u30ed\u30fc\u30ab\u30eb\u3067\u306e Varnish \u30c6\u30b9\u30c8","text":"Lagoon\u306e\u30ed\u30fc\u30ab\u30eb\u3067\u306eDrupal\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3067\u306f\u3001\u958b\u767a\u4f5c\u696d\u306e\u59a8\u3052\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001Varnish\u3068Drupal\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u304c\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7121\u52b9\u5316\u65b9\u6cd5\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059:
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u5185\u306e\u74b0\u5883\u5909\u6570VARNISH_BYPASS=true
\u306b\u3088\u308a\u3001Varnish\u306b\u4e8b\u5b9f\u4e0a\u7121\u52b9\u5316\u3092\u6307\u793a\u3057\u3066\u3044\u307e\u3059\u3002 - Drupal \u304c\u30ad\u30e3\u30c3\u30b7\u30e5\u30d8\u30c3\u30c0\u30fc\u3092\u9001\u4fe1\u3057\u306a\u3044\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059(\u958b\u767a\u74b0\u5883\u3088\u3046\u306e
development.settings.php
\u30d5\u30a1\u30a4\u30eb\u5185\u306eDrupal\u8a2d\u5b9a$config['system.performance']['cache']['page']['max_age'] = 0
\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059)
Varnish\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u30c6\u30b9\u30c8\u3059\u308b\u306b\u306f\u3001docker-compose.yml
\u3067\u4ee5\u4e0b\u306e\u5909\u66f4\u3092\u884c\u3044\u307e\u3059:
- Varnish\u30b5\u30fc\u30d3\u30b9\u30bb\u30af\u30b7\u30e7\u30f3\u3067
VARNISH_BYPASS
\u3092false
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 x-environment
\u30bb\u30af\u30b7\u30e7\u30f3\u3067LAGOON_ENVIRONMENT_TYPE
\u3092production
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 docker-compose up -d
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u65b0\u3057\u3044\u74b0\u5883\u5909\u6570\u3068\u3068\u3082\u306b\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u518d\u8d77\u52d5\u3057\u307e\u3059\u3002
\u3053\u308c\u3067\u3001Varnish\u3092\u30c6\u30b9\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u306f\u305a\u3067\u3059\uff01
\u6b21\u306b\u3001ID\u304c1
\u3067URL\u304cdrupal-example.docker.amazee.io/node/1
\u3068\u306a\u308b\u30ce\u30fc\u30c9\u3092\u60f3\u5b9a\u3057\u305f\u77ed\u3044\u4f8b\u3067\u3059\u3002
curl -I drupal-example.docker.amazee.io/node/1
\u3092\u5b9f\u884c\u3057\u3001\u30d8\u30c3\u30c0\u30fc\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044: X-LAGOON
\u306b\u306f varnish
\u304c\u542b\u307e\u308c\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5b9f\u969b\u306bVarnish\u3092\u901a\u3057\u3066\u51e6\u7406\u3055\u308c\u305f\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002 - Varnish\u306f\u304a\u305d\u3089\u304f\u3053\u306e\u30b5\u30a4\u30c8\u3092\u898b\u305f\u3053\u3068\u304c\u306a\u304f\u3001\u6700\u521d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306fVarnish\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30a6\u30a9\u30fc\u30e0\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u3001
Age:
\u306f0\u306e\u307e\u307e\u3067\u3059\u3002 X-Varnish-Cache
\u306f MISS
\u306b\u306a\u3063\u3066\u3044\u308c\u3070\u3001Varnish\u304c\u3053\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u6e08\u307f\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u898b\u3064\u3051\u3089\u308c\u306a\u304b\u3063\u305f\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002
curl -I drupal-example.docker.amazee.io/node/1
\u3092\u518d\u5ea6\u5b9f\u884c\u3059\u308b\u3068\u3001\u30d8\u30c3\u30c0\u30fc\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059: Age:
\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u3066\u304b\u3089\u4f55\u79d2\u7d4c\u3063\u305f\u304b\u3092\u793a\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u901f\u5ea6\u306b\u3088\u308a\u307e\u3059\u304c\u3001\u304a\u305d\u3089\u304f1-30\u306e\u9593\u306e\u5024\u306b\u306a\u308b\u3067\u3057\u3087\u3046\u3002 X-Varnish-Cache
\u306f HIT
\u3068\u306a\u308a\u3001Varnish\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u6b63\u5e38\u306b\u53d6\u5f97\u3057\u3066\u3001\u305d\u308c\u3092\u8fd4\u3057\u305f\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002
- Drupal\u306e
node/1
\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u5185\u5bb9\u3092\u5909\u66f4\u3057\u307e\u3059\u3002 curl -I drupal-example.docker.amazee.io/node/1
\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30d8\u30c3\u30c0\u30fc\u306f\u6700\u521d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u540c\u3058\u306b\u306a\u308b\u306f\u305a\u3067\u3059: Age:0
X-Varnish-Cache: MISS
"},{"location":"ja/applications/drupal/services/varnish/#drupalvarnish","title":"Drupal\u3068Varnish\u306e\u821e\u53f0\u88cf","text":"Drupal \u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u3092\u5229\u7528\u3057\u3066\u3044\u305f\u7d4c\u9a13\u304c\u3042\u308b\u65b9\u3084\u3001Drupal 8 \u3068 Varnish \u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u4ee5\u524d\u306b\u884c\u3063\u305f\u3053\u3068\u304c\u3042\u308b\u65b9\u306f\u3001Lagoon \u306e Drupal Varnish \u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u5909\u66f4\u70b9\u304c\u3042\u308b\u3053\u3068\u306b\u6c17\u3065\u3044\u305f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u4ee5\u4e0b\u3067\u305d\u308c\u3089\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059:
"},{"location":"ja/applications/drupal/services/varnish/#varnish-purgervarnish-bundled-purger","title":"Varnish Purger
\u306e\u4ee3\u308f\u308a\u306bVarnish Bundled Purger
\u3092\u4f7f\u7528\u3059\u308b","text":"Varnish Purger
\u306f\u3001\u7121\u52b9\u5316\u3059\u308b\u5fc5\u8981\u306e\u3042\u308b\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u3054\u3068\u306bBAN
\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002Drupal\u306b\u306f\u591a\u304f\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u304c\u5b58\u5728\u3059\u308b\u305f\u3081\u3001Varnish\u306b\u5927\u91cf\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u9001\u4fe1\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u306b\u5bfe\u3057\u3066\u3001Varnish Bundled Purger
\u306f\u3001\u8907\u6570\u306e\u7121\u52b9\u5316\u3092\u30d1\u30a4\u30d7(|
)\u3067\u533a\u5207\u3063\u3066\u30011\u3064\u306eBAN
\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u307f\u9001\u4fe1\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001Varnish\u306e\u30d0\u30f3\u6b63\u898f\u8868\u73fe\u30b7\u30b9\u30c6\u30e0\u3068\u9069\u5408\u3057\u3066\u304a\u308a\u3001\u7d50\u679c\u3068\u3057\u3066\u5c11\u306a\u3044\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u3001Varnish\u5185\u306e\u30d0\u30f3\u30ea\u30b9\u30c8\u30c6\u30fc\u30d6\u30eb\u3082\u5c0f\u3055\u304f\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/applications/drupal/services/varnish/#purge-late-runtime-processor","title":"Purge Late runtime processor
\u306e\u4f7f\u3044\u65b9","text":"Drupal 7\u306eVarnish\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u306f\u7570\u306a\u308a\u3001Drupal 8\u306ePurge\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u524a\u9664\u65b9\u6cd5\u304c\u5c11\u3057\u7570\u306a\u308a\u307e\u3059\u3002Purge\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u524a\u9664\u5bfe\u8c61\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30ad\u30e5\u30fc\u306b\u8ffd\u52a0\u3057\u3001\u305d\u306e\u5f8c\u3055\u307e\u3056\u307e\u306a\u51e6\u7406\u8005\u304c\u30ad\u30e5\u30fc\u3092\u51e6\u7406\u3057\u307e\u3059\u3002Purge\u30e2\u30b8\u30e5\u30fc\u30eb\u306fCron processor
\u3092\u4f7f\u3046\u3053\u3068\u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u3053\u308c\u306f Varnish \u30ad\u30e3\u30c3\u30b7\u30e5\u304ccron\u30b8\u30e7\u30d6\u306e\u5b9f\u884c\u6642\u306e\u307f\u524a\u9664\u3055\u308c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u901a\u5e38\u306ecron\u306f\u304a\u305d\u3089\u304f1\u5206\u3054\u3068\u306a\u3069\u975e\u5e38\u306b\u983b\u7e41\u306b\u306f\u5b9f\u884c\u3055\u308c\u306a\u3044\u305f\u3081\u3001\u53e4\u3044\u30c7\u30fc\u30bf\u304cVarnish\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u6b8b\u3063\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u7de8\u96c6\u8005\u3084\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u6df7\u4e71\u3059\u308b\u4e8b\u614b\u3092\u5f15\u304d\u8d77\u3053\u3059\u304a\u305d\u308c\u304c\u3042\u308a\u307e\u3059\u3002
\u4ee3\u308f\u308a\u306b\u3001\u79c1\u305f\u3061\u306fPurge Late runtime processor
\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u5404Drupal\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u7d42\u4e86\u6642\u306b\u30ad\u30e5\u30fc\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\u3053\u306e\u5229\u70b9\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u304c\u30d1\u30fc\u30b8\u30ad\u30e5\u30fc\u306b\u8ffd\u52a0\u3055\u308c\u305f\u5834\u5408 (\u7de8\u96c6\u8005\u304c Drupal \u30ce\u30fc\u30c9\u3092\u7de8\u96c6\u3057\u305f\u5834\u5408\u306a\u3069)\u3001\u305d\u306e\u30ce\u30fc\u30c9\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30bf\u30b0\u304c\u76f4\u63a5\u30d1\u30fc\u30b8\u3055\u308c\u308b\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u3068Varnish Bundled Purger
\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001Drupal\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6700\u5f8c\u3060\u3051\u306bVarnish\u306b\u5bfe\u3059\u308b\u5358\u4e00\u306e\u8ffd\u52a0\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u884c\u308f\u308c\u308b\u305f\u3081\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u51e6\u7406\u6642\u9593\u306b\u76ee\u7acb\u3063\u305f\u5f71\u97ff\u306f\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/applications/drupal/services/varnish/#varnish-ban-lurker","title":"Varnish Ban Lurker\u306e\u5b8c\u5168\u306a\u30b5\u30dd\u30fc\u30c8","text":"Varnish\u306e\u8a2d\u5b9a\u3067\u306f\u3001Ban Lurker
\u304c\u5b8c\u5168\u306b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002Ban Lurker \u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u3068 Varnish \u306e\u30b9\u30e0\u30fc\u30ba\u306a\u52d5\u4f5c\u3092\u7dad\u6301\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u30c4\u30fc\u30eb\u3067\u3059\u3002Ban Lurker\u306f\u3001Varnish\u306e\u7981\u6b62\u30ea\u30b9\u30c8\u306b\u3042\u308b\u9805\u76ee\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u5185\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u6bd4\u8f03\u3059\u308b\u5c0f\u3055\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002Varnish\u306e\u7981\u6b62\u6a5f\u80fd\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u5185\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u524a\u9664\u5bfe\u8c61\u3068\u3057\u3066\u30de\u30fc\u30af\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Ban Lurker\u306f\u524a\u9664\u3059\u3079\u304d\u9805\u76ee\u3092\u898b\u3064\u3051\u308b\u3068\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u304b\u3089\u524a\u9664\u3057\u3001\u7981\u6b62\u81ea\u4f53\u3082\u89e3\u9664\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u901a\u5e38\u306f\u7981\u6b62\u3055\u308c\u305a\u306b\u305a\u3063\u3068\u30ad\u30e3\u30c3\u30b7\u30e5\u5bb9\u91cf\u3092\u5360\u6709\u3057\u7d9a\u3051\u308b\u3001\u30a2\u30af\u30bb\u30b9\u983b\u5ea6\u304c\u4f4e\u304f\u6709\u52b9\u671f\u9650\u304c\u975e\u5e38\u306b\u9577\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u524a\u9664\u3055\u308c\u3001\u66f4\u65b0\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u7981\u6b62\u30ea\u30b9\u30c8\u304c\u5c0f\u3055\u304f\u306a\u308a\u3001Varnish\u306e\u5404\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5bfe\u3059\u308b\u51e6\u7406\u6642\u9593\u3082\u77ed\u7e2e\u3055\u308c\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001Ban Lurker\u306eVarnish\u306e\u516c\u5f0f\u8a18\u4e8b\u3084\u3001\u305d\u306e\u4ed6\u306e\u53c2\u8003\u306b\u306a\u308b\u8a18\u4e8b\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/applications/drupal/services/varnish/#_1","title":"\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":"Varnish\u304c\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3066\u3044\u306a\u3044\uff1f \u305d\u308c\u3068\u3082\u4f55\u304b\u4ed6\u306e\u554f\u984c\u304c\uff1f \u4ee5\u4e0b\u306b\u30c7\u30d0\u30c3\u30b0\u306e\u65b9\u6cd5\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059:
- purge\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30c7\u30d0\u30c3\u30b0\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001
drush p-debug-en
\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u306f\u3001Drupal\u30ed\u30b0admin/reports/dblog
\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002 - Drupal\u304c\u9069\u5207\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30d8\u30c3\u30c0\u30fc\u3092\u9001\u4fe1\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u6700\u9069\u306a\u30c6\u30b9\u30c8\u65b9\u6cd5\u3068\u3057\u3066\u306f\u3001Lagoon\u304c\u751f\u6210\u3059\u308bVarnish\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30d0\u30a4\u30d1\u30b9\u3059\u308b\u305f\u3081\u306eURL\u3092\u4f7f\u7528\u3057\u307e\u3059(\u30ed\u30fc\u30ab\u30eb\u306eDrupal\u306e\u4f8b\u3067\u306f\u3001http://nginx-drupal-example.docker.amazee.io\u306b\u306a\u308a\u307e\u3059)\u3002
Cache-Control: max-age=900, public
\u30d8\u30c3\u30c0\u30fc\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3001900
\u304c$config['system.performance']['cache']['page']['max_age']
\u3067\u8a2d\u5b9a\u3057\u305f\u3082\u306e\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 - \u74b0\u5883\u5909\u6570
VARNISH_BYPASS
\u304ctrue
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044(docker-compose.yml
\u3092\u78ba\u8a8d\u3057\u3001docker-compose up -d varnish
\u3092\u5b9f\u884c\u3057\u3066\u74b0\u5883\u5909\u6570\u304c\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044)\u3002 - \u3059\u3079\u3066\u304c\u4e0a\u624b\u304f\u3044\u304b\u306a\u3044\u5834\u5408\u3001\u30c6\u30fc\u30d6\u30eb\u3092\u3072\u3063\u304f\u308a\u8fd4\u3059\u524d\u306b (\u256f\u00b0\u25a1\u00b0)\u256f\ufe35 \u253b\u2501\u253b\u3001Lagoon\u30c1\u30fc\u30e0\u306b\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002\u559c\u3093\u3067\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\u3002
"},{"location":"ja/community/discord/","title":"Discord\u4e0a\u306eLagoon\u30b3\u30df\u30e5\u30cb\u30c6\u30a3","text":"\u79c1\u305f\u3061\u306e\u516c\u5f0f\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u4f1a\u8b70\u30b9\u30da\u30fc\u30b9\u306f\u3001Lagoon\u306eDiscord\u3067\u3059\u3002
\u79c1\u305f\u3061\u306f\u3001\u3053\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u5168\u3066\u306eLagoon\u30e6\u30fc\u30b6\u30fc\u304c\u5354\u529b\u3057\u3001\u554f\u984c\u3092\u89e3\u6c7a\u3057\u3001\u30a2\u30a4\u30c7\u30a2\u3092\u5171\u6709\u3057\u3001Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ca2\u732e\u3059\u308b\u5834\u3068\u3057\u3066\u8a2d\u7acb\u3057\u307e\u3057\u305f\u3002\u73fe\u5728\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306fSlack\u3084\u305d\u306e\u4ed6\u306e\u5834\u6240\u306b\u5206\u6563\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u4e00\u5143\u5316\u3059\u308b\u305f\u3081\u306b\u52aa\u529b\u3057\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u5168\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u3084\u9867\u5ba2\u304c\u53c2\u52a0\u3057\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304b\u3089\u5f97\u3089\u308c\u308b\u5229\u76ca\u3092\u5168\u3066\u306e\u4eba\u304c\u4eab\u53d7\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002
\u3053\u306e\u5834\u6240\u306f\u3001\u73fe\u5728\u306e\u30b5\u30dd\u30fc\u30c8\u30c1\u30e3\u30cd\u30eb\u3092\u7f6e\u304d\u63db\u3048\u308b\u3082\u306e\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u5fd8\u308c\u306a\u3044\u3067\u304f\u3060\u3055\u3044 - \u305d\u308c\u3089\u306f\u305d\u306e\u307e\u307e\u7dad\u6301\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u4ed6\u306e\u30e6\u30fc\u30b6\u30fc\u3084Lagoon\u306e\u30e1\u30f3\u30c6\u30ca\u3068\u7e4b\u304c\u308b\u5834\u6240\u3067\u3059\u3002
\u79c1\u305f\u3061\u306f\u5168\u3066\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30e1\u30f3\u30d0\u30fc\u306b\u3001\u79c1\u305f\u3061\u306e\u53c2\u52a0\u3068\u30e2\u30c7\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3001\u304a\u3088\u3073\u884c\u52d5\u898f\u7bc4\u3092\u78ba\u8a8d\u3057\u3066\u3044\u305f\u3060\u304f\u3053\u3068\u3092\u304a\u9858\u3044\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/community/discord/#_1","title":"\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u6642\u9593","text":"\u73fe\u5728\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30cb\u30fc\u30ba\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u8abf\u67fb\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u6642\u9593\u306f\u4e00\u6642\u505c\u6b62\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u3061\u3089\u3067\u30a2\u30f3\u30b1\u30fc\u30c8\u306b\u3054\u8a18\u5165\u304f\u3060\u3055\u3044\u3002
Lagoon\u306b\u95a2\u3057\u3066\u4f55\u304b\u624b\u52a9\u3051\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001Discord\u3067\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002 \u307e\u305f\u306f\u3001uselagoon@amazee.io\u307e\u3067\u30e1\u30fc\u30eb\u3092\u304a\u9001\u308a\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/community/moderation/","title":"Lagoon\u30e2\u30c7\u30ec\u30fc\u30b7\u30e7\u30f3\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3","text":"\u3053\u308c\u3089\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u306f\u3001Drupal Diversity & Inclusion\u306e\u30e2\u30c7\u30ec\u30fc\u30b7\u30e7\u30f3\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u6539\u5909\u3055\u308c\u3066\u3044\u307e\u3059\u3002
Lagoon\u306e\u7a7a\u9593\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u4eba\u3005\u306b\u5bfe\u3059\u308b\u7406\u89e3\u3001\u5171\u611f\u3001\u500b\u4eba\u7684\u306a\u8a8d\u8b58\u306e\u5411\u4e0a\u3092\u4fc3\u9032\u3059\u308b\u3088\u3046\u52aa\u3081\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306b\u306f\u3001\u3042\u306a\u305f\u304c\u500b\u4eba\u7684\u306b\u610f\u898b\u304c\u5408\u308f\u306a\u3044\u304b\u3082\u3057\u308c\u306a\u3044Drupal\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3084\u5e83\u7bc4\u306a\u6280\u8853\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u4eba\u3005\u3082\u542b\u307e\u308c\u307e\u3059\u3002
Discord\u304b\u3089\u30ad\u30c3\u30af\u3055\u308c\u305f\u5834\u5408\u3001\u30ad\u30c3\u30af\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u306f\u3001\u518d\u5165\u5834\u3092\u5e0c\u671b\u3059\u308b\u5834\u5408\u3001\u30ad\u30c3\u30ab\u30fc\u307e\u305f\u306f\u5225\u306e\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc\u306b\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8(PM)\u3092\u9001\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3082\u3057\u3001\u6575\u610f\u3042\u308b\u53cd\u5fdc\u3092\u5f15\u304d\u8d77\u3053\u3059\u3088\u3046\u306a\u610f\u56f3\u7684\u306b\u717d\u52d5\u7684\u3001\u3044\u3058\u3081\u3001\u307e\u305f\u306f\u5acc\u304c\u3089\u305b\u884c\u70ba\u306b\u5f93\u4e8b\u3057\u3066\u3044\u308b\u3068\u898b\u3048\u308b\u6df7\u4e71\u3092\u62db\u304f\u4eba\u304c\u3044\u305f\u5834\u5408\u3001\u4ed6\u306e\u30c1\u30e3\u30cd\u30eb\u30e1\u30f3\u30d0\u30fc\u306b\u3068\u3063\u3066\u30b9\u30c8\u30ec\u30b9\u3068\u306a\u308b\u884c\u70ba\u3092\u307b\u3050\u3059\u3088\u308a\u3082\u3001\u30ad\u30c3\u30af\u3059\u308b\u65b9\u304c\u65e9\u304f\u3066\u7c21\u5358\u3067\u3059\u3002
\u30ad\u30c3\u30af\u306f\u7981\u6b62\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u6df7\u4e71\u3092\u62db\u304f\u53ef\u80fd\u6027\u306e\u3042\u308b\u30b3\u30e1\u30f3\u30c8\u3084\u767a\u8a00\u304c\u771f\u5263\u3067\u3001\u4e8c\u8005\u9593\u306e\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u65ad\u7d76\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc\u3068\u8a71\u3059\u3053\u3068\u306b\u3088\u308a\u3001(\u6f5c\u5728\u7684\u306b)\u6df7\u4e71\u3092\u62db\u304f\u4eba\u306f\u3001\u3088\u308a\u914d\u616e\u6df1\u304f\u3001\u5305\u62ec\u7684\u3067\u3001\u591a\u69d8\u6027\u3092\u610f\u8b58\u3057\u305f\u8a00\u8449\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u6307\u5c0e\u3055\u308c\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305d\u3057\u3066\u3001\u3088\u308a\u5efa\u8a2d\u7684\u306a\u65b9\u6cd5\u3067\u95a2\u4e0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/community/moderation/#_1","title":"\u6bb5\u968e\u7684\u306a\u5bfe\u5fdc","text":" -
\u6bb5\u968e\u4e00\u306e\u5bfe\u5fdc
\u30e6\u30fc\u30b6\u30fc\u306f\u30c1\u30e3\u30f3\u30cd\u30eb\u306b\u6b53\u8fce\u3055\u308c\u3001\u30b9\u30af\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u306e\u8aad\u307f\u65b9\u3092\u8aac\u660e\u3055\u308c\u3001\u53c2\u52a0\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3078\u306e\u30ea\u30f3\u30af\u304c\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002
-
\u6bb5\u968e\u4e8c\u306e\u5bfe\u5fdc
\u30e6\u30fc\u30b6\u30fc\u306b\u306f\u3001\u6295\u7a3f\u3092\u30c8\u30d4\u30c3\u30af\u306b\u6cbf\u3063\u305f\u3082\u306e\u306b\u4fdd\u3064\u3088\u3046\u306b\u3001\u307e\u305f\u306f\u53c2\u52a0\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3092\u5b88\u308b\u3088\u3046\u306b\u3001\u30c1\u30e3\u30f3\u30cd\u30eb\u5185\u3067\u512a\u3057\u304f\u601d\u3044\u51fa\u3055\u305b\u307e\u3059\u3002
-
\u6bb5\u968e\u4e09\u306e\u5bfe\u5fdc
\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc\u304b\u3089\u30e6\u30fc\u30b6\u30fc\u306bPM\u304c\u9001\u3089\u308c\u3001\u305d\u306e\u6295\u7a3f\u306b\u554f\u984c\u304c\u3042\u3063\u305f\u7406\u7531\u3068\u3001\u4f55\u3092\u3069\u3046\u9055\u3046\u65b9\u6cd5\u3067\u884c\u3046\u3079\u304d\u304b\u306b\u3064\u3044\u3066\u8aac\u660e\u3055\u308c\u307e\u3059\u3002
-
\u6bb5\u968e\u56db\u306e\u5bfe\u5fdc
\u884c\u52d5\u304c\u7d9a\u304f\u5834\u5408\u3001\u30e6\u30fc\u30b6\u30fc\u306fDiscord\u304b\u3089\u5c11\u306a\u304f\u3068\u308224\u6642\u9593\u306f\u8ffd\u653e\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/community/moderation/#_2","title":"\u6bb5\u968e\u7684\u3067\u306a\u3044\u5bfe\u5fdc:\u7981\u6b62","text":"\u610f\u56f3\u7684\u306b\u6df7\u4e71\u3092\u5f15\u304d\u8d77\u3053\u3059\u500b\u4eba\u306f\u3001\u6bb5\u968e\u7684\u3067\u306f\u306a\u304f\u3001\u8ffd\u653e\u3055\u308c\u307e\u3059\u3002\u7e70\u308a\u8fd4\u3057\u9055\u53cd\u3059\u308b\u3068\u7981\u6b62\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/community/participation/","title":"Lagoon\u53c2\u52a0\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3","text":"\u79c1\u305f\u3061\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u3059\u3079\u3066\u306e\u30e1\u30f3\u30d0\u30fc\u304c\u3001\u4eee\u60f3\u7684\u306a\u30b9\u30da\u30fc\u30b9\u3067\u3082\u7269\u7406\u7684\u306a\u30b9\u30da\u30fc\u30b9\u3067\u3082\u3001\u79c1\u305f\u3061\u306e\u884c\u52d5\u898f\u7bc4\u3092\u9075\u5b88\u3059\u308b\u3053\u3068\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u306f\u3001Drupal Diversity & Inclusion\u306e\u53c2\u52a0\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3092\u53c2\u8003\u306b\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002
- \u7a4d\u6975\u7684\u306b\u805e\u304d\u3001\u6ce8\u610f\u6df1\u304f\u8aad\u307f\u3001\u7406\u89e3\u3059\u308b\u3053\u3068\u3002
- \u4f1a\u8a71\u306b\u53c2\u52a0\u3059\u308b\u5834\u5408\u306f\u3001\u30d0\u30c3\u30af\u30ed\u30b0\u3092\u8aad\u3093\u3067\u304f\u3060\u3055\u3044\u3002\u4ed6\u306e\u53c2\u52a0\u8005\u304c\u52b9\u679c\u7684\u306b\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u53d6\u308b\u6a5f\u4f1a\u3092\u4e0e\u3048\u3066\u304f\u3060\u3055\u3044\u3002
- \u4ed6\u306e\u53c2\u52a0\u8005\u306e\u767a\u8a00\u306e\u80cc\u5f8c\u306b\u306f\u826f\u3044\u610f\u56f3\u304c\u3042\u308b\u3068\u4eee\u5b9a\u3057\u307e\u3059\u3002\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u975e\u5e38\u306b\u591a\u69d8\u3067\u3001\u5168\u4e16\u754c\u304b\u3089\u306e\u53c2\u52a0\u8005\u304c\u3044\u307e\u3059\u3002\u6587\u5316\u7684\u306a\u7279\u6027\u3084\u8a00\u8a9e\u7684\u306a\u7279\u6027\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002
- \u3053\u306e\u5206\u91ce\u306b\u65b0\u3057\u304f\u53c2\u52a0\u3059\u308b\u4eba\u3082\u591a\u304f\u3044\u307e\u3059\u3002\u5f7c\u3089\u304c\u826f\u3044\u610f\u56f3\u3092\u6301\u3063\u3066\u3044\u308b\u304c\u3001\u307e\u3060\u8a00\u8a9e\u3084\u30a2\u30a4\u30c7\u30a2\u3092\u30de\u30b9\u30bf\u30fc\u3057\u3066\u3044\u306a\u3044\u3068\u4eee\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u79c1\u305f\u3061\u306f\u5f7c\u3089\u3092\u52a9\u3051\u305f\u3044\u3068\u601d\u3063\u3066\u3044\u307e\u3059\uff01
- \u4e00\u822c\u5316\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u81ea\u5206\u81ea\u8eab\u306e\u7d4c\u9a13\u304b\u3089\u8a71\u3059\u3053\u3068\u3002\u4ed6\u4eba\u306e\u7d4c\u9a13\u306e\u4fa1\u5024\u3092\u8a8d\u8b58\u3059\u308b\u3002\u4ed6\u4eba\u306e\u4ee3\u308f\u308a\u306b\u8a71\u3059\u3053\u3068\u306f\u907f\u3051\u3066\u304f\u3060\u3055\u3044\u3002
- \u300c\u5f7c\u3089\u300d\u3001\u300c\u79c1\u305f\u3061\u300d\u3001\u300c\u3042\u306a\u305f\u300d\u306e\u4ee3\u308f\u308a\u306b\u300c\u79c1\u300d\u3092\u4f7f\u3063\u3066\u304f\u3060\u3055\u3044\u3002
- \u3059\u3079\u3066\u306e\u53c2\u52a0\u8005\u306f\u3001\u4ed6\u306e\u53c2\u52a0\u8005\u304c\u81ea\u5206\u81ea\u8eab\u306e\u30e6\u30cb\u30fc\u30af\u306a\u7d4c\u9a13\u3092\u6301\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3059\u308b\u3079\u304d\u3067\u3059\u3002
- \u5225\u306e\u53c2\u52a0\u8005\u306e\u7d4c\u9a13\u3092\u7121\u52b9\u306b\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u4ee3\u308f\u308a\u306b\u3001\u3042\u306a\u305f\u81ea\u8eab\u306e\u30b9\u30c8\u30fc\u30ea\u30fc\u3084\u7d4c\u9a13\u3092\u5171\u6709\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u8cea\u554f\u3092\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30a4\u30c7\u30a2\u3001\u611f\u60c5\u3001\u61f8\u5ff5\u3001\u307e\u305f\u306f\u304a\u4e92\u3044\u306b\u7570\u8b70\u3092\u5531\u3048\u307e\u3059\u3002\u500b\u4eba\u653b\u6483\u306f\u63a7\u3048\u307e\u3059\u3002\u307e\u305a\u306f\u30a2\u30a4\u30c7\u30a2\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3059\u3002
- \u8a00\u8449\u306b\u3088\u308b\u7570\u8b70\u3001\u76ae\u8089\u306a\u4fae\u8fb1\u3001\u6027\u5225/\u4eba\u7a2e/\u5730\u57df\u306e\u56fa\u5b9a\u89b3\u5ff5\u306a\u3069\u306f\u907f\u3051\u307e\u3059\u3002
- \u81ea\u5206\u306e\u80fd\u529b\u3068\u90fd\u5408\u306b\u5408\u308f\u305b\u3066\u6700\u5927\u9650\u306b\u53c2\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u6210\u9577\u306f\u3001\u500b\u4eba\u306e\u610f\u898b\u3092\u53d6\u308a\u5165\u308c\u308b\u3053\u3068\u306b\u304b\u304b\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30c1\u30e3\u30f3\u30cd\u30eb\u3067\u306f\u3001\u7686\u3055\u3093\u304c\u58f0\u3092\u4e0a\u3052\u3066\u767a\u8a00\u3059\u308b\u3053\u3068\u3092\u671b\u3093\u3067\u3044\u307e\u3059\u3002\u8ca2\u732e\u3067\u304d\u308b\u6642\u9593\u306f\u4eba\u305d\u308c\u305e\u308c\u3067\u3059\u30025 \u5206\u3067\u3082 5 \u6642\u9593\u3067\u3082\u3001\u53c2\u52a0\u3057\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u5e78\u3044\u3067\u3059\u3002
- \u9759\u304b\u306b\u6f5c\u3093\u3067\u5b66\u3073\u306b\u6765\u308b\u3001\u3064\u307e\u308a\u300c\u6f5c\u3080\u300d\u4eba\u3082\u6b53\u8fce\u3057\u307e\u3059\u304c\u3001\u81ea\u5df1\u7d39\u4ecb\u3092\u3057\u3066\u6328\u62f6\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u5408\u610f\u3059\u308b\u3053\u3068\u304c\u5fc5\u305a\u3057\u3082\u76ee\u6a19\u3067\u306f\u306a\u3044\u3053\u3068\u3092\u53d7\u3051\u5165\u308c\u3066\u304f\u3060\u3055\u3044\u3002
- \u6280\u8853\u7684\u306a\u554f\u984c\u306b\u306f\u3001\u3042\u306a\u305f\u306e\u8a2d\u5b9a\u3067\u306f\u3046\u307e\u304f\u3044\u304b\u306a\u3044\u304b\u3082\u3057\u308c\u306a\u3044\u304c\u3001\u3055\u307e\u3056\u307e\u306a\u300c\u6b63\u3057\u3044\u300d\u7b54\u3048\u304c\u3057\u3070\u3057\u3070\u5b58\u5728\u3057\u307e\u3059\u3002
- \u8a00\u8a9e\u306e\u9055\u3044\u3084\u610f\u56f3\u3057\u306a\u3044\u610f\u5473\u5408\u3044\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u300c\u30c6\u30ad\u30b9\u30c8\u306f\u96e3\u3057\u3044\u300d - \u30c6\u30ad\u30b9\u30c8\u3067\u52b9\u679c\u7684\u306b\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3068\u308b\u306e\u306f\u96e3\u3057\u3044\u3053\u3068\u3092\u8a8d\u8b58\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u500b\u4eba\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u8a8d\u3081\u308b\u3002
- \u660e\u793a\u3055\u308c\u305f\u540d\u524d\u3068\u4ee3\u540d\u8a5e\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4eba\u7a2e\u3001\u6027\u7684\u6307\u5411\u3001\u969c\u5bb3\u306a\u3069\u306b\u3064\u3044\u3066\u7591\u554f\u3092\u5448\u3055\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002
- \u8ab0\u304b\u3092\u3069\u306e\u3088\u3046\u306b\u547c\u3076\u3079\u304d\u304b\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u63a7\u3048\u3081\u304b\u3064\u656c\u610f\u3092\u6301\u3063\u3066\u5c0b\u306d\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001\u3069\u306e\u4ee3\u540d\u8a5e\u3092\u4f7f\u7528\u3059\u3079\u304d\u304b\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u3063\u3066\u5c0b\u306d\u3066\u304f\u3060\u3055\u3044\u3002\u6b63\u3057\u3044\u4ee3\u540d\u8a5e\u3092\u4f7f\u3046\u3053\u3068\u3067\u4ed6\u4eba\u3092\u5c0a\u91cd\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- \u4e00\u90e8\u306e\u30aa\u30d5\u30c8\u30d4\u30c3\u30af\u306a\u4f1a\u8a71\u306f\u8a31\u5bb9\u3055\u308c\u307e\u3059\u3002
- \u30a2\u30ca\u30a6\u30f3\u30b9\u306e\u30af\u30ed\u30b9\u30dd\u30b9\u30c8\u306e\u4e00\u90e8\u3082\u8a31\u5bb9\u3055\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u884c\u70ba\u306f\u8a31\u3055\u308c\u307e\u305b\u3093:
- \u30b9\u30ec\u30c3\u30c9\u306e\u4e57\u3063\u53d6\u308a
- \u30b9\u30d1\u30e0\u884c\u70ba
- \u5546\u696d\u7684\u306a\u5e83\u544a
- \u9732\u9aa8\u306a\u81ea\u5df1\u5ba3\u4f1d
- \u7279\u306b\u516c\u5f0f\u306e\u4f1a\u8b70\u6642\u9593\u3084\u96c6\u4e2d\u7684\u306a\u4f1a\u8a71\u4e2d\u306b\u30aa\u30d5\u30c8\u30d4\u30c3\u30af\u306b\u9038\u8131\u3059\u308b\u3053\u3068
- \u30aa\u30d5\u30c8\u30d4\u30c3\u30af\u306a\u4f1a\u8a71\u3092\u6df1\u3081\u308b\u305f\u3081\u306e\u3088\u308a\u9069\u5207\u306a\u5834\u6240\u3084\u6642\u9593\u3092\u767a\u8868\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002
- \u9069\u5207\u306a\u884c\u52d5\u304c\u4f55\u304b\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- Lagoon\u5185\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u5171\u6709\u3059\u308b\u5834\u5408\u306f\u3001\u660e\u78ba\u306a\u540c\u610f\u306e\u3082\u3068\u3067\u306e\u307f\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001\u5171\u6709\u306f\u614e\u91cd\u306b\u8003\u3048\u3066\u884c\u3044\u3001\u53c2\u52a0\u8005\u3092\u5acc\u304c\u3089\u305b\u305f\u308a\u3001\u50b7\u3064\u3051\u308b\u610f\u56f3\u3092\u3082\u3063\u3066\u884c\u308f\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002
- \u3053\u306e\u30d5\u30a9\u30fc\u30e9\u30e0\u306f\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u3068\u8003\u3048\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u3053\u306b\u6295\u7a3f\u3055\u308c\u305f\u3082\u306e\u306f\u8ab0\u3067\u3082\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u3001\u5b9f\u969b\u306b\u8aad\u307e\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3068\u60f3\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- Lagoon\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u5171\u6709\u3059\u308b\u969b\u306f\u3001\u3059\u3079\u3066\u306e\u53c2\u52a0\u8005\u304b\u3089\u4e8b\u524d\u306b\u8a31\u53ef\u3092\u5f97\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u5f15\u7528\u3055\u308c\u305f\u308a\u3001\u8981\u7d04\u3055\u308c\u305f\u308a\u3001\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u304c\u64ae\u3089\u308c\u305f\u308a\u3059\u308b\u5834\u5408\u3067\u3082\u540c\u69d8\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u3001Twitter\u3084\u4ed6\u306e\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u30e1\u30c7\u30a3\u30a2\u3067\u306e\u5171\u6709\u3082\u542b\u307e\u308c\u307e\u3059\u3002 \u30d6\u30ed\u30b0\u6295\u7a3f\u3001\u8a18\u4e8b\u3001\u30dd\u30c3\u30c9\u30ad\u30e3\u30b9\u30c8\u306a\u3069\u3001\u3053\u308c\u3089\u306e\u5834\u6240\u306f\u8b70\u8ad6\u3084\u4f5c\u696d\u9032\u884c\u4e2d\u306e\u5834\u6240\u3067\u3059\u3002\u4f1a\u8a71\u306e\u65ad\u7247\u3092\u524a\u9664\u3059\u308b\u3068\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u304c\u5931\u308f\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u7279\u306bLagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u63a8\u9032\u3059\u308b\u76ee\u7684\u304c\u306a\u3044\u5834\u5408\u3001\u8b70\u8ad6\u3092\u6b6a\u3081\u305f\u308a\u3001\u963b\u6b62\u3057\u305f\u308a\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
- \u4e0a\u8a18\u3067\u8ff0\u3079\u305f\u901a\u308a\u3001\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u3092\u64ae\u3063\u3066\u30bd\u30fc\u30b7\u30e3\u30eb\u30e1\u30c7\u30a3\u30a2\u3084\u4ed6\u306e\u30d5\u30a9\u30fc\u30e9\u30e0\u306b\u6295\u7a3f\u3059\u308b\u5834\u5408\u3001\u305d\u308c\u3092\u6295\u7a3f\u3057\u305f\u4eba\u304b\u3089\u8a31\u53ef\u3092\u53d6\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u8a31\u53ef\u3092\u53d6\u308b\u969b\u306b\u306f\u3001\u8b58\u5225\u60c5\u5831\u3092\u524a\u9664\u3059\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u542b\u3081\u3066\u304f\u3060\u3055\u3044\u3002\u8b58\u5225\u60c5\u5831\u3092\u524a\u9664\u3057\u305f\u5834\u5408\u3067\u3082\u3001\u8a31\u53ef\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306b\u306fDiscord\u3001Github\u3001\u305d\u306e\u4ed6\u306eLagoon\u306e\u5a92\u4f53\u304b\u3089\u306e\u5185\u5bb9\u3082\u542b\u307e\u308c\u307e\u3059\u3002
- \u4f55\u304b\u3092\u5171\u6709\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u305f\u3060\u805e\u3044\u3066\u307f\u3066\u304f\u3060\u3055\u3044\uff01\u300c\u306d\u3048\u3001\u3053\u308c\u3092Twitter\u306b\u30b7\u30a7\u30a2\u3057\u3066\u3082\u3044\u3044\u3067\u3059\u304b\uff1f\u3042\u306a\u305f\u306b\u30af\u30ec\u30b8\u30c3\u30c8\u3092\u4ed8\u3051\u308b\u3053\u3068\u3092\u559c\u3093\u3067\u3044\u307e\u3059\uff01\u300d
- \u53c2\u52a0\u8005\u304cLagoon\u306e\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc\u306b\u30cf\u30e9\u30b9\u30e1\u30f3\u30c8\u884c\u70ba\u3092\u5831\u544a\u3059\u308b\u305f\u3081\u306b\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u3092\u64ae\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001\u8a31\u53ef\u3092\u5f97\u308b\u3053\u3068\u306a\u304f\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u516c\u306b\u307e\u305f\u306f\u79c1\u7684\u306b\u500b\u4eba\u3092\u6065\u305a\u304b\u3057\u304f\u3059\u308b\u305f\u3081\u306b\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u3092\u64ae\u308b\u3053\u3068\u306f\u8a31\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u30cf\u30e9\u30b9\u30e1\u30f3\u30c8\u884c\u70ba\u306e\u5831\u544a\u306b\u306e\u307f\u9069\u7528\u3055\u308c\u307e\u3059\u3002
- \u5b89\u5168\u304b\u3064\u9069\u5207\u306a\u5834\u5408\u306b\u306f\u3001\u305d\u306e\u5834\u3067\u304a\u4e92\u3044\u306e\u82e6\u60c5\u3092\u89e3\u6c7a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u5b89\u5168\u3067\u3042\u308b\u5834\u5408\u3001\u5bfe\u7acb\u304c\u8d77\u3053\u3063\u305f\u5834\u6240\u3067\u660e\u78ba\u5316\u3057\u3001\u95a2\u4e0e\u3057\u3088\u3046\u3068\u52aa\u3081\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001Discord\u30c1\u30e3\u30f3\u30cd\u30eb\u3067\u3002
- \u5bfe\u7acb\u304c\u30a8\u30b9\u30ab\u30ec\u30fc\u30c8\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u7ba1\u7406\u8005\u3084\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30de\u30cd\u30fc\u30b8\u30e3\u30fc(Alanna)\u306b\u9023\u7d61\u3059\u308b\u3002
- \u52a9\u3051\u3092\u6c42\u3081\u308b\u3002
- \u5bfe\u7acb\u306e\u4e3b\u984c\u304cLagoon\u3068\u306f\u95a2\u4fc2\u306a\u3044\u5834\u5408\u306f\u3001\u305d\u306e\u4f1a\u8a71\u3092\u3088\u308a\u9069\u5207\u306a\u30c1\u30e3\u30f3\u30cd\u30eb\u3078\u79fb\u52d5\u3055\u305b\u308b\u3002
\u5bfe\u9762\u3067\u306eLagoon\u30b9\u30da\u30fc\u30b9\u306b\u304a\u3051\u308b\u8ffd\u52a0\u7684\u306a\u914d\u616e\u4e8b\u9805
- \u30a4\u30d9\u30f3\u30c8\u306e\u884c\u52d5\u898f\u7bc4\u304c\u3042\u308b\u5834\u5408\u306f\u305d\u308c\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u306a\u3044\u5834\u5408\u306f\u3001\u79c1\u305f\u3061\u306e\u884c\u52d5\u898f\u7bc4\u304c\u9069\u7528\u3055\u308c\u307e\u3059\u3002
- \u4eba\u3005\u3001\u5f7c\u3089\u306e\u79fb\u52d5\u88c5\u7f6e\u3001\u307e\u305f\u306f\u4ed6\u306e\u88dc\u52a9\u6a5f\u5668\u306b\u3001\u305d\u306e\u4eba\u306e\u540c\u610f\u306a\u304f\u89e6\u308c\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u3082\u3057\u8ab0\u304b\u304c\u3042\u308b\u7279\u5b9a\u306e\u884c\u52d5\u3092\u6b62\u3081\u308b\u3088\u3046\u306b\u983c\u3093\u3060\u3089\u3001\u3059\u3050\u306b\u6b62\u3081\u3066\u304f\u3060\u3055\u3044\u3002
- \u4f55\u304b\u554f\u984c\u304c\u3042\u3063\u305f\u5834\u5408\u306f\u3001\u30a4\u30d9\u30f3\u30c8\u306e\u30b9\u30bf\u30c3\u30d5\u306b\u5831\u544a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 Lagoon\u30c1\u30fc\u30e0\u306e\u30e1\u30f3\u30d0\u30fc\u306b\u95a2\u3059\u308b\u554f\u984c\u306e\u5834\u5408\u306f\u3001uselagoon@amazee.io\u306b\u5831\u544a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Lagoon\u30c1\u30fc\u30e0\u306f\u3001Lagoon\u306e\u30b9\u30da\u30fc\u30b9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8ab0\u3067\u3082\u7d42\u4e86\u3055\u305b\u308b\u6a29\u5229\u3092\u4fdd\u7559\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/","title":"Lagoon\u306e\u9ad8\u5ea6\u306a\u6982\u5ff5","text":"\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Lagoon\u306e\u3088\u308a\u9ad8\u5ea6\u306a\u6982\u5ff5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002Lagoon\u3092\u4f7f\u3046\u306e\u304c\u521d\u3081\u3066\u306e\u65b9\u306f\u3001\u307e\u305aLagoon\u306e\u57fa\u672c\u6982\u5ff5\u304b\u3089\u59cb\u3081\u3066\u304f\u3060\u3055\u3044\u3002
\u5c02\u9580\u7684\u306a\u30b5\u30dd\u30fc\u30c8\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u304b\u3001\u79c1\u305f\u3061\u306eDiscord\u3067\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30e1\u30f3\u30d0\u30fc\u3084\u30e1\u30f3\u30c6\u30ca\u30fc\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-advanced/backups/","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7","text":"Lagoon\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u3068\u30b3\u30f3\u30c6\u30ca\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u4e21\u65b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u6a5f\u80fd\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u3001k8up operator\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30aa\u30da\u30ec\u30fc\u30bf\u306f\u3001\u3053\u308c\u3089\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u30ab\u30bf\u30ed\u30b0\u5316\u3059\u308b\u305f\u3081\u306bRestic\u3092\u5229\u7528\u3057\u3001\u901a\u5e38\u306fAWS S3\u30d0\u30b1\u30c3\u30c8\u306b\u63a5\u7d9a\u3057\u3066\u751f\u6210\u3055\u308c\u305f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u5b89\u5168\u306a\u30aa\u30d5\u30b5\u30a4\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/backups/#production","title":"production\u74b0\u5883","text":""},{"location":"ja/concepts-advanced/backups/#_2","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb","text":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u30b3\u30f3\u30c6\u30ca\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067production
\u74b0\u5883\u5185\u3067\u591c\u9593\u306b\u884c\u308f\u308c\u307e\u3059\u3002
\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306b\u7570\u306a\u308b\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e.lagoon.yml\u30d5\u30a1\u30a4\u30eb\u306e\"Backup Schedule\"\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u3067\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/backups/#_3","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u4fdd\u6301","text":"production\u74b0\u5883\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u4ee5\u4e0b\u306e\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306b\u5f93\u3063\u3066\u4fdd\u6301\u3055\u308c\u307e\u3059:
- \u65e5\u6b21:7
- \u9031\u6b21:6
- \u6708\u6b21:1
- \u6642\u9593\u3054\u3068:0
\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306b\u7570\u306a\u308b\u4fdd\u6301\u671f\u9593\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e.lagoon.yml\u30d5\u30a1\u30a4\u30eb\u306b\u3042\u308b\"Backup Retention\"\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u3067\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/backups/#_4","title":"\u958b\u767a\u74b0\u5883","text":"\u958b\u767a\u74b0\u5883\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u6bce\u6669\u8a66\u307f\u3089\u308c\u307e\u3059\u304c\u3001\u3042\u304f\u307e\u3067\u30d9\u30b9\u30c8\u30a8\u30d5\u30a9\u30fc\u30c8\u30b5\u30fc\u30d3\u30b9\u3067\u3059\u3002
"},{"location":"ja/concepts-advanced/backups/#_5","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u53d6\u5f97","text":"Restic\u306b\u4fdd\u5b58\u3055\u308c\u305f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306fLagoon\u5185\u3067\u8ffd\u8de1\u3055\u308c\u3001Lagoon UI\u306e\u5404\u74b0\u5883\u306e\u300c\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u300d\u30bf\u30d6\u304b\u3089\u56de\u5fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/backups/#_6","title":"\u30ab\u30b9\u30bf\u30e0\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304a\u3088\u3073/\u307e\u305f\u306f\u30ea\u30b9\u30c8\u30a2\u4f4d\u7f6e","text":"Lagoon\u306f\u3001\u5404\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eLagoon API\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\"\u30ab\u30b9\u30bf\u30e0\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u8a2d\u5b9a\"\u304a\u3088\u3073/\u307e\u305f\u306f\"\u30ab\u30b9\u30bf\u30e0\u30ea\u30b9\u30c8\u30a2\u8a2d\u5b9a\"\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u3001\u30ab\u30b9\u30bf\u30e0\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3068\u30ea\u30b9\u30c8\u30a2\u306e\u5834\u6240\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002
\u5371\u967a
\u6ce8\u610f\u3057\u3066\u9032\u3081\u3066\u304f\u3060\u3055\u3044:\u3053\u308c\u3089\u306e\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u30ec\u30d9\u30eb\u3067\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7/\u30ea\u30b9\u30c8\u30a2\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u5834\u6240\u304c\u4e0a\u66f8\u304d\u3055\u308c\u307e\u3059\u3002\u8a2d\u5b9a\u304c\u9593\u9055\u3063\u3066\u3044\u308b\u3068\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7/\u30ea\u30b9\u30c8\u30a2\u304c\u5931\u6557\u3059\u308b\u539f\u56e0\u3068\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/","title":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8","text":""},{"location":"ja/concepts-advanced/base-images/#what-is-a-base-image","title":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u3001Lagoon\u4e0a\u3067\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u4f7f\u7528\u3067\u304d\u308b\u3001\u307e\u305f\u306f\u4f7f\u7528\u3057\u3066\u3044\u308bDocker\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u76e3\u67fb\u3055\u308c\u3066\u3044\u306a\u3044\u3082\u306e\u304c\u4e0a\u6d41\u304b\u3089\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9/\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u6301\u3061\u8fbc\u307e\u308c\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u4f4e\u30ec\u30d9\u30eb\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u304b\u3089\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ec\u30d9\u30eb\u306e\u30c6\u30fc\u30de\u3068\u30e2\u30b8\u30e5\u30fc\u30eb\u307e\u3067\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u74b0\u5883\u4e0a\u3067\u5fc5\u8981\u3068\u306a\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u3082\u306e\u304c\u3059\u3079\u3066\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u307e\u3059\u3002
\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u3069\u306e\u30b7\u30b9\u30c6\u30e0\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u3066\u3044\u308b\u304b\u304c\u308f\u304b\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u6642\u9593\u3068\u30ea\u30bd\u30fc\u30b9\u306e\u7bc0\u7d04\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u5171\u6709\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u308c\u3089\u3092\u500b\u3005\u306e\u6570\u767e\u306e\u30b5\u30a4\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-advanced/base-images/#derived-images","title":"\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8","text":"\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3068\u306f\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u62e1\u5f35\u3059\u308b\u30a4\u30e1\u30fc\u30b8\u306e\u3053\u3068\u3092\u6307\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u3044\u304f\u3064\u304b\u306e\u30d6\u30ed\u30b0\u30b5\u30a4\u30c8\u3092\u4f5c\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u79c1\u305f\u3061\u306eDrupal\u30a4\u30e1\u30fc\u30b8\u3092\u53d6\u5f97\u3057\u3001\u30d6\u30ed\u30b0\u30b5\u30a4\u30c8\u306b\u5fc5\u8981\u306a\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u30c6\u30fc\u30de\u3059\u3079\u3066\u3092\u542b\u3081\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3001\u305d\u306e\u30d6\u30ed\u30b0\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3079\u3066\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u6d3e\u751f\u3057\u307e\u3059\u3002
\u3059\u3079\u3066\u306e\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u306f\u3001composer.json
\u30d5\u30a1\u30a4\u30eb(Packagist\u3001Satis\u3001\u307e\u305f\u306fGitHub\u306a\u3069\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u7d4c\u7531\u3067)\u3092\u53d6\u308a\u8fbc\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u57fa\u672c\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
\u3055\u3089\u306b\u3001\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001/build/pre_composer
\u30b9\u30af\u30ea\u30d7\u30c8\u3078\u306e\u547c\u3073\u51fa\u3057\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u304c\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3067\u30b9\u30af\u30ea\u30d7\u30c8\u3001\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u306a\u3069\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3067\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u66f4\u65b0\u307e\u305f\u306f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u308b\u3068\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u5b9f\u884c\u3055\u308c\u3001pre_composer
\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u305d\u306e\u5f8c\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#anatomy-of-a-base-image","title":"\u3079\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u69cb\u9020","text":"\u60c5\u5831
\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u306f\u3001Drupal\u3084Laravel\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u4f8b\u306b\u53d6\u308a\u4e0a\u3052\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u5143\u3005Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3053\u308c\u3089\u306e\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5411\u3051\u306b\u66f8\u304b\u308c\u305f\u3082\u306e\u3067\u3059\u3002\u4ed6\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u5185\u5bb9\u3082\u30ab\u30d0\u30fc\u3059\u308b\u3088\u3046\u306b\u62e1\u5f35\u3055\u308c\u307e\u3059\u304c\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u5185\u5bb9\u306b\u95a2\u4fc2\u306a\u304f\u3001\u30d7\u30ed\u30bb\u30b9\u306f\u5909\u308f\u308a\u307e\u305b\u3093\u3002
\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u3001Composer\u3067\u7ba1\u7406\u3055\u308c\u3001BitBucket\u3001GitHub\u3001\u307e\u305f\u306fGitLab (\u30c1\u30fc\u30e0\u304c\u4f7f\u7528\u3057\u3066\u3044\u308b\u3082\u306e)\u306b\u30db\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5404\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u72ec\u81ea\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#metapackages","title":"\u30e1\u30bf\u30d1\u30c3\u30b1\u30fc\u30b8","text":"\u30e1\u30bf\u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u3001\u8907\u6570\u306e\u4ed6\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u5305\u62ec\u3059\u308bComposer\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u4f8b\u3048\u3070\u3001Laravel\u3084Drupal\u306e\u30b3\u30a2\u30d5\u30a1\u30a4\u30eb\u3001\u5fc5\u8981\u306a\u30e2\u30b8\u30e5\u30fc\u30eb\u3084\u30c6\u30fc\u30de\u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u306b Laravel \u3084 Drupal \u306a\u3069\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002
\u4ee5\u4e0b\u306f\u3001Laravel\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092 composer.json
\u304b\u3089\u4f7f\u7528\u3057\u305f\u4f8b\u3067\u3059:
composer.json\"require\": {\n \"amazeelabs/algm_laravel_baseimage\": \"*\"\n},\n
\u79c1\u305f\u3061\u306b\u5fc5\u7528\u306a\u306e\u306fGitHub\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u6307\u3059\u3053\u306e\u30e1\u30bf\u30d1\u30c3\u30b1\u30fc\u30b8\u3060\u3051\u3067\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#docker-composeyml","title":"docker-compose.yml
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4ed6\u306e\u90e8\u5206\u306f docker-compose.yml
\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Drupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408\u3001Drupal \u306e\u30a4\u30e1\u30fc\u30b8\u304c\u5fc5\u8981\u3067\u3059\u304c\u3001MariaDB\u3001Solr\u3001Redis\u3001Varnish\u3082\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306fDrupal\u306b\u6700\u9069\u5316\u3055\u308c\u3066\u304a\u308a\u3001\u3059\u3079\u3066docker-compose.yml
\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#drupal","title":"Drupal","text":"Drupal\u30d9\u30fc\u30b9\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Drupal\u30b3\u30a2\u306b\u52a0\u3048\u3066\u4ee5\u4e0b\u306e\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30c8\u30c4\u30fc\u30eb\u3084\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059:
- Drupal Console
- Drush
- Configuration installer
- Redis
- Poll
- Search API
- Search API Solr
- Varnish Purge
- Purge
- Admin Toolbar
- CDN
- Password Policy
- Pathauto
- Ultimate Cron
"},{"location":"ja/concepts-advanced/base-images/#configuration","title":"\u8a2d\u5b9a","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u3001Laravel\u3067\u4f7f\u7528\u3055\u308c\u308b\u74b0\u5883\u5909\u6570\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002
\u3053\u308c\u3089\u306f\u4ee5\u4e0b\u306e\u5024\u3067\u3059:
DB_CONNECTION
DB_HOST
DB_PORT
DB_DATABASE
DB_USERNAME
DB_PASSWORD
REDIS_HOST
REDIS_PASSWORD
REDIS_PORT
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb(\u901a\u5e38\u306f/config
\u306b\u4f4d\u7f6e\u3057\u3066\u3044\u307e\u3059)\u304c\u3053\u308c\u3089\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-advanced/base-images/#queues","title":"\u30ad\u30e5\u30fc","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u30ad\u30e5\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001artisan-worker
\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u30ef\u30fc\u30ab\u30fc\u30b3\u30f3\u30c6\u30ca\u3067\u3001artisan queue:work
\u306e\u5b9f\u884c\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002\uff08docker-compose.yml
\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\uff09
"},{"location":"ja/concepts-advanced/base-images/#understanding-the-process-of-building-a-base-image","title":"\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306e\u7406\u89e3 \u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u90e8\u5206\u304c\u3042\u308a\u307e\u3059\u3002\u4e3b\u8981\u306a\u30b9\u30c6\u30c3\u30d7\u306f\u3059\u3079\u3066Makefile\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002Jenkinsfile\u306b\u306f\u3088\u308a\u30b7\u30f3\u30d7\u30eb\u306a\u30d3\u30e5\u30fc\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u898b\u308b\u3053\u3068\u3067\u3001\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u4f55\u304c\u8d77\u3053\u308b\u304b\u3092\u3088\u304f\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059(\u3053\u308c\u306f\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3059\u308b\u969b\u306b\u91cd\u8981\u3067\u3059)\u3002\u30ed\u30fc\u30ab\u30eb\u3067\u5168\u3066\u3092\u4f5c\u6210\u3057\u3001\u30c6\u30b9\u30c8\u3057\u305f\u5f8c\u306b\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3068\u3001\u5b9f\u969b\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306fJenkins\u306b\u3088\u3063\u3066\u69cb\u7bc9\u3055\u308c\u3001Harbor\u306b\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#makefile-and-build-assumptions","title":"Makefile\u3068\u30d3\u30eb\u30c9\u306e\u524d\u63d0\u6761\u4ef6","text":"\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u5834\u5408\u3001\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u306b\u6700\u4f4e\u9650\u5fc5\u7528\u306a\u74b0\u5883\u5909\u6570\u304c\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#base-image-build-variables","title":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u30d3\u30eb\u30c9\u5909\u6570","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306b\u6ce8\u5165\u3055\u308c\u308b\u5909\u6570\u3068\u3001\u305d\u308c\u3092\u898b\u3064\u3051\u308b\u5834\u6240\u3067\u3059\u3002
BUILD_NUMBER
- \u3053\u308c\u306f\u81ea\u52d5\u7684\u306bJenkins\u306b\u3088\u3063\u3066\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002 GIT_BRANCH
- \u3053\u308c\u306fJenkins\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u81ea\u4f53\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002\u305d\u306e\u6642\u70b9\u3067\u30d3\u30eb\u30c9\u3055\u308c\u3066\u3044\u308b\u30d6\u30e9\u30f3\u30c1(develop\u3001main\u306a\u3069)\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002 DOCKER_REPO
/DOCKER_HUB
- \u3053\u308c\u306fJenkinsfile\u81ea\u4f53\u5185\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u3066\u751f\u6210\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u304c\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u308bDocker\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30cf\u30d6\u3092\u6307\u3057\u3066\u3044\u307e\u3059\u3002 DOCKER_USERNAME
/DOCKER_PASSWORD
- \u3053\u308c\u3089\u306f\u3001\u30d3\u30eb\u30c9\u306e\u65e9\u3044\u6bb5\u968e\u3067Docker\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u5b9f\u969b\u306b\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5909\u6570\u306fJenkins\u306e\u8a8d\u8a3c\u60c5\u5831\u5185\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306fJenkinsfile\u81ea\u4f53\u3067\u4f7f\u7528\u3055\u308c\u3001Makefile\u306e\u4e00\u90e8\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3064\u307e\u308a\u3001Jenkins\u4ee5\u5916\u306e\u5834\u6240(\u30ed\u30fc\u30ab\u30eb\u3067\u30c6\u30b9\u30c8\u3059\u308b\u306a\u3069)\u3067\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5834\u5408\u3001docker login
\u3092\u624b\u52d5\u3067\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u5b9f\u969b\u306b\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u30de\u30b7\u30f3\u3067make
\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u308c\u3089\u304c\u74b0\u5883\u3067\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u3044\u3068\u601d\u3046\u3067\u3057\u3087\u3046 - \u305f\u3068\u3048\u3070\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089make\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306b\u3053\u308c\u3089\u3092\u8a2d\u5b9a\u3059\u308b\u3060\u3051\u3067\u3082\u69cb\u3044\u307e\u305b\u3093:
\u30ed\u30fc\u30ab\u30eb\u3067make\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u8a2d\u5b9a\u3059\u308bGIT_BRANCH=example_branch_name DOCKER_HUB=the_docker_hub_the_images_are_pushed_to DOCKER_REPO=your_docker_repo_here BUILD_NUMBER=<some_integer> make images_remove\n
"},{"location":"ja/concepts-advanced/base-images/#makefile-targets","title":"Makefile targets","text":"\u6700\u3082\u91cd\u8981\u306a\u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059:
images_build
: \u74b0\u5883\u5909\u6570\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u753b\u50cf\u3092\u30d3\u30eb\u30c9\u3057\u3066\u30bf\u30b0\u3092\u4ed8\u3051\u3066\u516c\u958b\u3057\u307e\u3059\u3002 images_publish
: \u30d3\u30eb\u30c9\u3055\u308c\u305f\u753b\u50cf\u3092Docker\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002 images_start
: \u30c6\u30b9\u30c8\u306a\u3069\u306e\u305f\u3081\u306b\u30a4\u30e1\u30fc\u30b8\u3092\u958b\u59cb\u3057\u307e\u3059\u3002 images_test
:\u30a4\u30e1\u30fc\u30b8\u306b\u5bfe\u3057\u3066\u57fa\u672c\u7684\u306a\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 images_remove
:\u30d3\u30eb\u30c9\u74b0\u5883\u5909\u6570\u304c\u4e0e\u3048\u3089\u308c\u308b\u3068\u3001\u4ee5\u524d\u306b\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u524a\u9664\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#example-workflow-for-building-a-new-release-of-a-base-image","title":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u30ea\u30ea\u30fc\u30b9\u3092\u30d3\u30eb\u30c9\u3059\u308b\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u4f8b","text":"\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u307b\u3068\u3093\u3069\u306f\u3001\u69d8\u3005\u306a\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u9593\u3067\u5171\u6709\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u4e3b\u306b\u4e0a\u8a18\u3067\u8aac\u660e\u3057\u305fMakefile\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002
- Docker Login - Docker\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u3001Harbor\u306eURL\u304cDocker\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u6e21\u3055\u308c\u307e\u3059\u3002
- Docker Build -
make images_build
\u30b9\u30c6\u30c3\u30d7\u304c\u73fe\u5728\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u4ee5\u4e0b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u307e\u3059: - \u3059\u3079\u3066\u306e\u74b0\u5883\u5909\u6570\u304c\u30d3\u30eb\u30c9\u306e\u305f\u3081\u306b\u6e96\u5099\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
docker-compose build
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u73fe\u5728\u306eGit\u30d6\u30e9\u30f3\u30c1\u304b\u3089\u3044\u304f\u3064\u304b\u306e\u65b0\u3057\u3044Docker\u30a4\u30e1\u30fc\u30b8\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002
- Image Test - \u3053\u308c\u306b\u3088\u308a
make images_test
\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u30c6\u30b9\u30c8\u3055\u308c\u308b\u30a4\u30e1\u30fc\u30b8\u306b\u3088\u308a\u7570\u306a\u308a\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u3053\u308c\u306f\u30a4\u30e1\u30fc\u30b8\u3092\u958b\u59cb\u3057\u3001\u4f55\u3089\u304b\u306e\u65b9\u6cd5\u3067\u5bfe\u8a71\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u975e\u5e38\u306b\u76f4\u611f\u7684\u306a\u30c6\u30b9\u30c8\u3067\u3059(Drupal\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30ea\u30b9\u30c8\u8868\u793a\u306a\u3069)\u3002 - Docker Push - \u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001
images_publish
\u306emake\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u542b\u307e\u308c\u308b\u30ed\u30b8\u30c3\u30af\u304c\u5b9f\u884c\u3055\u308c\u3001\u305d\u306e\u7d50\u679c\u3068\u3057\u3066\u751f\u6210\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u306b\u30bf\u30b0\u304c\u4ed8\u3051\u3089\u308c\u307e\u3059\u3002 \u30b9\u30c6\u30c3\u30d72\u306eDocker Build\u3067\u305d\u308c\u3089\u3092Harbor\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3064\u3044\u3066\u306f\u3001\u672c\u30ac\u30a4\u30c9\u306e\u4ed6\u306e\u5834\u6240\u3067\u8a73\u3057\u304f\u8aac\u660e\u3055\u308c\u3066\u3044\u307e\u3059\u3002 - Docker Clean Images -
images_remove
\u3068\u3044\u3046make\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u5b9f\u884c\u3057\u3001\u3053\u308c\u3089\u304cHarbor\u306b\u3042\u308b\u305f\u3081\u3001\u65b0\u3057\u304f\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3092Docker\u30db\u30b9\u30c8\u304b\u3089\u5358\u7d14\u306b\u524a\u9664\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#releasing-a-new-version-of-a-base-image","title":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30ea\u30ea\u30fc\u30b9","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30ea\u30ea\u30fc\u30b9\u3059\u308b\u7406\u7531\u306f\u591a\u3005\u3042\u308a\u307e\u3059\u3002Drupal\u3084Laravel\u3001Node.js\u306a\u3069\u306e\u30a4\u30e1\u30fc\u30b8\u3067\u306f\u3001\u6a5f\u80fd\u3084\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u305f\u3081\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u3084\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u307e\u305f\u306f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u30b3\u30f3\u30c6\u30ca\u306b\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u3066\u3044\u308b\u57fa\u672c\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u66f4\u65b0\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001PHP\u3084Node.js\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u66f4\u65b0\u3059\u308b\u306a\u3069\u3067\u3059\u3002\u307e\u305f\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u3066\u3044\u308b\u5b9f\u969b\u306e\u57fa\u672c\u7684\u306a\u30a4\u30e1\u30fc\u30b8\u3092\u66f4\u65b0\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002
\u3042\u306a\u305f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d9\u30fc\u30b9\u3068\u306a\u308b\u30a4\u30e1\u30fc\u30b8\u306f\u3001Lagoon\u30c1\u30fc\u30e0\u306b\u3088\u3063\u3066\u7ba1\u7406\u3055\u308c\u3066\u3044\u308b\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306f\u6708\u306b\u4e00\u56de(\u307e\u305f\u306f\u305d\u308c\u4ee5\u4e0a)\u306e\u983b\u5ea6\u3067\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u304c\u66f4\u65b0\u3055\u308c\u305f\u3068\u304d\u3001\u3042\u306a\u305f\u306f\u30a2\u30c3\u30d7\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u3066\u3044\u308b\u5909\u66f4\u3068\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u53d6\u308a\u5165\u308c\u308b\u305f\u3081\u306b\u3001\u81ea\u5206\u81ea\u8eab\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u305d\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u793a\u3057\u307e\u3059\u3002 Drupal8\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u30ea\u30ea\u30fc\u30b9\u3092\u66f4\u65b0\u304a\u3088\u3073\u30bf\u30b0\u4ed8\u3051\u3057\u307e\u3059\u3002\u6211\u3005\u306f\u65b0\u3057\u3044\u30e2\u30b8\u30e5\u30fc\u30eb(ClamAV)\u3092\u57fa\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002Drupal\u3067\u30c7\u30e2\u3092\u884c\u3046\u306e\u306f\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u4e2d\u3067\u6700\u3082\u8a2d\u5b9a\u304c\u8907\u96d1\u3060\u304b\u3089\u3067\u3059\u3002\u3059\u3079\u3066\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u5171\u901a\u3059\u308b\u624b\u9806\u3092\u4ee5\u4e0b\u306b\u8a18\u8f09\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#step-1-pull-down-the-base-image-locally","title":"\u30b9\u30c6\u30c3\u30d71 - \u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u30ed\u30fc\u30ab\u30eb\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b","text":"\u3053\u308c\u306f\u5358\u306bGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30ed\u30fc\u30ab\u30eb\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u3067\u3059\u3002Drupal8\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u5834\u5408\u3067\u306f\u3001Bitbucket\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u306e\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
Clone Git repo.git clone ssh://git@bitbucket.biscrum.com:7999/webpro/drupal8_base_image.git\n
"},{"location":"ja/concepts-advanced/base-images/#step-2-make-the-changes-to-the-repository","title":"\u30b9\u30c6\u30c3\u30d72 - \u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b","text":"\u60c5\u5831
\u3053\u3053\u3067\u793a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306fDrupal 8\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u7279\u6709\u306e\u3082\u306e\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u3042\u3089\u3086\u308b\u5909\u66f4(\u30d5\u30a1\u30a4\u30eb\u306e\u8ffd\u52a0\u3001\u57fa\u672c\u7684\u306aDocker\u30a4\u30e1\u30fc\u30b8\u306e\u5909\u66f4\u306a\u3069)\u306f\u3059\u3079\u3066\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u5bfe\u3057\u3066\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u884c\u308f\u308c\u307e\u3059\u3002
\u6211\u3005\u306e\u4f8b\u3067\u306f\u3001ClamAV\u30e2\u30b8\u30e5\u30fc\u30eb\u3092Drupal 8\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u95a2\u4e0e\u3057\u307e\u3059\u3002\u6700\u521d\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u5fc5\u8981\u3068\u3059\u308b\u3053\u3068\u3067\u3001\u3053\u308c\u306b\u3088\u308a\u6211\u3005\u306ecomposer.json
\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306fcomposer require
\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u884c\u308f\u308c\u307e\u3059\u3002
\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059: Composer require\u3067\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3002
composer require drupal/clamav\n
Composer require\u306e\u30d7\u30ed\u30bb\u30b9\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001\u30d1\u30c3\u30b1\u30fc\u30b8\u306fcomposer.json
\u30d5\u30a1\u30a4\u30eb\u306b\u8868\u793a\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002 \u3053\u3053\u3067\u306f\u3001composer.json
\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304d\u3001\u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30ea\u30b9\u30c8\u3092\u898b\u3066\u3001ClamAV\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u30ea\u30b9\u30c8\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#step-22-ensure-that-the-required-drupal-module-is-enabled-in-template-based-derived-images","title":"\u30b9\u30c6\u30c3\u30d72.2 - \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d9\u30fc\u30b9\u306e\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3067\u5fc5\u8981\u306aDrupal\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u8ffd\u52a0\u3055\u308c\u305f\u4efb\u610f\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d9\u30fc\u30b9\u306e\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3067\u6709\u52b9\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u3092Lagoon Bundle\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u884c\u308f\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u5177\u4f53\u7684\u306b\u306f\u3001dependencies
\u30bb\u30af\u30b7\u30e7\u30f3\u306elagoon_bundle.info.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u4f9d\u5b58\u6027\u3068\u3057\u3066\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3092\u8981\u6c42\u3057\u307e\u3059\u3002Lagoon Bundle\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u9593\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u5f37\u5236\u3059\u308b\u305f\u3081\u3060\u3051\u306b\u5b58\u5728\u3059\u308b\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002 \u3053\u3053\u3067\u306f\u3001web/modules/contrib/lagoon/lagoon_bundle/lagoon_bundle.info.yml
\u3092\u958b\u304d\u3001\u4f9d\u5b58\u95a2\u4fc2\u3068\u3057\u3066clamav:clamav
\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
\u3053\u308c\u306b\u4f9d\u5b58\u95a2\u4fc2\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3001\u6d3e\u751f\u3057\u305f\u30a4\u30e1\u30fc\u30b8\u4e0a\u3067Lagoon Bundle\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u6709\u52b9\u306b\u306a\u308b\u305f\u3073\u306b\u3001\u305d\u306e\u4f9d\u5b58\u95a2\u4fc2(\u3053\u306e\u5834\u5408\u3001\u65b0\u305f\u306b\u8ffd\u52a0\u3055\u308c\u305fClamAV\u30e2\u30b8\u30e5\u30fc\u30eb)\u3082\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u6642\u306blagoon_bundle
\u3092\u6d3e\u751f\u30a4\u30e1\u30fc\u30b8\u3067\u6709\u52b9\u306b\u3059\u308b\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u5f37\u5236\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#step-23-test","title":"\u30b9\u30c6\u30c3\u30d72.3 - \u30c6\u30b9\u30c8","text":"\u3053\u308c\u306f\u3042\u306a\u305f\u304c\u4f55\u3092\u30c6\u30b9\u30c8\u3057\u3066\u3044\u308b\u304b\u306b\u3088\u308a\u307e\u3059\u3002ClamAV\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8ffd\u52a0\u3059\u308b\u5834\u5408\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3067\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3055\u308c\u3001Lagoon Bundle\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u6709\u52b9\u5316\u3055\u308c\u305f\u3068\u304d\u306bClamAV\u3082\u6709\u52b9\u5316\u3055\u308c\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u3044\u3067\u3059\u3002 \u3053\u3053\u3067\u306f\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u304c/app/web/modules/contrib
\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3055\u308c\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
\u305d\u3057\u3066\u3001lagoon_bundle
\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u5316\u3059\u308b\u3068\u304d\u306b\u3001clamav
\u3082\u6709\u52b9\u5316\u3055\u308c\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 Drush\u3067\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u5316\u3059\u308b\u3002
drush pm-enable lagoon_bundle -y\n
\u8b66\u544a
\u4e0a\u8a18\u306e\u30b3\u30f3\u30c6\u30ca\u3067JWT\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308b\u3067\u3057\u3087\u3046\u3002\u4e0a\u306e\u30c7\u30e2\u3067\u306f\u3053\u306e\u30a8\u30e9\u30fc\u306f\u7121\u8996\u3057\u3066\u304b\u307e\u3044\u307e\u305b\u3093\u3002\u80cc\u666f\u3068\u3057\u3066\u3001\u3042\u306a\u305f\u304c\u4f5c\u696d\u3057\u3066\u3044\u308b\u30b5\u30a4\u30c8\u306bLagoon\u74b0\u5883\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001\u3053\u306e\u30a8\u30e9\u30fc\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u304c\u7d42\u4e86\u3057\u305f\u306e\u3067\u3001\u30a4\u30e1\u30fc\u30b8\u3092\u30bf\u30b0\u4ed8\u3051\u3057\u3066\u30d3\u30eb\u30c9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#step-3-tagging-images","title":"\u30b9\u30c6\u30c3\u30d73 - \u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30b0\u4ed8\u3051","text":"\u30a4\u30e1\u30fc\u30b8\u306f\u3001Git\u30bf\u30b0\u306b\u57fa\u3065\u3044\u3066\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3055\u308c\u307e\u3059 - \u3053\u308c\u3089\u306f\u6a19\u6e96\u7684\u306a\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0(semver)\u306e\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3046\u3079\u304d\u3067\u3059\u3002\u3059\u3079\u3066\u306e\u30bf\u30b0\u306f vX.Y.Z \u306e\u69cb\u9020\u3092\u6301\u3064\u3079\u304d\u3067\u3042\u308a\u3001X\u3001Y\u3001Z\u306f\u6574\u6570\u3067\u3059(\u6b63\u78ba\u306b\u306fX.Y.Z\u81ea\u4f53\u304c\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3042\u308a\u3001vX.Y.Z\u306f\u30bf\u30b0\u3067\u3059)\u3002\u3053\u308c\u306f\u30a4\u30e1\u30fc\u30b8\u30bf\u30b0\u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u306e\u3067\u5fc5\u305a\u5f93\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u3053\u306e\u4f8b\u3067\u306f\u3001ClamAV\u3092\u8ffd\u52a0\u3057\u305f\u3053\u3068\u3092\u793a\u3059Drupal8\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30bf\u30b0\u4ed8\u3051\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#here-we-demonstrate-how-to-tag-an-image","title":"\u3053\u3053\u3067\u306f\u3001\u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30b0\u4ed8\u3051\u65b9\u6cd5\u3092\u793a\u3057\u307e\u3059","text":"\u79c1\u305f\u3061\u306f\u3001git log
\u3092\u4f7f\u7528\u3057\u3066\u3001\u901a\u5e38\u306e\u30b3\u30df\u30c3\u30c8\u3084\u30d7\u30c3\u30b7\u30e5\u3068\u540c\u3058\u3088\u3046\u306b\u3001\u5909\u66f4\u3092\u30b3\u30df\u30c3\u30c8(\u3057\u304b\u3057\u30d7\u30c3\u30b7\u30e5\u306f\u3057\u306a\u3044)\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
- \u307e\u3060\u5909\u66f4\u3092\u30b3\u30df\u30c3\u30c8\u3057\u3066\u3044\u306a\u3051\u308c\u3070\u3001\u30b3\u30df\u30c3\u30c8\u3057\u307e\u3059\u3002
- \u6b21\u306b\u3001
git tag
\u3092\u4f7f\u7528\u3057\u3066\u3001\u3069\u306e\u30bf\u30b0\u306b\u3044\u308b\u306e\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 - \u6b21\u306b\u3001
git tag -a v0.0.9 -m \u201cAdds clamAV to base.\u201d
\u3092\u4f7f\u7528\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3057\u307e\u3059\u3002 - _git -a, --annotate\u3092\u4f7f\u3046\u3068 \u7121\u7f72\u540d\u306e\u6ce8\u91c8\u4ed8\u304d\u30bf\u30b0\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
- \u6b21\u306b\u3001
git push --tags
\u3067\u30bf\u30b0\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002 - \u6700\u5f8c\u306b\u3001
git push
\u3067\u5168\u3066\u306e\u5909\u66f4\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
\u5371\u967a
\u30bf\u30b0\u306f\u305d\u308c\u81ea\u4f53\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u660e\u793a\u7684\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\uff01
"},{"location":"ja/concepts-advanced/base-images/#how-git-tags-map-to-image-tags","title":"Git\u306e\u30bf\u30b0\u304c\u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30b0\u306b\u3069\u306e\u3088\u3046\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u308b\u304b","text":"\u5371\u967a
\u30d3\u30eb\u30c9\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306b\u3088\u308a\u307e\u3059\u304c\u3001\u307b\u307c\u78ba\u5b9f\u306bdevelop\u30d6\u30e9\u30f3\u30c1\u7d4c\u7531\u3067\u5909\u66f4\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u3001\u305d\u308c\u3092main\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3059\u308b\u3067\u3057\u3087\u3046\u3002
\u3053\u3053\u3067\u899a\u3048\u3066\u304a\u304f\u3079\u304d\u91cd\u8981\u306a\u70b9\u306f\u3001Jenkins\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f\u3001\u6700\u65b0\u306e\u30b3\u30df\u30c3\u30c8\u30bf\u30b0\u306b\u57fa\u3065\u3044\u3066\u30a4\u30e1\u30fc\u30b8\u3092\u30bf\u30b0\u4ed8\u3051\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002
\u30a4\u30e1\u30fc\u30b8\u306f\u4ee5\u4e0b\u306e\u30eb\u30fc\u30eb\u3067\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3001\u3053\u308c\u306b\u8a72\u5f53\u3059\u308b\u3082\u306e\u3054\u3068\u306b\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u307e\u3059:
- main\u30d6\u30e9\u30f3\u30c1\u304c\u30d3\u30eb\u30c9\u3055\u308c\u308b\u3068\u3001
latest
\u3068\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u307e\u3059\u3002 - develop\u30d6\u30e9\u30f3\u30c1\u304c\u30d3\u30eb\u30c9\u3055\u308c\u308b\u3068\u3001
development
\u3068\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u307e\u3059\u3002 - \u30d3\u30eb\u30c9\u3055\u308c\u308b\u30b3\u30df\u30c3\u30c8\u304c\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3066\u3044\u308c\u3070\u3001\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u306f\u305d\u306e\u30b3\u30df\u30c3\u30c8\u306e\u30bf\u30b0\u4ed8\u3051\u3067\u30d3\u30eb\u30c9\u3055\u308c\u307e\u3059\u3002
- \u4e0a\u3067\u793a\u3057\u305f\u3088\u3046\u306b\u3001\u3053\u308c\u304c\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30ea\u30ea\u30fc\u30b9\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002\u307e\u305f\u3001\u4efb\u610f\u306e\u30bf\u30b0\u3067\u30a2\u30c9\u30db\u30c3\u30af\u306a\u30d3\u30eb\u30c9\u3092\u884c\u3046\u305f\u3081\u306b\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u30bf\u30b0\u540d\u306b\u306f\u5341\u5206\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3089\u306f\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u306e\u30bf\u30b0\u3067\u306e\u307f\u30c6\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#step-4-building-the-new-base-images","title":"\u30b9\u30c6\u30c3\u30d74 - \u65b0\u3057\u3044\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9","text":"\u60c5\u5831
\u4e00\u822c\u7684\u306b\u306f\u3001\u81ea\u52d5\u30d3\u30eb\u30c9\u306e\u305f\u3081\u306e\u30c8\u30ea\u30ac\u30fc\u30b9\u30c8\u30e9\u30c6\u30b8\u30fc\u3092\u3053\u3053\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u305d\u308c\u306f\u3042\u306a\u305f\u306e\u30cb\u30fc\u30ba\u3084\u8a2d\u5b9a\u306b\u3088\u3063\u3066\u7570\u306a\u308b\u305f\u3081\u3001\u3053\u3053\u3067\u306f\u624b\u52d5\u3067\u30d3\u30eb\u30c9\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002
- \u3042\u306a\u305f\u306eLagoon Jenkins\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002
- \u4f5c\u696d\u4e2d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8(\u3053\u306e\u5834\u5408\u3001AIOBI Drupal 8 Base)\u3092\u9078\u629e\u3057\u307e\u3059\u3002
- \u30d3\u30eb\u30c9\u3057\u305f\u3044\u30d6\u30e9\u30f3\u30c1\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
- \u300cBuild Now\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
\u3053\u308c\u306b\u3088\u308a\u3001\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u304c\u958b\u59cb\u3055\u308c\u3001\u6210\u529f\u3059\u308c\u3070\u65b0\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u3092Harbor\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
\u30d3\u30eb\u30c9\u304c\u6210\u529f\u3057\u306a\u3044\u5834\u5408\u306f\u3001\u30d3\u30eb\u30c9\u81ea\u4f53\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30ed\u30b0\u3092\u8aad\u307f\u3001\u3069\u3053\u3067\u5931\u6557\u3057\u305f\u304b\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u4e0b\u306eHarbor\u304b\u3089\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u3067\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u3001\u79c1\u305f\u3061\u304cJenkins\u3067\u30d3\u30eb\u30c9\u3057\u305f\u3070\u304b\u308a\u306e\u30a4\u30e1\u30fc\u30b8\u306fHarbor\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u3001\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u305d\u308c\u304cv0.0.9\u3068\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u305d\u306e\u30bf\u30b0\u306e\u3064\u3044\u305f\u30a4\u30e1\u30fc\u30b8\u304c\u5b58\u5728\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u79c1\u305f\u3061\u306fmain\u30d6\u30e9\u30f3\u30c1\u3092\u30d3\u30eb\u30c9\u3057\u305f\u306e\u3067\u3001\u300clatest\u300d\u30a4\u30e1\u30fc\u30b8\u3082\u30d3\u30eb\u30c9\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u306e\u6bb5\u968e\u3067\u306f\u3001v0.0.9\u3068\u300clatest\u300d\u30a4\u30e1\u30fc\u30b8\u306f\u540c\u4e00\u3067\u3059\u3002
"},{"location":"ja/concepts-advanced/base-images/#acknowledgement","title":"\u8b1d\u8f9e","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306e\u69cb\u9020\u306f\u3001\u5b9f\u969b\u306b\u306f\u3001 Denpal\u306e\u30d5\u30a9\u30fc\u30af\u3067\u3059\u3002\u3053\u308c\u306f\u5143\u306eDrupal Composer Template\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u304c\u3001Lagoon(\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u307e\u305f\u306f\u30db\u30b9\u30c8\u3055\u308c\u305fLagoon)\u3067\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u3059\u3079\u3066\u3092\u542b\u3093\u3067\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-idling/","title":"\u74b0\u5883\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0(\u30aa\u30d7\u30b7\u30e7\u30f3)","text":""},{"location":"ja/concepts-advanced/environment-idling/#_2","title":"\u74b0\u5883\u30a2\u30a4\u30c9\u30e9\u30fc\u3068\u306f\u4f55\u3067\u3059\u304b\uff1f","text":"Lagoon\u306f\u3001Aergia\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc(lagoon-remote
\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u3059)\u3092\u5229\u7528\u3057\u3066\u3001\u4e00\u5b9a\u671f\u9593\u4f7f\u7528\u3055\u308c\u3066\u3044\u306a\u3044\u74b0\u5883\u3092\u81ea\u52d5\u7684\u306b\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001Kubernetes\u30af\u30e9\u30b9\u30bf\u306e\u8ca0\u8377\u3092\u8efd\u6e1b\u3057\u3001\u5b9f\u969b\u306b\u4f7f\u7528\u4e2d\u306e\u672c\u756a\u74b0\u5883\u3068\u958b\u767a\u74b0\u5883\u306e\u5168\u4f53\u7684\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u884c\u308f\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-idling/#_3","title":"\u74b0\u5883\u306f\u3069\u306e\u3088\u3046\u306b\u3057\u3066\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u306a\u308a\u307e\u3059\u304b\uff1f","text":"\u74b0\u5883\u30a2\u30a4\u30c9\u30e9\u30fc\u306b\u306f\u591a\u304f\u306e\u7570\u306a\u308b\u8a2d\u5b9a\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u6a19\u6e96\u7684\u306aLagoon\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u793a\u3057\u307e\u3059(\u3053\u308c\u3089\u306f\u3042\u306a\u305f\u306eLagoon\u3067\u306f\u5168\u304f\u7570\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001Lagoon\u7ba1\u7406\u8005\u306b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff01)
- \u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u306f4\u6642\u9593\u3054\u3068\u306b\u8a66\u307f\u3089\u308c\u307e\u3059\u3002
- \u672c\u756a\u74b0\u5883\u306f\u6c7a\u3057\u3066\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u306a\u308a\u307e\u305b\u3093\u3002
- CLI\u30dd\u30c3\u30c9\u306f\u3001cron\u30b8\u30e7\u30d6\u304c\u542b\u307e\u308c\u3066\u304a\u3089\u305a\u3001\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u63a5\u7d9a\u304c\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u306a\u3044\u5834\u5408\u306b\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u306a\u308a\u307e\u3059\u3002
- \u4ed6\u306e\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u30dd\u30c3\u30c9\u306f\u3001\u74b0\u5883\u4e0a\u3067\u904e\u53bb4\u6642\u9593\u306e\u9593\u306b\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u304c\u306a\u304b\u3063\u305f\u5834\u5408\u306b\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u306a\u308a\u307e\u3059\u3002
- \u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30d3\u30eb\u30c9\u304c\u9032\u884c\u4e2d\u3067\u3042\u308c\u3070\u3001\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u306f\u884c\u308f\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-advanced/environment-idling/#_4","title":"\u74b0\u5883\u306f\u3069\u306e\u3088\u3046\u306b\u3057\u3066\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u304b\u3089\u89e3\u9664\u3055\u308c\u307e\u3059\u304b\uff1f","text":"Aergia\u306f\u3001\u4efb\u610f\u306e\u74b0\u5883\u304c\u30a2\u30af\u30bb\u30b9\u3055\u308c\u308b\u3068\u81ea\u52d5\u7684\u306b\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u3092\u89e3\u9664\u3057\u307e\u3059\u3002 \u305d\u306e\u305f\u3081\u3001\u74b0\u5883\u306eURL\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3060\u3051\u3067\u74b0\u5883\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002\u540c\u69d8\u306b\u3001\u74b0\u5883\u3078\u306eSSH\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u958b\u59cb\u3059\u308b\u3068\u3001\u30b5\u30fc\u30d3\u30b9\u3082\u518d\u958b\u3057\u307e\u3059\u3002
\u30a2\u30f3\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u306f\u6570\u79d2\u304b\u304b\u308a\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001Kubernetes\u30af\u30e9\u30b9\u30bf\u306f\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u8d77\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3089\u3067\u3059\u3002\u3053\u306e\u9593\u3001\u8a2a\u554f\u8005\u306b\u306f\u3001\u73fe\u5728\u81ea\u5206\u306e\u74b0\u5883\u304c\u8d77\u52d5\u4e2d\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3059\u5f85\u6a5f\u753b\u9762\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-idling/#idler","title":"Idler\u304c\u79c1\u306e\u74b0\u5883\u3092\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u3057\u306a\u3044\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u3059\u304b\uff1f","text":"\u306f\u3044\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8(\u3059\u3079\u3066\u306e\u74b0\u5883\u306b\u5f71\u97ff)\u3068\u74b0\u5883(1\u3064\u306e\u74b0\u5883\u306e\u307f\u3092\u5bfe\u8c61\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408)\u306bautoIdle
\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u3042\u308a\u3001\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u304c\u884c\u308f\u308c\u308b\u304b\u3069\u3046\u304b\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u30021
\u306e\u5024\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/\u74b0\u5883\u304c\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u306e\u5bfe\u8c61\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c0
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u74b0\u5883\u304c0
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u3066\u3082\u3001\u74b0\u5883\u306f\u6c7a\u3057\u3066\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306b\u306a\u308a\u307e\u305b\u3093\u3002 \u30c7\u30d5\u30a9\u30eb\u30c8\u306f\u5e38\u306b1
(\u30a2\u30a4\u30c9\u30ea\u30f3\u30b0\u304c\u6709\u52b9)\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/\u74b0\u5883\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8a2d\u5b9a\u65b9\u6cd5\u304c\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306b\u76f8\u8ac7\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-advanced/environment-types/","title":"\u74b0\u5883\u306e\u7a2e\u985e","text":"Lagoon\u306f\u73fe\u5728\u3001production(\u672c\u756a\u74b0\u5883)
\u3068development(\u958b\u767a\u74b0\u5883)
\u306e2\u3064\u306e\u7570\u306a\u308b\u74b0\u5883\u30bf\u30a4\u30d7\u3092\u533a\u5225\u3057\u3066\u3044\u307e\u3059\u3002
Lagoon GraphQL API\u3092\u901a\u3058\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u969b\u306b\u306f\u3001productionEnvironment
\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Lagoon\u304c\u5b9f\u884c\u3059\u308b\u3059\u3079\u3066\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3067\u3001\u73fe\u5728\u306e\u74b0\u5883\u540d\u304cproductionEnvironment
\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u3068\u4e00\u81f4\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3057\u307e\u3059\u3002\u3082\u3057\u305d\u3046\u3067\u3042\u308c\u3070\u3001Lagoon\u306f\u3053\u306e\u74b0\u5883\u3092production
\u74b0\u5883\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u307e\u3059\u3002\u3053\u308c\u306f2\u3064\u306e\u5834\u6240\u3067\u884c\u308f\u308c\u307e\u3059:
- GraphQL API\u81ea\u4f53\u5185\u3002
- \u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u5185\u306e
LAGOON_ENVIRONMENT_TYPE
\u3068\u3044\u3046\u540d\u524d\u306e\u74b0\u5883\u5909\u6570\u3002
\u3053\u306e2\u3064\u3060\u3051\u3067\u3059\u3002Lagoon\u81ea\u4f53\u306fdevelopment
\u3068production
\u306e\u74b0\u5883\u3092\u307e\u3063\u305f\u304f\u540c\u3058\u3088\u3046\u306b\u6271\u3044\u307e\u3059(\u6700\u7d42\u7684\u306b\u306f\u74b0\u5883\u306e\u9055\u3044\u3092\u3067\u304d\u308b\u3060\u3051\u5c11\u306a\u304f\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059 - \u305d\u308c\u304cLagoon\u306e\u7f8e\u3057\u3055\u3067\u3059)\u3002
\u3053\u306e\u60c5\u5831\u3092\u4f7f\u7528\u3059\u308b\u3082\u306e\u304c\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059:
- \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001
development
\u74b0\u5883\u306f\u30d2\u30c3\u30c8\u304c4\u6642\u9593\u306a\u3044\u5834\u5408\u306b\u4f11\u6b62\u72b6\u614b\u306b\u306a\u308a\u307e\u3059(\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3001\u81ea\u52d5\u7684\u306b\u8d77\u52d5\u3057\u307e\u3059)\u3002\u307e\u305f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b1\u3064\u305a\u3064\u306e\u74b0\u5883\u3067\u81ea\u52d5\u4f11\u6b62\u3092\u7121\u52b9\u306b\u3059\u308b\u3088\u3046\u4f9d\u983c\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\uff01 - \u30c7\u30d5\u30a9\u30eb\u30c8\u306eDrupal
settings.php
\u30d5\u30a1\u30a4\u30eb\u306f\u3001development.settings.php
\u3068 production.settings.php
\u3068\u3044\u3046\u8ffd\u52a0\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u74b0\u5883\u30bf\u30a4\u30d7\u3054\u3068\u306b\u7570\u306a\u308b\u8a2d\u5b9a\u3084\u69cb\u6210\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 - \u3082\u3057\u3001\u3042\u306a\u305f\u304c
production
\u74b0\u5883\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883(\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u307e\u305f\u306fREST\u7d4c\u7531\u3067)\u3092\u524a\u9664\u3059\u308b\u306a\u3089\u3001Lagoon\u306f\u8aa4\u3063\u3066\u524a\u9664\u3059\u308b\u306e\u3092\u9632\u3050\u305f\u3081\u306b\u62d2\u5426\u3057\u307e\u3059\u3002production
\u74b0\u5883\u3092\u524a\u9664\u3059\u308b\u306b\u306f\u3001API\u3067productionEnvironment
\u3092\u5909\u66f4\u3059\u308b\u304b\u3001REST API\u306ePOST\u30da\u30a4\u30ed\u30fc\u30c9\u3067forceDeleteProductionEnvironment: true
\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u7528\u304c\u3042\u308a\u307e\u3059\u3002 - Lagoon\u306e\u7ba1\u7406\u8005\u306f\u3001
production
\u74b0\u5883\u60c5\u5831\u3092\u8ffd\u52a0\u306e\u76ee\u7684\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001amazee.io\u3067\u306f\u3001\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u306e\u4fa1\u683c\u3092\u8a08\u7b97\u3059\u308b\u305f\u3081\u306b\u3001production
\u74b0\u5883\u306e\u30d2\u30c3\u30c8\u6570\u3060\u3051\u3092\u8a08\u7b97\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-variables/","title":"\u74b0\u5883\u5909\u6570","text":"API\u30c8\u30fc\u30af\u30f3\u3084\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u3092\u74b0\u5883\u5909\u6570\u306b\u4fdd\u5b58\u3059\u308b\u3053\u3068\u306f\u4e00\u822c\u7684\u3067\u3059\u3002
\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3046\u3068\u3001\u3053\u308c\u3089\u306e\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u306f\u74b0\u5883\u3054\u3068\u306b\u7570\u306a\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u3001\u5404\u74b0\u5883\u304c\u74b0\u5883\u5909\u6570\u307e\u305f\u306f.env
\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u5225\u306e\u74b0\u5883\u5909\u6570\u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570\u306b\u306fDockerfile\u307e\u305f\u306f\u30e9\u30f3\u30bf\u30a4\u30e0\u6642(API\u74b0\u5883\u5909\u6570\u7d4c\u7531)\u306e\u3044\u305a\u308c\u304b\u3067\u5b9a\u7fa9\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308b\u305f\u3081\u512a\u5148\u9806\u4f4d\u304c\u3042\u308a\u3001\u3088\u308a\u4f4e\u3044\u6570\u5b57\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u304c\u512a\u5148\u3055\u308c\u307e\u3059\u3002
- \u74b0\u5883\u5909\u6570(Lagoon API\u7d4c\u7531\u3067\u5b9a\u7fa9) - \u74b0\u5883\u56fa\u6709\u3002
- \u74b0\u5883\u5909\u6570(Lagoon API\u7d4c\u7531\u3067\u5b9a\u7fa9) - \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u3002
- Dockerfile\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570(
ENV
\u30b3\u30de\u30f3\u30c9)\u3002 .lagoon.env.
\u306e$LAGOON_GIT_BRANCH
\u307e\u305f\u306f.lagoon.env.
\u306e$LAGOON_GIT_SAFE_BRANCH
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570(\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u3001$LAGOON_GIT_BRANCH
\u3068$LAGOON_GIT_SAFE_BRANCH
\u304c\u3053\u306eDocker\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u306e\u540d\u524d\u3068\u4e00\u81f4\u3059\u308b\u540d\u524d\u3067\u3042\u308b\u5834\u5408\u3001\u3053\u308c\u3089\u306e\u5024\u3092\u3053\u306e\u7279\u5b9a\u306e\u30d6\u30e9\u30f3\u30c1\u306e\u5909\u6570\u306b\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002\uff09 .lagoon.env
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570(\u5b58\u5728\u3059\u308b\u5834\u5408)\u3001\u3053\u308c\u3092\u5168\u3066\u306e\u30d6\u30e9\u30f3\u30c1\u306e\u5909\u6570\u306e\u4e0a\u66f8\u304d\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 .env
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u3002 .env.defaults
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u3002
.lagoon.env.
\u306e$LAGOON_GIT_BRANCH
\u3001.lagoon.env.
\u306e$LAGOON_GIT_SAFE_BRANCH
\u3001.env
\u3001\u305d\u3057\u3066 .env.defaults
\u306f\u3001\u5168\u3066\u3001\u5404\u30b3\u30f3\u30c6\u30ca\u81ea\u4f53\u306b\u3088\u3063\u3066\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4e00\u90e8\u3068\u3057\u3066\u5b9f\u884c\u3055\u308c\u308b\u969b\u306b\u30bd\u30fc\u30b9\u5316\u3055\u308c\u307e\u3059\u3002\u305d\u308c\u3089\u306fLagoon\u3067\u306f\u306a\u304f\u3001\u30b3\u30f3\u30c6\u30ca\u306eENTRYPOINT
\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u3088\u3063\u3066\u8aad\u307f\u8fbc\u307e\u308c\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u305d\u308c\u3089\u3092\u63a2\u3057\u307e\u3059\u3002\u74b0\u5883\u5909\u6570\u304c\u671f\u5f85\u901a\u308a\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u5834\u5408\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u306b\u4ed6\u306e\u5834\u6240\u3092\u6307\u3059WORKDIR
\u8a2d\u5b9a\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#environment-variables-lagoon-api","title":"\u74b0\u5883\u5909\u6570 - Lagoon API","text":"Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u4fdd\u5b58\u3057\u305f\u304f\u306a\u3044\u5909\u6570(\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc\u3084API\u30ad\u30fc\u306a\u3069)\u306b\u3064\u3044\u3066\u306f\u3001Lagoon API\u306e\u74b0\u5883\u5909\u6570\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5909\u6570\u306f\u3001\u8ab0\u304b\u304c\u30ed\u30fc\u30ab\u30eb\u306e\u958b\u767a\u74b0\u5883\u3084\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u4e0a\u306b\u6301\u3063\u3066\u3044\u308b\u3068\u3001\u5371\u967a\u306b\u3055\u3089\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
Lagoon API\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u307e\u305f\u306f\u74b0\u5883\u56fa\u6709\u306e\u5909\u6570\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u30b9\u30b3\u30fc\u30d7\u9650\u5b9a\u306e\u30d3\u30eb\u30c9\u6642\u307e\u305f\u306f\u30e9\u30f3\u30bf\u30a4\u30e0\u306b\u5bfe\u3057\u3066\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3059\u3079\u3066Lagoon GraphQL API\u3092\u901a\u3058\u3066\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002GraphQL API\u306e\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001GraphQL API\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#runtime-environment-variables-lagoon-api","title":"\u30e9\u30f3\u30bf\u30a4\u30e0\u74b0\u5883\u5909\u6570 - LagoonAPI","text":"\u30e9\u30f3\u30bf\u30a4\u30e0\u74b0\u5883\u5909\u6570\u306f\u81ea\u52d5\u7684\u306b\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u3067\u5229\u7528\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u74b0\u5883\u304c\u518d\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u5f8c\u306b\u306e\u307f\u8ffd\u52a0\u307e\u305f\u306f\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002
\u3053\u308c\u306f\u3001ID 463
\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u5909\u6570(\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u5229\u7528\u53ef\u80fd)\u3092\u5b9a\u7fa9\u3057\u307e\u3059:
\u30e9\u30f3\u30bf\u30a4\u30e0\u5909\u6570\u306e\u8ffd\u52a0mutation addRuntimeEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:RUNTIME,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"\n}\n) {\nid\n}\n}\n
\u3053\u308c\u306f\u3001\u74b0\u5883ID 546
\u7279\u6709\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u5909\u6570(\u7279\u5b9a\u306e\u74b0\u5883\u306e\u307f\u3067\u5229\u7528\u53ef\u80fd)\u3092\u5b9a\u7fa9\u3057\u307e\u3059:
\u74b0\u5883ID\u306e\u5b9a\u7fa9mutation addRuntimeEnv {\naddEnvVariable(\ninput:{\ntype:ENVIRONMENT,\ntypeId:546,\nscope:RUNTIME,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"\n}\n) {\nid\n}\n}\n
"},{"location":"ja/concepts-advanced/environment-variables/#build-time-environment-variables-lagoon-api","title":"\u30d3\u30eb\u30c9\u6642\u306e\u74b0\u5883\u5909\u6570 LagoonAPI","text":"\u30d3\u30eb\u30c9\u6642\u306e\u74b0\u5883\u5909\u6570\u306f\u30d3\u30eb\u30c9\u4e2d\u306b\u306e\u307f\u5229\u7528\u53ef\u80fd\u3067\u3042\u308a\u3001Dockerfiles\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
\u30d3\u30eb\u30c9\u6642\u306e\u74b0\u5883\u5909\u6570\u306e\u4f7f\u7528ARG MYVARIABLENAME\n
\u901a\u5e38\u3001ARG
\u306fFROM
\u306e\u5f8c\u306b\u8a18\u8ff0\u3057\u307e\u3059\u3002ARG\u3068FROM\u306b\u3064\u3044\u3066\u306edocker\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u8aad\u3080\u3002
\u3053\u308c\u306f\u3001ID 463
\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306e\u30d3\u30eb\u30c9\u6642\u5909\u6570(\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u5229\u7528\u53ef\u80fd)\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306e\u30d3\u30eb\u30c9\u6642\u5909\u6570\u3092\u5b9a\u7fa9\u3059\u308bmutation addBuildtimeEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:BUILD,\nname:\"MYVARIABLENAME\",\nvalue:\"MyVariableValue\"}\n) {\nid\n}\n}\n
\u3053\u308c\u306f\u3001\u74b0\u5883ID 546
\u7279\u6709\u306e\u30d3\u30eb\u30c9\u6642\u5909\u6570\u3092\u5b9a\u7fa9\u3057\u307e\u3059(\u305d\u306e\u7279\u5b9a\u306e\u74b0\u5883\u5185\u3060\u3051\u3067\u5229\u7528\u53ef\u80fd)\u3002
\u74b0\u5883ID\u3092\u5b9a\u7fa9\u3059\u308bmutation addBuildtimeEnv {\naddEnvVariable(input:{type:ENVIRONMENT, typeId:546, scope:BUILD, name:\"MYVARIABLENAME\", value:\"MyVariableValue\"}) {\nid\n}\n}\n
\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u306e\u74b0\u5883\u5909\u6570\u306f\u3001\u30d3\u30eb\u30c9\u4e2d\u306b\u306e\u307f\u5229\u7528\u53ef\u80fd\u3067\u3001\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u304d\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3001Specials \u00bb container-registries
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u307e\u305f\u306f\u74b0\u5883\u30ec\u30d9\u30eb\u3067\u9069\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u3053\u308c\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u3092\u5b9a\u7fa9\u3057\u307e\u3059 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8ID 463
\u306e\u305f\u3081\u306e\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u5909\u6570(\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u5229\u7528\u53ef\u80fd):
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306e\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u5909\u6570\u3092\u5b9a\u7fa9\u3059\u308bmutation addContainerRegistryEnv {\naddEnvVariable(\ninput:{\ntype:PROJECT,\ntypeId:463,\nscope:CONTAINER_REGISTRY,\nname:\"MY_OWN_REGISTRY_PASSWORD\",\nvalue:\"MySecretPassword\"})\n) {\nid\n}\n}\n
\u3053\u308c\u306f\u3001\u74b0\u5883ID 546
\u7279\u6709\u306e\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u5909\u6570\u3092\u5b9a\u7fa9\u3057\u307e\u3059(\u305d\u306e\u7279\u5b9a\u306e\u74b0\u5883\u5185\u3067\u306e\u307f\u5229\u7528\u53ef\u80fd):
\u74b0\u5883ID\u3092\u5b9a\u7fa9\u3059\u308bmutation addContainerRegistryEnv {\naddEnvVariable(\ninput:{\ntype:ENVIRONMENT,\ntypeId:546,\nscope:CONTAINER_REGISTRY,\nname:\"MY_OWN_REGISTRY_PASSWORD\",\nvalue:\"MySecretPassword\"}\n) {\nid\n}\n}\n
"},{"location":"ja/concepts-advanced/environment-variables/#global-environment-variables-lagoon-api","title":"\u30b0\u30ed\u30fc\u30d0\u30eb\u74b0\u5883\u5909\u6570 - Lagoon API","text":"\u30b0\u30ed\u30fc\u30d0\u30eb\u74b0\u5883\u5909\u6570\u306f\u3001\u30d3\u30eb\u30c9\u306b\u3088\u3063\u3066\u6d88\u8cbb\u3055\u308c\u308b\u305f\u3081\u306e\u30d3\u30eb\u30c9\u6642\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u3001\u307e\u305f\u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u5185\u3067\u5229\u7528\u53ef\u80fd\u306a\u30e9\u30f3\u30bf\u30a4\u30e0\u5909\u6570\u3068\u3057\u3066\u5229\u7528\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#environment-files-existing-directly-in-the-git-repo","title":"Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u76f4\u63a5\u5b58\u5728\u3059\u308b\u74b0\u5883\u30d5\u30a1\u30a4\u30eb","text":"Git\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306b\u5b89\u5168\u306b\u4fdd\u5b58\u3067\u304d\u308b\u74b0\u5883\u5909\u6570\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3089\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u76f4\u63a5\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059 \u3002\u3053\u308c\u3089\u306e\u5909\u6570\u306f\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3067\u3082\u5229\u7528\u53ef\u80fd\u3067\u3042\u308a\u3001\u3088\u308a\u79fb\u690d\u6027\u304c\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002
\u74b0\u5883\u30d5\u30a1\u30a4\u30eb\u306e\u69cb\u6587\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059:
myenvironment.envMYVARIABLENAME=\"MyVariableValue\"\nMVARIABLENUMBER=4242\nDB_USER=$DB_USERNAME # DB_USERNAME\u306e\u5024\u3067DB_USER\u3092\u518d\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304cLagoon\u63d0\u4f9b\u306e\u5909\u6570\u306b\u5bfe\u3057\u3066\u5225\u306e\u5909\u6570\u540d\u3092\u671f\u5f85\u3057\u3066\u3044\u308b\u5834\u5408\u306a\u3069\u3067\u3059\u3002\n
"},{"location":"ja/concepts-advanced/environment-variables/#lagoonenvbranchname","title":".lagoon.env.$BRANCHNAME
","text":"\u74b0\u5883\u3054\u3068\u306b\u7570\u306a\u308b\u74b0\u5883\u5909\u6570\u3092\u5b9a\u7fa9\u3057\u305f\u3044\u5834\u5408\u306f\u3001.lagoon.env.$BRANCHNAME
\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30e1\u30a4\u30f3\u30d6\u30e9\u30f3\u30c1\u306e\u5834\u5408\u306f.lagoon.env.main
\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u74b0\u5883\u9593\u3067\u306e\u74b0\u5883\u5909\u6570\u306e\u533a\u5225\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#env-and-envdefaults","title":".env
and .env.defaults
","text":".env
\u3068.env.defaults
\u306f\u3001\u4ed6\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306e\u74b0\u5883\u5909\u6570\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u74b0\u5883\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u5229\u7528\u3057\u307e\u3059(Workflows\u53c2\u7167)\u3002
"},{"location":"ja/concepts-advanced/environment-variables/#special-environment-variables","title":"\u7279\u5225\u306a\u74b0\u5883\u5909\u6570","text":""},{"location":"ja/concepts-advanced/environment-variables/#php_error_reporting","title":"PHP_ERROR_REPORTING
","text":"\u3053\u306e\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001PHP\u304c\u4f7f\u7528\u3059\u308b\u30ed\u30b0\u30ec\u30d9\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001production
\u74b0\u5883\u304b\u958b\u767a\u74b0\u5883\u304b\u306b\u3088\u3063\u3066\u52d5\u7684\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
production
\u74b0\u5883\u3067\u306f\u3001\u3053\u306e\u5024\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
\u306b\u306a\u308a\u307e\u3059\u3002
\u958b\u767a\u74b0\u5883\u3067\u306f\u3001\u3053\u306e\u5024\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067E_ALL & ~E_DEPRECATED & ~E_STRICT
\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/feature-flags/","title":"\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d5\u30e9\u30b0","text":"Lagoon\u306e\u4e00\u90e8\u306e\u6a5f\u80fd\u306f\u3001\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d5\u30e9\u30b0\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u5236\u5fa1\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u306f\u3001\u65b0\u3057\u3044\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u6a5f\u80fd\u3092\u5236\u5fa1\u3055\u308c\u305f\u65b9\u6cd5\u3067\u5c55\u958b\u3059\u308b\u305f\u3081\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u7ba1\u7406\u8005\u3092\u652f\u63f4\u3059\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/feature-flags/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u4ee5\u4e0b\u306e\u74b0\u5883\u5909\u6570\u306f\u3001\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d5\u30e9\u30b0\u3092\u5207\u308a\u66ff\u3048\u308b\u305f\u3081\u306b\u74b0\u5883\u307e\u305f\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570\u540d \u30a2\u30af\u30c6\u30a3\u30d6\u30b9\u30b3\u30fc\u30d7 \u5c0e\u5165\u3055\u308c\u305f\u30d0\u30fc\u30b8\u30e7\u30f3 \u524a\u9664\u3055\u308c\u305f\u30d0\u30fc\u30b8\u30e7\u30f3 \u30c7\u30d5\u30a9\u30eb\u30c8\u5024 \u8aac\u660e LAGOON_FEATURE_FLAG_ROOTLESS_WORKLOAD
global
2.2.0 - \u7121\u52b9
\u3053\u306e\u74b0\u5883\u307e\u305f\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30dd\u30c3\u30c9\u306b\u975eroot\u30dd\u30c3\u30c9\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001enabled
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u30d5\u30e9\u30b0\u306f\u6700\u7d42\u7684\u306b\u5ec3\u6b62\u3055\u308c\u3001\u305d\u306e\u6642\u70b9\u3067\u975eroot\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u304c\u5f37\u5236\u3055\u308c\u307e\u3059\u3002 LAGOON_FEATURE_FLAG_ISOLATION_NETWORK_POLICY
global
2.2.0 - \u7121\u52b9
\u30c7\u30d7\u30ed\u30a4\u6642\u306b\u5404\u74b0\u5883\u306b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u540d\u524d\u7a7a\u9593\u5206\u96e2\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30dd\u30ea\u30b7\u30fc\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3001enabled
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u30d5\u30e9\u30b0\u306f\u6700\u7d42\u7684\u306b\u5ec3\u6b62\u3055\u308c\u3001\u305d\u306e\u6642\u70b9\u3067\u540d\u524d\u7a7a\u9593\u5206\u96e2\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30dd\u30ea\u30b7\u30fc\u304c\u5f37\u5236\u3055\u308c\u307e\u3059\u3002\u6ce8: \u3053\u306e\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3057\u3066\u304b\u3089\u7121\u52b9\u306b\u3059\u308b\u3068\u3001\u65e2\u5b58\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306f\u524a\u9664\u3055\u308c\u307e\u305b\u3093\u3002 \u4ee5\u524d\u306e\u30c7\u30d7\u30ed\u30a4\u304b\u3089\u306e\u30dd\u30ea\u30b7\u30fc\u524a\u9664\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u3089\u306f\u624b\u52d5\u3067\u524a\u9664\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},{"location":"ja/concepts-advanced/feature-flags/#_2","title":"\u30af\u30e9\u30b9\u30bf\u30fc\u30ec\u30d9\u30eb\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb","text":"\u6a5f\u80fd\u30d5\u30e9\u30b0\u306f\u30af\u30e9\u30b9\u30bf\u30fc\u30ec\u30d9\u30eb\u3067\u3082\u5236\u5fa1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308blagoon-build-deploy
\u30c1\u30e3\u30fc\u30c8\u304c\u3042\u308a\u307e\u3059\u3002 \u5404\u6a5f\u80fd\u30d5\u30e9\u30b0\u306b\u306f\u3001\u8a2d\u5b9a\u3067\u304d\u308b\u5024\u304cdefault
\u3068force
\u306e2\u7a2e\u985e\u3042\u308a\u307e\u3059\u3002
default
\u306f\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u74b0\u5883\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30dd\u30ea\u30b7\u30fc\u3092\u5236\u5fa1\u3057\u307e\u3059\u304c\u3001\u4e0a\u8a18\u306e\u74b0\u5883\u5909\u6570\u306b\u3088\u3063\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u307e\u305f\u306f\u74b0\u5883\u30ec\u30d9\u30eb\u3067\u4e0a\u66f8\u304d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 force
\u3082\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u74b0\u5883\u306e\u30dd\u30ea\u30b7\u30fc\u3092\u5236\u5fa1\u3057\u307e\u3059\u304c\u3001\u4e0a\u8a18\u306e\u74b0\u5883\u5909\u6570\u306b\u3088\u3063\u3066\u4e0a\u66f8\u304d\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-advanced/service-types/","title":"\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7","text":"\u4ee5\u4e0b\u306b\u793a\u3059\u306e\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u5185\u306e lagoon.type
\u3092\u901a\u3058\u3066\u5b9a\u7fa9\u3067\u304d\u308b\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3067\u3059\u3002
\u8b66\u544a
\u4e00\u5ea6 lagoon.type
\u304c\u5b9a\u7fa9\u3055\u308c\u3001\u74b0\u5883\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3068\u3001\u7570\u306a\u308b\u30bf\u30a4\u30d7\u306b\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u304a\u3089\u305a\u3001\u74b0\u5883\u304c\u58ca\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/service-types/#basic","title":"basic
","text":"\u57fa\u672c\u7684\u306a\u30b3\u30f3\u30c6\u30ca\u3067\u3001\u65e2\u5b58\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u306a\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u307b\u3068\u3093\u3069\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30dd\u30fc\u30c8\u306f\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3057\u3066\u5909\u66f4\u3067\u304d\u307e\u3059\u3002\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u304c\u5fc5\u8981\u3067\u306a\u3044\u5834\u5408(\u4f8b:\u5185\u90e8\u5411\u3051\u30b5\u30fc\u30d3\u30b9\u306e\u5834\u5408)\u3001docker-compose.yml \u5185\u3067 lagoon.autogeneratedroute: false
\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 3000
\u3067TCP\u63a5\u7d9a 3000
\u306f\u3044 \u3044\u3044\u3048 lagoon.service.port
, lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#basic-persistent","title":"basic-persistent
","text":"basic
\u3068\u540c\u3058\u3067\u3059\u304c\u3001\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u3057\u3001lagoon.persistent
\u3092\u3067\u30de\u30a6\u30f3\u30c8\u306e\u4f4d\u5024\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 3000
\u3067TCP\u63a5\u7d9a 3000
\u306f\u3044 \u306f\u3044 lagoon.service.port
, lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.persistent.class
"},{"location":"ja/concepts-advanced/service-types/#cli","title":"cli
","text":"PHP\u3001Node.js\u306a\u3069\u3001\u4efb\u610f\u306eCLI\u30b3\u30f3\u30c6\u30ca\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 /var/run/secrets/lagoon/sshkey/ssh-privatekey
\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u3066\u3044\u308b\u9867\u5ba2\u306eSSH\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ad\u30fc\u304c\u81ea\u52d5\u7684\u306b\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u305d\u306e\u4ed6\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - \u3044\u3044\u3048 \u3044\u3044\u3048 \u3044\u3044\u3048 -"},{"location":"ja/concepts-advanced/service-types/#cli-persistent","title":"cli-persistent
","text":"cli
\u3068\u540c\u3058\u3067\u3059\u304c\u3001lagoon.persistent.name
\u306f\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u6301\u3064\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3092\u6307\u5b9a\u3055\u308c\u308b\u3053\u3068\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u5b9a\u7fa9\u3055\u308c\u305flagoon.persistent
\u30e9\u30d9\u30eb\u306e\u4e0b\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u307e\u3059\u3002\u81ea\u8eab\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u305b\u305a\u3001\u5225\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u305f\u3081\u3060\u3051\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u305d\u306e\u4ed6\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - \u3044\u3044\u3048 \u3044\u3044\u3048 \u306f\u3044 lagoon.persistent.name
, lagoon.persistent
"},{"location":"ja/concepts-advanced/service-types/#elasticsearch","title":"elasticsearch
","text":"Elasticsearch\u30b3\u30f3\u30c6\u30ca\u306f\u3001/usr/share/el
\u306e\u4e0b\u306b\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u81ea\u52d5\u751f\u6210\u3057\u307e\u3059\u3002 elasticsearch/data
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf localhost:9200/_cluster/health?local=true
\u3067HTTP\u901a\u4fe1 9200 \u306a\u3057 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#kibana","title":"kibana
","text":"Kibana\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 5601
\u3067TCP\u63a5\u7d9a 5601
\u306f\u3044 \u306a\u3057 -"},{"location":"ja/concepts-advanced/service-types/#logstash","title":"logstash
","text":"Logstash\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 9600
\u3067TCP\u63a5\u7d9a 9600
\u306a\u3057 \u306a\u3057 -"},{"location":"ja/concepts-advanced/service-types/#mariadb","title":"mariadb
","text":"Lagoon\u306bmariadb-single
\u3068mariadb-dbaas
\u306e\u3069\u3061\u3089\u304b\u3092\u81ea\u52d5\u7684\u306b\u6c7a\u5b9a\u3055\u305b\u308b\u30e1\u30bf\u30b5\u30fc\u30d3\u30b9\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - - - - -"},{"location":"ja/concepts-advanced/service-types/#mariadb-single","title":"mariadb-single
","text":"MariaDB\u30b3\u30f3\u30c6\u30ca\u3002/lagoon/mysql-backup.sh 127.0.0.1
\u3092\u5b9f\u884c\u3059\u308b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306ecron\u30b8\u30e7\u30d6\u309224\u6642\u9593\u3054\u3068\u306b\u4f5c\u6210\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 3306
\u3067TCP\u63a5\u7d9a 3306
\u306a\u3057 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#mariadb-dbaas","title":"mariadb-dbaas
","text":"DBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u3092\u4ecb\u3057\u305f\u5171\u6709MariaDB\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf \u4e0d\u8981 3306
\u306a\u3057 - -"},{"location":"ja/concepts-advanced/service-types/#mongo","title":"mongo
","text":"Lagoon\u306bmongo-single
\u3068mongo-dbaas
\u306e\u3069\u3061\u3089\u304b\u3092\u81ea\u52d5\u7684\u306b\u6c7a\u5b9a\u3055\u305b\u308b\u30e1\u30bf\u30b5\u30fc\u30d3\u30b9\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - - - - -"},{"location":"ja/concepts-advanced/service-types/#mongo-single","title":"mongo-single
","text":"MongoDB\u30b3\u30f3\u30c6\u30ca\u3001/data/db
\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u6700\u5c0f1GB\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 27017
\u3067TCP\u63a5\u7d9a 27017
\u306a\u3057 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#mongo-dbaas","title":"mongo-dbaas
","text":"DBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u3092\u4ecb\u3057\u305f\u5171\u6709MongoDB\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf \u4e0d\u8981 27017
\u3044\u3044\u3048 - -"},{"location":"ja/concepts-advanced/service-types/#nginx","title":"nginx
","text":"NGINX\u30b3\u30f3\u30c6\u30ca\u3002\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf localhost:50000/nginx_status
8080
\u306f\u3044 \u3044\u3044\u3048 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#nginx-php","title":"nginx-php
","text":"nginx
\u3068\u540c\u3058\u3067\u3059\u304c\u3001\u8ffd\u52a0\u3067php
\u30b3\u30f3\u30c6\u30ca\u304c\u3042\u308a\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf NGINX: localhost:50000/nginx_status
, PHP: /usr/sbin/check_fcgi
8080
\u306f\u3044 \u3044\u3044\u3048 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#nginx-php-persistent","title":"nginx-php-persistent
","text":"nginx-php
\u3068\u540c\u69d8\u3002\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u3057\u3001lagoon.persistent
\u3067\u30de\u30a6\u30f3\u30c8\u306e\u4f4d\u7f6e\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf NGINX: localhost:50000/nginx_status
, PHP: /usr/sbin/check_fcgi
http\u306e8080
\u306f\u3044 \u306f\u3044 lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.persistent.class
"},{"location":"ja/concepts-advanced/service-types/#node","title":"node
","text":"Node.js \u30b3\u30f3\u30c6\u30ca\u3002\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 3000
\u3067TCP\u63a5\u7d9a 3000
\u306f\u3044 \u306a\u3057 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#node-persistent","title":"node-persistent
","text":"node
\u3068\u540c\u69d8\u3002\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u3057\u3001lagoon.persistent
\u3067\u30de\u30a6\u30f3\u30c8\u306e\u4f4d\u7f6e\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 3000
\u3067TCP\u63a5\u7d9a 3000
\u306f\u3044 \u306f\u3044 lagoon.autogeneratedroute
, lagoon.persistent
, lagoon.persistent.name
, lagoon.persistent.size
, lagoon.persistent.class
"},{"location":"ja/concepts-advanced/service-types/#none","title":"none
","text":"Lagoon\u306b\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5b8c\u5168\u306b\u7121\u8996\u3059\u308b\u3088\u3046\u6307\u793a\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - - - - -"},{"location":"ja/concepts-advanced/service-types/#opensearch","title":"opensearch
","text":"OpenSearch\u30b3\u30f3\u30c6\u30ca\u3001/usr/share/opensearch/data
\u4ee5\u4e0b\u306b\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u81ea\u52d5\u751f\u6210\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf localhost:920
\u3067\u306eHTTP 0/_cluster/health?local=true| 9200 | \u3044\u3044\u3048 | \u306f\u3044 |
lagoon.persistent.size`"},{"location":"ja/concepts-advanced/service-types/#postgres","title":"postgres
","text":"Lagoon\u306bpostgres-single
\u3068postgres-dbaas
\u306e\u3069\u3061\u3089\u304b\u3092\u81ea\u52d5\u7684\u306b\u6c7a\u5b9a\u306b\u6c7a\u5b9a\u3055\u305b\u308b\u30e1\u30bf\u30b5\u30fc\u30d3\u30b9\u3002
\u5065\u5eb7\u30c1\u30a7\u30c3\u30af \u9732\u51fa\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - - - - -"},{"location":"ja/concepts-advanced/service-types/#postgres-single","title":"postgres-single
","text":"Postgres\u30b3\u30f3\u30c6\u30ca\u3002\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u7528\u306ecron\u30b8\u30e7\u30d6\u3092\u4f5c\u6210\u3057\u300124\u6642\u9593\u3054\u3068\u306b/lagoon/postgres-backup.sh localhost
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u5065\u5eb7\u30c1\u30a7\u30c3\u30af \u9732\u51fa\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 5432
\u3067TCP\u63a5\u7d9a 5432
\u3044\u3044\u3048 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#postgres-dbaas","title":"postgres-dbaas
","text":"DBaaS Operator\u7d4c\u7531\u3067\u5171\u6709PostgreSQL\u30b5\u30fc\u30d0\u3092\u5229\u7528\u3057\u307e\u3059\u3002
\u5065\u5eb7\u30c1\u30a7\u30c3\u30af \u9732\u51fa\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf \u4e0d\u8981 5432
\u3044\u3044\u3048 - -"},{"location":"ja/concepts-advanced/service-types/#python","title":"python
","text":"Python\u30b3\u30f3\u30c6\u30ca\u3002\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u5065\u5eb7\u30c1\u30a7\u30c3\u30af \u9732\u51fa\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 8800
\u3067HTTP\u63a5\u7d9a 8800
\u306f\u3044 \u3044\u3044\u3048 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#python-persistent","title":"python-persistent
","text":"\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5099\u3048\u305fPython\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 8800
\u3067HTTP\u63a5\u7d9a 8800
\u306f\u3044 \u306f\u3044 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#redis","title":"redis
","text":"Redis\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 6379
\u3067TCP\u63a5\u7d9a 6379
\u3044\u3044\u3048 \u3044\u3044\u3048 -"},{"location":"ja/concepts-advanced/service-types/#redis-persistent","title":"redis-persistent
","text":"/data
\u4ee5\u4e0b\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u81ea\u52d5\u751f\u6210\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5099\u3048\u305fRedis\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 6379
\u3067TCP\u63a5\u7d9a 6379
\u3044\u3044\u3048 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#solr","title":"solr
","text":"/var/solr
\u4ee5\u4e0b\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u81ea\u52d5\u751f\u6210\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5099\u3048\u305fSolr\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf 8983
\u3067TCP\u63a5\u7d9a 8983
\u3044\u3044\u3048 \u306f\u3044 lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#varnish","title":"varnish
","text":"Varnish\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf HTTP\u30ea\u30af\u30a8\u30b9\u30c8 localhost:8080/varnish_status
8080
\u306f\u3044 \u3044\u3044\u3048 lagoon.autogeneratedroute
"},{"location":"ja/concepts-advanced/service-types/#varnish-persistent","title":"varnish-persistent
","text":"/var/cache/varnish
\u4e0b\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u6301\u3064Varnish\u30b3\u30f3\u30c6\u30ca\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf HTTP\u30ea\u30af\u30a8\u30b9\u30c8 localhost:8080/varnish_status
8080
\u306f\u3044 \u306f\u3044 lagoon.autogeneratedroute
, lagoon.persistent.size
"},{"location":"ja/concepts-advanced/service-types/#worker","title":"worker
","text":"\u4efb\u610f\u306e\u7a2e\u985e\u306e\u30ef\u30fc\u30ab\u30fc\u30b3\u30f3\u30c6\u30ca(\u30ad\u30e5\u30fc\u30ef\u30fc\u30ab\u30fc\u306a\u3069)\u3067\u3001\u516c\u958b\u30b5\u30fc\u30d3\u30b9\u30dd\u30fc\u30c8\u304c\u306a\u3044\u5834\u5408\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - \u3044\u3044\u3048 \u3044\u3044\u3048 \u3044\u3044\u3048 -"},{"location":"ja/concepts-advanced/service-types/#worker-persistent","title":"worker-persistent
","text":"worker
\u3068\u540c\u3058\u3067\u3059\u304c\u3001lagoon.persistent.name
\u304c\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u6301\u3064\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3092\u4e0e\u3048\u3089\u308c\u308b\u3053\u3068\u3092\u671f\u5f85\u3057\u3001\u5b9a\u7fa9\u3055\u308c\u305flagoon.persistent
\u30e9\u30d9\u30eb\u306e\u4e0b\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u81ea\u8eab\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u305f\u3081\u306b\u306e\u307f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af \u516c\u958b\u30dd\u30fc\u30c8 \u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8 \u30b9\u30c8\u30ec\u30fc\u30b8 \u305d\u306e\u4ed6\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u30d1\u30e9\u30e1\u30fc\u30bf - \u3044\u3044\u3048 \u3044\u3044\u3048 \u306f\u3044 lagoon.persistent.name
, lagoon.persistent
"},{"location":"ja/concepts-advanced/workflows/","title":"\u30ef\u30fc\u30af\u30d5\u30ed\u30fc","text":"Lagoon\u306f\u3001\u53ef\u80fd\u306a\u9650\u308a\u591a\u69d8\u306a\u958b\u767a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u7279\u306b\u3001\u30c1\u30fc\u30e0\u306b\u5bfe\u3057\u3066\u7279\u5b9a\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u5f37\u5236\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u5404\u958b\u767a\u30c1\u30fc\u30e0\u304c\u81ea\u5206\u305f\u3061\u306e\u30b3\u30fc\u30c9\u3092\u3069\u306e\u3088\u3046\u306b\u958b\u767a\u3057\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u304b\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/workflows/#fixed-branches","title":"\u56fa\u5b9a\u30d6\u30e9\u30f3\u30c1","text":"\u6700\u3082\u76f4\u63a5\u7684\u306a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u56fa\u5b9a\u30d6\u30e9\u30f3\u30c1\u306b\u57fa\u3065\u3044\u305f\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3067\u3059:
Lagoon\u304c\u30c7\u30d7\u30ed\u30a4\u3059\u3079\u304d\u30d6\u30e9\u30f3\u30c1(\u4f8b\u3048\u3070 develop
\u3001staging
\u3001main
\u306a\u3069\u3001\u3053\u308c\u3089\u306f\u6b63\u898f\u8868\u73fe\u3067 ^(develop|staging|main)$
\u3068\u306a\u308a\u307e\u3059)\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u308c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u305d\u308c\u3067\u5b8c\u4e86\u3067\u3059\uff01
\u65b0\u3057\u3044\u6a5f\u80fd\u3092\u30c6\u30b9\u30c8\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u3067\u8a2d\u5b9a\u3057\u305f\u30d6\u30e9\u30f3\u30c1\u306b\u305d\u308c\u3089\u3092\u30de\u30fc\u30b8\u3057\u3066\u30d7\u30c3\u30b7\u30e5\u3057\u3001Lagoon\u304c\u305d\u306e\u6a5f\u80fd\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002\u554f\u984c\u304c\u306a\u3051\u308c\u3070\u3001\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u3092\u3042\u306a\u305f\u306e\u672c\u756a\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3057\u3066\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/workflows/#feature-branches","title":"\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d6\u30e9\u30f3\u30c1","text":"\u3082\u3046\u5c11\u3057\u9ad8\u5ea6\u306a\u3082\u306e\u306b\u306a\u308b\u3068\u3001\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d6\u30e9\u30f3\u30c1\u304c\u3042\u308a\u307e\u3059\u3002Lagoon\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u30d6\u30e9\u30f3\u30c1\u3092\u6b63\u898f\u8868\u73fe\u3067\u5b9a\u7fa9\u3059\u308b\u80fd\u529b\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u4e0a\u8a18\u306e\u6b63\u898f\u8868\u73fe\u3092\u3053\u306e\u3088\u3046\u306b\u62e1\u5f35\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:^feature\\/|^(staging|main)$
\u3002\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u306ffeature/
\u3067\u59cb\u307e\u308b\u3059\u3079\u3066\u306e\u30d6\u30e9\u30f3\u30c1\u3001\u304a\u3088\u3073staging
\u3068main
\u3068\u3044\u3046\u540d\u524d\u306e\u30d6\u30e9\u30f3\u30c1\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3088\u3046\u6307\u793a\u3057\u307e\u3059\u3002\u79c1\u305f\u3061\u306e\u958b\u767a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093:
- \u65b0\u3057\u3044\u30d6\u30e9\u30f3\u30c1\u3092\u4f5c\u6210\u3059\u308b
main
\u304b\u3089feature/myfeature
\u3092\u547c\u3073\u51fa\u3057\u3001feature/myfeature
\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002 - Lagoon\u306f\u3001
feature/myfeature
\u30d6\u30e9\u30f3\u30c1\u3092\u65b0\u3057\u3044\u74b0\u5883\u3068\u3057\u3066\u30c7\u30d7\u30ed\u30a4\u3057\u3001\u4ed6\u306e\u6a5f\u80fd\u3068\u306f\u72ec\u7acb\u3057\u3066\u6a5f\u80fd\u3092\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002 feature/myfeature
\u3092main
\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3059\u308b\u3068\u3001\u305d\u308c\u306f\u3042\u306a\u305f\u306e\u672c\u756a\u74b0\u5883\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002
\u3082\u3057\u3054\u5e0c\u671b\u3067\u3042\u308c\u3070\u3001feature/myfeature
\u3084\u4ed6\u306e\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d6\u30e9\u30f3\u30c1\u3092\u6700\u521d\u306bstaging
\u306b\u30de\u30fc\u30b8\u3057\u3066\u3001\u8907\u6570\u306e\u6a5f\u80fd\u3092\u4e00\u7dd2\u306b\u30c6\u30b9\u30c8\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001main\u306b\u30de\u30fc\u30b8\u3067\u304d\u307e\u3059\u3002
\u3053\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30d6\u30e9\u30f3\u30c1\u306e\u6574\u7406\u3068\u30af\u30ea\u30fc\u30f3\u3055\u304c\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002\u5404\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d6\u30e9\u30f3\u30c1\u306f\u81ea\u8eab\u306eLagoon\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u3001\u975e\u5e38\u306b\u901f\u304f\u5927\u91cf\u306e\u74b0\u5883\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u305d\u308c\u3089\u5168\u3066\u304c\u30ea\u30bd\u30fc\u30b9\u3092\u6d88\u8cbb\u3057\u307e\u3059\u3002\u672a\u4f7f\u7528\u306e\u30d6\u30e9\u30f3\u30c1\u306f\u5fc5\u305a\u30de\u30fc\u30b8\u3059\u308b\u304b\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u3053\u306e\u305f\u3081\u3001\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u8003\u3048\u308b\u3053\u3068\u304c\u7406\u306b\u304b\u306a\u3063\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-advanced/workflows/#pull-requests","title":"\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8","text":"\u3055\u3089\u306b\u9ad8\u5ea6\u306a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u3088\u308b\u3082\u306e\u3067\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u3001\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8(\u307e\u305f\u306f\u30de\u30fc\u30b8\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u3082\u547c\u3070\u308c\u307e\u3059)\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308bGit\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u30d9\u30fc\u30b9\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u30a2\u30a4\u30c7\u30a2\u306f\u3001\u30d3\u30eb\u30c9\u4e2d\u306bLagoon\u304c\u30de\u30fc\u30b8\u3092\u884c\u3063\u3066\u304f\u308c\u308b\u306e\u3067\u3001\u5b9f\u969b\u306b\u30de\u30fc\u30b8\u3059\u308b\u5fc5\u8981\u306f\u306a\u304f\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u30d6\u30e9\u30f3\u30c1\u3068\u4e00\u7dd2\u306b\u6a5f\u80fd\u3092\u30c6\u30b9\u30c8\u3067\u304d\u308b\u3068\u3044\u3046\u30a2\u30a4\u30c7\u30a2\u306e\u80cc\u666f\u306b\u3042\u308a\u307e\u3059\u3002
\u79c1\u305f\u3061\u306e\u4f8b\u3067\u306f\u3001Lagoon\u3092\u8a2d\u5b9a\u3057\u3066\u3001\u30d6\u30e9\u30f3\u30c1^(staging|main)$
\u3068\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092.*
(\u3059\u3079\u3066\u306e\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b)\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u305b\u307e\u3059\u3002 \u3053\u308c\u3067\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:
main
\u304b\u3089\u65b0\u3057\u3044\u30d6\u30e9\u30f3\u30c1feature/myfeature
\u3092\u4f5c\u6210\u3057\u3001feature/myfeature
\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059(\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u30d6\u30e9\u30f3\u30c1\u306fstaging
\u3068main
\u306e\u307f\u306e\u305f\u3081\u3001\u4eca\u306f\u30c7\u30d7\u30ed\u30a4\u306f\u884c\u308f\u308c\u307e\u305b\u3093)\u3002 - \u3042\u306a\u305f\u306eGit\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u3067
feature/myfeature
\u304b\u3089main
\u3078\u306e\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 - Lagoon\u306f\u4eca\u3001
feature/myfeature
\u30d6\u30e9\u30f3\u30c1\u3092main
\u30d6\u30e9\u30f3\u30c1\u306e\u4e0a\u306b\u30de\u30fc\u30b8\u3057\u3001\u305d\u306e\u7d50\u679c\u306e\u30b3\u30fc\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002 - \u3053\u308c\u3067\u3001
feature/myfeature
\u30d6\u30e9\u30f3\u30c1\u306e\u6a5f\u80fd\u3092\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002\u307e\u308b\u3067main
\u306b\u30de\u30fc\u30b8\u3055\u308c\u305f\u304b\u306e\u3088\u3046\u306b\u3001feature/myfeature
\u30d6\u30e9\u30f3\u30c1\u3092\u4f5c\u6210\u3057\u3066\u304b\u3089main
\u3067\u8d77\u3053\u3063\u305f\u3059\u3079\u3066\u306e\u5909\u66f4\u304c\u305d\u3053\u306b\u3042\u308a\u307e\u3059\u306e\u3067\u3001main
\u30d6\u30e9\u30f3\u30c1\u306e\u53e4\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u6301\u3063\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u306a\u3044\u3068\u5fc3\u914d\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002 - \u30de\u30fc\u30b8\u306e\u7af6\u5408\u304c\u3042\u308b\u5834\u5408\u3001\u30d3\u30eb\u30c9\u304c\u5931\u6557\u3057\u3001Lagoon\u306f\u505c\u6b62\u3057\u3066\u3042\u306a\u305f\u306b\u901a\u77e5\u3057\u307e\u3059\u3002
- \u3042\u306a\u305f\u304c\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30c6\u30b9\u30c8\u3092\u7d42\u3048\u305f\u5f8c \u30ea\u30af\u30a8\u30b9\u30c8\u30d6\u30e9\u30f3\u30c1\u3067\u306f\u3001Git\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u306b\u623b\u3063\u3066\u5b9f\u969b\u306b\u30b3\u30fc\u30c9\u3092
main
\u306b\u30de\u30fc\u30b8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001main
\u306e\u30c7\u30d7\u30ed\u30a4\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u307e\u3059\u3002 - \u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30de\u30fc\u30b8\u3055\u308c\u308b\u3068\u3001\u81ea\u52d5\u7684\u306b\u30af\u30ed\u30fc\u30ba\u3055\u308c\u3001Lagoon\u306f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u74b0\u5883\u3092\u81ea\u52d5\u7684\u306b\u524a\u9664\u3057\u307e\u3059\u3002
\u4e00\u90e8\u306e\u30c1\u30fc\u30e0\u3067\u306f\u3001\u5171\u6709\u306estaging
\u30d6\u30e9\u30f3\u30c1\u306b\u5bfe\u3057\u3066\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4f5c\u6210\u3057\u3001\u305d\u306e\u5f8c\u3001\u5225\u306e\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4ecb\u3057\u3066staging
\u30d6\u30e9\u30f3\u30c1\u3092main
\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3059\u308b\u3053\u3068\u3092\u9078\u629e\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u3001\u4f7f\u7528\u3057\u3066\u3044\u308bGit\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u7a2e\u985e\u306b\u3088\u308a\u307e\u3059\u3002
\u307e\u305f\u3001Lagoon\u3067\u306f\u3001\u30bf\u30a4\u30c8\u30eb\u306b\u7279\u5b9a\u306e\u30c6\u30ad\u30b9\u30c8\u304c\u3042\u308b\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u307f\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b63\u898f\u8868\u73fe\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f[BUILD]
\u306f\u3001\u30bf\u30a4\u30c8\u30eb\u304c[BUILD] My Pull Request
\u306e\u3088\u3046\u306a\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u307f\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u3001\u30bf\u30a4\u30c8\u30eb\u304cMy other Pull Request
\u306e\u3088\u3046\u306a\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306f\u81ea\u52d5\u7684\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u74b0\u5883\u306e\u6570\u3092\u5c11\u306a\u304f\u4fdd\u3064\u3053\u3068\u304c\u3067\u304d\u3001\u307e\u3060\u74b0\u5883\u304c\u5fc5\u8981\u3067\u306a\u3044\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4fdd\u6301\u3059\u308b\u3053\u3068\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-advanced/workflows/#automatic-database-sync-for-pull-requests","title":"\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u81ea\u52d5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540c\u671f","text":"\u81ea\u52d5\u7684\u306a\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u74b0\u5883\u306f\u7d20\u6674\u3089\u3057\u3044\u3053\u3068\u3067\u3059\u3002\u3057\u304b\u3057\u3001\u305d\u308c\u3089\u306e\u74b0\u5883\u304c\u4f5c\u6210\u3055\u308c\u305f\u3068\u304d\u306b\u5225\u306e\u74b0\u5883\u304b\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u540c\u671f\u3055\u308c\u308b\u3068\u4fbf\u5229\u3060\u308d\u3046\u3068\u3082\u601d\u3044\u307e\u3059\u3002Lagoon\u306f\u305d\u308c\u3092\u6271\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff01
\u6b21\u306e\u4f8b\u306f\u3001\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u74b0\u5883\u306e\u6700\u521d\u306e\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3067\u30b9\u30c6\u30fc\u30b8\u30f3\u30b0\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u540c\u671f\u3057\u307e\u3059:
.lagoon.ymltasks:\npost-rollout:\n- run:\nname: IF no Drupal installed & Pullrequest = Sync database from staging\ncommand: |\nif [[ -n ${LAGOON_PR_BASE_BRANCH} ]] && tables=$(drush sqlq 'show tables;') && [ -z \"$tables\" ]; then\ndrush -y sql-sync @staging default\nfi\nservice: cli\nshell: bash\n
"},{"location":"ja/concepts-advanced/workflows/#promotion","title":"\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3","text":"\u74b0\u5883\u306b\u30b3\u30fc\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5225\u306e\u65b9\u6cd5\u306f\u3001\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3067\u3059\u3002
\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u8003\u3048\u65b9\u306f\u3001\u4f8b\u3068\u3057\u3066\u3053\u3053\u304b\u3089\u6765\u3066\u3044\u307e\u3059\u3002
staging
\u30d6\u30e9\u30f3\u30c1\u3092main
\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3057\u3001main
\u306b\u5909\u66f4\u304c\u306a\u3051\u308c\u3070\u3001\u3064\u307e\u308amain
\u3068staging
\u304cGit\u3067\u307e\u3063\u305f\u304f\u540c\u3058\u30b3\u30fc\u30c9\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408\u3067\u3082\u3001\u7d50\u679c\u3068\u3057\u3066\u5f97\u3089\u308c\u308bDocker\u30a4\u30e1\u30fc\u30b8\u304c\u308f\u305a\u304b\u306b\u7570\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u6700\u5f8c\u306estaging
\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3068\u73fe\u5728\u306emain
\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306e\u9593\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u4e0a\u6d41Docker\u30a4\u30e1\u30fc\u30b8\u304c\u5909\u66f4\u3055\u308c\u305f\u304b\u3001\u307e\u305f\u306f\u3055\u307e\u3056\u307e\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u306b\u3088\u3063\u3066\u30ed\u30fc\u30c9\u3055\u308c\u305f\u4f9d\u5b58\u95a2\u4fc2\u304c\u5909\u66f4\u3055\u308c\u305f\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3067\u3059\u3002\u3053\u308c\u306f\u975e\u5e38\u306b\u5c0f\u3055\u3044\u78ba\u7387\u3067\u3059\u304c\u5b58\u5728\u3057\u307e\u3059\u3002
\u305d\u306e\u305f\u3081\u3001 \u3053\u306e\u72b6\u6cc1\u3067\u306fLagoon\u306f\u4e00\u3064\u306e\u74b0\u5883\u304b\u3089\u5225\u306e\u74b0\u5883\u3078\u306eLagoon\u30a4\u30e1\u30fc\u30b8\u306e\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u3068\u3044\u3046\u6982\u5ff5\u3092\u7406\u89e3\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u57fa\u672c\u7684\u306b\u3001\u3059\u3067\u306b\u69cb\u7bc9\u3055\u308c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305fDocker\u30a4\u30e1\u30fc\u30b8\u3092\u4e00\u3064\u306e\u74b0\u5883\u304b\u3089\u53d6\u308a\u51fa\u3057\u3001\u305d\u308c\u3089\u306e\u307e\u3063\u305f\u304f\u540c\u3058Docker\u30a4\u30e1\u30fc\u30b8\u3092\u5225\u306e\u74b0\u5883\u3067\u4f7f\u7528\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
\u79c1\u305f\u3061\u306e\u4f8b\u3067\u306f\u3001main
\u74b0\u5883\u304b\u3089production
\u74b0\u5883\u3078Docker\u30a4\u30e1\u30fc\u30b8\u3092\u30d7\u30ed\u30e2\u30fc\u30c8\u3057\u305f\u3044\u3068\u601d\u3063\u3066\u3044\u307e\u3059:
- \u6700\u521d\u306b\u3001
main
\u3068\u3044\u3046\u540d\u524d\u306e\u901a\u5e38\u306e\u30c7\u30d7\u30ed\u30a4\u74b0\u5883\u304c\u5fc5\u8981\u3067\u3059\u3002\u74b0\u5883\u304c\u6b63\u5e38\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u307e\u305f\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b
production
\u3068\u3044\u3046\u540d\u524d\u306e\u30d6\u30e9\u30f3\u30c1\u304c\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u304c\u3042\u308b\u3068\u3001\u4eba\u3005\u304c\u3053\u306e\u30d6\u30e9\u30f3\u30c1\u306b\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u306a\u3069\u3001\u5947\u5999\u306a\u6df7\u4e71\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 - \u6b21\u306b\u3001lagoon cli\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u30c8\u30ea\u30ac\u30fc\u3057\u307e\u3059:
\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308blagoon deploy promote --project=\"myproject\" --source=\"main\" --destination=\"production\"\n
\u3053\u308c\u306f\u3001\u30bd\u30fc\u30b9main
\u304b\u3089\u30c7\u30b9\u30c6\u30a3\u30cd\u30fc\u30b7\u30e7\u30f3production
\u3078\u306e\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3\u3092\u5e0c\u671b\u3059\u308b\u3053\u3068\u3092Lagoon\u306b\u4f1d\u3048\u307e\u3059\u3002
Lagoon\u306f\u6b21\u306e\u3053\u3068\u3092\u884c\u3044\u307e\u3059:
.lagoon.yml
\u3068docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30c9\u3059\u308b\u305f\u3081\u306b\u3001Git\u30d6\u30e9\u30f3\u30c1main
\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u307e\u3059(Lagoon\u304c \u5b8c\u5168\u306b\u52d5\u4f5c\u3059\u308b\u306b\u306f\u3053\u308c\u3089\u304c\u307e\u3060\u5fc5\u8981\u3067\u3059)\u3002 docker-compose.yml
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3057\u3066\u3001\u3059\u3079\u3066\u306eKubernetes/OpenShift\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u304c\u3001\u74b0\u5883\u5909\u6570\u3068\u3057\u3066LAGOON_GIT_BRANCH=production
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 main
\u74b0\u5883\u304b\u3089\u6700\u65b0\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u30b3\u30d4\u30fc\u3057\u3001\u305d\u308c\u3089\u3092\u4f7f\u7528\u3057\u307e\u3059(\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3057\u305f\u308a\u3001\u4e0a\u6d41\u304b\u3089\u30bf\u30b0\u4ed8\u3051\u3057\u305f\u308a\u3059\u308b\u4ee3\u308f\u308a\u306b)\u3002 - \u901a\u5e38\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306e\u3088\u3046\u306b\u3001\u3059\u3079\u3066\u306e\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u4ed6\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3068\u540c\u69d8\u306b\u3001\u6210\u529f\u307e\u305f\u306f\u5931\u6557\u306e\u901a\u77e5\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/","title":"Lagoon\u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5","text":"\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Lagoon\u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\u3059\u3067\u306b\u3053\u308c\u3089\u306b\u3064\u3044\u3066\u7406\u89e3\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001Lagoon\u306e\u9ad8\u5ea6\u306a\u6982\u5ff5\u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002
\u3082\u3057\u52a9\u3051\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u304b\u3001\u79c1\u305f\u3061\u306eDiscord\u3067\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3084\u30e1\u30f3\u30c6\u30ca\u30fc\u3078\u3054\u9023\u7d61\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/","title":"\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u30d7\u30ed\u30bb\u30b9","text":"\u3053\u306e\u6587\u66f8\u3067\u306f\u3001Lagoon\u306e\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u4e2d\u306b\u5b9f\u969b\u306b\u4f55\u304c\u8d77\u3053\u308b\u304b\u3092\u8aac\u660e\u3057\u307e\u3059\u3002\u5b9f\u969b\u306e\u30d7\u30ed\u30bb\u30b9\u304b\u3089\u5927\u5e45\u306b\u5358\u7d14\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001Lagoon\u304c\u65b0\u3057\u3044\u30b3\u30fc\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3073\u306b\u4f55\u304c\u884c\u308f\u308c\u3066\u3044\u308b\u304b\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002
\u4ee5\u4e0b\u306e\u30d3\u30c7\u30aa\u3092\u898b\u3066\u3001\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30d7\u30ed\u30bb\u30b9\u306e\u8a73\u7d30\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#1-openshiftkubernetes","title":"1. \u74b0\u5883\u306e\u305f\u3081\u306eOpenShift\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/Kubernetes\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u306e\u8a2d\u5b9a","text":"\u307e\u305a\u3001Lagoon\u306f\u6307\u5b9a\u3055\u308c\u305f\u74b0\u5883\u306eOpenShift\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/Kubernetes\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u304c\u5b58\u5728\u3057\u3066\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u5fc5\u8981\u306a\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3001\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u4f5c\u6210\u3057\u3001\u74b0\u5883\u5909\u6570\u3092lagoon-env
\u3068\u3044\u3046ConfigMap\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u74b0\u5883\u306e\u30bf\u30a4\u30d7\u3084\u540d\u524d\u3001Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u306a\u3069\u306e\u60c5\u5831\u3067\u6e80\u305f\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#2-git","title":"2. Git\u306e\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3068\u30de\u30fc\u30b8","text":"\u6b21\u306b\u3001Lagoon\u306fGit\u304b\u3089\u30b3\u30fc\u30c9\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u307e\u3059\u3002.lagoon.yml
\u3001docker-compose.yml
\u3001\u304a\u3088\u3073.env
\u3092\u8aad\u307f\u53d6\u308b\u305f\u3081\u3060\u3051\u3067\u306a\u304f\u3001Docker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u306b\u3082\u3053\u308c\u304c\u5fc5\u8981\u3067\u3059\u3002
\u6ce8\u610f\u70b9\u3068\u3057\u3066\u3001Lagoon\u306f\u30d6\u30e9\u30f3\u30c1/PR\u304cLagoon\u3067\u8a2d\u5b9a\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u306e\u6b63\u898f\u8868\u73fe\u3068\u4e00\u81f4\u3059\u308b\u5834\u5408\u306b\u306e\u307f\u3001\u3053\u308c\u3089\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u304c\u3069\u306e\u3088\u3046\u306b\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u305f\u304b\u306b\u57fa\u3065\u3044\u3066\u3001\u7570\u306a\u308b\u3053\u3068\u304c\u8d77\u3053\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#webhook","title":"\u30d6\u30e9\u30f3\u30c1Webhook\u30d7\u30c3\u30b7\u30e5","text":"\u30c7\u30d7\u30ed\u30a4\u304cGit webhook\u7d4c\u7531\u3067\u81ea\u52d5\u7684\u306b\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u3001\u5358\u4e00\u306e\u30d6\u30e9\u30f3\u30c1\u5411\u3051\u3067\u3042\u308b\u5834\u5408\u3001Lagoon\u306fwebhook\u30da\u30a4\u30ed\u30fc\u30c9\u306b\u542b\u307e\u308c\u308bGit SHA\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u305f\u5404Git SHA\u3054\u3068\u306b\u30c7\u30d7\u30ed\u30a4\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#rest","title":"\u30d6\u30e9\u30f3\u30c1REST\u30c8\u30ea\u30ac\u30fc","text":"REST API\u7d4c\u7531(UI\u307e\u305f\u306fGraphQL\u7d4c\u7531)\u3067\u624b\u52d5\u3067\u30d6\u30e9\u30f3\u30c1\u30c7\u30d7\u30ed\u30a4\u3092\u30c8\u30ea\u30ac\u30fc\u3057\u3001POST\u30da\u30a4\u30ed\u30fc\u30c9\u3067SHA
\u3092\u5b9a\u7fa9\u3057\u306a\u3044\u5834\u5408\u3001Lagoon\u306f\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u306e\u6700\u65b0\u306e\u30b3\u30df\u30c3\u30c8\u3092\u5358\u306b\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u3001\u305d\u308c\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#_2","title":"\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8","text":"\u30c7\u30d7\u30ed\u30a4\u304c\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8(PR)\u30c7\u30d7\u30ed\u30a4\u3067\u3042\u308b\u5834\u5408\u3001Lagoon\u306f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30d9\u30fc\u30b9\u3068HEAD\u30d6\u30e9\u30f3\u30c1\u304a\u3088\u3073SHA\u3092\u30ed\u30fc\u30c9\u3057\u3001\u6b21\u306e\u3053\u3068\u3092\u884c\u3044\u307e\u3059:
- PR\u304c\u6307\u3057\u3066\u3044\u308b\u30d6\u30e9\u30f3\u30c1(\u30d9\u30fc\u30b9\u30d6\u30e9\u30f3\u30c1)\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u307e\u3059\u3002
- PR\u304c\u8d77\u6e90\u3068\u306a\u308b\u30d6\u30e9\u30f3\u30c1(
HEAD
\u30d6\u30e9\u30f3\u30c1)\u3092\u30d9\u30fc\u30b9\u30d6\u30e9\u30f3\u30c1\u306e\u4e0a\u306b\u30de\u30fc\u30b8\u3057\u307e\u3059\u3002 - \u3088\u308a\u5177\u4f53\u7684\u306b\u306f:
- Lagoon\u306f\u3001Webhook\u3067\u9001\u4fe1\u3055\u308c\u305f\u7279\u5b9a\u306eSHA\u3092\u30c1\u30a7\u30c3\u30af\u30a2\u30a6\u30c8\u3057\u3066\u30de\u30fc\u30b8\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306eSHA\u306f\u30d6\u30e9\u30f3\u30c1\u30d8\u30c3\u30c9\u3092\u6307\u3057\u3066\u3044\u308b\u5834\u5408\u3082\u3042\u308c\u3070\u3001 \u305d\u3046\u3067\u306a\u3044\u5834\u5408 \u3082\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001GitHub\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u65b0\u3057\u3044\u30d7\u30c3\u30b7\u30e5\u3092\u884c\u3046\u3068\u3001\u30d9\u30fc\u30b9\u30d6\u30e9\u30f3\u30c1\u306eSHA\u304c\u73fe\u5728\u306e\u30d9\u30fc\u30b9\u30d6\u30e9\u30f3\u30c1HEAD\u3092\u6307\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
\u30de\u30fc\u30b8\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u3001Lagoon\u3082\u505c\u6b62\u3057\u3001\u305d\u306e\u3053\u3068\u3092\u304a\u77e5\u3089\u305b\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#3","title":"3. \u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9","text":"docker-compose.yml
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u5404\u30b5\u30fc\u30d3\u30b9\u306b\u3064\u3044\u3066\u3001Lagoon\u306f\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001\u3053\u306e\u6642\u70b9\u3067\u30d3\u30eb\u30c9\u304c\u884c\u308f\u308c\u307e\u3059\u3002\u30d3\u30eb\u30c9\u306e\u9806\u5e8f\u306f\u3001docker-compose.yml
\u3067\u306e\u8a2d\u5b9a\u9806\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u3044\u304f\u3064\u304b\u306e\u30d3\u30eb\u30c9\u5f15\u6570\u304c\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002
LAGOON_GIT_SHA
LAGOON_GIT_BRANCH
LAGOON_PROJECT
LAGOON_BUILD_TYPE
( pullrequest
\u3001branch
\u3001\u307e\u305f\u306f promote
\u306e\u3044\u305a\u308c\u304b) LAGOON_SSH_PRIVATE_KEY
- \u30bd\u30fc\u30b9\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308bSSH\u306e\u79d8\u5bc6\u9375\u3067\u3059\u3002\u30d3\u30eb\u30c9\u5f15\u6570\u3092\u5b9f\u969b\u306e\u9375\u306b\u5909\u63db\u3059\u308b\u306b\u306f\u3001RUN /lagoon/entrypoints/05-ssh-key.sh
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u306e\u9375\u306f/home/.ssh/key
\u306b\u3042\u308a\u3001SSH\u3068Git\u304c\u81ea\u52d5\u7684\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002\u5b89\u5168\u306e\u305f\u3081\u3001RUN rm /home/.ssh/key
\u3092\u4f7f\u7528\u3057\u3066\u9375\u3092\u518d\u5ea6\u524a\u9664\u3057\u307e\u3059\u3002 LAGOON_GIT_SOURCE_REPOSITORY
- \u30bd\u30fc\u30b9\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u5b8c\u5168\u306aGit URL\u3067\u3059
\u307e\u305f\u3001\u3053\u308c\u304c\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30d3\u30eb\u30c9\u3067\u3042\u308b\u5834\u5408\u306f\u4ee5\u4e0b\u3068\u306a\u308a\u307e\u3059\u3002
LAGOON_PR_HEAD_BRANCH
LAGOON_PR_HEAD_SHA
LAGOON_PR_BASE_BRANCH
LAGOON_PR_BASE_SHA
LAGOON_PR_TITLE
\u307e\u305f\u3001\u3059\u3067\u306b\u69cb\u7bc9\u3055\u308c\u305f\u5404\u30a4\u30e1\u30fc\u30b8\u306e\u540d\u524d\u3082\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002\u3042\u306a\u305f\u306edocker-compose.yml
\u304c\u6700\u521d\u306bcli
\u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3057\u3001\u6b21\u306bnginx
\u30a4\u30e1\u30fc\u30b8\u3092\u69cb\u7bc9\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001nginx
\u30a4\u30e1\u30fc\u30b8\u306e\u540d\u524d\u306fNGINX_IMAGE
\u3068\u3057\u3066\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#4-kubernetesopenshift","title":"4. Kubernetes\u307e\u305f\u306fOpenShift\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b","text":"\u6b21\u306b\u3001Lagoon\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u304b\u3089\u5b9a\u7fa9\u3055\u308c\u308b\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u30eb\u30fc\u30c8\u3001\u304a\u3088\u3073.lagoon.yml
\u3067\u5b9a\u7fa9\u3057\u305f\u8ffd\u52a0\u53ef\u80fd\u306a\u306e\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u3092Kubernetes\u307e\u305f\u306fOpenShift\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002
\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001LAGOON_ROUTES
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c8\u3092\u30ab\u30f3\u30de\u533a\u5207\u308a\u306eURL\u3068\u3057\u3066\u516c\u958b\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u4ee5\u4e0b\u306e\u9806\u5e8f\u30671\u3064\u306e\u30eb\u30fc\u30c8\u3092\"main\"\u30eb\u30fc\u30c8\u3068\u3057\u3066\u5b9a\u7fa9\u3057\u307e\u3059:
- \u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u5834\u5408:
.lagoon.yml
\u3067\u6700\u521d\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8 docker-compose.yml
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u304b\u3089\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u6700\u521d\u306e\u30eb\u30fc\u30c8 - \u306a\u3057
\"main\"\u30eb\u30fc\u30c8\u306fLAGOON_ROUTE
\u74b0\u5883\u5909\u6570\u3092\u4ecb\u3057\u3066\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#5","title":"5. \u30a4\u30e1\u30fc\u30b8\u306e\u30d7\u30c3\u30b7\u30e5\u3068\u30bf\u30b0\u4ed8\u3051","text":"\u3053\u308c\u3067\u3001\u4ee5\u524d\u306b\u30d3\u30eb\u30c9\u3057\u305fDocker\u30a4\u30e1\u30fc\u30b8\u3092\u5185\u90e8\u306eDocker\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
docker-compose.yml
\u3067\u30d3\u30eb\u30c9\u3059\u308bDockerfile\u3092\u6307\u5b9a\u305b\u305a\u306b\u30a4\u30e1\u30fc\u30b8\u306e\u307f\u3092\u6307\u5b9a\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u306b\u3064\u3044\u3066\u3082\u3001\u30bf\u30b0\u4ed8\u3051\u304c\u884c\u308f\u308c\u3001\u5185\u90e8Docker\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u8a8d\u8b58\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u308c\u3089\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u30b3\u30f3\u30c6\u30ca\u3067\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#6","title":"6. \u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8","text":"Lagoon\u306f\u3001\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\uff08PVC\uff09\u3092\u5fc5\u8981\u3068\u3057\u3066\u8981\u6c42\u3057\u305f\u5404\u30b5\u30fc\u30d3\u30b9\u306e\u305f\u3081\u306b\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#7-cron","title":"7. Cron\u30b8\u30e7\u30d6","text":"MariaDB\u306e\u3088\u3046\u306bcron\u30b8\u30e7\u30d6\u3092\u8981\u6c42\u3059\u308b\u5404\u30b5\u30fc\u30d3\u30b9\u3001\u304a\u3088\u3073.lagoon.yml\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30ab\u30b9\u30bf\u30e0cron\u30b8\u30e7\u30d6\u3054\u3068\u306b\u3001Lagoon\u306fcron\u30b8\u30e7\u30d6\u74b0\u5883\u5909\u6570\u3092\u751f\u6210\u3057\u3001\u305d\u308c\u3089\u306f\u5f8c\u3067\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306b\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#8","title":"8. \u5b9a\u7fa9\u6e08\u307f\u306e\u30d7\u30ec\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u306e\u5b9f\u884c","text":"\u6b21\u306bLagoon\u306f.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u305fpre-rollout
\u306e\u30bf\u30b9\u30af\u3092\u78ba\u8a8d\u3057\u3001\u305d\u308c\u3089\u3092\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u3054\u3068\u306b1\u3064\u305a\u3064\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30bf\u30b9\u30af\u306f\u73fe\u5728\u5b9f\u884c\u4e2d\u306e\u30dd\u30c3\u30c9\u3067\u5b9f\u884c\u3055\u308c\u308b\u305f\u3081\u3001\u6700\u65b0\u306e\u30b3\u30df\u30c3\u30c8\u306b\u306e\u307f\u5b58\u5728\u3059\u308b\u6a5f\u80fd\u3084\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u6700\u521d\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3067\u306f\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002
\u3053\u308c\u3089\u306e\u30bf\u30b9\u30af\u306e\u3044\u305a\u308c\u304b\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u3001Lagoon\u306f\u76f4\u3061\u306b\u505c\u6b62\u3057\u901a\u77e5\u3057\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u306f\u9032\u884c\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#9-deploymentconfigsstatefulsetsdaemonsets","title":"9. DeploymentConfigs\u3001Statefulsets\u3001Daemonsets","text":"\u3053\u308c\u304c\u304a\u305d\u3089\u304f\u6700\u3082\u91cd\u8981\u306a\u30b9\u30c6\u30c3\u30d7\u3067\u3059\u3002\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u306b\u57fa\u3065\u3044\u3066\u3001Lagoon\u306f[ Deployment\u3001Statefulset \u307e\u305f\u306f Daemonsets \u3092\u30b5\u30fc\u30d3\u30b9\u7528\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 (Deployment\u306fOpenShift\u306e DeploymentConfigs \u3068\u540c\u7b49\u3067\u3059)
\u3053\u308c\u306b\u306f\u3001\u4ee5\u524d\u306b\u53ce\u96c6\u3057\u305f\u60c5\u5831\u3001cron\u30b8\u30e7\u30d6\u3001\u6c38\u7d9a\u7684\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u4f4d\u7f6e\u3001\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u306a\u3069\u5168\u3066\u304c\u542b\u307e\u308c\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u306f\u3001\u74b0\u5883\u5909\u6570\u304c\u5909\u66f4\u3055\u308c\u305f\u308a\u3001\u30a4\u30e1\u30fc\u30b8\u304c\u5909\u66f4\u3055\u308c\u305f\u308a\u3057\u305f\u5834\u5408\u306a\u3069\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066Kubernetes\u3084OpenShift\u304c\u30dd\u30c3\u30c9\u306e\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u81ea\u52d5\u7684\u306b\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u3053\u3068\u3082\u5f15\u304d\u8d77\u3053\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u5909\u66f4\u304c\u306a\u3044\u5834\u5408\u306f\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306f\u884c\u308f\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306ePHP\u30b3\u30fc\u30c9\u306e\u307f\u3092\u66f4\u65b0\u3057\u305f\u5834\u5408\u3001Varnish\u3001Solr\u3001MariaDB\u3001Redis\u306a\u3069\u306e\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u304c\u3042\u306a\u305f\u306e\u30b3\u30fc\u30c9\u3092\u542b\u307e\u306a\u3044\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5168\u3066\u304c\u975e\u5e38\u306b\u9ad8\u901f\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#10","title":"10. \u3059\u3079\u3066\u306e\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3064","text":"\u3053\u3053\u3067Lagoon\u306f\u5f85\u6a5f\u3057\u307e\u3059\uff01\u65b0\u3057\u3044\u30dd\u30c3\u30c9\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u304c\u3059\u3079\u3066\u5b8c\u4e86\u3057\u3001\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af\u304c\u6210\u529f\u3059\u308b\u306e\u3092\u5f85\u3061\u307e\u3059\u3002
\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3084\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af\u306e\u3044\u305a\u308c\u304b\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u3001\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306f\u3053\u3053\u3067\u505c\u6b62\u3055\u308c\u3001Slack\u306a\u3069\u306e\u5b9a\u7fa9\u6e08\u307f\u306e\u901a\u77e5\u30b7\u30b9\u30c6\u30e0\u3092\u901a\u3058\u3066\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u304c\u5931\u6557\u3057\u305f\u3053\u3068\u304c\u901a\u77e5\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#11","title":"11. \u5b9a\u7fa9\u3055\u308c\u305f\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u306e\u5b9f\u884c","text":"\u6b21\u306b\u3001Lagoon\u306f.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066post-rollout
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30bf\u30b9\u30af\u3092\u63a2\u3057\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u3067\u305d\u308c\u3089\u3092\u4e00\u3064\u305a\u3064\u5b9f\u884c\u3057\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u3044\u305a\u308c\u304b\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u3001Lagoon\u306f\u76f4\u3061\u306b\u505c\u6b62\u3057\u3001\u3042\u306a\u305f\u306b\u901a\u77e5\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/build-and-deploy-process/#12","title":"12. \u6210\u529f","text":"\u5168\u3066\u304c\u9806\u8abf\u306b\u9032\u307f\u3001\u4f55\u3082\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u306a\u304b\u3063\u305f\u5834\u5408\u3001Lagoon\u306f\u3053\u306e\u30d3\u30eb\u30c9\u3092\u6210\u529f\u3068\u30de\u30fc\u30af\u3057\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u901a\u77e5\u3092\u4ecb\u3057\u3066\u3042\u306a\u305f\u306b\u901a\u77e5\u3057\u307e\u3059\u3002\u2705
"},{"location":"ja/concepts-basics/docker-compose-yml/","title":"docker-compose.yml","text":"docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306fLagoon\u304c\u4ee5\u4e0b\u306e\u76ee\u7684\u306e\u305f\u3081\u306b\u5229\u7528\u3057\u307e\u3059:
- \u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u30b5\u30fc\u30d3\u30b9/\u30b3\u30f3\u30c6\u30ca\u3092\u77e5\u308b
- \u30b3\u30f3\u30c6\u30ca\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u3069\u306e\u3088\u3046\u306b\u30d3\u30eb\u30c9\u3055\u308c\u308b\u304b\u3092\u5b9a\u7fa9\u3059\u308b
- \u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u3088\u3046\u306a\u8ffd\u52a0\u306e\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3059\u308b
Docker Compose(\u30c4\u30fc\u30eb)\u306fYAML\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306e\u691c\u8a3c\u306b\u975e\u5e38\u306b\u53b3\u683c\u3067\u3042\u308b\u305f\u3081\u3001\u30b5\u30fc\u30d3\u30b9\u5b9a\u7fa9\u306elabels
\u5185\u3067\u306e\u307f\u8a2d\u5b9a\u3092\u884c\u3046\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002
\u8b66\u544a
Lagoon\u306fdocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30e9\u30d9\u30eb\u3001\u30b5\u30fc\u30d3\u30b9\u540d\u3001\u30a4\u30e1\u30fc\u30b8\u540d\u3001\u30d3\u30eb\u30c9\u5b9a\u7fa9\u306e\u307f\u3092\u8aad\u307f\u53d6\u308a\u307e\u3059\u3002\u30dd\u30fc\u30c8\u3001\u74b0\u5883\u5909\u6570\u3001\u30dc\u30ea\u30e5\u30fc\u30e0\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u30ea\u30f3\u30af\u3001\u30e6\u30fc\u30b6\u30fc\u306a\u3069\u306e\u5b9a\u7fa9\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002
\u3053\u308c\u306f\u610f\u56f3\u7684\u306a\u3082\u306e\u3067\u3001docker-compose
\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u306a\u305f\u306e\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u306e\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002Lagoon\u306flagoon.type
\u304b\u3089\u3042\u306a\u305f\u304c\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u3044\u308b\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30d7\u3092\u5b66\u3073\u3001\u305d\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u5fc5\u8981\u3068\u3059\u308b\u30dd\u30fc\u30c8\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u305d\u306e\u4ed6\u306e\u8ffd\u52a0\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u77e5\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u4ee5\u4e0b\u306b\u3001Drupal\u7528\u306edocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306e\u7c21\u5358\u306a\u4f8b\u3092\u793a\u3057\u307e\u3059:
docker-compose.ymlversion: '2.3'\nx-lagoon-project:\n# Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d(\u3053\u308c\u3092\u7de8\u96c6\u3059\u308b\u969b\u306f`&lagoon-project`\u3092\u6b8b\u3057\u3066\u304f\u3060\u3055\u3044)\n&lagoon-project drupal-example\nx-volumes:\n&default-volumes\n# Docker\u30b3\u30f3\u30c6\u30ca\u306b\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u30de\u30a6\u30f3\u30c8\u3057\u305f\u3044\u3059\u3079\u3066\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u5b9a\u7fa9\u3057\u307e\u3059\nvolumes:\n- .:/app:delegated\nx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# \u30ed\u30fc\u30ab\u30eb\u3067\u4f7f\u7528\u3059\u308b\u30eb\u30fc\u30c8\u3002pygmy\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30eb\u30fc\u30c8\u306f *\u5fc5\u305a* .docker.amazee.io\u3067\u7d42\u308f\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n# \u672c\u756a\u74b0\u5883\u3068\u540c\u69d8\u306e\u52d5\u4f5c\u3092\u3055\u305b\u305f\u3044\u5834\u5408\u306f\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\n#LAGOON_ENVIRONMENT_TYPE: production\n# Xdebug\u3092\u6709\u52b9\u306b\u3057\u3001`docker-compose up -d`\u3067\u518d\u8d77\u52d5\u3057\u305f\u3044\u5834\u5408\u306f\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\n#XDEBUG_ENABLE: \"true\"\nx-user:\n&default-user\n# \u30b3\u30f3\u30c6\u30ca\u304c\u5b9f\u884c\u3055\u308c\u308b\u3079\u304d\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30e6\u30fc\u30b6\u30fc\u3002Linux\u4e0a\u3067ID `1000`\u4ee5\u5916\u306e\u30e6\u30fc\u30b6\u30fc\u3067\u5b9f\u884c\u3059\u308b\u5834\u5408\u306f\u3053\u308c\u3092\u5909\u66f4\u3057\u307e\u3059\nuser: '1000'\nservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent # (1)\nlagoon.persistent: /app/web/sites/default/files/\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent # (2)\nlagoon.name: nginx\nlagoon.persistent: /app/web/sites/default/files/\nmariadb:\nimage: uselagoon/mariadb-10.11-drupal\nlabels:\nlagoon.type: mariadb\n
- \u3053\u3053\u3067\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30dd\u30c3\u30c9\u306b\u6ce8\u76ee\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u3053\u3053\u3067\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30dd\u30c3\u30c9\u306b\u6ce8\u76ee\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#basic-settings","title":"\u57fa\u672c\u8a2d\u5b9a","text":"x-lagoon-project
:
\u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30de\u30b7\u30f3\u540d\u3067\u3001\u3053\u3053\u3067\u5b9a\u7fa9\u3057\u307e\u3059\u3002\"drupal-example\"\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002
x-volumes
:
\u3053\u308c\u306fLagoon\u306b\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3059\u308b\u3082\u306e\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f/app
\u306b\u5b58\u5728\u3057\u307e\u3059\u304c\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3092\u8ffd\u52a0\u307e\u305f\u306f\u5909\u66f4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
x-environment
:
- \u3053\u3053\u3067\u30ed\u30fc\u30ab\u30eb\u958b\u767aURL\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002pygmy\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001
.docker.amazee.io
\u3067\u7d42\u308f\u3089\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 - \u5b8c\u5168\u306b\u672c\u756a\u74b0\u5883\u306b\u4f3c\u305b\u305f\u3044\u5834\u5408\u306f\u3001
LAGOON_ENVIRONMENT_TYPE: production
\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u5916\u3057\u307e\u3059\u3002 - Xdebug\u3092\u6709\u52b9\u306b\u3057\u305f\u3044\u5834\u5408\u306f\u3001
DEBUG_ENABLE: \"true\"
\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u5916\u3057\u307e\u3059\u3002
x-user
:
Linux\u3092\u4f7f\u7528\u3057\u3066\u3044\u3066\u30011000
\u4ee5\u5916\u306e\u30e6\u30fc\u30b6\u30fc\u3067\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u3092\u9664\u304d\u3001\u3053\u308c\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u307b\u3068\u3093\u3069\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#services","title":"services
","text":"\u3053\u3053\u3067\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u6b8b\u5ff5\u306a\u304c\u3089\u3001 Docker Compose\u306f\u305d\u308c\u3089\u3092\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3073\u307e\u3059\u304c\u3001\u5b9f\u969b\u306b\u306f\u30b3\u30f3\u30c6\u30ca\u3067\u3059\u3002\u3053\u308c\u304b\u3089\u306f\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u3067\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3076\u3053\u3068\u306b\u3057\u307e\u3059\u3002
\u305d\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d(\u4e0a\u8a18\u306e\u4f8b\u3067\u306f nginx
\u3001php
\u3001mariadb
)\u306f\u3001Lagoon\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u308bKubernetes\u306e\u30dd\u30c3\u30c9\u306e\u540d\u524d(\u307e\u305f\u5225\u306e\u7528\u8a9e\u3068\u3057\u3066\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3073\u307e\u3059)\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u3001\u3055\u3089\u306b\u5b9a\u7fa9\u3055\u308c\u305flagoon.type
\u306b\u57fa\u3065\u3044\u3066\u4f5c\u6210\u3055\u308c\u308bKubernetes\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3068\u3057\u3066\u3082\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u3001\u30eb\u30fc\u30c8\u3001\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u306a\u3069\u304c\u542b\u307e\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
\u30b5\u30fc\u30d3\u30b9\u540d\u306fRFC 1035\u306eDNS\u30e9\u30d9\u30eb\u6a19\u6e96\u306b\u6e96\u62e0\u3057\u3066\u3044\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30b5\u30fc\u30d3\u30b9\u540d\u306f\u4ee5\u4e0b\u306e\u8981\u4ef6\u3092\u6e80\u305f\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
- \u6700\u592763\u6587\u5b57\u3092\u542b\u3080
- \u5c0f\u6587\u5b57\u306e\u82f1\u6570\u5b57\u307e\u305f\u306f'-'\u306e\u307f\u3092\u542b\u3080
- \u82f1\u5b57\u3067\u59cb\u307e\u308b
- \u82f1\u6570\u5b57\u3067\u7d42\u308f\u308b
\u8b66\u544a
\u4e00\u5ea6\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3092\u8a2d\u5b9a\u3057\u305f\u3089\u3001\u4fee\u6b63\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u4fee\u6b63\u3059\u308b\u3068\u3001\u30b3\u30f3\u30c6\u30ca\u5185\u3067\u69d8\u3005\u306a\u554f\u984c\u304c\u767a\u751f\u3057\u3001\u4e0d\u6574\u5408\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#docker-images","title":"Docker\u30a4\u30e1\u30fc\u30b8","text":""},{"location":"ja/concepts-basics/docker-compose-yml/#build","title":"build
","text":"\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3054\u3068\u306bLagoon\u304c\u3042\u306a\u305f\u306e\u30b5\u30fc\u30d3\u30b9\u306eDockerfile\u3092\u30d3\u30eb\u30c9\u3057\u3066\u307b\u3057\u3044\u5834\u5408\u3001\u3053\u3053\u3067\u5b9a\u7fa9\u3067\u304d\u307e\u3059:
build
context
docker build
\u30b3\u30de\u30f3\u30c9\u306b\u6e21\u3059\u3079\u304d\u30d3\u30eb\u30c9\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30d1\u30b9
dockerfile:
- \u30d3\u30eb\u30c9\u3059\u308b\u3079\u304dDockerfile\u306e\u5834\u6240\u3068\u540d\u524d
\u8b66\u544a
Lagoon\u306f\u77ed\u7e2e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002build: <Dockerfile>
\u306e\u5b9a\u7fa9\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u51e6\u7406\u306f\u5931\u6557\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#image","title":"image
","text":"Dockerfile\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u306a\u304f\u3001\u65e2\u5b58\u306eDockerfile\u3092\u4f7f\u7528\u3057\u305f\u3044\u5834\u5408\u306f\u3001image
\u3067\u5b9a\u7fa9\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#types","title":"\u30bf\u30a4\u30d7","text":"Lagoon\u306f\u3001Kubernetes\u3084OpenShift\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u6b63\u3057\u304f\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30d7\u3092\u77e5\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u3053\u308c\u306flagoon.type
\u30e9\u30d9\u30eb\u3092\u901a\u3058\u3066\u884c\u308f\u308c\u307e\u3059\u3002\u9078\u629e\u3067\u304d\u308b\u30bf\u30a4\u30d7\u306f\u591a\u6570\u3042\u308a\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u30bf\u30a4\u30d7\u3068\u8ffd\u52a0\u8a2d\u5b9a\u306e\u53ef\u80fd\u6027\u3092\u898b\u308b\u306b\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#skipignore-containers","title":"\u30b3\u30f3\u30c6\u30ca\u306e\u30b9\u30ad\u30c3\u30d7/\u7121\u8996","text":"\u305f\u3068\u3048\u3070\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u6642\u306b\u306e\u307f\u30b3\u30f3\u30c6\u30ca\u304c\u5fc5\u8981\u306a\u5834\u5408\u306a\u3069\u3001Lagoon\u306b\u30b5\u30fc\u30d3\u30b9\u3092\u5b8c\u5168\u306b\u7121\u8996\u3055\u305b\u305f\u3044\u5834\u5408\u306f\u3001\u305d\u306e\u30bf\u30a4\u30d7\u306bnone
\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#persistent-storage","title":"\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8","text":"\u4e00\u90e8\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u306f\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u5fc5\u8981\u3067\u3059\u3002Lagoon\u3067\u306f\u3001\u5404\u30b3\u30f3\u30c6\u30ca\u304c\u6700\u59271\u3064\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u306b\u81ea\u8eab\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u8981\u6c42\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d(\u305d\u308c\u3092\u4ed6\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3055\u305b\u308b\u3053\u3068\u3082\u53ef\u80fd)\u3001\u307e\u305f\u3001\u30b3\u30f3\u30c6\u30ca\u306b\u4ed6\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u4f5c\u6210\u3057\u305f\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u3088\u3046\u6307\u793a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u591a\u304f\u306e\u5834\u5408\u3001Lagoon\u306f\u305d\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u3069\u3053\u306b\u914d\u7f6e\u3059\u3079\u304d\u304b\u3092\u77e5\u3063\u3066\u3044\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001 \u4f8b\u3048\u3070\u3001MariaDB\u30b3\u30f3\u30c6\u30ca\u306e\u5834\u5408\u3001Lagoon\u306f\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092/var/lib/mysql
\u306b\u914d\u7f6e\u3059\u3079\u304d\u3068\u77e5\u3063\u3066\u304a\u308a\u3001\u305d\u308c\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u8ffd\u52a0\u306e\u8a2d\u5b9a\u306a\u3057\u306b\u81ea\u52d5\u7684\u306b\u305d\u3053\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u4e00\u90e8\u306e\u72b6\u6cc1\u3067\u306f\u3001Lagoon\u306f\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u3069\u3053\u306b\u914d\u7f6e\u3059\u3079\u304d\u304b\u3092\u77e5\u308b\u305f\u3081\u306b\u3042\u306a\u305f\u306e\u52a9\u3051\u304c\u5fc5\u8981\u3067\u3059\u3002
lagoon.persistent
- \u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30de\u30a6\u30f3\u30c8\u3059\u3079\u304d\u7d76\u5bfe\u30d1\u30b9(\u4e0a\u8a18\u306e\u4f8b\u3067\u306f/app/web/sites/default/files/
\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u306fDrupal\u304c\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u671f\u5f85\u3059\u308b\u30d1\u30b9\u3067\u3059)\u3002 lagoon.persistent.name
- Lagoon\u306b\u305d\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u65b0\u3057\u3044\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u306a\u3044\u3088\u3046\u306b\u6307\u793a\u3057\u3001\u4ee3\u308f\u308a\u306b\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u5b9a\u7fa9\u6e08\u307f\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059\u3002 lagoon.persistent.size
- \u5fc5\u8981\u306a\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u30b5\u30a4\u30ba(Lagoon\u306f\u901a\u5e38\u3001\u6700\u5c0f5G\u306e\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3082\u3057\u3082\u3063\u3068\u5fc5\u8981\u306a\u3089\u3001\u3053\u3053\u3067\u5b9a\u7fa9\u3057\u3066\u304f\u3060\u3055\u3044)\u3002 lagoon.persistent.class
- \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306fLagoon\u306f\u81ea\u52d5\u7684\u306b\u9069\u5207\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u30af\u30e9\u30b9(MySQL\u306eSSD\u3001Nginx\u306e\u5927\u91cf\u30b9\u30c8\u30ec\u30fc\u30b8\u306a\u3069)\u3092\u30b5\u30fc\u30d3\u30b9\u306b\u5272\u308a\u5f53\u3066\u307e\u3059\u3002\u3053\u308c\u3092\u4e0a\u66f8\u304d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u3053\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001Lagoon\u304c\u52d5\u4f5c\u3059\u308bKubernetes/OpenShift\u306e\u30a4\u30f3\u30d5\u30e9\u57fa\u76e4\u306b\u5927\u304d\u304f\u4f9d\u5b58\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3064\u3044\u3066\u306fLagoon\u306e\u7ba1\u7406\u8005\u306b\u554f\u3044\u5408\u308f\u305b\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#auto-generated-routes","title":"\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8","text":"docker-compose.yml\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u3054\u3068\u306b\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u3092\u6709\u52b9\u307e\u305f\u306f\u7121\u52b9\u306b\u3059\u308b\u3053\u3068\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002
lagoon.autogeneratedroute: false
\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u305d\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3057\u3066\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u304c\u505c\u6b62\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u3092\u6301\u3064\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u9069\u7528\u3067\u304d\u307e\u3059\u304c\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9\u306a\u3069\u306e\u8ffd\u52a0\u306e\u5185\u90e8\u5411\u3051\u30b5\u30fc\u30d3\u30b9\u3092\u4f5c\u6210\u3059\u308b\u969b\u306bbasic
\u304a\u3088\u3073basic-persistent
\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3067\u7279\u306b\u4fbf\u5229\u3067\u3059\u3002\u9006\u3082\u307e\u305f\u540c\u69d8\u306b\u3001.lagoon.yml\u30d5\u30a1\u30a4\u30eb\u304c\u305d\u308c\u3089\u3092\u7121\u52b9\u306b\u3059\u308b\u3068\u304d\u306b\u3001\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3057\u3066\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#multi-container-pods","title":"\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30fc\u30dd\u30c3\u30c9","text":"Kubernetes\u3068OpenShift\u306f\u5358\u7d14\u306a\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u305d\u308c\u305e\u308c\u304c1\u3064\u4ee5\u4e0a\u306e\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u6301\u3064\u30dd\u30c3\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002\u901a\u5e38\u3001Lagoon\u306f\u5b9a\u7fa9\u3055\u308c\u305fdocker-compose
\u30b5\u30fc\u30d3\u30b9\u3054\u3068\u306b\u30b3\u30f3\u30c6\u30ca\u30fc\u304c\u5185\u90e8\u306b\u3042\u308b\u5358\u4e00\u306e\u30dd\u30c3\u30c9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u3042\u308b\u30b1\u30fc\u30b9\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30b3\u30f3\u30c6\u30ca\u30fc\u304c\u4e92\u3044\u306b\u975e\u5e38\u306b\u4f9d\u5b58\u3057\u3066\u3044\u3066\u3001\u5e38\u306b\u4e00\u7dd2\u306b\u3044\u308b\u3079\u304d\u3067\u3042\u308b\u305f\u3081\u3001\u5358\u4e00\u306e\u30dd\u30c3\u30c9\u5185\u306b2\u3064\u306e\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u3088\u3046\u306a\u72b6\u6cc1\u306e\u4e00\u4f8b\u306f\u3001PHP\u30b3\u30f3\u30c6\u30ca\u3068NGINX\u30b3\u30f3\u30c6\u30ca\u304cDrupal\u306e\u3088\u3046\u306a\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306ePHP\u30b3\u30fc\u30c9\u3092\u542b\u3080\u5834\u5408\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u30b1\u30fc\u30b9\u3067\u306f\u3001\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u4e00\u7dd2\u306b\u3059\u3079\u304d\u304b\u3092Lagoon\u306b\u4f1d\u3048\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3001\u6b21\u306e\u3088\u3046\u306b\u884c\u3044\u307e\u3059(\u79c1\u305f\u3061\u304c\u30b3\u30f3\u30c6\u30ca\u3092docker-compose
\u306e\u305f\u3081\u306bservices
\u3068\u547c\u3093\u3067\u3044\u308b\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044):
- \u4e21\u65b9\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u3001\u4e8c\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u671f\u5f85\u3059\u308b
lagoon.type
\u3067\u5b9a\u7fa9\u3057\u307e\u3059(\u3053\u306e\u4f8b\u3067\u306f\u3001nginx
\u3068php
\u30b5\u30fc\u30d3\u30b9\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308bnginx-php-persistent
\u3067\u3059)\u3002 - \u7b2c2\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u7b2c1\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u30ea\u30f3\u30af\u3057\u3001\u7b2c2\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30e9\u30d9\u30eb
lagoon.name
\u306b\u3066\u7b2c1\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u6307\u5b9a\u3057\u307e\u3059(\u3053\u306e\u4f8b\u3067\u306f\u3001lagoon.name: nginx
\u3068\u6307\u5b9a\u3057\u307e\u3059)\u3002
\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u306fnginx
\u3068php
\u30b3\u30f3\u30c6\u30ca\u3092nginx
\u3068\u547c\u3070\u308c\u308b1\u3064\u306e\u30dd\u30c3\u30c9\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3057\u307e\u3059\u3002
\u8b66\u544a
\u4e00\u5ea6\u30b5\u30fc\u30d3\u30b9\u306elagooon.name
\u3092\u8a2d\u5b9a\u3057\u305f\u3089\u3001\u4fee\u6b63\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u3042\u306a\u305f\u306e\u30b3\u30f3\u30c6\u30ca\u3067\u6df7\u4e71\u3092\u5f15\u304d\u8d77\u3053\u3057\u3001\u4e0d\u6574\u5408\u3092\u5f15\u304d\u8d77\u3053\u3059\u539f\u56e0\u3068\u306a\u308a\u307e\u3059\u3002
Lagoon\u306f\u30012\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u3046\u3061\u3069\u308c\u304c\u5b9f\u969b\u306e\u500b\u3005\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\uff08\u3053\u306e\u5834\u5408\u3001nginx
\u304a\u3088\u3073php
\uff09\u3067\u3042\u308b\u304b\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u884c\u3046\u305f\u3081\u306b\u3001\u30bf\u30a4\u30d7\u306b\u3088\u3063\u3066\u4e0e\u3048\u3089\u308c\u305f\u540d\u524d\u3068\u540c\u3058\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u691c\u7d22\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001nginx-php-persistent
\u306fdocker-compose.yml
\u5185\u306bnginx
\u3068\u3044\u3046\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u3068php
\u3068\u3044\u3046\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u304c1\u3064\u305a\u3064\u5b58\u5728\u3059\u308b\u3053\u3068\u3092\u671f\u5f85\u3057\u307e\u3059\u3002\u4f55\u3089\u304b\u306e\u7406\u7531\u3067\u30b5\u30fc\u30d3\u30b9\u306b\u7570\u306a\u308b\u540d\u524d\u3092\u4f7f\u7528\u3057\u305f\u3044\u5834\u5408\u3001\u307e\u305f\u306fnginx-php-persistent
\u30bf\u30a4\u30d7\u306e\u30dd\u30c3\u30c9\u3092\u8907\u6570\u5fc5\u8981\u3068\u3059\u308b\u5834\u5408\u306b\u306f\u3001\u5b9f\u969b\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306blagoon.deployment.servicetype
\u3068\u3044\u3046\u8ffd\u52a0\u306e\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u4f8b:
docker-compose.ymlnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # \u3053\u308c\u304c\u306a\u3044\u5834\u5408\u3001Lagoon\u306f\u30b3\u30f3\u30c6\u30ca\u540d\u3001\u3064\u307e\u308a\u3053\u306e\u5834\u5408\u306fnginx\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\nlagoon.deployment.servicetype: nginx\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092Lagoon\u306eNGINX\u30dd\u30c3\u30c9\u306e\u4e00\u90e8\u306b\u3057\u307e\u3059\u3002\nlagoon.deployment.servicetype: php\n
\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u540d\u306fnginx
\u3068php
\u3067\u3059(\u597d\u304d\u306a\u540d\u524d\u3092\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002lagoon.name
\u306fLagoon\u306b\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u4e00\u7dd2\u306e\u30dd\u30c3\u30c9\u306b\u3059\u3079\u304d\u3092\u4f1d\u3048\u307e\u3059 - \u540c\u3058\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u3059\u3079\u3066\u4e00\u7dd2\u306e\u30dd\u30c3\u30c9\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002
Lagoon\u306f\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u304cnginx
\u3001php
\u3067\u3042\u308b\u304b\u3092\u8a8d\u8b58\u3059\u308b\u305f\u3081\u306b\u3001lagoon.deployment.servicetype: nginx
\u304a\u3088\u3073lagoon.deployment.servicetype: php
\u3068\u5b9a\u7fa9\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#helm-templates-kubernetes-only","title":"Helm\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 (Kubernetes\u306e\u307f)","text":"Lagoon\u306fKubernetes\u3067\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4f5c\u6210\u306bHelm\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u3092\u884c\u3046\u305f\u3081\u306b\u3001\u4e00\u9023\u306e\u30c1\u30e3\u30fc\u30c8\u304cbuild-deploy-tool
\u30a4\u30e1\u30fc\u30b8\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#custom-rollout-monitor-types","title":"\u30ab\u30b9\u30bf\u30e0\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30e2\u30cb\u30bf\u30fc\u30bf\u30a4\u30d7","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Lagoon\u306f\u30ab\u30b9\u30bf\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u304cKubernetes\u307e\u305f\u306fOpenshift\u5185\u306eDeploymentConfig
\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4ecb\u3057\u3066\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3055\u308c\u308b\u3053\u3068\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u306b\u57fa\u3065\u3044\u3066\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3092\u76e3\u8996\u3057\u307e\u3059\u3002\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u304c\u7570\u306a\u308b\u76e3\u8996\u65b9\u6cd5\u3092\u5fc5\u8981\u3068\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306flagoon.rollout
\u3092\u901a\u3058\u3066\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
deploymentconfig
- \u3053\u308c\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3059\u3002\u30b5\u30fc\u30d3\u30b9\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4e2d\u306eDeploymentConfig
\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u671f\u5f85\u3057\u307e\u3059\u3002 daemonset
- \u30b5\u30fc\u30d3\u30b9\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5185\u306eDaemonset
\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u671f\u5f85\u3057\u307e\u3059\u3002 false
- \u3069\u306e\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3082\u76e3\u8996\u305b\u305a\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u9069\u7528\u3055\u308c\u3001\u30a8\u30e9\u30fc\u3092\u6295\u3052\u306a\u3044\u5834\u5408\u306b\u306e\u307f\u6e80\u8db3\u3057\u307e\u3059\u3002
\u307e\u305f\u3001\u7279\u5b9a\u306e\u74b0\u5883\u306e\u307f\u306b\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3092\u4e0a\u66f8\u304d\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f.lagoon.yml
\u3067\u884c\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#docker-compose-v2-compatibility","title":"Docker Compose v2\u4e92\u63db\u6027","text":"\u30d0\u30b0
\u30ed\u30fc\u30ab\u30eb\u3067Docker Compose V2\u306e\u53e4\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u3068\u3001\u4e00\u90e8\u306e\u65e2\u77e5\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059 - \u3053\u308c\u3089\u306e\u554f\u984c\u306f\u5f8c\u306e\u30ea\u30ea\u30fc\u30b9(v2.17.3\u4ee5\u964d)\u3067\u89e3\u6c7a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30a8\u30e9\u30fc\u306e\u89e3\u6c7a\u7b56\u306f\u901a\u5e38\u3001\u4f7f\u7528\u3057\u3066\u3044\u308bDocker Compose\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u66f4\u65b0\u3059\u308b\u304b(\u307e\u305f\u306f\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b)\u3001\u3042\u308b\u3044\u306f\u4f7f\u7528\u3057\u3066\u3044\u308bDocker Desktop\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u3053\u3068\u3067\u3059\u3002 Docker Desktop\u306e\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u8a73\u3057\u304f\u306f
depends_on\u306e\u30a8\u30e9\u30fc\u3092\u793a\u3059Docker Compose\u51fa\u529bFailed to solve with frontend dockerfile.v0: failed to create LLB definition: pull access denied, repository does not exist or may require authorization\n\n\u307e\u305f\u306f\n\nFailed to solve: drupal9-base-cli: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed`\n
- \u3053\u308c\u3089\u306fDocker Compose v2.13.0\u3067\u89e3\u6c7a\u3055\u308c\u307e\u3059\u3002
- \u3053\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u3001\u30d3\u30eb\u30c9\u304c\u3001\u307e\u3060\u30d3\u30eb\u30c9\u3055\u308c\u3066\u3044\u306a\u3044Docker\u30a4\u30e1\u30fc\u30b8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3088\u3046\u3068\u3057\u305f\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002BuildKit\u306f\u4e26\u5217\u306b\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u3001\u3082\u3057\u3082\u3046\u4e00\u3064\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u7d99\u627f\u3059\u308b\u3082\u306e\u304c\u3042\u308b\u5834\u5408(Drupal\u306eCLI\u306e\u3088\u3046\u306b)\u306f\u3053\u306e\u4e8b\u8c61\u304c\u767a\u751f\u3057\u307e\u3059\u3002
- \u30de\u30eb\u30c1\u30b9\u30c6\u30fc\u30b8\u30d3\u30eb\u30c9\u3068\u3057\u3066\u518d\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001\u30d3\u30eb\u30c9\u5185\u306etarget\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
- \u3059\u3067\u306b\u65b0\u3057\u3044Docker Compose\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30a8\u30e9\u30fc\u306f\u3001docker-container\u30d3\u30eb\u30c9\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092buildx\u3067\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
docker buildx ls
\u304cdocker-container\u30d9\u30fc\u30b9\u306e\u3082\u306e\u3067\u306f\u306a\u304f\u3001docker builder\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u3068\u3057\u3066\u8868\u793a\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002Docker buildx\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u3053\u3061\u3089\u3067\u3059.
volumes_from\u30a8\u30e9\u30fc\u3092\u793a\u3059Docker Compose\u51fa\u529bno such service: container:amazeeio-ssh-agent\n
- \u3053\u306e\u554f\u984c\u306fDocker Compose v2.17.3\u3067\u89e3\u6c7a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
- \u3053\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u30b3\u30f3\u30c6\u30ca\u3078\u306eSSH\u30a2\u30af\u30bb\u30b9\u3092\u63d0\u4f9b\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u304c\u3001\u3042\u306a\u305f\u306eDocker Compose\u30b9\u30bf\u30c3\u30af\u306e\u5916\u90e8\u3067\u5b9f\u884c\u3055\u308c\u3001\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
- \u3042\u306a\u305f\u306e\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u304b\u3089SSH\u30a2\u30af\u30bb\u30b9\u304c\u5fc5\u8981\u306a\u3044\u5834\u5408\u3001
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#buildkit-and-lagoon","title":"BuildKit\u3068Lagoon","text":"BuildKit\u306f\u3001\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u52b9\u7387\u7684\u3067\u8868\u73fe\u529b\u8c4a\u304b\u3067\u7e70\u308a\u8fd4\u3057\u5229\u7528\u53ef\u80fd\u306a\u65b9\u6cd5\u3067\u30d3\u30eb\u30c9\u6210\u679c\u7269\u306b\u5909\u63db\u3059\u308b\u305f\u3081\u306e\u30c4\u30fc\u30eb\u30ad\u30c3\u30c8\u3067\u3059\u3002
Lagoon v2.11.0\u306e\u30ea\u30ea\u30fc\u30b9\u306b\u3088\u308a\u3001Lagoon\u306f\u3088\u308a\u9ad8\u5ea6\u306aBuildKit\u30d9\u30fc\u30b9\u306edocker-compose\u30d3\u30eb\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u74b0\u5883\u3067BuildKit\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u74b0\u5883\u306bDOCKER_BUILDKIT=1
\u3092\u30d3\u30eb\u30c9\u6642\u306e\u5909\u6570\u3068\u3057\u3066\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#docker-compose-errors-in-lagoon-builds","title":"Lagoon\u30d3\u30eb\u30c9\u3067\u306eDocker Compose\u30a8\u30e9\u30fc","text":"Docker Compose\u3067\u4e00\u822c\u7684\u306a\u30d3\u30eb\u30c9\u30a8\u30e9\u30fc\u306e\u89e3\u6c7a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001Lagoon\u30d3\u30eb\u30c9\u30a8\u30e9\u30fc\u30da\u30fc\u30b8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#common-docker-compose-issues","title":"\u3088\u304f\u3042\u308bDocker Compose\u306e\u554f\u984c","text":"\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u4e00\u822c\u7684\u306aDocker Compose\u306e\u30a8\u30e9\u30fc\u3068\u305d\u306e\u5bfe\u51e6\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u3067\u767a\u751f\u3059\u308b\u304b\u3001\u307e\u305f\u306fLagoon\u30d3\u30eb\u30c9\u30a8\u30e9\u30fc\u3068\u8b66\u544a\u3068\u3057\u3066\u767a\u751f\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-basics/docker-compose-yml/#dual-mapping-keys","title":"\u4e8c\u91cd\u30de\u30c3\u30d4\u30f3\u30b0\u30ad\u30fc","text":"\u30de\u30c3\u30d4\u30f3\u30b0\u30ad\u30fc\u306e\u30a8\u30e9\u30fc\u3092\u793a\u3059Docker Compose\u306e\u51fa\u529bERR: yaml: unmarshal errors: line 22: mapping key \"<<\" already defined at line 21\n
Lagoon\u306e\u521d\u671f\u30ea\u30ea\u30fc\u30b9\u3067\u306f\u3001\u30dc\u30ea\u30e5\u30fc\u30e0\u3068\u30e6\u30fc\u30b6\u30fc\u30b3\u30fc\u30c9\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u3001\u30b5\u30fc\u30d3\u30b9\u306bYAML\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u30da\u30a2\u304c\u6dfb\u4ed8\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u3002Docker Compose\u306e\u65b0\u3057\u3044\u30ea\u30ea\u30fc\u30b9\u3067\u306f\u3001\u3053\u308c\u3092\u30a8\u30e9\u30fc\u3068\u3057\u3066\u5831\u544a\u3057\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u4f8b\u304c\u73fe\u5728\u66f4\u65b0\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u306e\u3001\u66f4\u65b0\u304c\u5fc5\u8981\u306a\u53e4\u3044\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
\u3053\u306e\u30a8\u30e9\u30fc\u306f\u3001Docker Compose\u304c\u914d\u5217\u306b\u4f55\u3092\u633f\u5165\u3057\u3066\u3044\u308b\u306e\u304b\u5206\u304b\u3089\u306a\u3044\u305f\u3081\u3001\u91cd\u8907\u3057\u3066\u3044\u308b\u3068\u4eee\u5b9a\u3057\u3066\u767a\u751f\u3057\u307e\u3059\u3002
\u3042\u306a\u305f\u306edocker-compose.yml
\u304c\u3053\u306e(\u307e\u305f\u306f\u985e\u4f3c\u306e)\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u3092\u4e00\u3064\u4ee5\u4e0a\u542b\u3093\u3067\u3044\u308b\u5834\u5408\u3001\u3042\u306a\u305f\u306f\u5f71\u97ff\u3092\u53d7\u3051\u307e\u3059\u3002
\u4e8c\u91cd\u30de\u30c3\u30d4\u30f3\u30b0\u30ad\u30fc\u3092\u542b\u3080Docker Compose\u306e\u30a8\u30e9\u30fc...\n<< : [*default-volumes]\n<< : [*default-user]\n...\n
\u4fee\u6b63\u7248\u3067\u306f\u3001\u4e21\u65b9\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u30921\u3064\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u30ad\u30fc\u306b\u7d71\u5408\u3057\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u7b87\u6240\u3092\u5bfe\u51e6\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
Docker Compose\u306b\u304a\u3051\u308b\u8907\u6570\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u30de\u30c3\u30d4\u30f3\u30b0\u30ad\u30fc\u306e\u6b63\u3057\u3044\u633f\u5165\u65b9\u6cd5...\n<< : [*default-volumes, *default-user]\n...\n
"},{"location":"ja/concepts-basics/lagoon-yml/","title":".lagoon.yml","text":".lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306e\u4e2d\u5fc3\u3068\u306a\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u64cd\u4f5c\u3092\u884c\u3046\u305f\u3081\u306e\u8a2d\u5b9a\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059:
- \u30b5\u30a4\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u30eb\u30fc\u30c8\u3092\u5b9a\u7fa9\u3059\u308b
- \u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b
- \u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b
- SSL\u8a3c\u660e\u66f8\u3092\u8a2d\u5b9a\u3059\u308b
- \u74b0\u5883\u306e\u305f\u3081\u306ecron\u30b8\u30e7\u30d6\u3092\u8ffd\u52a0\u3059\u308b
.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30eb\u30fc\u30c8\u306b\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#_1","title":"\u6c4e\u7528\u7684\u306a\u8a2d\u5b9a","text":""},{"location":"ja/concepts-basics/lagoon-yml/#docker-compose-yaml","title":"docker-compose-yaml
","text":"\u3053\u306e\u8a2d\u5b9a\u306f\u3001\u30d3\u30eb\u30c9\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u3069\u306eDocker Compose YAML\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3079\u304d\u304b\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u30b3\u30f3\u30c6\u30ca\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3079\u304d\u304b\u3092\u628a\u63e1\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3068\u3057\u3066 docker-compose.yml
\u3092\u6307\u3057\u307e\u3059\u304c\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u7279\u5b9a\u306eLagoon Docker Compose YAML\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#environment_variablesgit_sha","title":"environment_variables.git_sha
","text":"\u3053\u306e\u8a2d\u5b9a\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305fGit SHA\u3092\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3053\u308c\u306f\u7121\u52b9\u3067\u3059\u3002\u5024\u3092 true
\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001SHA\u304c\u74b0\u5883\u5909\u6570 LAGOON_GIT_SHA
\u3068\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#routes","title":"\u30eb\u30fc\u30c8","text":"\u30eb\u30fc\u30c8\u306f\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u30b5\u30fc\u30d3\u30b9\u3078\u8ee2\u9001\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059 \u3002\u74b0\u5883\u5185\u306e\u5404\u30b5\u30fc\u30d3\u30b9\u306b\u306f\u30eb\u30fc\u30c8\u304c\u3042\u308a\u3001\u30c9\u30e1\u30a4\u30f3\u540d\u306f\u624b\u52d5\u307e\u305f\u306f\u81ea\u52d5\u3067\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u306e routes
\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u306f\u3001\u3059\u3079\u3066\u306e\u74b0\u5883\u306e\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c8\u306b\u5bfe\u3057\u3066\u9069\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#routesautogenerate","title":"routes.autogenerate
","text":"\u30eb\u30fc\u30c8\u3092\u81ea\u52d5\u7684\u306b\u4f5c\u6210\u3059\u308b\u3088\u3046\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002\u624b\u52d5\u30eb\u30fc\u30c8\u306f\u74b0\u5883\u3054\u3068\u306b\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002
enabled
: \u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u3092\u7121\u52b9\u306b\u3059\u308b\u306b\u306f\u3001false
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306ftrue
\u3067\u3059\u3002 allowPullrequests
: \u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u305f\u3081\u306b enabled: false
\u3092\u4e0a\u66f8\u304d\u3059\u308b\u306b\u306f\u3001true
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002.lagoon.ymlroutes:\nautogenerate:\nenabled: false\nallowPullrequests: true\n
insecure
: HTTP\u63a5\u7d9a\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306fAllow
\u3067\u3059\u3002 Allow
: \u30eb\u30fc\u30c8\u306fHTTP\u3068HTTPS\u306e\u4e21\u65b9\u306b\u5fdc\u7b54\u3057\u307e\u3059\u3002 Redirect
: \u30eb\u30fc\u30c8\u306f\u4efb\u610f\u306eHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092HTTPS\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002
-
prefixes
: \u5404\u74b0\u5883\u306e\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u306e\u30d7\u30ec\u30d5\u30a3\u30af\u30b9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u8a00\u8a9e\u30d7\u30ec\u30d5\u30a3\u30af\u30b9\u30c9\u30e1\u30a4\u30f3\u3084Drupal\u306edomain
\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u305f\u30de\u30eb\u30c1\u30c9\u30e1\u30a4\u30f3\u30b5\u30a4\u30c8\u306a\u3069\u306b\u4fbf\u5229\u3067\u3059\u3002
.lagoon.yml routes:\nautogenerate:\nprefixes:\n- www\n- de\n- fr\n- it\n
"},{"location":"ja/concepts-basics/lagoon-yml/#tasks","title":"\u30bf\u30b9\u30af","text":"\u5b9a\u7fa9\u53ef\u80fd\u306a\u30bf\u30b9\u30af\u306b\u306f\u8907\u6570\u306e\u7a2e\u985e\u304c\u3042\u308a\u3001\u305d\u308c\u3089\u306f\u30d3\u30eb\u30c9\u30d5\u30ed\u30fc\u306e\u4e2d\u306e\u3069\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u5b9f\u884c\u3055\u308c\u308b\u304b\u304c\u7570\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#pre-rollout-tasks-pre_rolloutirun","title":"\u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af - pre_rollout.[i].run
","text":"\u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u6b63\u5e38\u306b\u30d3\u30eb\u30c9\u3055\u308c\u305f\u5f8c\u3001\u304b\u3064\u3001\u4ee5\u4e0b\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u306e\u524d\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3059\u308b\u30bf\u30b9\u30af\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- \u65b0\u898f\u306b\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3067\u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u66f4\u65b0\u3055\u308c\u308b
- \u65e2\u5b58\u306e\u74b0\u5883\u306b\u4ed6\u306e\u5909\u66f4\u304c\u52a0\u3048\u3089\u308c\u308b
\u3053\u306e\u6a5f\u80fd\u3092\u5229\u7528\u3059\u308b\u3068\u3001\u305f\u3068\u3048\u3070\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u66f4\u65b0\u3059\u308b\u524d\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u3092\u4f5c\u6210\u3059\u308b\u306a\u3069\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306e\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002
\u60c5\u5831
\u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u306f\u3001\u66f4\u65b0\u524d\u306e\u65e2\u5b58\u306e\u30dd\u30c3\u30c9\u5185\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u3064\u307e\u308a:
- \u6700\u5f8c\u306e\u30c7\u30d7\u30ed\u30a4\u4ee5\u964d\u306bDockerfile\u306b\u52a0\u3048\u3089\u308c\u305f\u5909\u66f4\u306f\u3001\u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u304c\u5b9f\u884c\u3055\u308c\u308b\u3068\u304d\u306b\u306f\u53cd\u6620\u3055\u308c\u307e\u305b\u3093\u3002
- \u65e2\u5b58\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u306a\u3044\u5834\u5408(\u4f8b\u3048\u3070\u3001\u65b0\u3057\u3044\u74b0\u5883\u306e\u521d\u671f\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u6642\u306a\u3069)\u3001\u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u306f\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#post-rollout-tasks-post_rolloutirun","title":"\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af - post_rollout.[i].run
","text":"\u4ee5\u4e0b\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u306e\u5f8c\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u30bf\u30b9\u30af\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- \u5168\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u6b63\u5e38\u306b\u30d3\u30eb\u30c9\u3055\u308c\u308b
- \u5168\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u65b0\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u3067\u66f4\u65b0\u3055\u308c\u308b
readiness
\u30c1\u30a7\u30c3\u30af\u3092\u901a\u904e\u3057\u3001\u5168\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u7a3c\u50cd\u3059\u308b
\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u306e\u4e00\u822c\u7684\u306a\u4f7f\u7528\u4f8b\u306b\u306f\u3001drush updb
\u3001drush cim
\u306e\u5b9f\u884c\u3084\u3001\u3055\u307e\u3056\u307e\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30a2\u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002
name
- \u540d\u524d\u306f\u3001\u30ed\u30b0\u5185\u306e\u5404\u30bf\u30b9\u30af\u3092\u8b58\u5225\u3059\u308b\u305f\u3081\u306e\u4efb\u610f\u306e\u30e9\u30d9\u30eb\u3067\u3059\u3002
command
- \u3053\u3053\u3067\u306f\u3001\u5b9f\u884c\u3059\u308b\u3079\u304d\u30b3\u30de\u30f3\u30c9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3001\u5404\u30b3\u30f3\u30c6\u30ca\u306eWORKDIR\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002Lagoon\u306e\u30a4\u30e1\u30fc\u30b8\u306e\u5834\u5408\u3001\u3053\u308c\u306f
/app
\u3067\u3059\u3002\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u7279\u5b9a\u306e\u5834\u6240\u306bcd
\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u3092\u5ff5\u982d\u306b\u7f6e\u3044\u3066\u304f\u3060\u3055\u3044\u3002
service
- \u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002Drupal\u306e\u4f8b\u306b\u5f93\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u308c\u306fCLI\u30b3\u30f3\u30c6\u30ca\u306b\u306a\u308a\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u306e\u30b3\u30fc\u30c9\u3001\u30d5\u30a1\u30a4\u30eb\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u304c\u3059\u3079\u3066\u542b\u307e\u308c\u3066\u3044\u308b\u304b\u3089\u3067\u3059\u3002\u901a\u5e38\u3001\u3053\u308c\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
container
- \u30b5\u30fc\u30d3\u30b9\u304c\u8907\u6570\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408(\u4f8b:
nginx-php
)\u3001\u30dd\u30c3\u30c9\u5185\u3067\u63a5\u7d9a\u3059\u308b\u30b3\u30f3\u30c6\u30ca\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059(\u4f8b:nginx
\u30dd\u30c3\u30c9\u5185\u306ephp
\u30b3\u30f3\u30c6\u30ca)\u3002
shell
- \u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u30b7\u30a7\u30eb\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f
sh
\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u304c\u3001\u30b3\u30f3\u30c6\u30ca\u304c\u4ed6\u306e\u30b7\u30a7\u30eb(bash
\u306a\u3069)\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408\u306fsh
\u4ee5\u5916\u306e\u30b7\u30a7\u30eb\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u5185\u3067if/else\u3092\u4f7f\u3063\u305f\u5c0f\u3055\u306abash\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306b\u4fbf\u5229\u3067\u3059\u3002\u8907\u6570\u884c\u306b\u308f\u305f\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u8a18\u8ff0\u3059\u308b\u65b9\u6cd5\u3092\u5b66\u3076\u306b\u306f\u4ee5\u4e0b\u306e\u4f8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
when
- \u30bf\u30b9\u30af\u306e\u6761\u4ef6\u4ed8\u304d\u5b9f\u884c\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u304b\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001true/false\u306b\u8a55\u4fa1\u3055\u308c\u308b\u5f0f\u3067\u3042\u308b\u3053\u3068\u3092\u671f\u5f85\u3055\u308c\u307e\u3059\u3002
\u6ce8: \u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u4e2d\u306bpre/post-rollout\u30bf\u30b9\u30af\u3092\u4e00\u6642\u7684\u306b\u7121\u52b9\u306b\u3057\u305f\u3044\u5834\u5408\u306f\u3001API\u3067\u4ee5\u4e0b\u306e\u74b0\u5883\u5909\u6570\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ec\u30d9\u30eb\u307e\u305f\u306f\u74b0\u5883\u306b\u8a2d\u5b9a\u3057\u307e\u3059\uff08\u74b0\u5883\u5909\u6570\u306e\u8a2d\u5b9a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3053\u3053\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\uff09\u3002
LAGOON_PREROLLOUT_DISABLED=true
LAGOON_POSTROLLOUT_DISABLED=true
"},{"location":"ja/concepts-basics/lagoon-yml/#example-post-rollout-tasks","title":"post-rollout\u30bf\u30b9\u30af\u306e\u4f8b","text":"\u4ee5\u4e0b\u306f\u3044\u304f\u3064\u304b\u306e\u6709\u7528\u306apost-rollout\u30bf\u30b9\u30af\u306e\u4f8b\u3067\u3059\u3002
Drupal\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306b\u306e\u307f\u5b9f\u884c\u3059\u308b\u30bf\u30b9\u30af:
.lagoon.yml- run:\n name: IF no Drupal installed\n command: | # (1)\nif tables=$(drush sqlq \"show tables like 'node';\") && [ -z \"$tables\" ]; then\n#### whatever you like\nfi\nservice: cli\n shell: bash\n
\u30d6\u30e9\u30f3\u30c1\u540d\u306b\u57fa\u3065\u3044\u3066\u5b9f\u884c\u3059\u308b\u30bf\u30b9\u30af:
.lagoon.yml- run:\nname: Different tasks based on branch name\ncommand: |\n### Runs if current branch is not 'production'\nservice: cli\nwhen: LAGOON_GIT_BRANCH != \"production\"\n
\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c:
.lagoon.yml- run:\nname: Run Script\ncommand: './scripts/script.sh'\nservice: cli\n
\u30dd\u30c3\u30c9\u5185\u306e\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u5bfe\u8c61\u306b\u3059\u308b:
.lagoon.yml- run:\nname: show php env variables\ncommand: env\nservice: nginx\ncontainer: php\n
Drupal & Drush 9: \u30de\u30b9\u30bf\u30fc\u74b0\u5883\u304b\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u30d5\u30a1\u30a4\u30eb\u3092\u540c\u671f:
.lagoon.yml- run:\n name: Sync DB and Files from master if we are not on master\n command: |\n# Only if we don't have a database yet\nif tables=$(drush sqlq 'show tables;') && [ -z \"$tables\" ]; then\ndrush sql-sync @lagoon.master @self # (1)\ndrush rsync @lagoon.master:%files @self:%files -- --omit-dir-times --no-perms --no-group --no-owner --chmod=ugo=rwX\n fi\nservice: cli\n when: LAGOON_ENVIRONMENT_TYPE != \"production\"\n
- \u3053\u3053\u3067\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u9069\u3057\u305f\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#backup-retention","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4fdd\u6301\u671f\u9593 ( #backup-retention }","text":""},{"location":"ja/concepts-basics/lagoon-yml/#backup-retentionproductionmonthly","title":"backup-retention.production.monthly
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eproduction\u74b0\u5883\u306e\u6708\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4fdd\u6301\u6570\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
\u3053\u306e\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 0
\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#backup-retentionproductionweekly","title":"backup-retention.production.weekly
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eproduction\u74b0\u5883\u306e\u9031\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4fdd\u6301\u6570\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
\u3053\u306e\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 6
\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#backup-retentionproductiondaily","title":"backup-retention.production.daily
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eproduction\u74b0\u5883\u306e\u65e5\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4fdd\u6301\u6570\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
\u3053\u306e\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 7
\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#backup-retentionproductionhourly","title":"backup-retention.production.hourly
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eproduction\u74b0\u5883\u306e\u6bce\u6642\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4fdd\u6301\u6570\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
\u3053\u306e\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 0
\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#backup-schedule","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb","text":""},{"location":"ja/concepts-basics/lagoon-yml/#backup-scheduleproduction","title":"backup-schedule.production
","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u305f\u3060\u3057\u3001Minute
\u30d6\u30ed\u30c3\u30af\u306f M
\u3067\u306a\u3051\u308c\u3070\u306a\u3089\u305a\u3001\u4ed6\u306e\u5024\u306f Lagoon \u30d3\u30eb\u30c9\u306b\u5931\u6557\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u306f\u3053\u308c\u3089\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u4f55\u5206\u306b\u884c\u3046\u304b\u30e9\u30f3\u30c0\u30e0\u306b\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u30e6\u30fc\u30b6\u30fc\u306f\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306e\u6b8b\u308a\u306e\u90e8\u5206\u3092\u6642\u9593\u5358\u4f4d\u3067\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002
\u3053\u306e\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u30c7\u30d5\u30a9\u30eb\u30c8\u306f M H(22-2) * * *
\u3067\u3059\u3002
\u30bf\u30a4\u30e0\u30be\u30fc\u30f3:
\u30d0\u30c3\u30af\u30a2\u30c3\u30d7 \u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3067\u306f\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u30ed\u30fc\u30ab\u30eb \u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#environments","title":"\u74b0\u5883","text":"\u74b0\u5883\u540d\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u540d\u3084\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u540d\u3068\u4e00\u81f4\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5404\u74b0\u5883\u3067\u7570\u306a\u308b\u8a2d\u5b9a\u3092\u6301\u3064\u3053\u3068\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u306e\u4f8b\u3067\u306f\u3001main
\u3068staging
\u74b0\u5883\u306b\u9069\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#environmentsnameroutes","title":"environments.[name].routes
","text":"\u624b\u52d5\u30eb\u30fc\u30c8\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u3078\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u6307\u793a\u3059\u308b\u305f\u3081\u306b\u74b0\u5883\u3054\u3068\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30c9\u30e1\u30a4\u30f3\u540d\u3067\u3059\u3002\u3059\u3079\u3066\u306e\u74b0\u5883\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u3001\u624b\u52d5\u30eb\u30fc\u30c8\u306f\u901a\u5e38\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u30e1\u30a4\u30f3\u30c9\u30e1\u30a4\u30f3(www.example.com
\u306a\u3069)\u3092\u4f7f\u7528\u3057\u3066\u672c\u756a\u74b0\u5883\u3067\u306e\u307f\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
\u30d2\u30f3\u30c8
Lagoon\u306f\u624b\u52d5\u30eb\u30fc\u30c8\u3092\u5236\u5fa1\u3067\u304d\u306a\u3044\u306e\u3067\u3001DNS\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3067DNS\u30ec\u30b3\u30fc\u30c9\u304c\u9069\u5207\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u81ea\u52d5\u30eb\u30fc\u30c8\u3092\u6307\u3059CNAME
\u30ec\u30b3\u30fc\u30c9\u3092\u8a2d\u5b9a\u3067\u304d\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
\u74b0\u5883\u306e\u6b21\u306e\u6700\u521d\u306e\u8981\u7d20\u306f\u30bf\u30fc\u30b2\u30c3\u30c8\u30b5\u30fc\u30d3\u30b9\u3067\u3042\u308a\u3001\u79c1\u305f\u3061\u306e\u4f8b\u3067\u306fnginx
\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u306f\u79c1\u305f\u3061\u304c\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u5165\u3063\u3066\u304f\u308b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u308b\u304b\u3092\u8b58\u5225\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002
\u6700\u3082\u5358\u7d14\u306a\u30eb\u30fc\u30c8\u306f example.com
\u3067\u3001\u3053\u308c\u306f\u79c1\u305f\u3061\u306e\u4f8b\u306e.lagoon.yml
\u3067\u78ba\u8a8d \u3067\u304d\u307e\u3059 - \u8ffd\u52a0\u306e\u8a2d\u5b9a\u304c\u306a\u3044\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u3042\u306a\u305f\u304c\u30eb\u30fc\u30c8\u306b\u5bfe\u3057\u3066Let's Encrypt\u8a3c\u660e\u66f8\u3092\u671b\u3093\u3067\u3044\u308b\u3068\u4eee\u5b9a\u3057\u3001HTTPS\u304b\u3089HTTP\u3078\u306e\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u4ee5\u4e0b\u306e\"www.example.com\"
\u306e\u4f8b\u3067\u306f\u3001\u3055\u3089\u306b3\u3064\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059(\u307e\u305f\u3001\u30eb\u30fc\u30c8\u306e\u7d42\u308f\u308a\u306b\u3042\u308b:
\u3068\u3001\u30eb\u30fc\u30c8\u304c\"
\u3067\u56f2\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u3053\u308c\u306f\u91cd\u8981\u3067\u3059\uff01):
.lagoon.yml- \"www.example.com\":\ntls-acme: true\ninsecure: Redirect\nhstsEnabled: true\n
"},{"location":"ja/concepts-basics/lagoon-yml/#ssl-configuration-tls-acme","title":"SSL\u8a2d\u5b9a tls-acme
","text":"\u8b66\u544a
tls-acme: true
\u304b\u3089tls-acme: false
\u306b\u5207\u308a\u66ff\u3048\u308b\u3068\u3001\u3053\u306e\u30eb\u30fc\u30c8\u306b\u5bfe\u3057\u3066\u4ee5\u524d\u306b\u751f\u6210\u3055\u308c\u305f\u8a3c\u660e\u66f8\u304c\u3059\u3079\u3066\u524a\u9664\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u5916\u90e8\u306eCDN\u3092\u4f7f\u7528\u3057\u3066\u3044\u3066\u8a3c\u660e\u66f8\u306e\u30d4\u30f3\u7559\u3081\u3092\u884c\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u4e88\u671f\u3057\u306a\u3044\u6319\u52d5\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
tls-acme
:Let's Encrypt\u3092\u901a\u3058\u305f\u81ea\u52d5TLS\u8a3c\u660e\u66f8\u751f\u6210\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306ftrue
\u3067\u3001\u81ea\u52d5\u8a3c\u660e\u66f8\u3092\u7121\u52b9\u306b\u3059\u308b\u306b\u306ffalse
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 insecure
:HTTP\u63a5\u7d9a\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306fAllow
\u3067\u3059\u3002 Allow
:\u30eb\u30fc\u30c8\u306fHTTP\u3068HTTPS\u306b\u5fdc\u7b54\u3057\u307e\u3059\u3002 Redirect
:\u30eb\u30fc\u30c8\u306f\u3059\u3079\u3066\u306eHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092HTTPS\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002
hstsEnabled
: Strict-Transport-Security
\u30d8\u30c3\u30c0\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f false
\u3067\u3059\u3002 hstsMaxAge
: max-age
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 31536000
(1 \u5e74)\u3067\u3059\u3002 hstsPreload
: preload
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f false
\u3067\u3059\u3002 hstsIncludeSubdomains
: includeSubDomains
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306f false
\u3067\u3059\u3002
\u60c5\u5831
\u8a3c\u660e\u66f8\u8a8d\u8a3c\u6a5f\u95a2(CA)\u306b\u3088\u3063\u3066\u7f72\u540d\u3055\u308c\u305fSSL\u8a3c\u660e\u66f8\u304b\u3089Let's Encrypt\u8a3c\u660e\u66f8\u306b\u5207\u308a\u66ff\u3048\u308b\u4e88\u5b9a\u306e\u5834\u5408\u3001\u79fb\u884c\u3092\u76e3\u8996\u3059\u308b\u305f\u3081\u306bLagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#monitoring-a-specific-path","title":"\u7279\u5b9a\u306e\u30d1\u30b9\u306e\u76e3\u8996","text":"UptimeRobot\u304c\u3042\u306a\u305f\u306e\u30af\u30e9\u30b9\u30bf\u30fc(Kubernetes\u307e\u305f\u306fOpenShift)\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001Lagoon\u306f\u5404\u30eb\u30fc\u30c8/\u30a4\u30f3\u30b0\u30ec\u30b9\u306bannotation\u3092\u8a2d\u5b9a\u3057\u3066stakater/IngressControllerMonitor
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u306f\u30eb\u30fc\u30c8\u306e\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u3092\u76e3\u8996\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u7279\u5b9a\u306e\u30eb\u30fc\u30c8\u3092\u76e3\u8996\u3057\u305f\u3044\u5834\u5408\u3001\u30eb\u30fc\u30c8\u4ed5\u69d8\u306bmonitoring-path
\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3053\u308c\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u307e\u3059\u3002\u4e00\u822c\u7684\u306a\u4f7f\u7528\u6cd5\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\u3092\u30d0\u30a4\u30d1\u30b9\u3059\u308b\u76e3\u8996\u7528\u306e\u30d1\u30b9\u3092\u8a2d\u5b9a\u3057\u3001\u30b5\u30a4\u30c8\u306e\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306e\u76e3\u8996\u3092\u53ef\u80fd\u306b\u3059\u308b\u3053\u3068\u3067\u3059\u3002
.lagoon.yml- \"www.example.com\":\nmonitoring-path: \"/bypass-cache\"\n
"},{"location":"ja/concepts-basics/lagoon-yml/#ingress-annotations","title":"Ingress annotations","text":"\u8b66\u544a
\u30eb\u30fc\u30c8/Ingress\u306eannotations\u306f\u3001nginx-ingress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u5b9f\u884c\u3059\u308b\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u307f\u304c\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306fLagoon\u7ba1\u7406\u8005\u306b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
annotations
\u306f\u3001nginx-ingress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308bannotations\u306eYAML\u30de\u30c3\u30d7\u3067\u3059\u3002\u3053\u308c\u306f\u7279\u306b\u3001\u7c21\u5358\u306a\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3084\u4ed6\u306e\u8a2d\u5b9a\u306b\u4fbf\u5229\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#restrictions","title":"\u5236\u9650\u4e8b\u9805","text":"Lagoon\u3067\u306f\u3001\u4e00\u90e8\u306eannotations\u304c\u7981\u6b62\u3055\u308c\u3066\u3044\u308b\u304b\u3001\u307e\u305f\u306f\u90e8\u5206\u7684\u306b\u5236\u9650\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u4ee5\u4e0b\u306e\u8868\u306f\u3001\u3053\u308c\u3089\u306e\u30eb\u30fc\u30eb\u3092\u8aac\u660e\u3057\u3066\u3044\u307e\u3059\u3002
\u3042\u306a\u305f\u306e.lagoon.yml
\u304c\u3053\u308c\u3089\u306eannotations\u306e\u3044\u305a\u308c\u304b\u3092\u542b\u3093\u3067\u3044\u308b\u5834\u5408\u3001\u30d3\u30eb\u30c9\u304c\u5931\u6557\u3059\u308b\u539f\u56e0\u3068\u306a\u308a\u307e\u3059\u3002
\u6ce8\u91c8 \u30ce\u30fc\u30c8 nginx.ingress.kubernetes.io/auth-snippet
\u7981\u6b62 nginx.ingress.kubernetes.io/configuration-snippet
rewrite
\u3001add_header
\u3001set_real_ip
\u3001\u304a\u3088\u3073 more_set_headers
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306b\u5236\u9650\u3055\u308c\u3066\u3044\u307e\u3059\u3002 nginx.ingress.kubernetes.io/modsecurity-snippet
\u7981\u6b62 nginx.ingress.kubernetes.io/server-snippet
rewrite
\u3001add_header
\u3001set_real_ip
\u3001\u304a\u3088\u3073 more_set_headers
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\u306b\u5236\u9650\u3055\u308c\u3066\u3044\u307e\u3059\u3002 nginx.ingress.kubernetes.io/stream-snippet
\u7981\u6b62 nginx.ingress.kubernetes.io/use-regex
\u7981\u6b62"},{"location":"ja/concepts-basics/lagoon-yml/#ingress-annotations-redirects","title":"Ingress\u306eannotations\u30ea\u30c0\u30a4\u30ec\u30af\u30c8","text":"\u3053\u306e\u4f8b\u3067\u306f\u3001example.ch
\u3078\u306e\u4efb\u610f\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u3001\u30d5\u30a9\u30eb\u30c0\u30fc\u3084\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4fdd\u6301\u3057\u305f\u307e\u307e https://www.example.ch
\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3055\u308c\u307e\u3059(example.com/folder?query
-> https://www.example.ch/folder?query
)\u3002
.lagoon.yml- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\n
Lagoon\u306b\u30db\u30b9\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u4ed6\u306e\u4efb\u610f\u306eURL\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002 \u4ee5\u4e0b\u306fexample.de
\u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092https://www.google.com
\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002
.lagoon.yml- \"example.de\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.google.com\n
"},{"location":"ja/concepts-basics/lagoon-yml/#trusted-reverse-proxies","title":"\u4fe1\u983c\u3055\u308c\u308b\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7","text":"\u8b66\u544a
Kubernetes\u306f\u5358\u4e00\u306enginx.ingress.kubernetes.io/server-snippet
\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u307f\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\u975e\u672c\u756a\u74b0\u5883\u306e\u30eb\u30fc\u30c8\u3067\u3053\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001add_header X-Robots-Tag \"noindex, nofollow\";
\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3082\u30b5\u30fc\u30d0\u30fc\u30b9\u30cb\u30da\u30c3\u30c8\u306e\u4e00\u90e8\u3068\u3057\u3066\u542b\u3081\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u3001\u958b\u767a\u74b0\u5883\u3067\u30ed\u30dc\u30c3\u30c8\u304c\u30af\u30ed\u30fc\u30eb\u3059\u308b\u306e\u3092\u9632\u3050\u305f\u3081\u306b\u5fc5\u8981\u3067\u3059\u3002ingress\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u958b\u767a\u74b0\u5883\u3067\u3053\u308c\u3092\u9632\u3050\u305f\u3081\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30c7\u30d5\u30a9\u30eb\u30c8\u306eserver-snippet\u306f\u3001.lagoon.yml
\u306b\u8a2d\u5b9a\u3055\u308c\u305fserver-snippets
\u306b\u3088\u3063\u3066\u4e0a\u66f8\u304d\u3055\u308c\u307e\u3059\u3002
\u4e00\u90e8\u306e\u8a2d\u5b9a\u3067\u306f\u3001\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7(CDN\u306a\u3069)\u304cKubernetes\u30af\u30e9\u30b9\u30bf\u306e\u524d\u306b\u914d\u7f6e\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u3067\u306f\u3001\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u306eIP\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306eREMOTE_ADDR
HTTP_X_REAL_IP
HTTP_X_FORWARDED_FOR
\u30d8\u30c3\u30c0\u30fc\u30d5\u30a3\u30fc\u30eb\u30c9\u3068\u3057\u3066\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u30ea\u30af\u30a8\u30b9\u30bf\u30fc\u306e\u30aa\u30ea\u30b8\u30ca\u30ebIP\u306fHTTP_X_ORIGINAL_FORWARDED_FOR
\u30d8\u30c3\u30c0\u30fc\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002
\u3042\u306a\u305f\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u30ea\u30af\u30a8\u30b9\u30c8IP\u3092\u5fc5\u8981\u3068\u3059\u308b\u5834\u5408\u3001 REMOTE_ADDR
HTTP_X_FORWARDED_FOR
HTTP_X_REAL_IP
\u30d8\u30c3\u30c0\u30fc\u306b\u5143\u306eIP\u304c\u8868\u793a\u3055\u308c\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001\u4fe1\u983c\u3059\u308b\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u306eIP\u3092\u30a4\u30f3\u30b0\u30ec\u30b9\u306b\u4f1d\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
.lagoon.yml- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/server-snippet: |\nset_real_ip_from 1.2.3.4/32;\n
\u3053\u306e\u4f8b\u3067\u306f\u3001CIDR 1.2.3.4/32
(\u3053\u306e\u5834\u5408\u306fIP 1.2.3.4
)\u3092\u4fe1\u983c\u3057\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001IP 1.2.3.4
\u304b\u3089Kubernetes\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u9001\u4fe1\u3055\u308c\u308b\u3068\u3001X-Forwarded-For
\u30d8\u30c3\u30c0\u30fc\u304c\u5206\u6790\u3055\u308c\u3001\u305d\u306e\u5185\u5bb9\u304c REMOTE_ADDR
HTTP_X_REAL_IP
HTTP_X_FORWARDED_FOR
\u30d8\u30c3\u30c0\u30fc\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#environmentsnametypes","title":"Environments.[name].types
","text":"Lagoon\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089lagoon.type
\u30e9\u30d9\u30eb\u3092\u8abf\u3079\u3066\u3001\u3069\u306e\u7a2e\u985e\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3079\u304d\u304b\u3092\u5b66\u7fd2\u3057\u307e\u3059(docker-compose.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u5168\u74b0\u5883\u3067\u306f\u306a\u304f\u3001\u5358\u4e00\u306e\u74b0\u5883\u3060\u3051\u3067type\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3082\u3057\u3001\u30b5\u30fc\u30d3\u30b9\u30d6\u30ed\u30fc\u30ab\u30fc/\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306b\u5171\u6709\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u305b\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u958b\u767a\u74b0\u5883\u3067\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eMariaDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002
service-name: service-type
service-name
\u306f\u3001docker-compose.yml
\u304b\u3089\u4e0a\u66f8\u304d\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3067\u3059 service-type
\u306f\u3001\u4e0a\u66f8\u304d\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3067\u3059
MariaDB_Galera\u306e\u8a2d\u5b9a\u4f8b:
.lagoon.ymlenvironments:\ndevelop:\ntypes:\nmariadb: mariadb-single\n
"},{"location":"ja/concepts-basics/lagoon-yml/#environmentsnametemplates","title":"environments.[name].templates
","text":"Lagoon\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089lagoon.template
\u30e9\u30d9\u30eb\u3092\u8abf\u3079\u3066\u3001\u30b5\u30fc\u30d3\u30b9\u304c\u30ab\u30b9\u30bf\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u5fc5\u8981\u3068\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059(docker-compose.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u306f\u306a\u304f\u3001\u7279\u5b9a\u306e\u74b0\u5883\u3060\u3051\u3067\u4e0a\u66f8\u304d\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059:
service-name: template-file
service-name
\u306f\u3001docker-compose.yml
\u304b\u3089\u4e0a\u66f8\u304d\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3067\u3059\u3002 template-file
\u306f\u3001\u3053\u306e\u74b0\u5883\u3067\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u4f7f\u7528\u3059\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30d1\u30b9\u3068\u540d\u524d\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#example-template-override","title":"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4e0a\u66f8\u304d\u306e\u4f8b","text":".lagoon.ymlenvironments:\nmain:\ntemplates:\nmariadb: mariadb.main.deployment.yml\n
"},{"location":"ja/concepts-basics/lagoon-yml/#environments-name-rollouts","title":"environments.[name].rollouts
","text":"Lagoon\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9 lagoon.rollout
\u30e9\u30d9\u30eb\u3092docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8abf\u3079\u3066\u3001\u30b5\u30fc\u30d3\u30b9\u304c\u7279\u5225\u306a\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30a4\u30d7\u3092\u5fc5\u8981\u3068\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059(docker-compose.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u7279\u306b\u74b0\u5883\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30bf\u30a4\u30d7\u3092\u4e0a\u66f8\u304d\u3057\u305f\u5834\u5408\u306b\u306f\u3001\u5358\u4e00\u306e\u74b0\u5883\u3060\u3051\u3067\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30a4\u30d7\u3092\u4e0a\u66f8\u304d\u3057\u305f\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002
service-name: rollout-type
service-name
\u306f\u3001\u4e0a\u66f8\u304d\u3057\u305f\u3044docker-compose.yml
\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3067\u3059\u3002 rollout-type
\u306f\u3001\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u306e\u30bf\u30a4\u30d7\u3067\u3059\u3002\u53ef\u80fd\u306a\u5024\u306b\u3064\u3044\u3066\u306f\u3001docker-compose.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#custom-rollout-type-example","title":"\u30ab\u30b9\u30bf\u30e0\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30a4\u30d7\u306e\u4f8b","text":".lagoon.ymlenvironments:\nmain:\nrollouts:\nmariadb: statefulset\n
"},{"location":"ja/concepts-basics/lagoon-yml/#environmentsnameautogenerateroutes","title":"environments.[name].autogenerateRoutes
","text":"\u30eb\u30fc\u30c8\u306e\u81ea\u52d5\u751f\u6210\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3067\u3082\u3001\u74b0\u5883\u3054\u3068\u306b\u81ea\u52d5\u751f\u6210\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
.lagoon.ymlroutes:\nautogenerate:\nenabled: false\nenvironments:\ndevelop:\nautogenerateRoutes: true\n
"},{"location":"ja/concepts-basics/lagoon-yml/#environmentsnamecronjobs","title":"environments.[name].cronjobs
","text":"Cron\u30b8\u30e7\u30d6\u306f\u3001\u901a\u5e38\u3001\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u540c\u3058\u3082\u306e\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u671b\u307e\u3057\u304f\u306a\u3044\u305f\u3081\u3001\u5404\u74b0\u5883\u3067\u660e\u793a\u7684\u306b\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5b9a\u7fa9\u3057\u305f\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u306b\u3088\u308a\u3001Cron\u30b8\u30e7\u30d6\u306fKubernetes\u30cd\u30a4\u30c6\u30a3\u30d6\u306eCronJob
\u3068\u3057\u3066\u3001\u307e\u305f\u306f\u5b9a\u7fa9\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u306ecrontab\u3092\u4ecb\u3057\u305fin-pod cron\u30b8\u30e7\u30d6\u3068\u3057\u3066\u5b9f\u884c\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#cron-job-example","title":"Cron\u30b8\u30e7\u30d6\u306e\u4f8b","text":".lagoon.ymlcronjobs:\n- name: Hourly Drupal Cron\nschedule: \"M * * * *\" # 1\u6642\u9593\u3054\u3068, \u4f55\u5206\u306a\u306e\u304b\u306f\u30e9\u30f3\u30c0\u30e0.\ncommand: drush cron\nservice: cli\n- name: Nightly Drupal Cron\nschedule: \"M 0 * * *\" # 1\u65e5\u3054\u3068, \u4f55\u5206\u306a\u306e\u304b\u306f\u300100:00\u304b\u308900:59\u306e\u9593\u306e\u30e9\u30f3\u30c0\u30e0.\ncommand: drush cron\nservice: cli\n
name
: \u4ed6\u306ecron\u30b8\u30e7\u30d6\u3068\u533a\u5225\u3057\u3001\u76ee\u7684\u3092\u7279\u5b9a\u3059\u308b\u305f\u3081\u306e\u4efb\u610f\u306e\u540d\u524d -
schedule
: cron\u30b8\u30e7\u30d6\u306e\u5b9f\u884c\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3002Lagoon\u306f\u3001crontab\u5f62\u5f0f\u306e\u62e1\u5f35\u7248\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u69cb\u6587\u304c\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001crontab generator\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u5206\u306b
M
\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001cron\u30b8\u30e7\u30d6\u306f \u30e9\u30f3\u30c0\u30e0\u306a\u5206(\u6bce\u6642\u9593\u540c\u3058\u5206)\u306b1\u6642\u9593\u3054\u3068\u306b\u5b9f\u884c\u3059\u308b\u304b\u3001M/15
\u3092\u6307\u5b9a\u3057\u306615\u5206\u3054\u3068\u306b\u5b9f\u884c\u3059\u308b\u304c\u3001\u6642\u9593\u304b\u3089\u306e\u30e9\u30f3\u30c0\u30e0\u306a\u30aa\u30d5\u30bb\u30c3\u30c8(6,21,36,51
\u306e\u3088\u3046\u306a)\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066cron\u30b8\u30e7\u30d6\u3092\u5206\u6563\u3055\u305b\u308b\u3053\u3068\u306f\u3001\u3059\u3079\u3066\u306e\u30b8\u30e7\u30d6\u3092\u52060
\u3067\u4e00\u6589\u306b\u5b9f\u884c\u3059\u308b\u3088\u308a\u3082\u826f\u3044\u65b9\u6cd5\u3067\u3059\u3002 H
\u3092\u6642\u9593\u306b\u6307\u5b9a\u3059\u308b\u3068\u3001cron\u30b8\u30e7\u30d6\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u6642\u9593(\u6bce\u65e5\u540c\u3058\u6642\u9593)\u306b1\u65e51\u56de\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u307e\u305f\u3001H(2-4)
\u3092\u6307\u5b9a\u3059\u308b\u3068\u30012\u6642\u304b\u30894\u6642\u306e\u9593\u306b1\u65e51\u56de\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002
\u30bf\u30a4\u30e0\u30be\u30fc\u30f3:
- cron\u30b8\u30e7\u30d6\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u306fUTC\u3067\u3059\u3002
- \u30cd\u30a4\u30c6\u30a3\u30d6\u306ecron\u30b8\u30e7\u30d6\u306f\u30ce\u30fc\u30c9\u306e\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528\u3057\u3001\u305d\u308c\u306fUTC\u3067\u3059\u3002
- In-pod\u306ecron\u30b8\u30e7\u30d6\u306f\u5b9a\u7fa9\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528\u3057\u3001UTC\u4ee5\u5916\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
command
:\u5b9f\u884c\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u30b5\u30fc\u30d3\u30b9\u306eWORKDIR
\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002Lagoon\u30a4\u30e1\u30fc\u30b8\u306e\u5834\u5408\u3001\u3053\u308c\u306f/app
\u3067\u3059\u3002
\u8b66\u544a
Cron\u30b8\u30e7\u30d6\u306f\u3001crontab\u3092\u4ecb\u3057\u3066Pod\u5185\u3067\u5b9f\u884c\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u8907\u6570\u884c\u306e\u30b3\u30de\u30f3\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u8907\u96d1\u306a\u307e\u305f\u306f\u8907\u6570\u884c\u306ecron\u30b3\u30de\u30f3\u30c9\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001\u30b3\u30de\u30f3\u30c9\u3068\u3057\u3066\u4f7f\u7528\u53ef\u80fd\u306a\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u7528\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30d7\u30ea\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u307e\u305f\u306f\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8 \u30bf\u30b9\u30af \u304c\u6a5f\u80fd\u3059\u308b\u304b\u3069\u3046\u304b\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u5371\u967a
Cron\u30b8\u30e7\u30d6\u306fKubernetes\u306e\u30dd\u30c3\u30c9\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u304c\u3001\u30dd\u30c3\u30c9\u306e\u518d\u30b9\u30b1\u30b8\u30e5\u30fc\u30ea\u30f3\u30b0\u306b\u3088\u308a\u4e2d\u65ad\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u305d\u306e\u305f\u3081\u3001cron\u30b8\u30e7\u30d6\u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u306f\u3001\u6b21\u306ecron\u30a4\u30f3\u30bf\u30fc\u30d0\u30eb\u3067\u30b3\u30de\u30f3\u30c9\u3092\u5b89\u5168\u306b\u4e2d\u65ad\u3057\u3001\u518d\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
service
:\u30b3\u30de\u30f3\u30c9\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u5b9f\u884c\u3059\u308b\u304b\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3053\u308c\u306fcli
\u30b5\u30fc\u30d3\u30b9\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#polysite","title":"\u30dd\u30ea\u30b5\u30a4\u30c8 { #polysite )","text":"Lagoon\u3067\u306f\u3001\u540c\u3058Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8907\u6570\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u3053\u308c\u3092\u30dd\u30ea\u30b5\u30a4\u30c8\u3068\u547c\u3073\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u540c\u3058\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u3092\u5b9f\u884c\u3057\u306a\u304c\u3089\u3001\u7570\u306a\u308b\u72ec\u7acb\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u6c38\u7d9a\u7684\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u8a31\u53ef\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 .lagoon.yml
\u3067\u306f\u3001\u73fe\u5728\u3001\u30dd\u30ea\u30b5\u30a4\u30c8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u305f\u3081\u306e\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306e\u307f\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u6a19\u6e96\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u306e\u4e3b\u306a\u9055\u3044\u306f\u3001environments
\u304c\u4e8c\u6b21\u5143\u8981\u7d20\u3068\u306a\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u304c\u6700\u4e0a\u4f4d\u8981\u7d20\u3068\u306a\u308b\u3053\u3068\u3067\u3059\u3002
\u3053\u308c\u3092\u5229\u7528\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u3092\u8e0f\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
- Lagoon\u306b2\u3064(\u4ee5\u4e0a)\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001\u305d\u308c\u305e\u308c\u306b\u540c\u3058Git URL\u3068\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u30d6\u30e9\u30f3\u30c1\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3042\u306a\u305f\u306e.lagoon.yml\u306b\u5f93\u3063\u3066\u547d\u540d\u3055\u308c\u307e\u3059(\u4f8b:
poly-project1
\u3068 poly-project2
) - \u5404\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
- (\u3082\u3057\u5fc5\u8981\u306a\u3089)\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u3092\u8a2d\u5b9a\u3057\u307e\u3059 - \u305d\u306e\u5f8c\u3001\u30d7\u30c3\u30b7\u30e5/\u30c7\u30d7\u30ed\u30a4\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u30d7\u30c3\u30b7\u30e5\u306f\u3001\u305d\u306eGit URL\u306b\u5bfe\u3059\u308b\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/\u30d6\u30e9\u30f3\u30c1\u3092\u540c\u6642\u306b\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#polysite-example","title":"Polysite\u306e\u4f8b","text":".lagoon.ymlpoly-project1:\nenvironments:\nmain:\nroutes:\n- nginx:\n- project1.com\npoly-project2:\nenvironments:\nmain:\nroutes:\n- nginx:\n- project2.com\n
"},{"location":"ja/concepts-basics/lagoon-yml/#specials","title":"\u7279\u5225\u306a\u9805\u76ee","text":""},{"location":"ja/concepts-basics/lagoon-yml/#api","title":"api
","text":"\u60c5\u5831 amazee.io\u306b\u30db\u30b9\u30c8\u3055\u308c\u305fLagoon\u3067\u76f4\u63a5\u52d5\u4f5c\u3059\u308b\u5834\u5408\u3001\u3053\u306e\u30ad\u30fc\u306f\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
api
\u30ad\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Lagoon CLI\u3068drush
\u304cLagoon GraphQL API\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u5225\u306eURL\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u30b9\u30ad\u30fc\u30e0\u4ed8\u304d\u306e\u5b8c\u5168\u306aURL\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b:http://localhost:3000
\u3053\u308c\u306f\u901a\u5e38\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001Lagoon\u306e\u7ba1\u7406\u8005\u304c\u305d\u3046\u3059\u308b\u3088\u3046\u6307\u793a\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#ssh","title":"ssh
","text":"\u60c5\u5831 amazee.io\u306b\u30db\u30b9\u30c8\u3055\u308c\u305fLagoon\u3067\u76f4\u63a5\u52d5\u4f5c\u3059\u308b\u5834\u5408\u3001\u3053\u306e\u30ad\u30fc\u306f\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
ssh
\u30ad\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Lagoon CLI\u3068drush
\u304cLagoon\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u5225\u306eSSH\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u30b3\u30ed\u30f3\u3067\u533a\u5207\u3089\u308c\u305f\u30db\u30b9\u30c8\u540d\u3068\u30dd\u30fc\u30c8\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b:localhost:2020
\u3053\u308c\u306f\u901a\u5e38\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001Lagoon\u306e\u7ba1\u7406\u8005\u304c\u305d\u3046\u3059\u308b\u3088\u3046\u6307\u793a\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#container-registries","title":"container-registries
","text":"container-registries
\u30d6\u30ed\u30c3\u30af\u3067\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u307e\u305f\u306f\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u306a\u30a4\u30e1\u30fc\u30b8\u3092\u30d7\u30eb\u3059\u308b\u305f\u3081\u306e\u72ec\u81ea\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001username
\u3001password
\u3001\u304a\u3088\u3073\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u30ec\u30b8\u30b9\u30c8\u30ea\u306e url
\u304c\u5fc5\u8981\u3067\u3059\u3002YAML\u3067 url
\u3092\u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067Docker Hub\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u30a8\u30f3\u30c8\u30ea\u306b\u8aac\u660e\u3092\u8ffd\u52a0\u3057\u3066\u3001\u60c5\u5831\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u3044\u304f\u3064\u304b\u306e\u4f8b\u3092\u4ee5\u4e0b\u306b\u793a\u3057\u307e\u3059
\u30ec\u30b8\u30b9\u30c8\u30ea\u30e6\u30fc\u30b6\u30fc\u306b\u4f7f\u7528\u3059\u308b\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u306f2\u3064\u3042\u308a\u307e\u3059\u3002
- API\u3067\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u5b9a\u7fa9\u3059\u308b
- .lagoon.yml\u30d5\u30a1\u30a4\u30eb\u306b\u30cf\u30fc\u30c9\u30b3\u30fc\u30c9\u3059\u308b\uff08\u305f\u3060\u3057\u3001\u3053\u308c\u306f\u63a8\u5968\u3057\u307e\u305b\u3093\uff09
"},{"location":"ja/concepts-basics/lagoon-yml/#environment-variables-method","title":"\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5","text":"\u307e\u305a\u3001.lagoon.yml\u306b\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u30e6\u30fc\u30b6\u30fc\u540d\u3084\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30ab\u30b9\u30bf\u30e0\u30ec\u30b8\u30b9\u30c8\u30ea\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3067\u3082\u3001URL\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u6b21\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3057\u307e\u3059:
.lagoon.ymlcontainer-registries:\ndocker-hub:\ndescription: \"\u30c7\u30d5\u30a9\u30eb\u30c8\u306edocker.io\u30ec\u30b8\u30b9\u30c8\u30ea\u7528\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u74b0\u5883\u5909\u6570\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\"\nmy-custom-registry:\ndescription: \"\u30ab\u30b9\u30bf\u30e0\u30ec\u30b8\u30b9\u30c8\u30ea\u7528\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u74b0\u5883\u5909\u6570\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\"\nurl: my.own.registry.com\nanother-custom-registry:\ndescription: \"\u4ed6\u306e\u30ec\u30b8\u30b9\u30c8\u30ea\u7528\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u74b0\u5883\u5909\u6570\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\"\nusername: myotheruser\nurl: my.other.registry.com\n
.lagoon.yml\u306b\u30e6\u30fc\u30b6\u30fc\u540d\u3092\u5b9a\u7fa9\u3059\u308b\u5834\u5408\u3001\u95a2\u9023\u3059\u308b\u5909\u6570\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305f\u3060\u3057\u3001\u5909\u6570\u3092\u8ffd\u52a0\u3059\u308b\u5834\u5408\u3001\u305d\u306e\u5909\u6570\u306e\u5024\u304c\u512a\u5148\u3055\u308c\u307e\u3059\u3002
\u6b21\u306b\u3001Lagoon API\u3067container_registry
\u30bf\u30a4\u30d7\u306e\u74b0\u5883\u5909\u6570\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
- lagoon add variable -p <\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d> -N <\u30ec\u30b8\u30b9\u30c8\u30ea\u30e6\u30fc\u30b6\u30fc\u306e\u5909\u6570\u540d> -V <\u30e6\u30fc\u30b6\u30fc> -S container_registry
- lagoon add variable -p <\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d> -N <\u30ec\u30b8\u30b9\u30c8\u30ea\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5909\u6570\u540d> -V <\u30d1\u30b9\u30ef\u30fc\u30c9> -S container_registry
- (\u8a73\u3057\u304f\u306f\u74b0\u5883\u5909\u6570\u3092\u53c2\u7167)
\u5909\u6570\u306e\u540d\u524d\u306f.lagoon.yml\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30ec\u30b8\u30b9\u30c8\u30ea\u306e\u540d\u524d\u3068\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6b21\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\uff1a
- \u5927\u6587\u5b57\u3067\u8a18\u8ff0\u3059\u308b
- \u30cf\u30a4\u30d5\u30f3\uff08-\uff09\u3092\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\uff08_\uff09\u306b\u7f6e\u304d\u63db\u3048\u308b
- \u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306bREGISTRY_\u3092\u4ed8\u3051\u308b
- \u30b5\u30d5\u30a3\u30c3\u30af\u30b9\u306b_USERNAME\u307e\u305f\u306f_PASSWORD\u3092\u4ed8\u3051\u308b
\u3044\u304f\u3064\u304b\u306e\u4f8b\u3092\u793a\u3057\u307e\u3059\uff1a
dockerhub
\u306fREGISTRY_DOCKERHUB_USERNAME
\u304a\u3088\u3073REGISTRY_DOCKERHUB_PASSWORD
\u306b\u306a\u308a\u307e\u3059\u3002 docker-hub
\u306fREGISTRY_DOCKER_HUB_USERNAME
\u304a\u3088\u3073REGISTRY_DOCKER_HUB_PASSWORD
\u306b\u306a\u308a\u307e\u3059\u3002 my-custom-registry
\u306fREGISTRY_MY_CUSTOM_REGISTRY_USERNAME
\u304a\u3088\u3073REGISTRY_MY_CUSTOM_REGISTRY_PASSWORD
\u306b\u306a\u308a\u307e\u3059\u3002 - \u30cf\u30a4\u30d5\u30f3\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u5c0f\u6587\u5b57\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\uff08\u4f8b\uff1a
REGISTRY_dockerhub_USERNAME
\uff09\u3082\u52d5\u4f5c\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u5e38\u306b\u5927\u6587\u5b57\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u512a\u5148\u3055\u308c\u307e\u3059\u3002
Legacy method of defining registry password \u4ee5\u524d\u306f\u3001\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3057\u305f\u3002\u3053\u306e\u5834\u5408\u3001\u5909\u6570\u540d\u306f.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u6b21\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3055\u308c\u307e\u3059\uff1a .lagoon.yml
container-registries:\ndocker-hub:\nusername: dockerhubuser\npassword: MY_DOCKER_HUB_PASSWORD\n
\u30e6\u30fc\u30b6\u30fc\u540d\u3082\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5909\u6570\u3067\u30e6\u30fc\u30b6\u30fc\u540d\u3092\u5b9a\u7fa9\u3059\u308b\u5834\u5408\u306f\u305d\u306e\u9650\u308a\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u5909\u6570\u306f\u6b21\u306e\u3088\u3046\u306bAPI\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\uff1a
- lagoon add variable -p <\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d> -N MY_DOCKER_HUB_PASSWORD -V <\u30d1\u30b9\u30ef\u30fc\u30c9> -S container_registry
\u3053\u306e\u65b9\u6cd5\u306f\u5f15\u304d\u7d9a\u304d\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3059\u304c\u3001\u5c06\u6765\u7684\u306b\u975e\u63a8\u5968\u3068\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u65b9\u6cd5\u306b\u5909\u66f4\u3059\u308b\u6642\u9593\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u3001\u30d3\u30eb\u30c9\u5185\u3067\u8b66\u544a\u304c\u8868\u793a\u3055\u308c\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002
\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5909\u6570\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30ab\u30b9\u30bf\u30e0\u540d\u306e\u5909\u6570\u306e\u4ee3\u308f\u308a\u306b\u305d\u308c\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/lagoon-yml/#hardcoded-values-method","title":"\u30cf\u30fc\u30c9\u30b3\u30fc\u30c9\u3055\u308c\u305f\u5024\u306e\u65b9\u6cd5","text":"\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u304c\u3001.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u76f4\u63a5\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
.lagoon.ymlcontainer-registries:\ndocker-hub:\ndescription: \"\u30c7\u30d5\u30a9\u30eb\u30c8\u306edocker.io\u30ec\u30b8\u30b9\u30c8\u30ea\u306e\u8a8d\u8a3c\u60c5\u5831\"\nusername: dockerhubuser\npassword: MySecretPassword\nmy-custom-registry:\ndescription: \"\u81ea\u5206\u306e\u30ec\u30b8\u30b9\u30c8\u30ea\u306e\u8a8d\u8a3c\u60c5\u5831\"\nurl: my.own.registry.com\nusername: mycustomuser\npassword: MyCustomSecretPassword\n
"},{"location":"ja/concepts-basics/lagoon-yml/#consuming-a-custom-or-private-container-registry-image","title":"\u30ab\u30b9\u30bf\u30e0\u307e\u305f\u306f\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u306a\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u30a4\u30e1\u30fc\u30b8\u306e\u4f7f\u7528","text":"\u30ab\u30b9\u30bf\u30e0\u307e\u305f\u306f\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u306a\u30b3\u30f3\u30c6\u30ca\u30ec\u30b8\u30b9\u30c8\u30ea\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u5185\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u66f4\u65b0\u3057\u3066\u3001\u30a4\u30e1\u30fc\u30b8\u3092\u5b9a\u7fa9\u3059\u308b\u4ee3\u308f\u308a\u306b\u30d3\u30eb\u30c9\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
.docker-compose.ymlservices:\nmariadb:\nbuild:\ncontext: .\ndockerfile: Dockerfile.mariadb\n
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304c\u30d3\u30eb\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u66f4\u65b0\u3055\u308c\u305f\u3089\u3001 Dockerfile.<service>
\u3092\u4f5c\u6210\u3057\u3001\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30a4\u30e1\u30fc\u30b8\u3092 FROM <repo>/<name>:<tag>
\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
.lagoon.ymlFROM dockerhubuser/my-private-database:tag\n
"},{"location":"ja/concepts-basics/lagoon-yml/#example-lagoonyml","title":".lagoon.yml
\u306e\u4f8b","text":"\u3053\u308c\u306f\u5168\u3066\u306e\u53ef\u80fd\u306a\u8a2d\u5b9a\u3092\u793a\u3057\u305f .lagoon.yml
\u306e\u4f8b\u3067\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5408\u308f\u305b\u3066\u8abf\u6574\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
.lagoon.ymldocker-compose-yaml: docker-compose.yml\nenvironment_variables:\ngit_sha: 'true'\ntasks:\npre-rollout:\n- run:\nname: drush sql-dump\ncommand: mkdir -p /app/web/sites/default/files/private/ && drush sql-dump --ordered-dump --gzip --result-file=/app/web/sites/default/files/private/pre-deploy-dump.sql.gz\nservice: cli\npost-rollout:\n- run:\nname: drush cim\ncommand: drush -y cim\nservice: cli\nshell: bash\n- run:\nname: drush cr\ncommand: drush -y cr\nservice: cli\nroutes:\nautogenerate:\ninsecure: Redirect\nenvironments:\nmain:\nroutes:\n- nginx:\n- example.com\n- example.net\n- \"www.example.com\":\ntls-acme: true\ninsecure: Redirect\nhstsEnabled: true\n- \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\ntypes:\nmariadb: mariadb\ntemplates:\nmariadb: mariadb.main.deployment.yml\nrollouts:\nmariadb: statefulset\ncronjobs:\n- name: drush cron\nschedule: \"M * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\nstaging:\ncronjobs:\n- name: drush cron\nschedule: \"M * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\nfeature/feature-branch:\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # This will run the cron once per hour.\ncommand: drush cron\nservice: cli\n
"},{"location":"ja/concepts-basics/lagoon-yml/#deprecated","title":"\u975e\u63a8\u5968","text":"\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u306f\u975e\u63a8\u5968\u3068\u306a\u308a\u3001\u3042\u306a\u305f\u306e .lagoon.yml
\u304b\u3089\u524a\u9664\u3059\u308b\u3079\u304d\u3067\u3059\u3002
routes.autogenerate.insecure
None
\u30aa\u30d7\u30b7\u30e7\u30f3\u306f Redirect
\u3068\u540c\u7b49\u3067\u3059\u3002
environments.[name].monitoring_urls
environments.[name].routes.[service].[route].hsts
environments.[name].routes.[service].[route].insecure
None
\u30aa\u30d7\u30b7\u30e7\u30f3\u306f Redirect
\u3068\u540c\u7b49\u3067\u3059\u3002
"},{"location":"ja/concepts-basics/building-blocks/deploy-targets/","title":"\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8","text":"\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8 \u306f\u3001Lagoon\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u3069\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u304b\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u4e00\u3064\u307e\u305f\u306f\u305d\u308c\u4ee5\u4e0a\u306e\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u3001\u4f8b\u3048\u3070\u3001\u4e00\u3064\u306f\u672c\u756a\u7528\u3001\u3082\u3046\u4e00\u3064\u306f\u30c6\u30b9\u30c8\u7528\u3068\u3044\u3063\u305f\u5177\u4f53\u7684\u306a\u4f7f\u3044\u5206\u3051\u304c\u53ef\u80fd\u3067\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u306f\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u306e\u81ea\u52d5\u30c7\u30d7\u30ed\u30a4\u3084\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3078\u306e\u5bfe\u5fdc\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aad\u3080\u3002
"},{"location":"ja/concepts-basics/building-blocks/groups/","title":"\u30b0\u30eb\u30fc\u30d7","text":"\u30b0\u30eb\u30fc\u30d7 \u306f\u30ed\u30fc\u30eb\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7d44\u7e54\u306f1\u3064\u4ee5\u4e0a\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5404\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u306f1\u3064\u4ee5\u4e0a\u306e\u30b0\u30eb\u30fc\u30d7\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002\u30b0\u30eb\u30fc\u30d7\u306f\u8907\u6570\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30b0\u30eb\u30fc\u30d7\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u306f\u72ec\u7acb\u3057\u3066\u4f5c\u6210\u3055\u308c\u3001\u305d\u306e\u5f8c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002
\u7d44\u7e54\u306b\u306f\u3001\u5272\u308a\u5f53\u3066\u3089\u308c\u308b\u30b0\u30eb\u30fc\u30d7\u306e\u6570\u3092\u5236\u9650\u3059\u308b\u30af\u30a9\u30fc\u30bf\u304c\u3042\u308a\u307e\u3059\u3002\u30af\u30a9\u30fc\u30bf\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/concepts-basics/building-blocks/notifications/","title":"\u901a\u77e5","text":"\u901a\u77e5 \u306f\u3001Lagoon\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u9032\u884c\u72b6\u6cc1\u3092\u4f1d\u3048\u308b\u65b9\u6cd5\u3067\u3059\u3002\u901a\u77e5\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u7a2e\u985e\u304c\u3042\u308a\u307e\u3059:
- Slack
- RocketChat
- \u30e1\u30fc\u30eb
- Webhook
- Microsoft Teams
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u4e00\u3064\u307e\u305f\u306f\u8907\u6570\u306e\u901a\u77e5\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7d44\u7e54\u306f\u3001\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3059\u308b\u901a\u77e5\u306e\u5272\u308a\u5f53\u3066\u67a0\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u901a\u77e5\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u306f\u72ec\u7acb\u3057\u3066\u4f5c\u6210\u3055\u308c\u3001\u305d\u306e\u5f8c\u4e00\u3064\u307e\u305f\u306f\u8907\u6570\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
Lagoon UI\u3067\u901a\u77e5\u3092\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u3067\u8ffd\u52a0\u3059\u308b\u65b9\u6cd5\u3092\u5b66\u3076.
API\u3092\u901a\u3058\u3066\u901a\u77e5\u3092\u8ffd\u52a0\u3059\u308b\u65b9\u6cd5\u3092\u5b66\u3076.
"},{"location":"ja/concepts-basics/building-blocks/organizations/","title":"\u7d44\u7e54","text":"\u7d44\u7e54 \u306f\u3001\u4e00\u3064\u4ee5\u4e0a\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u901a\u77e5\u3092\u542b\u3080\u3053\u3068\u304c\u3067\u304d\u308b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u3059\u3002\u7d44\u7e54\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u5236\u5fa1\u3057\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u4f5c\u6210\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u8ffd\u52a0\u3068\u524a\u9664\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30b0\u30eb\u30fc\u30d7\u306e\u5272\u308a\u5f53\u3066\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002
Organizations\u306f\u3001\u69cb\u9020\u306e\u5c64\u3092\u8ffd\u52a0\u3057\u3066\u73fe\u5b9f\u3092\u6a21\u5023\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u7279\u5b9a\u306e\u30b5\u30a4\u30c8\u3067\u4f5c\u696d\u3059\u308b\u30c1\u30fc\u30e0\u3092\u53cd\u6620\u3059\u308b\u305f\u3081\u306b\u3001\u7d44\u7e54\u3092\u4f5c\u6210\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3067\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u305d\u306e\u7d44\u7e54\u306b\u306f\u3001\u305d\u306e\u30b5\u30a4\u30c8\u3092\u69cb\u6210\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u3001 \u958b\u767a\u8005\u3068 \u547c\u3070\u308c\u308b\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u3057\u3066\u30b5\u30a4\u30c8\u4f5c\u696d\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3059\u3079\u3066\u306e\u4eba\u3005\u3001\u305d\u3057\u3066\u30b5\u30a4\u30c8\u3084\u554f\u984c\u3092\u95b2\u89a7\u3059\u308b\u305f\u3081\u3060\u3051\u306bLagoon\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5225\u306e\u30b0\u30eb\u30fc\u30d7\uff08 \u95b2\u89a7\u8005 \u3068\u547c\u3070\u308c\u308b\uff09\u304c\u542b\u307e\u308c\u3001\u305d\u308c\u305e\u308c\u9069\u5207\u306a\u30ed\u30fc\u30eb\u3092\u6301\u3061\u307e\u3059\u3002
\u7d44\u7e54\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u901a\u77e5\u3001\u74b0\u5883\u306e\u6570\u3092\u5236\u9650\u3059\u308b\u305f\u3081\u306e\u30af\u30a9\u30fc\u30bf\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30af\u30a9\u30fc\u30bf\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u7d44\u7e54\u3068\u306e\u3084\u308a\u3068\u308a\u306b\u3064\u3044\u3066\u3082\u3063\u3068\u5b66\u3076.
"},{"location":"ja/concepts-basics/building-blocks/projects/","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u306f\u3001Lagoon\u4e0a\u3067\u52d5\u4f5c\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002\u7d44\u7e54\u306f1\u3064\u4ee5\u4e0a\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u306f\u30011\u4eba\u4ee5\u4e0a\u306e\u30e6\u30fc\u30b6\u30fc\u3001\u901a\u77e5\u3001\u305d\u3057\u3066\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u7d44\u7e54\u306f\u3001\u4f5c\u6210\u3067\u304d\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u91cf\u3092\u5236\u9650\u3059\u308b\u305f\u3081\u306e\u30af\u30a9\u30fc\u30bf\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/concepts-basics/building-blocks/roles/","title":"\u30ed\u30fc\u30eb","text":"\u30ed\u30fc\u30eb \u306f\u30e6\u30fc\u30b6\u30fc\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306f\u30b0\u30eb\u30fc\u30d7\u3084\u7d44\u7e54\u3067\u30ed\u30fc\u30eb\u3092\u4e0e\u3048\u3089\u308c\u307e\u3059\u3002
\u30b0\u30eb\u30fc\u30d7\u306e\u30e1\u30f3\u30d0\u30fc\u306b\u306f\u4ee5\u4e0b\u306e\u30ed\u30fc\u30eb\u3092\u4e0e\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
- \u30b2\u30b9\u30c8
- \u30ec\u30dd\u30fc\u30bf\u30fc
- \u958b\u767a\u8005
- \u30e1\u30f3\u30c6\u30ca\u30fc
- \u30aa\u30fc\u30ca\u30fc
\u3053\u308c\u3089\u306e\u30ed\u30fc\u30eb\u3068\u305d\u306e\u6a29\u9650\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u3053\u3067\u8a73\u3057\u304f\u8aac\u660e\u3055\u308c\u3066\u3044\u307e\u3059:\u30ed\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u3002
\u7d44\u7e54\u306e\u30e1\u30f3\u30d0\u30fc\u306b\u306f\u4ee5\u4e0b\u306e\u30ed\u30fc\u30eb\u3092\u4e0e\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
- \u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc
- \u7d44\u7e54\u306e\u30d3\u30e5\u30fc\u30a2
\u30af\u30a9\u30fc\u30bf\u306e\u5909\u66f4
\u30af\u30a9\u30fc\u30bf\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc \u306f\u3001\u30af\u30a9\u30fc\u30bf\u306e\u5909\u66f4\u3092\u9664\u304f\u3001\u7d44\u7e54\u306e\u7ba1\u7406\u306b\u95a2\u9023\u3059\u308b\u3059\u3079\u3066\u306e\u4e8b\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5f7c\u3089\u306f\u30e6\u30fc\u30b6\u30fc\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u3001\u901a\u77e5\u306e\u8ffd\u52a0\u3084\u524a\u9664\u304c\u3067\u304d\u307e\u3059\u3002
\u7d44\u7e54\u306e\u95b2\u89a7\u8005 \u306f\u3001\u7d44\u7e54\u3092\u95b2\u89a7\u3059\u308b\u3060\u3051\u306e\u8aad\u307f\u53d6\u308a\u5c02\u7528\u306e\u30ed\u30fc\u30eb\u3067\u3042\u308a\u3001\u5909\u66f4\u3084\u8ffd\u52a0\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u5f7c\u3089\u306f\u7d44\u7e54\u5185\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u901a\u77e5\u3092\u95b2\u89a7\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
\u30aa\u30fc\u30ca\u30fc\u307e\u305f\u306f\u30d3\u30e5\u30fc\u30a2\u3068\u3057\u3066\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u30e6\u30fc\u30b6\u30fc\u306f\u3001\u7d44\u7e54\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
"},{"location":"ja/concepts-basics/building-blocks/users/","title":"\u30e6\u30fc\u30b6\u30fc","text":"\u30e6\u30fc\u30b6\u30fc \u306f\u3001Lagoon\u30b7\u30b9\u30c6\u30e0\u3068\u3084\u308a\u53d6\u308a\u3059\u308b\u305f\u3081\u306eLagoon\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306f\u4e00\u3064\u307e\u305f\u306f\u8907\u6570\u306e\u7d44\u7e54\u3084\u30b0\u30eb\u30fc\u30d7\u306b\u6240\u5c5e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u5404\u30b0\u30eb\u30fc\u30d7\u306f\u3055\u307e\u3056\u307e\u306a\u8a31\u53ef\u3092\u4ed8\u4e0e\u3059\u308b\u7570\u306a\u308b\u30ed\u30fc\u30eb\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7d44\u7e54\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u304a\u3088\u3073\u30ed\u30fc\u30eb\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u4ed8\u4e0e\u3057\u307e\u3059\u3002
\u30e6\u30fc\u30b6\u30fc\u306e\u30ed\u30fc\u30eb\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aad\u3080\u3002
"},{"location":"ja/contributing-to-lagoon/api-debugging/","title":"API\u30c7\u30d0\u30c3\u30b0","text":"1 . services/api/package.json
\u306b\u3042\u308bdev
\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u4ee5\u4e0b\u3092\u542b\u3080\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059:
services/api/package.jsonnode --inspect=0.0.0.0:9229\n
2 . docker-compose.yml
\u3092\u66f4\u65b0\u3057\u3066\u3001dist
\u30d5\u30a9\u30eb\u30c0\u3092\u30de\u30c3\u30d7\u3057\u30019229
\u30dd\u30fc\u30c8\u3092\u516c\u958b\u3057\u307e\u3059:
docker-compose.yml api:\nimage: ${IMAGE_REPO:-lagoon}/api\ncommand: yarn run dev\nvolumes:\n- ./services/api/src:/app/services/api/src\n- ./services/api/dist:/app/services/api/dist\ndepends_on:\n- api-db\n- local-api-data-watcher-pusher\n- keycloak\nports:\n- '3000:3000'\n- '9229:9229'\n
3 . \u6b21\u306e\u5185\u5bb9\u3092.vscode/launch.json
\u306b\u8ffd\u52a0\u3057\u307e\u3059:
.vscode/launch.json{\n// IntelliSense\u3092\u4f7f\u7528\u3057\u3066\u53ef\u80fd\u306a\u5c5e\u6027\u306b\u3064\u3044\u3066\u5b66\u7fd2\u3057\u307e\u3059\u3002\n// \u65e2\u5b58\u306e\u5c5e\u6027\u306e\u8aac\u660e\u3092\u8868\u793a\u3059\u308b\u306b\u306f\u3001\u30db\u30d0\u30fc\u3057\u307e\u3059\u3002\n// \u8a73\u7d30\u60c5\u5831\u306f\u3001\u6b21\u306eURL\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044:https://go.microsoft.com/fwlink/?linkid=830387.\n\"version\": \"0.2.0\",\n\"configurations\": [\n{\n\"name\": \"Docker: Attach to Node\",\n\"type\": \"node\",\n\"request\": \"attach\",\n\"port\": 9229,\n\"address\": \"localhost\",\n\"outFiles\": [\"${workspaceRoot}/app/services/api/dist/**/*.js\"],\n\"localRoot\": \"${ \"workspaceFolder}/services/api\",\n \"remoteRoot\": \"/app/services/api\",\n \"sourceMaps\": true,\n \"protocol\": \"inspector\"\n }\n ]\n}\n4 . \u30b3\u30f3\u30c6\u30ca\u306e\u518d\u69cb\u7bc9/\u518d\u8d77\u52d5:\n```bash title=\"\u30b3\u30f3\u30c6\u30ca\u306e\u518d\u8d77\u52d5\"\nrm build/api && make build/api && docker-compose restart api\n
5 . VScode\u3092\u518d\u8d77\u52d5\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/","title":"Lagoon\u306e\u958b\u767a","text":"Lagoon\u306e\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306f\u3001\u73fe\u5728\u3001\u30ed\u30fc\u30ab\u30eb\u306eKubernetes\u30af\u30e9\u30b9\u30bf\u30fc\u307e\u305f\u306fDocker Compose(\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u3068\u3057\u3066)\u3092\u7d4c\u7531\u3057\u3066\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u6ce8\u610f:
\u30d5\u30eb\u306eLagoon\u30b9\u30bf\u30c3\u30af\u306f\u3001\u73fe\u5728ARM\u30d9\u30fc\u30b9\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3(M1/M2 Apple Silicon\u30d9\u30fc\u30b9\u306e\u30de\u30b7\u30f3\u306a\u3069)\u3068\u4e92\u63db\u6027\u306e\u306a\u3044\u4e0a\u6d41\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u4f9d\u5b58\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u305f\u3081\u3001\u3053\u308c\u3089\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u4e0a\u3067lagoon-core
\u307e\u305f\u306flagoon-remote
\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u307e\u305f\u306f\u958b\u767a\u3059\u308b\u3053\u3068\u306f\u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u8a73\u7d30\u306fhttps://github.com/uselagoon/lagoon/issues/3189 \u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#docker","title":"Docker","text":"Docker\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u3067Lagoon\u3092\u30d3\u30eb\u30c9\u304a\u3088\u3073\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#dockerdocker-compose","title":"Docker\u3068Docker Compose\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"Docker\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
Docker Compose\u306f\u3001Docker for Mac\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002Linux\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306e\u624b\u9806\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#docker_1","title":"Docker\u306e\u8a2d\u5b9a","text":"Docker\u306e\u30bb\u30ad\u30e5\u30a2\u3067\u306a\u3044\u30ec\u30b8\u30b9\u30c8\u30ea\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u3092\u8aad\u3093\u3067\u304f\u3060\u3055\u3044\u3002\u518d\u8a2d\u5b9a\u3092\u907f\u3051\u308b\u305f\u3081\u3001\u5168\u3066\u306e\u30ed\u30fc\u30ab\u30ebIPv4\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30a2\u30c9\u30ec\u30b9\u30b9\u30da\u30fc\u30b9\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002 Kubernetes\u3068Docker Compose\u3002\u305f\u3068\u3048\u3070\u3001\"insecure-registries\" : [\"172.16.0.0/12\",\"192.168.0.0/16\"],
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#docker_2","title":"\u5341\u5206\u306aDocker\u30ea\u30bd\u30fc\u30b9\u306e\u5272\u308a\u5f53\u3066","text":"\u30ed\u30fc\u30ab\u30eb\u30de\u30b7\u30f3\u4e0a\u3067Lagoon\u3001Kubernetes\u3001\u307e\u305f\u306fDocker\u30af\u30e9\u30b9\u30bf\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u591a\u304f\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u6d88\u8cbb\u3057\u307e\u3059\u3002Docker\u30db\u30b9\u30c8\u306b\u306f\u6700\u4f4e\u3067\u30828\u3064\u306eCPU\u30b3\u30a2\u306812GB\u306eRAM\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#lagoon_1","title":"\u30ed\u30fc\u30ab\u30eb\u3067Lagoon\u3092\u30d3\u30eb\u30c9\u3059\u308b","text":"\u8b66\u544a
Lagoon\u3092\u3053\u306e\u65b9\u6cd5\u3067\u30d3\u30eb\u30c9\u3092\u8003\u3048\u308b\u306e\u306f\u3001\u305d\u308c\u306b\u6a5f\u80fd\u3084\u6a5f\u80fd\u3092\u958b\u767a\u3057\u305f\u3044\u3001\u307e\u305f\u306f\u5185\u90e8\u30d7\u30ed\u30bb\u30b9\u3092\u30c7\u30d0\u30c3\u30b0\u3057\u305f\u3044\u5834\u5408\u3060\u3051\u3067\u3059\u3002\u307e\u305f\u3001\u30d3\u30eb\u30c9\u305b\u305a\u306bLagoon\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5(\u3064\u307e\u308a\u3001\u516c\u958b\u3055\u308c\u305f\u30ea\u30ea\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5)\u306e\u6307\u793a\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002
\u79c1\u305f\u3061\u306f\u3001\u5fc5\u8981\u306aDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3057\u3001Kubernetes\u3092\u8a2d\u5b9a\u3057\u3001\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306bmake
(Makefile\u3092\u53c2\u7167)\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002
\u79c1\u305f\u3061\u306f\u3001\u307b\u3068\u3093\u3069\u306e\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u30b7\u30ca\u30ea\u30aa\u3092\u30ab\u30d0\u30fc\u3059\u308b\u305f\u3081\u306b\u3001Makefile\u306b\u3044\u304f\u3064\u304b\u306e\u30eb\u30fc\u30c1\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3057\u305f\u3002\u3053\u3053\u3067\u306f\u3001\u5b8c\u5168\u306a\u30d7\u30ed\u30bb\u30b9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#_1","title":"\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9","text":" - \u3053\u3053\u3067\u306e
-j8
\u306f\u3001make\u306b\u30d3\u30eb\u30c9\u3092\u901f\u3081\u308b\u305f\u3081\u306b\u4e26\u5217\u30678\u3064\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u3088\u3046\u306b\u6307\u793a\u3057\u307e\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u8abf\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u3067
SCAN_IMAGES=false
\u3092\u8a2d\u5b9a\u3057\u3066\u3001\u30d3\u30eb\u30c9\u3057\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002 \u8106\u5f31\u6027\u3002\u3053\u308c\u3092true\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u30b9\u30ad\u30e3\u30f3\u7d50\u679c\u3092\u542b\u3080scan.txt
\u30d5\u30a1\u30a4\u30eb\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30eb\u30fc\u30c8\u306b\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002
\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9make -j8 build\n
- Makefile\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u3067Lagoon\u306e\u30c6\u30b9\u30c8\u30eb\u30fc\u30c6\u30a3\u30f3\u3092\u958b\u59cb\u3057\u307e\u3059(\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8)\u3002
\u30c6\u30b9\u30c8\u958b\u59cbmake kind/test\n
\u8b66\u544a
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30c6\u30b9\u30c8\u304c\u591a\u6570\u3042\u308a\u307e\u3059 - \u6a5f\u80fd\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u6700\u4f4e\u9650\u306e\u30ed\u30fc\u30ab\u30eb\u3067\u306e\u30c6\u30b9\u30c8\u306e\u307f\u3092\u8003\u616e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u3001Makefile\u306eTESTS
\u5909\u6570\u304b\u3089\u30c6\u30b9\u30c8\u3092\u6307\u5b9a\u3057\u305f\u308a\u524a\u9664\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u306f\u6b21\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u307e\u3059:
- \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u30c4\u30fc\u30eb\u306e\u6b63\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u307e\u3059 -
kind
\u3001kubectl
\u3001helm
\u3001jq
\u3002 - Lagoon\u304c\u6a5f\u80fd\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306aHelm\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002
- \u524d\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u6b63\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u304c\u3059\u3079\u3066\u30d3\u30eb\u30c9\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
- \u30ed\u30fc\u30ab\u30eb\u306eKinD\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u306eDocker\u30b3\u30f3\u30c6\u30ca\u306b\u5b8c\u5168\u306b\u7a3c\u50cd\u3059\u308bKubernetes\u30af\u30e9\u30b9\u30bf\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3053\u306e\u30af\u30e9\u30b9\u30bf\u306f\u3001\u30d3\u30eb\u30c9\u3057\u305fLagoon\u30a4\u30e1\u30fc\u30b8\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u305f\u3081\u306b\u63d0\u4f9b\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u3068\u901a\u4fe1\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u305f\u3081\u306b\u30db\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3082\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u3059\u3002
- Lagoon\u3092 https://github.com/uselagoon/lagoon-charts (\u5fc5\u8981\u306b\u5fdc\u3058\u3066Makefile\u306e
CHARTS_TREEISH
\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30d6\u30e9\u30f3\u30c1\u3092\u5236\u5fa1\u3057\u3066\u304f\u3060\u3055\u3044). - Harbor Image\u30ec\u30b8\u30b9\u30c8\u30ea\u3092KinD\u30af\u30e9\u30b9\u30bf\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u305d\u306e\u30a4\u30f3\u30b0\u30ec\u30b9\u3068\u30a2\u30af\u30bb\u30b9\u3092\u9069\u5207\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002
- Docker\u306f\u30d3\u30eb\u30c9\u3057\u305fLagoon\u306e\u30a4\u30e1\u30fc\u30b8\u3092Harbor\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
- \u6b21\u306b\u3001lagoon-charts\u306eMakefile\u3092\u4f7f\u7528\u3057\u3066\u3001\u6b8b\u308a\u306e\u8a2d\u5b9a\u624b\u9806\u3092\u9032\u884c\u3057\u307e\u3059\u3002
- \u9069\u5207\u306a\u30a4\u30f3\u30b0\u30ec\u30b9\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3059 - NGINX Ingress Controller\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
- \u7279\u5b9a\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u8981\u6c42\u3092\u51e6\u7406\u3059\u308b\u30ed\u30fc\u30ab\u30ebNFS\u30b5\u30fc\u30d0\u30fc\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3059 - Read-Write-Many\u64cd\u4f5c(RWX)\u3092\u51e6\u7406\u3059\u308b\u3082\u306e\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
- \u305d\u306e\u5f8c\u3001Lagoon Core\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u30ed\u30fc\u30ab\u30eb\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30ed\u30fc\u30ab\u30eb\u3067\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u30c6\u30b9\u30c8\u306b\u5fc5\u8981\u3068\u3055\u308c\u306a\u3044\u4e00\u90e8\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u9664\u5916\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u3001API\u3068Keycloak\u304c\u30aa\u30f3\u30e9\u30a4\u30f3\u306b\u306a\u308b\u306e\u3092\u5f85\u3061\u307e\u3059\u3002
- DBaaS\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3059 - MariaDB\u3001PostgreSQL\u3001MongoDB\u3002\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u3001 \u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u4e2d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u3001\u30af\u30e9\u30a6\u30c9\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc(\u4f8b\u3048\u3070\u3001Cloud SQL\u3001RDS\u3001Azure Database\u306a\u3069)\u7d4c\u7531\u3067\u5229\u7528\u53ef\u80fd\u306a\u30de\u30cd\u30fc\u30b8\u30c9\u30b5\u30fc\u30d3\u30b9\u3092\u30a8\u30df\u30e5\u30ec\u30fc\u30c8\u3057\u307e\u3059\u3002
- \u6b21\u306bLagoon Remote\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3001Lagoon Core\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3001\u30ed\u30fc\u30ab\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u901a\u4fe1\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u3053\u308c\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3063\u3066\u304b\u3089\u7d9a\u884c\u3057\u307e\u3059\u3002
- \u30c6\u30b9\u30c8\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3059\u308b\u305f\u3081\u306b\u3001Lagoon Test\u30c1\u30e3\u30fc\u30c8\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30c6\u30b9\u30c8\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30db\u30b9\u30c8\u3059\u308b\u30ed\u30fc\u30ab\u30eb\u306eGit\u30b5\u30fc\u30d0\u30fc\u304c\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u3001\u8a2d\u5b9a\u3067Lagoon API\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u4e8b\u524d\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u305d\u308c\u304b\u3089\u3001\u30c6\u30b9\u30c8\u3092\u958b\u59cb\u3059\u308b\u524d\u306b\u6e96\u5099\u30c1\u30a7\u30c3\u30af\u3092\u884c\u3044\u307e\u3059\u3002
- Lagoon\u306f\u3001Makefile\u306eTESTS\u5909\u6570\u3067\u6307\u5b9a\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u5404\u30c6\u30b9\u30c8\u306f\u81ea\u8eab\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3001\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u305f\u5f8c\u306b\u74b0\u5883\u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u524a\u9664\u3057\u307e\u3059\u3002\u30c6\u30b9\u30c8\u306e\u5b9f\u884c\u7d50\u679c\u306f
lagoon-test-suite-*
\u30dd\u30c3\u30c9\u306e\u30b3\u30f3\u30bd\u30fc\u30eb\u30ed\u30b0\u306b\u51fa\u529b\u3055\u308c\u3001\u30b3\u30f3\u30c6\u30ca\u3054\u3068\u306b1\u3064\u306e\u30c6\u30b9\u30c8\u3092\u53c2\u7167\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u7406\u60f3\u7684\u306b\u306f\u3001\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8\u304c\u901a\u904e\u3057\u3001\u3059\u3079\u3066\u7d42\u4e86\u3057\u307e\u3059\uff01
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#_2","title":"\u30c6\u30b9\u30c8\u306e\u9032\u884c\u72b6\u6cc1\u3068\u30ed\u30fc\u30ab\u30eb\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u8868\u793a","text":"\u30c6\u30b9\u30c8\u30eb\u30fc\u30c1\u30f3\u306f\u30ed\u30fc\u30ab\u30eb\u306eKubeconfig\u30d5\u30a1\u30a4\u30eb(\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8\u306bkubeconfig.kind.lagoon
\u3068\u3044\u3046\u540d\u524d\u3067)\u3092\u4f5c\u6210\u3057\u3001Kubernetes\u306e\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3001\u30d3\u30e5\u30fc\u30ef\u3001CLI\u3068\u3068\u3082\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30ed\u30fc\u30ab\u30eb\u30af\u30e9\u30b9\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u30c4\u30fc\u30eb\u3067\u3059\u3002\u79c1\u305f\u3061\u306f\u3001Lens\u3001Octant\u3001kubectl\u3001Portainer\u3068\u3044\u3063\u305f\u30c4\u30fc\u30eb\u3092\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306b\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002Lagoon Core\u3001Remote\u3001Tests\u306f\u3059\u3079\u3066Lagoon
\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u3067\u30d3\u30eb\u30c9\u3055\u308c\u3001\u5404\u74b0\u5883\u306f\u81ea\u8eab\u306e\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u3066\u5b9f\u884c\u3059\u308b\u305f\u3081\u3001\u78ba\u8a8d\u3059\u308b\u969b\u306b\u306f\u6b63\u3057\u3044\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u30ed\u30fc\u30ab\u30eb\u30af\u30e9\u30b9\u30bf\u3068kubectl\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u6b63\u3057\u3044Kubeconfig\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u3059\u3079\u3066\u306e\u30b3\u30de\u30f3\u30c9\u3067\u884c\u3046\u3053\u3068\u3082\u3001\u597d\u307f\u306e\u30c4\u30fc\u30eb\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
kubeconfig.kind.lagoonKUBECONFIG=./kubeconfig.kind.lagoon kubectl get pods -n lagoon\n
\u30ed\u30fc\u30ab\u30eb\u306eLagoon\u3092\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308bHelm\u30c1\u30e3\u30fc\u30c8\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u306e\u30d5\u30a9\u30eb\u30c0\u306b\u30af\u30ed\u30fc\u30f3\u3055\u308c\u3001lagoon-charts.kind.lagoon
\u306b\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5f8c\u3067\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u7c21\u5358\u306a\u5909\u66f4\u306e\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#lagoon_2","title":"\u30ed\u30fc\u30ab\u30ebLagoon\u30af\u30e9\u30b9\u30bf\u3068\u5bfe\u8a71\u3059\u308b","text":"Makefile\u306b\u306f\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305fLagoon\u3068\u306e\u5bfe\u8a71\u3092\u7c21\u5358\u306b\u3059\u308b\u3044\u304f\u3064\u304b\u306e\u30eb\u30fc\u30c1\u30f3\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059:
Create local portsmake kind/port-forwards\n
\u3053\u308c\u306b\u3088\u308a\u3001UI\u3092\u516c\u958b\u3059\u308b\u305f\u3081\u306e\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002 6060)\u3001API (7070)\u3001\u305d\u3057\u3066 Keycloak (8080)\u3067\u3059\u3002\u3053\u308c\u306f stdout
\u306b\u30ed\u30b0\u3092\u51fa\u529b\u3059\u308b\u305f\u3081\u3001\u5225\u306e\u30bf\u30fc\u30df\u30ca\u30eb/\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u5b9f\u884c\u3059\u3079\u304d\u3067\u3057\u3087\u3046\u3002
\u7ba1\u7406\u8005\u306e\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308bmake kind/get-admin-creds\n
\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u3068\u3084\u308a\u53d6\u308a\u3059\u308b\u305f\u3081\u306e\u5fc5\u8981\u306a\u8cc7\u683c\u60c5\u5831\u304c\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
- JWT\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u306eGraphQL\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067bearer\u30c8\u30fc\u30af\u30f3\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u7ba1\u7406\u8005\u30b9\u30b3\u30fc\u30d7\u306e\u30c8\u30fc\u30af\u30f3\u3067\u3059\u3002\u8a73\u7d30\u306fGraphQL\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
- Keycloak\u306e\"admin\"\u30e6\u30fc\u30b6\u30fc\u7528\u306e\u30c8\u30fc\u30af\u30f3\u304c\u3042\u308a\u3001\u3059\u3079\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u30ed\u30fc\u30eb\u306a\u3069\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002
- Lagoon\u306e\"lagoonadmin\"\u30e6\u30fc\u30b6\u30fc\u7528\u306e\u30c8\u30fc\u30af\u30f3\u3082\u3042\u308a\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b0\u30eb\u30fc\u30d7\u3001\u6a29\u9650\u306a\u3069\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30a4\u30e1\u30fc\u30b8\u306e\u518d\u30d7\u30c3\u30b7\u30e5make kind/dev\n
\u3053\u308c\u306b\u3088\u308a\u3001KIND_SERVICES
\u306b\u30ea\u30b9\u30c8\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u304c\u6b63\u3057\u3044\u30bf\u30b0\u3067\u518d\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u3001lagoon-core\u30c1\u30e3\u30fc\u30c8\u304c\u518d\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306fLagoon\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3059\u308b\u5c0f\u3055\u306a\u5909\u66f4\u3092\u30c6\u30b9\u30c8\u3059\u308b\u306e\u306b\u4fbf\u5229\u3067\u3059\u304c\u3001\"\u30e9\u30a4\u30d6\"\u958b\u767a\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u307e\u305a\u3053\u308c\u3089\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u518d\u69cb\u7bc9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b:rm build/api && make build/api
.
typescript\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u30d3\u30eb\u30c9\u3059\u308bmake kind/local-dev-patch\n
\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305fNode.js\u3092\u4f7f\u7528\u3057\u3066typescript\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u30d3\u30eb\u30c9\u3055\u308c\u307e\u3059(\u3053\u308c\u306f >16.0)\u3002\u305d\u306e\u5f8c\u3001\u6b21\u306e\u64cd\u4f5c\u3092\u884c\u3044\u307e\u3059:
- Lagoon\u30b5\u30fc\u30d3\u30b9\u304b\u3089\u306e
dist
\u30d5\u30a9\u30eb\u30c0\u3092Kubernetes\u306e\u6b63\u3057\u3044lagoon-core\u30dd\u30c3\u30c9\u306b\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059 - \u30b3\u30fc\u30c9\u306e\u5909\u66f4\u3092\u76e3\u8996\u3059\u308b
nodemon
\u304c\u52d5\u4f5c\u3057\u3066\u3044\u308b\u30b5\u30fc\u30d3\u30b9\u3068\u5171\u306blagoon-core\u30c1\u30e3\u30fc\u30c8\u3092\u518d\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059 - \u3053\u308c\u306b\u3088\u308a\u3001Lagoon \u3067\u306e\u30e9\u30a4\u30d6\u958b\u767a\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002
- Kubernetes\u306e\u30dd\u30c3\u30c9\u306b\u5909\u66f4\u304c\u53cd\u6620\u3055\u308c\u308b\u305f\u3081\u306b\u306f\u3001\u6642\u6298\u518d\u30c7\u30d7\u30ed\u30a4\u304c\u5fc5\u8981\u306a\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u7570\u306a\u308b\u30d6\u30e9\u30f3\u30c1\u3092
git clean -dfx
\u3067\u518d\u30d3\u30eb\u30c9\u3059\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u30b5\u30fc\u30d3\u30b9\u304b\u3089\u306e\u30d3\u30eb\u30c9\u6210\u679c\u7269\u3092\u30af\u30ea\u30fc\u30f3\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u306a\u304a\u3001dist\u30d5\u30a9\u30eb\u30c0\u306fGit\u306b\u3088\u3063\u3066\u7121\u8996\u3055\u308c\u307e\u3059\u3002
\u30ed\u30ae\u30f3\u30b0\u3092\u958b\u59cbmake kind/local-dev-logging\n
\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u306eDocker\u306b\u72ec\u7acb\u3057\u305fOpenDistro for Elasticsearch\u30af\u30e9\u30b9\u30bf\u304c\u4f5c\u6210\u3055\u308c\u3001Lagoon\u304c\u3059\u3079\u3066\u306e\u30ed\u30b0(Lagoon\u304a\u3088\u3073\u30d7\u30ed\u30b8\u30a7\u30af\u30c8)\u3092\u305d\u308c\u306b\u9001\u4fe1\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a2d\u5b9a\u306flagoon-logging\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u3092\u518d\u5b9f\u884cmake kind/retest\n# OR\nmake kind/retest TESTS='[features-kubernetes]'\n
\u3053\u308c\u306b\u3088\u308a\u3001\u65e2\u5b58\u306e\u30af\u30e9\u30b9\u30bf\u306b\u5bfe\u3059\u308b\u4e00\u9023\u306e\u30c6\u30b9\u30c8(TESTS
\u5909\u6570\u3067\u5b9a\u7fa9)\u304c\u518d\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u30c6\u30b9\u30c8\u7528\u306e\u30a4\u30e1\u30fc\u30b8(tests\u3001local-git\u3001data-watcher-pusher)\u304c\u518d\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002\u30c6\u30b9\u30c8\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 TESTS\u5909\u6570\u3092\u30a4\u30f3\u30e9\u30a4\u30f3\u3067\u6e21\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u8a2d\u5b9a\u3092\u66f4\u65b0\u3059\u308b\u5834\u5408\u3001\u30c6\u30b9\u30c8\u30a4\u30e1\u30fc\u30b8\u3092\u518d\u30d3\u30eb\u30c9\u3057\u3066\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001rm build/tests && make build/tests && make kind/push-images IMAGES='tests' && make kind/retest TESTS='[api]'
Push all imagesmake kind/push-images\n# OR\nmake kind/push-images IMAGES='tests local-git'\n
\u3053\u308c\u306b\u3088\u308a\u3001\u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002IMAGES
\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u7279\u5b9a\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u30bf\u30b0\u3092\u4ed8\u3051\u3066\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
Remove clustermake kind/clean\n
\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30ab\u30eb\u306eDocker\u304b\u3089KinD Lagoon\u30af\u30e9\u30b9\u30bf\u304c\u524a\u9664\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#ansible","title":"Ansible","text":"Lagoon\u30c6\u30b9\u30c8\u3067\u306f\u3001Ansible\u3092\u7528\u3044\u3066\u30c6\u30b9\u30c8\u30b9\u30a4\u30fc\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u7279\u5b9a\u306e\u6a5f\u80fd\u306e\u30c6\u30b9\u30c8\u7bc4\u56f2\u306f\u3001\u305d\u308c\u305e\u308c\u306e\u30eb\u30fc\u30c1\u30f3\u306b\u5206\u5272\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30ed\u30fc\u30ab\u30eb\u3067\u958b\u767a\u4f5c\u696d\u3092\u884c\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u5b9f\u884c\u3059\u308b\u30c6\u30b9\u30c8\u3092\u9078\u629e\u3057\u3001Makefile\u5185\u306e$TESTS
\u5909\u6570\u3092\u66f4\u65b0\u3057\u3066\u3001\u540c\u6642\u306b\u5b9f\u884c\u3055\u308c\u308b\u30c6\u30b9\u30c8\u3092\u6e1b\u3089\u3057\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30c6\u30b9\u30c8\u306e\u8a2d\u5b9a\u306f3\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u4fdd\u6301\u3055\u308c\u3066\u3044\u307e\u3059:
tests
\u306fAnsible\u30c6\u30b9\u30c8\u30b5\u30fc\u30d3\u30b9\u305d\u306e\u3082\u306e\u3067\u3059\u3002\u30ed\u30fc\u30ab\u30eb\u306e\u30c6\u30b9\u30c8\u30eb\u30fc\u30c1\u30f3\u3067\u306f\u3001\u5404\u500b\u3005\u306e\u30c6\u30b9\u30c8\u3092\u30c6\u30b9\u30c8\u30b9\u30a4\u30fc\u30c8\u306e\u30dd\u30c3\u30c9\u5185\u306e\u5225\u3005\u306e\u30b3\u30f3\u30c6\u30ca\u3068\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u4ee5\u4e0b\u306b\u30ea\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 local-git
\u306f\u30af\u30e9\u30b9\u30bf\u5185\u3067\u30db\u30b9\u30c8\u3055\u308c\u308bGit\u30b5\u30fc\u30d0\u3067\u3001\u305d\u308c\u304c\u4fdd\u6301\u3057\u3066\u3044\u307e\u3059 \u30c6\u30b9\u30c8\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3002Ansible\u306f\u30c6\u30b9\u30c8\u306e\u9593\u306b\u3053\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30d7\u30eb\u3068\u30d7\u30c3\u30b7\u30e5\u3092\u884c\u3044\u307e\u3059\u3002 api-data-watcher-pusher
\u306f\u3001\u5fc5\u8981\u306aKubernetes\u8a2d\u5b9a\u3001\u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc\u30a2\u30ab\u30a6\u30f3\u30c8\u3068SSH\u30ad\u30fc\u3001\u5fc5\u8981\u306a\u30b0\u30eb\u30fc\u30d7\u3068\u901a\u77e5\u3092\u30ed\u30fc\u30ab\u30ebLagoon\u306b\u4e8b\u524d\u306b\u914d\u7f6e\u3059\u308b\u305f\u3081\u306eGraphQL\u5909\u7570\u306e\u30bb\u30c3\u30c8\u3067\u3059\u3002 \u3053\u308c\u306f\u5b9f\u884c\u3054\u3068\u306b\u30ed\u30fc\u30ab\u30eb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u74b0\u5883\u3092\u6d88\u53bb\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Kubernetes\u306b\u95a2\u9023\u3059\u308b\u500b\u3005\u306e\u30eb\u30fc\u30c1\u30f3\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059:
active-standby-kubernetes
\u306fKubernetes\u3067\u306e\u30a2\u30af\u30c6\u30a3\u30d6/\u30b9\u30bf\u30f3\u30d0\u30a4\u3092\u78ba\u8a8d\u3059\u308b\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 api
\u306fAPI - \u30d6\u30e9\u30f3\u30c1/PR\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3001\u6607\u9032\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 bitbucket
\u3001gitlab
\u3001github
\u306f\u7279\u5b9a\u306eSCM\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 drupal-php74
\u306f\u5358\u4e00\u30dd\u30c3\u30c9\u306eMariaDB\u3001MariaDB DBaaS\u3001\u304a\u3088\u3073Drupal 8/9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306eDrush\u7279\u5316\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059(drupal-php73
\u306fDrush\u30c6\u30b9\u30c8\u3092\u884c\u3044\u307e\u305b\u3093)\u3002 drupal-postgres
\u306f\u3001Drupal 8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306e\u5358\u4e00\u30dd\u30c3\u30c9\u306ePostgreSQL\u3068PostgreSQL DBaaS\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 elasticsearch
\u306fElasticsearch\u5358\u4e00\u30dd\u30c3\u30c9\u3078\u306e\u30b7\u30f3\u30d7\u30eb\u306aNGINX\u30d7\u30ed\u30ad\u30b7\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 features-variables
\u306fLagoon\u5185\u306e\u5909\u6570\u3092\u5229\u7528\u3059\u308b\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 features-kubernetes
\u306fKubernetes\u306b\u7279\u5316\u3057\u305f\u6a19\u6e96\u7684\u306aLagoon\u30c6\u30b9\u30c8\u306e\u7bc4\u56f2\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 features-kubernetes-2
\u306f\u3088\u308a\u9ad8\u5ea6\u306akub\u3092\u5b9f\u884c\u3057\u307e\u3059 * \u30a8\u30f3\u30c0\u30fc\u30f3\u7279\u6709\u306e\u30c6\u30b9\u30c8 - \u8907\u6570\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\u8a2d\u5b9a\u3092\u30ab\u30d0\u30fc\u3002 nginx
\u3001node
\u3001python
\u306f\u3001\u305d\u308c\u305e\u308c\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30bf\u30a4\u30d7\u306b\u5bfe\u3057\u3066\u57fa\u672c\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 node-mongodb
\u306f\u3001\u5358\u4e00\u30dd\u30c3\u30c9\u306eMongoDB\u30c6\u30b9\u30c8\u3068Node.js\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u5bfe\u3059\u308bMongoDB DBaaS\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#_3","title":"\u30ed\u30fc\u30ab\u30eb\u958b\u767a","text":"\u307b\u3068\u3093\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u306fNode.js\u3067\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u591a\u304f\u304c\u540c\u69d8\u306eNode.js\u30b3\u30fc\u30c9\u3068Node.js\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u5171\u6709\u3057\u3066\u3044\u308b\u305f\u3081\u3001Yarn\u3068\u3044\u3046\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306fYarn workspaces\u3068\u547c\u3070\u308c\u307e\u3059\u3002Yarn workspaces\u306f\u3001\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u3092\u5b9a\u7fa9\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306bpackage.json
\u304c\u5fc5\u8981\u3067\u3059\u3002
\u30b5\u30fc\u30d3\u30b9\u306e\u958b\u767a\u306f\u3001Docker\u5185\u3067\u76f4\u63a5\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305d\u308c\u305e\u308c\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u3001\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304c\u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059(docker-compose.yml
\u3092\u53c2\u7167)\u3002Node.js\u81ea\u4f53\u304cnodemon
\u3092\u4ecb\u3057\u3066\u30b3\u30fc\u30c9\u3092\u76e3\u8996\u3057\u3001\u5909\u66f4\u304c\u3042\u308b\u3068Node.js\u30d7\u30ed\u30bb\u30b9\u3092\u81ea\u52d5\u7684\u306b\u518d\u8d77\u52d5\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#lagoon-commons","title":"lagoon-commons","text":"\u30b5\u30fc\u30d3\u30b9\u306f\u591a\u304f\u306eNode.js\u30d1\u30c3\u30b1\u30fc\u30b8\u3060\u3051\u3067\u306a\u304f\u3001\u5b9f\u969b\u306e\u30ab\u30b9\u30bf\u30e0\u30b3\u30fc\u30c9\u3082\u5171\u6709\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30b3\u30fc\u30c9\u306fnode-packages/lagoon-commons
\u5185\u306b\u3042\u308a\u3001\u81ea\u52d5\u7684\u306b\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3055\u308c\u307e\u3059\u3002 Yarn\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306b\u3088\u3063\u3066\u7ba1\u7406\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u30b5\u30fc\u30d3\u30b9\u306enodemon
\u306f\u3001node-packages
\u306e\u5909\u66f4\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3001\u30ce\u30fc\u30c9\u30d7\u30ed\u30bb\u30b9\u3092\u81ea\u52d5\u7684\u306b\u518d\u8d77\u52d5\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#_4","title":"\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":""},{"location":"ja/contributing-to-lagoon/developing-lagoon/#nodejsdocker","title":"Node.js\u30d9\u30fc\u30b9\u306e\u30b5\u30fc\u30d3\u30b9\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3067\u304d\u306a\u3044","text":"\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30a4\u30e1\u30fc\u30b8\u3092\u518d\u30d3\u30eb\u30c9\u3057\u3066\u304f\u3060\u3055\u3044:
\u30a4\u30e1\u30fc\u30b8\u306e\u518d\u69cb\u7bc9 make clean\n make build\n
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#nodejsnode_modules","title":"Node.js\u30d9\u30fc\u30b9\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9/\u5b9f\u884c\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001node_modules
\u306e\u5185\u5bb9\u304c\u4e0d\u8db3\u3057\u3066\u3044\u308b\u3068\u3044\u3046\u30a8\u30e9\u30fc\u304c\u51fa\u308b","text":"\u4e00\u90e8\u306e\u30b5\u30fc\u30d3\u30b9\u304cyarn
\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306b\u3088\u3063\u3066\u7ba1\u7406\u3055\u308c\u3066\u3044\u308b\u5171\u901a\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u6301\u3063\u3066\u3044\u308b\u305f\u3081\u3001Lagoon\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067yarn
\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#nipio","title":"nip.io
\u30c9\u30e1\u30a4\u30f3\u306e\u89e3\u6c7a\u3067\u30a8\u30e9\u30fc\u304c\u51fa\u308b","text":"\u30a8\u30e9\u30fcError response from daemon: Get https://registry.172.18.0.2.nip.io:32080/v2/: dial tcp: lookup registry.172.18.0.2.nip.io: no such host\n
\u3053\u308c\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u306e\u30ea\u30be\u30eb\u30d0\u304c\u7d50\u679c\u304b\u3089\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8IP\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u5834\u5408\u306b\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u3001/etc/resolv.conf
\u3092\u7de8\u96c6\u3057\u3066\u3001\u7d50\u679c\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3057\u306a\u3044\u516c\u958b\u30ea\u30be\u30eb\u30d0\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u3001\u4e0a\u90e8\u306bnameserver 8.8.8.8
\u306e\u3088\u3046\u306a\u884c\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#_5","title":"\u4f8b\u793a\u7684\u306a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc","text":"\u3053\u3053\u3067\u306f\u3001\u958b\u767a\u306e\u30b7\u30ca\u30ea\u30aa\u3068\u7269\u4e8b\u3092\u9032\u3081\u308b\u305f\u3081\u306e\u6709\u7528\u306a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/developing-lagoon/#1","title":"\u30c6\u30b9\u30c8\u306e\u8ffd\u52a0 1. \u4e0a\u8a18\u306e\u6700\u521d\u306e\u624b\u9806\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002","text":" tests/tests/features-variables.yaml
\u3092\u7de8\u96c6\u3057\u3001\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002 tests
\u30a4\u30e1\u30fc\u30b8\u3092\u518d\u69cb\u7bc9\u3057\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u306e\u69cb\u7bc9rm build/tests\nmake -j8 build/tests\n
- \u65b0\u3057\u3044
tests
\u30a4\u30e1\u30fc\u30b8\u3092\u30af\u30e9\u30b9\u30bf\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u30a4\u30e1\u30fc\u30b8\u3092\u30d7\u30c3\u30b7\u30e5make kind/push-images IMAGES=tests\n
- \u30c6\u30b9\u30c8\u3092\u518d\u5b9f\u884c\u3057\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u3092\u518d\u5b9f\u884cmake kind/retest TESTS='[features-variables]'\n
"},{"location":"ja/contributing-to-lagoon/documentation/","title":"Lagoon\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3078\u306e\u8ca2\u732e","text":"\u7686\u3055\u3093\u304b\u3089\u3044\u305f\u3060\u3051\u308b\u3082\u306e\u306f\u4f55\u3067\u3082\u5927\u3044\u306b\u8a55\u4fa1\u3057\u307e\u3059\uff01
\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u4f5c\u6210\u3068\u95b2\u89a7\u3092\u975e\u5e38\u306b\u7c21\u5358\u306b\u3057\u3066\u304a\u308a\u3001\u30c1\u30fc\u30e0\u306f\u5e38\u306b\u30ec\u30d3\u30e5\u30fc\u3084\u30d2\u30f3\u30c8\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u6e96\u5099\u304c\u3067\u304d\u3066\u3044\u307e\u3059\u3002
\u79c1\u305f\u3061\u306f\u512a\u308c\u305fMaterial\u30c6\u30fc\u30de\u3068\u5171\u306bmkdocs\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/documentation/#_1","title":"\u30ed\u30fc\u30ab\u30eb\u3067\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u95b2\u89a7\u3068\u66f4\u65b0","text":"Lagoon\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30eb\u30fc\u30c8\u304b\u3089(Docker\u304c\u5fc5\u8981\u3067\u3059)\u3001\u4ee5\u4e0b\u3092\u5b9f\u884c\u3057\u307e\u3059:
Get local docs up and running.docker run --rm -it -p 127.0.0.1:8000:8000 -v ${PWD}:/docs ghcr.io/amazeeio/mkdocs-material\n
\u3053\u308c\u306b\u3088\u308a\u3001\u4efb\u610f\u306e\u66f4\u65b0\u3067\u30e9\u30a4\u30d6\u30ea\u30ed\u30fc\u30c9\u304c\u8a2d\u5b9a\u3055\u308c\u305f\u958b\u767a\u30b5\u30fc\u30d0\u30fc\u304c http://127.0.0.1:8000\u3067\u8d77\u52d5\u3057\u307e\u3059\u3002
\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3055\u308c\u305fDocker\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001\u5fc5\u8981\u306a\u3059\u3079\u3066\u306e\u62e1\u5f35\u6a5f\u80fd\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
\u3042\u308b\u3044\u306f\u3001mkdocs
\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001mkdocs\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u5fc5\u8981\u306a\u3059\u3079\u3066\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
Install mkdocspip3 install -r docs/requirements.txt\nmkdocs serve\n
"},{"location":"ja/contributing-to-lagoon/documentation/#_2","title":"\u30af\u30e9\u30a6\u30c9\u3067\u306e\u7de8\u96c6","text":"\u5404\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30da\u30fc\u30b8\u306b\u306f\u3001\u53f3\u4e0a\u306b\"\u7de8\u96c6\"\u306e\u925b\u7b46\u30a2\u30a4\u30b3\u30f3\u304c\u3042\u308a\u3001\u305d\u308c\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u6b63\u3057\u3044\u30da\u30fc\u30b8\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002 Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u3066\u3002
\u3053\u3061\u3089\u3067\u3082\u304a\u6c17\u8efd\u306b\u8ca2\u732e\u3057\u3066\u3044\u305f\u3060\u3051\u307e\u3059\u3002\u7d44\u307f\u8fbc\u307f\u306egithub.dev web\u30d9\u30fc\u30b9\u306e\u30a8\u30c7\u30a3\u30bf\u30fc\u3092\u3044\u3064\u3067\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u57fa\u672c\u7684\u306a\u30de\u30fc\u30af\u30c0\u30a6\u30f3\u306e\u30d7\u30ec\u30d3\u30e5\u30fc\u304c\u3042\u308a\u307e\u3059\u304c\u3001mkdocs\u306e\u7d20\u6674\u3089\u3057\u3055\u306f\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/contributing-to-lagoon/documentation/#_3","title":"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30d7\u30ed\u30a4\u65b9\u6cd5","text":"\u79c1\u305f\u3061\u306fDeploy MkDocs GitHub\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3001\u3059\u3079\u3066\u306e\u30e1\u30a4\u30f3\u30d6\u30e9\u30f3\u30c1\u306e\u30d7\u30c3\u30b7\u30e5\u3092\u30d3\u30eb\u30c9\u3057\u3001gh-pages
\u30d6\u30e9\u30f3\u30c1\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u30c8\u30ea\u30ac\u30fc\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/releasing/","title":"Lagoon\u306e\u30ea\u30ea\u30fc\u30b9","text":"Lagoon\u306b\u306f\u591a\u304f\u306e\u52d5\u7684\u306a\u90e8\u5206\u304c\u3042\u308b\u305f\u3081\u3001\u30ea\u30ea\u30fc\u30b9\u306f\u304b\u306a\u308a\u8907\u96d1\u3067\u3059\uff01
"},{"location":"ja/contributing-to-lagoon/releasing/#lagoon-core-","title":"Lagoon-core - \u30bf\u30b0\u3068\u30c6\u30b9\u30c8","text":" - \u6b21\u306e\u5168\u3066\u306e\u7279\u5b9a\u3055\u308c\u305f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30e1\u30a4\u30f3\u30d6\u30e9\u30f3\u30c1\u306b\u30de\u30fc\u30b8\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059:
- uselagoon/lagoon
- uselagoon/build-deploy-tool
- uselagoon/lagoon-ui
- \u78ba\u8a8d\u304c\u7d42\u308f\u3063\u305f\u3089\u3001\u6b21\u306e\u30bf\u30b0(\u30de\u30a4\u30ca\u30fc\u307e\u305f\u306f\u30d1\u30c3\u30c1)\u3092\u30e1\u30a4\u30f3\u30d6\u30e9\u30f3\u30c1\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306fv2.MINOR.PATCH\u3068\u3057\u3001semver\u306b\u5f93\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Jenkins\u30d3\u30eb\u30c9\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u3001https://ci.lagoon.sh/blue/organizations/jenkins/lagoon/branches \u3067\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- \u3053\u308c\u304c\u30d3\u30eb\u30c9\u4e2d\u306e\u9593\u3001
lagoon-ui
\u3068 build-deploy-tool
\u306e\u9069\u5207\u306a\u30b3\u30df\u30c3\u30c8\u306b\u8efd\u91cf\u30bf\u30b0\u3092\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f core-v2.MINOR.PATCH \u3068\u3057\u307e\u3059\u3002build-deploy-tool\u306b\u306f\u4ed6\u306e\u30bf\u30b0\u3084\u30ea\u30ea\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001lagoon-ui\u306b\u306f\u72ec\u81ea\u306esemver\u30ea\u30ea\u30fc\u30b9\u304c\u3042\u308a\u3001\u3053\u308c\u306f\u305d\u306e\u6a5f\u80fd\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002 - Jenkins\u3067\u306e\u30d3\u30eb\u30c9\u304c\u6210\u529f\u3057\u305f\u3089\u3001https://github.com/uselagoon/lagoon-charts \u306b\u79fb\u52d5\u3057\u3066\u3001\u30c1\u30e3\u30fc\u30c8\u30ea\u30ea\u30fc\u30b9\u306e\u6e96\u5099\u3092\u3057\u307e\u3059\u3002
-
lagoon-core
\u3068 lagoon-test
\u30c1\u30e3\u30fc\u30c8\u306echart.yaml\u3067\u3001\u66f4\u65b0\u3057\u307e\u3059\u3002 \u4ee5\u4e0b\u306e\u30d5\u30a3\u30fc\u30eb\u30c9:
- \u30d0\u30fc\u30b8\u30e7\u30f3: \u3053\u308c\u306f\u30c1\u30e3\u30fc\u30c8\u306e\u6b21\u306e\u300c\u30de\u30a4\u30ca\u30fc\u300d\u30ea\u30ea\u30fc\u30b9\u3067\u3001\u901a\u5e38\u306f\u5bfe\u5fdc\u3059\u308blagoon-core\u30ea\u30ea\u30fc\u30b9\u306e\u305f\u3081\u306e\u30de\u30a4\u30ca\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059
- appVersion: \u3053\u308c\u306f\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305flagoon-core\u306e\u5b9f\u969b\u306e\u30bf\u30b0\u3067\u3059
- artifacthub.io/changes: \u5fc5\u8981\u306a\u306e\u306f\u4ee5\u4e0b\u306e\u30b9\u30cb\u30da\u30c3\u30c8\u306e2\u884c\u3067\u3001\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u5b9f\u969b\u306eappVersion\u306b\u5408\u308f\u305b\u3066\u5909\u66f4\u3055\u308c\u307e\u3059\u3002
sample chart.yml snippets
# \u3053\u308c\u306f\u30c1\u30e3\u30fc\u30c8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3059\u3002\u3053\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u306f\u3001\u30a2\u30d7\u30ea\n# \u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u542b\u3080\u3001\u30c1\u30e3\u30fc\u30c8\u3068\u305d\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u305f\u3073\u306b\u5897\u3084\u3059\u3079\u304d\u3067\u3059\u3002\n# \u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0(https://semver.org/)\u306b\u5f93\u3046\u3053\u3068\u304c\u671f\u5f85\u3055\u308c\u307e\u3059\u3002\nversion: 1.28.0\n# \u3053\u308c\u306f\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u3067\u3059\u3002\u3053\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\n# \u756a\u53f7\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u305f\u3073\u306b\u5897\u52a0\u3055\u305b\u308b\u3079\u304d\u3067\u3059\u3002\n# \u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u306b\u5f93\u3046\u3053\u3068\u304c\u671f\u5f85\u3055\u308c\u307e\u305b\u3093\u3002\u305d\u308c\u3089\u306f\n# \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u4f7f\u7528\u3057\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u53cd\u6620\u3059\u308b\u3079\u304d\u3067\u3059\u3002\nappVersion: v2.14.2\n# \u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306f\u3001artifacthub.io\u306e\u30c1\u30a7\u30f3\u30b8\u30ed\u30b0\u3092\u53ce\u96c6\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\n# \u305d\u308c\u306f\u5404\u30ea\u30ea\u30fc\u30b9\u3054\u3068\u306b\u65b0\u305f\u306b\u958b\u59cb\u3055\u308c\u308b\u3079\u304d\u3067\u3059\n# \u6709\u52b9\u306a\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u7a2e\u985e\u306f\u3001\u8ffd\u52a0\u3001\u5909\u66f4\u3001\u975e\u63a8\u5968\u3001\u524a\u9664\u3001\u4fee\u6b63\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u304c\u3042\u308a\u307e\u3059\nannotations:\nartifacthub.io/changes: |\n- \u7a2e\u985e: \u5909\u66f4\n\u8aac\u660e: Lagoon appVersion\u3092v2.14.2\u306b\u66f4\u65b0\n
lagoon-core\u30ea\u30ea\u30fc\u30b9\u306e\u7d50\u679c\u3001lagoon-core\u3068lagoon-test\u306e\u30c1\u30e3\u30fc\u30c8\u306e\u307f\u304c\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002\u4ed6\u306b\u5909\u66f4\u304c\u3042\u308b\u5834\u5408\u306f\u3001lagoon-remote\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002 -
\u3053\u306e\u30c1\u30e3\u30fc\u30c8\u30ea\u30ea\u30fc\u30b9\u306ePR\u3092\u4f5c\u6210\u3057\u3001Github Actions\u30b9\u30a4\u30fc\u30c8\u304c\u4e00\u9023\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u65bd\u3057\u307e\u3059:
- Lint\u3068\u30c6\u30b9\u30c8\u30c1\u30e3\u30fc\u30c8 - \u30de\u30c8\u30ea\u30af\u30b9: \u73fe\u5728\u30c6\u30b9\u30c8\u3055\u308c\u3066\u3044\u308bKubernetes\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5bfe\u3057\u3066lint\u3068\u30c1\u30e3\u30fc\u30c8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u884c\u3044\u307e\u3059
- Lint\u3068\u30c6\u30b9\u30c8\u30c1\u30e3\u30fc\u30c8 - current: \u4ee5\u524d/\u5c06\u6765\u306eKubernetes\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5bfe\u3057\u3066lint\u3068\u30c1\u30e3\u30fc\u30c8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u884c\u3044\u307e\u3059
- Lagoon tests: \u30ea\u30ea\u30fc\u30b9\u306b\u5bfe\u3057\u3066ansible\u30c6\u30b9\u30c8\u306e\u5168\u30b7\u30ea\u30fc\u30ba\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u901a\u5e38\u3001lint\u3068\u30c6\u30b9\u30c8\u30c1\u30e3\u30fc\u30c8\u306e\u5931\u6557\u306f\u3088\u304f\u8aac\u660e\u3055\u308c\u3066\u3044\u307e\u3059(\u30c1\u30e3\u30fc\u30c8\u8a2d\u5b9a\u306e\u6b20\u843d/\u8aa4\u8a2d\u5b9a)\u3002\u5358\u4e00\u306eLagoon\u30c6\u30b9\u30c8\u304c\u5931\u6557\u3059\u308b\u5834\u5408\u306f\u3001\u518d\u5b9f\u884c\u3059\u308b\u3060\u3051\u3067\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u8907\u6570\u306e\u5931\u6557\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001\u8abf\u67fb\u304c\u5fc5\u8981\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u30c6\u30b9\u30c8\u304c\u3059\u3079\u3066\u6210\u529f\u3057\u305f\u5f8c\u3001\u30ea\u30ea\u30fc\u30b9\u306e\u4f5c\u6210\u3092\u9032\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
"},{"location":"ja/contributing-to-lagoon/releasing/#lagoon-core-_1","title":"Lagoon-core - \u30ea\u30ea\u30fc\u30b9\u3068\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8","text":" - uselagoon/lagoon \u3067\u3001\u5148\u307b\u3069\u30d7\u30c3\u30b7\u30e5\u3057\u305f\u30bf\u30b0\u304b\u3089\u30ea\u30ea\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\"\u30ea\u30ea\u30fc\u30b9\u306e\u751f\u6210 \"notes\"\u30dc\u30bf\u30f3\u3092\u4f7f\u3063\u3066\u5909\u66f4\u5c65\u6b74\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u30ea\u30ea\u30fc\u30b9\u306b\u542b\u3081\u308b\u5185\u5bb9\u306b\u3064\u3044\u3066\u306f\u3001\u4ee5\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u307e\u305f\u3001lagoon-images\u306e\u30ea\u30f3\u30af\u306f\u5e38\u306b\u6700\u65b0\u306e\u30ea\u30ea\u30fc\u30b9\u7248\u3068\u306a\u308a\u307e\u3059\u3002\u30c1\u30e3\u30fc\u30c8\u3001lagoon-ui\u3001build-deploy-tool\u3078\u306e\u30ea\u30f3\u30af\u306f\u3059\u3079\u3066\u4eca\u3059\u3050\u57cb\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u30ea\u30f3\u30af\u306f\u4eca\u5f8c\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u52d5\u4f5c\u3057\u307e\u305b\u3093\u3002\u3053\u308c\u3092\u6700\u65b0\u306e\u30ea\u30ea\u30fc\u30b9\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u3001\u30ea\u30ea\u30fc\u30b9\u3092\u516c\u958b\u3057\u307e\u3059\u3002
- uselagoon/build-deploy-tool \u3067\u3001\u5148\u307b\u3069\u30d7\u30c3\u30b7\u30e5\u3057\u305f\u30bf\u30b0\u304b\u3089\u30ea\u30ea\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\"\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u3092\u751f\u6210\"\u30dc\u30bf\u30f3\u3092\u4f7f\u7528\u3057\u3066\u5909\u66f4\u5c65\u6b74\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u6700\u5f8c\u306ecore-v2.X\u30bf\u30b0\u304c\u4f7f\u7528\u3055\u308c\u3001\u4ed6\u306e\u30bf\u30b0\u306f\u4f7f\u7528\u3055\u308c\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u30ea\u30ea\u30fc\u30b9\u306b\u542b\u3081\u308b\u5185\u5bb9\u306b\u3064\u3044\u3066\u306f\u3001\u4ee5\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3092\u6700\u65b0\u306e\u30ea\u30ea\u30fc\u30b9\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u3001\u30ea\u30ea\u30fc\u30b9\u3092\u516c\u958b\u3057\u307e\u3059\u3002
- uselagoon/lagoon-ui \u3067\u3001\u5148\u307b\u3069\u30d7\u30c3\u30b7\u30e5\u3057\u305f\u30bf\u30b0\u304b\u3089\u30ea\u30ea\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\"\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u3092\u751f\u6210\"\u30dc\u30bf\u30f3\u3092\u4f7f\u7528\u3057\u3066\u5909\u66f4\u5c65\u6b74\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u6700\u5f8c\u306ecore-v2.X\u30bf\u30b0\u304c\u4f7f\u7528\u3055\u308c\u3001\u4ed6\u306e\u30bf\u30b0\u306f\u4f7f\u7528\u3055\u308c\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u30ea\u30ea\u30fc\u30b9\u306b\u542b\u3081\u308b\u5185\u5bb9\u306b\u3064\u3044\u3066\u306f\u3001\u4ee5\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3092\u6700\u65b0\u306e\u30ea\u30ea\u30fc\u30b9\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u3001\u30ea\u30ea\u30fc\u30b9\u3092\u516c\u958b\u3057\u307e\u3059\u3002
- uselagoon/lagoon-charts \u3067 \u6210\u529f\u3057\u305fPR\u3092\u30de\u30fc\u30b8\u3059\u308b\u3068\u3001lagoon-core\u3068lagoon-test\u306e\u30ea\u30ea\u30fc\u30b9\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\u7d50\u679c\u3068\u3057\u3066\u5f97\u3089\u308c\u305flagoon-core\u30c1\u30e3\u30fc\u30c8\u30ea\u30ea\u30fc\u30b9\u3092\u7de8\u96c6\u3057\u3001\u30bf\u30a4\u30c8\u30eb\u3068\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\u3059\u308blagoon\u30ea\u30ea\u30fc\u30b9\u3092\u8a18\u8f09\u3057\u307e\u3059\u3002\u4ee5\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u3068\u540c\u69d8\u306b\u3057\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/releasing/#lagoon-","title":"Lagoon\u30ea\u30e2\u30fc\u30c8 - \u30ea\u30ea\u30fc\u30b9\u3068\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8","text":"Lagoon remote\u306fLagoon Core\u3068\u306f\u5225\u306e\u30ea\u30ea\u30fc\u30b9\u30b5\u30a4\u30af\u30eb\u3092\u6301\u3061\u3001\u305d\u306e\u305f\u3081\u3001\u4f9d\u5b58\u95a2\u4fc2\u306e\u3042\u308b\u30b5\u30d6\u30c1\u30e3\u30fc\u30c8\u3084\u30b5\u30fc\u30d3\u30b9\u304c\u66f4\u65b0\u3055\u308c\u308b\u305f\u3073\u306b\u30ea\u30ea\u30fc\u30b9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/contributing-to-lagoon/tests/","title":"\u30c6\u30b9\u30c8","text":"\u79c1\u305f\u3061\u306e\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8\u306fAnsible\u3067\u66f8\u304b\u308c\u3066\u304a\u308a\u3001\u4e3b\u306b\u4ee5\u4e0b\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u5f93\u3063\u3066\u3044\u307e\u3059:
- \u65b0\u3057\u3044Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
- \u30d5\u30a1\u30a4\u30eb\u306e\u30ea\u30b9\u30c8(
tests/files
\u5185)\u304b\u3089\u4e00\u90e8\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3057\u3001\u3053\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30df\u30c3\u30c8\u3057\u307e\u3059\u3002 - \u3053\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3092Git\u30b5\u30fc\u30d0\u30fc(\u30ed\u30fc\u30ab\u30eb\u307e\u305f\u306fGitHub\u4e0a)\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u307e\u3059\u3002
- \u30c8\u30ea\u30ac\u30fc\u30b5\u30fc\u30d3\u30b9(\u4f8b\u3048\u3070\u3001\u5b9f\u969b\u306b\u9001\u4fe1\u3055\u308c\u308b\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u3068\u540c\u3058\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u30cf\u30f3\u30c9\u30e9\u30fc\u3078\u306e\u30a6\u30a7\u30d6\u30d5\u30c3\u30af)\u306b\u30c8\u30ea\u30ac\u30fc\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002
- \u30c6\u30b9\u30c8\u304c\u4f55\u304b\u304c\u8d77\u3053\u308b\u3053\u3068\u3092\u671f\u5f85\u3059\u308bURL\u3092\u76e3\u8996\u3092\u958b\u59cb\u3057\u307e\u3059(\u4f8b\u3048\u3070\u3001Git\u30d6\u30e9\u30f3\u30c1\u3092HTML\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u6301\u3064Node.js\u30a2\u30d7\u30ea\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u306a\u3069)\u3002
- URL\u306e\u7d50\u679c\u3068\u671f\u5f85\u3055\u308c\u308b\u7d50\u679c\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002
Lagoon\u306f\u4e3b\u306b3\u3064\u306e\u7570\u306a\u308b\u65b9\u6cd5\u3067\u30c6\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059:
"},{"location":"ja/contributing-to-lagoon/tests/#1","title":"1. \u30ed\u30fc\u30ab\u30eb\u3067","text":"\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u4e2d\u306b\u30c6\u30b9\u30c8\u3059\u308b\u6700\u5584\u306e\u65b9\u6cd5\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u306e\u30c6\u30b9\u30c8\u3067\u3059\u3002\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8\u306fmake
\u3092\u4ecb\u3057\u3066\u958b\u59cb\u3055\u308c\u307e\u3059\u3002Make\u306f\u5fc5\u8981\u306a\u3059\u3079\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001\u30d3\u30eb\u30c9\u3057\u307e\u3059\u3002
Make testsmake tests\n
\u3053\u308c\u306b\u3088\u308a\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30c6\u30b9\u30c8\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u30c6\u30b9\u30c8\u306e\u4e00\u90e8\u3060\u3051\u3092\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306f\u3001make tests-list
\u3092\u5b9f\u884c\u3057\u3066\u3059\u3079\u3066\u306e\u5b58\u5728\u3059\u308b\u30c6\u30b9\u30c8\u3092\u8868\u793a\u3057\u3001\u305d\u308c\u305e\u308c\u3092\u500b\u5225\u306b\u5b9f\u884c\u3057\u307e\u3059\u3002
\u305f\u3068\u3048\u3070\u3001make tests/node
\u306fNode.js Docker\u30a4\u30e1\u30fc\u30b8\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u3067 \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u306e\u5185\u90e8\u3067\u4f55\u304c\u8d77\u3053\u3063\u3066\u3044\u308b\u306e\u304b\u3092\u5b9f\u969b\u306b\u898b\u308b\u305f\u3081\u306b\u306f\u3001make logs
\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059:
Make logsmake logs\n
\u307e\u305f\u306f\u7279\u5b9a\u306e\u30b5\u30fc\u30d3\u30b9\u3060\u3051\u3092\u8868\u793a\u3059\u308b\u306b\u306f:
Make logsmake logs service=webhook-handler\n
"},{"location":"ja/contributing-to-lagoon/tests/#2","title":"2. \u81ea\u52d5\u5316\u3055\u308c\u305f\u7d71\u5408\u30c6\u30b9\u30c8","text":"Lagoon\u306b\u5bfe\u3057\u3066\u4f5c\u6210\u3055\u308c\u305f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30c6\u30b9\u30c8\u3059\u308b\u305f\u3081\u306b\u3001\u5c02\u7528\u306eJenkins\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u5b8c\u5168\u306b\u81ea\u52d5\u5316\u3055\u308c\u305f\u7d71\u5408\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u3066\u3044\u307e\u3059:https://ci.lagoon.sh\u3002\u3053\u308c\u306f.Jenkinsfile
\u5185\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u304a\u308a\u3001\u958b\u304b\u308c\u305f\u3059\u3079\u3066\u306e\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5bfe\u3057\u3066\u81ea\u52d5\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002
\u3053\u308c\u306b\u3088\u308a\u3001\u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u3001Kubernetes\u30af\u30e9\u30b9\u30bf\u304c\u8d77\u52d5\u3057\u3001\u4e00\u9023\u306e\u30c6\u30b9\u30c8\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002
\u30c6\u30b9\u30c8\u306f\u3053\u3053\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
- https://ci.lagoon.sh/blue/organizations/jenkins/lagoon/activity
"},{"location":"ja/docker-images/commons/","title":"Commons","text":"Lagoon commons
Docker\u30a4\u30e1\u30fc\u30b8\u3002\u516c\u5f0f\u306eAlpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u3066\u3044\u307e\u3059\u3002
\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u81ea\u4f53\u306f\u6a5f\u80fd\u3092\u6301\u3061\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u4ed6\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u30a4\u30e1\u30fc\u30b8\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Lagoon\u5185\u306e\u3059\u3079\u3066\u306ealpine\u30d9\u30fc\u30b9\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u3001commons\u304b\u3089\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u7d99\u627f\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/commons/#_1","title":"\u30c4\u30fc\u30eb","text":" docker-sleep
- \u6a19\u6e96\u5316\u3055\u308c\u305f1\u6642\u9593\u306e\u30b9\u30ea\u30fc\u30d7\u6a5f\u80fd fix-permissions
- \u6307\u5b9a\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u3092\u81ea\u52d5\u7684\u306b\u5168\u30b0\u30eb\u30fc\u30d7\u306e\u8aad\u307f\u66f8\u304d\u53ef\u80fd\u306b\u5909\u66f4 wait-for
- \u30b5\u30fc\u30d3\u30b9\u304c\u6b63\u3057\u3044\u9806\u5e8f\u3067\u8d77\u52d5\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5c0f\u3055\u306a\u30b9\u30af\u30ea\u30d7\u30c8 - https://github.com/eficode/wait-for \u3092\u57fa\u306b\u3057\u3066\u3044\u307e\u3059 entrypoint-readiness
- \u9577\u6642\u9593\u5b9f\u884c\u3055\u308c\u308b\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u304c\u5b8c\u4e86\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d entrypoints
- /lagoon/entrypoints/* \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3092\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u9806/\u6570\u5024\u9806\u306b\u8aad\u307f\u8fbc\u3080\u30b9\u30af\u30ea\u30d7\u30c8
"},{"location":"ja/docker-images/commons/#_2","title":"\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u306e\u4e00\u89a7\u306fhttps://github.com/uselagoon/lagoon-images/tree/main/images/commons/lagoon/entrypoints\u306b\u3042\u308a\u307e\u3059\u3002\u4ee5\u964d\u306e\u4e0b\u6d41\u30a4\u30e1\u30fc\u30b8\u3082\u3001/lagoon
\u914d\u4e0b\u306b\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3092\u8ffd\u52a0\u3067\u304d\u3001\u6700\u7d42\u7684\u306a\u30a4\u30e1\u30fc\u30b8\u3067\u5b9f\u884c\u3055\u307e\u3059\u3002
"},{"location":"ja/docker-images/mariadb/","title":"MariaDB","text":"MariaDB\u306f\u3001MySQL\u306e\u5f8c\u7d99\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u3067\u3059\u3002
Lagoon\u306e MariaDB
\u30a4\u30e1\u30fc\u30b8\u306eDockerfile\u306f\u3001\u516c\u5f0f\u306eAlpine\u30a4\u30e1\u30fc\u30b8\u3067\u63d0\u4f9b\u3055\u308c\u308b mariadb
\u3068 mariadb-client
\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eMariaDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
- 10.4 Dockerfile (Alpine 3.12 \u306f2022\u5e745\u6708\u307e\u3067\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mariadb-10.4
- 10.5 Dockerfile (Alpine 3.14 \u306f2023\u5e745\u6708\u307e\u3067\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mariadb-10.5
- 10.6 Dockerfile (Alpine 3.16 \u306f2024\u5e745\u6708\u307e\u3067\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mariadb-10.6
- 10.11 Dockerfile (Alpine 3.18 \u306f2025\u5e745\u6708\u307e\u3067\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mariadb-10.11
\u60c5\u5831
\u3053\u308c\u3089\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u516c\u5f0f\u306eMariaDB\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u69cb\u7bc9\u3055\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u30b5\u30dd\u30fc\u30c8\u30b5\u30a4\u30af\u30eb\u304c\u7570\u306a\u308a\u3001\u57fa\u76e4\u3068\u306a\u308bAlpine\u30a4\u30e1\u30fc\u30b8\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u671f\u9593\u306e\u307f\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u304c\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://alpinelinux.org/releases/\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5b9f\u969b\u306b\u306f\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001MariaDB\u30b3\u30f3\u30c6\u30ca\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u306e\u307f\u5b9f\u884c\u3057\u3001\u672c\u756a\u74b0\u5883\u3067\u306fDBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u304c\u63d0\u4f9b\u3059\u308bManaged Cloud Databases\u3092\u5229\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/mariadb/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"MariaDB\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c83306
\u3067\u3059\u3002
Lagoon\u304cMariaDB\u30b3\u30f3\u30c6\u30ca\u306e\u5b9f\u884c\u65b9\u6cd5\u3092\u6700\u9069\u306b\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001lagoon.type: mariadb
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001DBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306f\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u3067\u5229\u7528\u53ef\u80fd\u306a\u5834\u5408\u3001\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u5185\u3067MariaDB\u3092\u78ba\u5b9f\u306b\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306f\u3001lagoon.type: mariadb-single
\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002MariaDB\u30b3\u30f3\u30c6\u30ca\u306b\u5bfe\u3057\u3066\u306f\u3001\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u5e38\u306b/var/lib/mysql
\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002
\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 readiness-probe.sh
\u30b9\u30af\u30ea\u30d7\u30c8\u3001MariaDB \u30b3\u30f3\u30c6\u30ca\u306e\u6e96\u5099\u5b8c\u4e86\u72b6\u614b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/mariadb/#docker-composeyml-snippet","title":"docker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.yml mariadb:\nimage: uselagoon/mariadb-10.6-drupal:latest\nlabels:\n# Lagoon\u306bMariaDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u308b\nlagoon.type: mariadb\nports:\n# \u30dd\u30fc\u30c83306\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u3067\u516c\u958b\u3057\u3001`docker-compose port mariadb 3306`\u3067\u305d\u308c\u3092\u898b\u3064\u3051\u308b\n- \"3306\"\nvolumes:\n# MariaDB\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9\u306b\u540d\u524d\u4ed8\u304d\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\n- db:/var/lib/mysql\n
"},{"location":"ja/docker-images/mariadb/#included-tools","title":"\u30c4\u30fc\u30eb","text":" mysqltuner.pl
- \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u306b\u4fbf\u5229\u306aPerl\u30b9\u30af\u30ea\u30d7\u30c8\u3002 mysql-backup.sh
- \u958b\u767a\u74b0\u5883\u3067 MySQL \u306e\u65e5\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u81ea\u52d5\u5316\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3002 pwgen
- \u30e9\u30f3\u30c0\u30e0\u3067\u8907\u96d1\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u751f\u6210\u3059\u308b\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u3002
"},{"location":"ja/docker-images/mariadb/#included-mycnf-configuration-file","title":"my.cnf
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Lagoon\u3067\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3055\u308c\u305f \u30c7\u30d5\u30a9\u30eb\u30c8 \u306eMariaDB\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u4ed8\u5c5e\u3057\u3066\u3044\u307e\u3059\u3002\u4e00\u90e8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
"},{"location":"ja/docker-images/mariadb/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u74b0\u5883\u5909\u6570\u540d \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e MARIADB_DATABASE lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d MARIADB_USER lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc MARIADB_PASSWORD lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 MARIADB_ROOT_PASSWORD Lag00n MariaDB\u306e\u30eb\u30fc\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 MARIADB_CHARSET utf8mb4 \u30b5\u30fc\u30d0\u30fc\u306e\u6587\u5b57\u30bb\u30c3\u30c8\u3092\u8a2d\u5b9a\u3059\u308b MARIADB_COLLATION utf8mb4_bin \u30b5\u30fc\u30d0\u30fc\u306e\u7167\u5408\u9806\u5e8f\u3092\u8a2d\u5b9a\u3059\u308b MARIADB_MAX_ALLOWED_PACKET 64M max_allowed_packet
\u306e\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\u3059\u308b MARIADB_INNODB_BUFFER_POOL_SIZE 256M MariaDB InnoDB\u30d0\u30c3\u30d5\u30a1\u30d7\u30fc\u30eb\u306e\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\u3057\u307e\u3059 MARIADB_INNODB_BUFFER_POOL_INSTANCES 1 InnoDB\u30d0\u30c3\u30d5\u30a1\u30d7\u30fc\u30eb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u6570 MARIADB_INNODB_LOG_FILE_SIZE 64M InnoDB\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u30b5\u30a4\u30ba MARIADB_LOG_SLOW (\u8a2d\u5b9a\u306a\u3057) \u9045\u3044\u30af\u30a8\u30ea\u306e\u4fdd\u5b58\u3092\u5236\u5fa1\u3059\u308b\u5909\u6570 MARIADB_LOG_QUERIES (\u8a2d\u5b9a\u306a\u3057) \u3059\u3079\u3066\u306e\u30af\u30a8\u30ea\u306e\u4fdd\u5b58\u3092\u5236\u5fa1\u3059\u308b\u5909\u6570 BACKUPS_DIR /var/lib/mysql/backup \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9 MARIADB_DATA_DIR /var/lib/mysql MariaDB\u306e\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3002\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u3053\u306e\u5024\u3092\u5909\u66f4\u3059\u308b\u3068\u30c7\u30fc\u30bf\u640d\u5931\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff01 MARIADB_COPY_DATA_DIR_SOURCE (\u8a2d\u5b9a\u306a\u3057) Mariadb\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u3001\u8a2d\u5b9a\u3055\u308c\u305fARIADB_DATA_DIR
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u30c7\u30fc\u30bf\u3092\u30b3\u30d4\u30fc\u3059\u308b\u969b\u306b\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u306b\u3064\u3044\u3066\u30bb\u30eb\u540d\u3057\u307e\u3059\u3002\u3053\u306e\u30d1\u30b9\u3092\u5229\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u3042\u3089\u304b\u3058\u3081MariaDB\u306b\u6295\u5165\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305f\u3060\u3057\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u306fSQL\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u306a\u304f\u3001\u5b9f\u969b\u306eMariaDB\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001\u30b3\u30d4\u30fc\u5148\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u65e2\u5b58\u306eMySQL\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306b\u306e\u307f\u3001\u30c7\u30fc\u30bf\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002 LAGOON_ENVIRONMENT_TYPE
\u5909\u6570\u304c production
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306f MARIADB_INNODB_BUFFER_POOL_SIZE=1024
\u304a\u3088\u3073 MARIADB_INNODB_LOG_FILE_SIZE=256
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u6700\u9069\u5316\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/mongodb/","title":"MongoDB","text":"MongoDB\u306f\u3001\u6c4e\u7528\u7684\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u578b\u5206\u6563\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3042\u308a\u3001\u73fe\u4ee3\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u8005\u3084\u30af\u30e9\u30a6\u30c9\u6642\u4ee3\u306e\u30cb\u30fc\u30ba\u306b\u5408\u308f\u305b\u3066\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30c7\u30fc\u30bf\u306f JSON\u306e\u3088\u3046\u306a\u5f62\u5f0f\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u4fdd\u5b58\u3055\u308c\u307e\u3059
- \u51fa\u5178: mongodb.com
"},{"location":"ja/docker-images/mongodb/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":"4.0 Dockerfile - uselagoon/mongo-4
\u3053\u306eDockerfile\u306f\u3001\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eMongoDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/mongodb/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u3082\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3001Kubernetes\u3084OpenShift\u3067\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/docker-images/mysql/","title":"MySQL","text":"MySQL\u306f\u4eba\u6c17\u306e\u3042\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0(RDBMS)\u3067\u3059\u3002
Lagoon\u306e MySQl
\u30a4\u30e1\u30fc\u30b8\u306eDockerfile\u306f\u3001\u516c\u5f0f\u306e\u30a2\u30c3\u30d7\u30b9\u30c8\u30ea\u30fc\u30e0docker \u30a4\u30e1\u30fc\u30b8mysql
(Oracle Linux variant)\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eMariaDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
- 8.0 Dockerfile (2026\u5e744\u6708\u307e\u3067\u5ef6\u9577\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mysql-8.0
- 8.4 Dockerfile (2032\u5e744\u6708\u307e\u3067\u5ef6\u9577\u30b5\u30dd\u30fc\u30c8) -
uselagoon/mysql-8.4
\u60c5\u5831
\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fMariaDB\u30a4\u30e1\u30fc\u30b8\u306e\u5b8c\u5168\u306a\u4ee3\u66ff\u54c1\u3068\u3057\u3066\u4f5c\u3089\u308c\u305f\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u306e\u305f\u3081\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3067\u52d5\u4f5c\u3055\u305b\u308b\u306b\u306f\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u5fc5\u8981\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/docker-images/mysql/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"MySQL\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c83306
\u3067\u3059\u3002
Lagoon\u304cMySQL\u30b3\u30f3\u30c6\u30ca\u306e\u5b9f\u884c\u65b9\u6cd5\u3092\u6700\u9069\u306b\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001lagoon.type: mariadb
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001DBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306f\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u3067\u5229\u7528\u53ef\u80fd\u306a\u5834\u5408\u3001\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u5185\u3067MySQL\u3092\u78ba\u5b9f\u306b\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306f\u3001lagoon.type: mariadb-single
\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002MySQL\u30b3\u30f3\u30c6\u30ca\u306b\u5bfe\u3057\u3066\u306f\u3001\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u5e38\u306b/var/lib/mysql
\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002
\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 readiness-probe.sh
\u30b9\u30af\u30ea\u30d7\u30c8\u3001MariaDB \u30b3\u30f3\u30c6\u30ca\u306e\u6e96\u5099\u5b8c\u4e86\u72b6\u614b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/mysql/#docker-composeyml-snippet-for-non-drupal-projects","title":"\u975eDrupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306edocker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.yml mariadb:\nimage: uselagoon/mysql-8.4:latest\nlabels:\n# Lagoon\u306bMariaDB\u4e92\u63db\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u308b\nlagoon.type: mariadb\nports:\n# \u30dd\u30fc\u30c83306\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u3067\u516c\u958b\u3057\u3001`docker-compose port mysql 3306`\u3067\u305d\u308c\u3092\u898b\u3064\u3051\u308b\n- \"3306\"\nvolumes:\n# MySQL\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9\u306b\u540d\u524d\u4ed8\u304d\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\n- db:/var/lib/mysql\n
"},{"location":"ja/docker-images/mysql/#docker-composeyml-snippet-for-drupal-projects","title":"Drupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306edocker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.yml mariadb:\nimage: uselagoon/mysql-8.4:latest\nlabels:\n# Lagoon\u306bMariaDB\u4e92\u63db\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u308b\nlagoon.type: mariadb\nports:\n# \u30dd\u30fc\u30c83306\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u3067\u516c\u958b\u3057\u3001`docker-compose port mysql 3306`\u3067\u305d\u308c\u3092\u898b\u3064\u3051\u308b\n- \"3306\"\nenvironment:\n# Lagoon\u3067Drupal\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u671f\u5f85\u3059\u308b\u8a8d\u8a3c\u60c5\u5831\u3068\u4e00\u81f4\u3059\u308b\u3088\u3046\u306b\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8a8d\u8a3c\u60c5\u5831\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u307e\u3059\u3002\n- MYSQL_DATABASE=drupal\n- MYSQL_USER=drupal\n- MYSQL_PASSWORD=drupal\nvolumes:\n# MySQL\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9\u306b\u540d\u524d\u4ed8\u304d\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\n- db:/var/lib/mysql\n
"},{"location":"ja/docker-images/mysql/#included-tools","title":"\u30c4\u30fc\u30eb","text":" mysqltuner.pl
- \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u306b\u4fbf\u5229\u306aPerl\u30b9\u30af\u30ea\u30d7\u30c8\u3002 mysql-backup.sh
- \u958b\u767a\u74b0\u5883\u3067 MySQL \u306e\u65e5\u6b21\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u81ea\u52d5\u5316\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3002 pwgen
- \u30e9\u30f3\u30c0\u30e0\u3067\u8907\u96d1\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u751f\u6210\u3059\u308b\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u3002
"},{"location":"ja/docker-images/mysql/#included-mycnf-configuration-file","title":"my.cnf
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Lagoon\u3067\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3055\u308c\u305f \u30c7\u30d5\u30a9\u30eb\u30c8 \u306eMariaDB\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u4e00\u90e8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
"},{"location":"ja/docker-images/mysql/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u74b0\u5883\u5909\u6570\u540d \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e MYSQL_DATABASE lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d MYSQL_USER lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc MYSQL_PASSWORD lagoon \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 MYSQL_ROOT_PASSWORD Lag00n MariaDB\u306e\u30eb\u30fc\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 MYSQL_CHARSET utf8mb4 \u30b5\u30fc\u30d0\u30fc\u306e\u6587\u5b57\u30bb\u30c3\u30c8\u3092\u8a2d\u5b9a\u3059\u308b MYSQL_COLLATION utf8mb4_bin \u30b5\u30fc\u30d0\u30fc\u306e\u7167\u5408\u9806\u5e8f\u3092\u8a2d\u5b9a\u3059\u308b MYSQL_MAX_ALLOWED_PACKET 64M max_allowed_packet
\u306e\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\u3059\u308b MYSQL_INNODB_BUFFER_POOL_SIZE 256M MySQL InnoDB\u30d0\u30c3\u30d5\u30a1\u30d7\u30fc\u30eb\u306e\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\u3057\u307e\u3059 MYSQL_INNODB_BUFFER_POOL_INSTANCES 1 InnoDB\u30d0\u30c3\u30d5\u30a1\u30d7\u30fc\u30eb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u6570 MYSQL_INNODB_LOG_FILE_SIZE 64M InnoDB\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u30b5\u30a4\u30ba MYSQL_LOG_SLOW (\u8a2d\u5b9a\u306a\u3057) \u9045\u3044\u30af\u30a8\u30ea\u306e\u4fdd\u5b58\u3092\u5236\u5fa1\u3059\u308b\u5909\u6570 MYSQL_LOG_QUERIES (\u8a2d\u5b9a\u306a\u3057) \u3059\u3079\u3066\u306e\u30af\u30a8\u30ea\u306e\u4fdd\u5b58\u3092\u5236\u5fa1\u3059\u308b\u5909\u6570 BACKUPS_DIR /var/lib/mysql/backup \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9 MYSQL_DATA_DIR /var/lib/mysql MySQL\u306e\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3002\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u3053\u306e\u5024\u3092\u5909\u66f4\u3059\u308b\u3068\u30c7\u30fc\u30bf\u640d\u5931\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff01 MARIADB_COPY_DATA_DIR_SOURCE (\u8a2d\u5b9a\u306a\u3057) MySQL\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u3001\u8a2d\u5b9a\u3055\u308c\u305fMYSQL_DATA_DIR
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u30c7\u30fc\u30bf\u3092\u30b3\u30d4\u30fc\u3059\u308b\u969b\u306b\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u306b\u3064\u3044\u3066\u30bb\u30eb\u540d\u3057\u307e\u3059\u3002\u3053\u306e\u30d1\u30b9\u3092\u5229\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u3042\u3089\u304b\u3058\u3081MySQL\u306b\u6295\u5165\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305f\u3060\u3057\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u306fSQL\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u306a\u304f\u3001\u5b9f\u969b\u306eMySQL\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001\u30b3\u30d4\u30fc\u5148\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u65e2\u5b58\u306eMySQL\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306b\u306e\u307f\u3001\u30c7\u30fc\u30bf\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002 LAGOON_ENVIRONMENT_TYPE
\u5909\u6570\u304c production
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306f MYSQL_INNODB_BUFFER_POOL_SIZE=1024
\u304a\u3088\u3073 MYSQL_INNODB_LOG_FILE_SIZE=256
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u6700\u9069\u5316\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/nginx/","title":"NGINX","text":"Lagoon\u306e nginx
\u30a4\u30e1\u30fc\u30b8Dockerfile\u3067\u3059\u3002\u516c\u5f0f\u306eopenresty/openresty
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001Lagoon\u5185\u306e\u3042\u3089\u3086\u308b\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u306e\u30d9\u30fc\u30b9\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/nginx/#lagoon","title":"Lagoon\u306e\u8abf\u6574\u4e8b\u9805","text":"NGINX\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f 8080
\u30dd\u30fc\u30c8\u3067\u3059\u3002
\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 /etc/nginx/*
\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u306b\u3088\u3063\u3066 envplate
\u3092\u901a\u3058\u3066\u51e6\u7406\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/nginx/#nginx-static-filesconf","title":"NGINX
\u8a2d\u5b9a(static-files.conf
)","text":"\u8b66\u544a
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f NGINX
\u306f\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u306e\u307f\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3084PHP\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u5fc5\u8981\u306a\u3044\u9759\u7684\u30b5\u30a4\u30c8\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059:\u4f8b\u3048\u3070\u3001\u9759\u7684\u30b5\u30a4\u30c8\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc\u306e Hugo\u3001Jekyll\u3001Gatsby \u306a\u3069\u3067\u3059\u3002
PHP\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001php-fpm
\u30a4\u30e1\u30fc\u30b8\u3092\u53c2\u7167\u3057\u3001nginx
\u3068php-fpm
\u3092\u4e00\u7dd2\u306b\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u30b3\u30f3\u30c6\u30f3\u30c4\u306f\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u30d3\u30eb\u30c9\u3057\u3001nginx
\u30b3\u30f3\u30c6\u30ca\u306b\u6295\u5165\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/nginx/#_1","title":"\u30d8\u30eb\u30d1\u30fc","text":""},{"location":"ja/docker-images/nginx/#redirects-mapconf","title":"redirects-map.conf
","text":"\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u3001redirects-map.conf
\u30d5\u30a1\u30a4\u30eb\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3092\u4f7f\u7528\u3057\u3066\u3001\u30de\u30fc\u30b1\u30c6\u30a3\u30f3\u30b0\u30c9\u30e1\u30a4\u30f3\u3092\u30b5\u30d6\u30b5\u30a4\u30c8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u305f\u308a\u3001www\u306a\u3057\u3092www\u4ed8\u304d\u306b\u3059\u308b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u304c\u591a\u3044\u5834\u5408\u306f\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306bredirects-map.conf
\u3092\u30b3\u30fc\u30c9\u306e\u96a3\u306b\u4fdd\u5b58\u3059\u308b\u3053\u3068\u3092\u63a8\u5968\u3057\u307e\u3059\u3002
\u6ce8\u610f:
\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u304c\u5c11\u306a\u3044\u5834\u5408\u306f\u3001nginx.dockerfile
\u306eRUN
\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u4fbf\u5229\u306a\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002
\u4ee5\u4e0b\u306f\u3001www.example.com
\u3092example.com
\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4fdd\u6301\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3059\u4f8b\u3067\u3059:
RedirectRUN echo \"~^www.example.com http://example.com\\$request_uri;\" >> /etc/nginx/redirects-map.conf\n
\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u7a2e\u985e\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001redirects-map.conf
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
redirects-map.conf
\u3092\u914d\u7f6e\u3057\u305f\u3089\u3001\u30d3\u30eb\u30c9\u306b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u308a\u8fbc\u3080\u305f\u3081\u306b\u3001nginx.dockerfile
\u306b\u3082\u305d\u308c\u3092\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
nginx.dockerfileCOPY redirects-map.conf /etc/nginx/redirects-map.conf\n
"},{"location":"ja/docker-images/nginx/#_2","title":"\u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c","text":"BASIC_AUTH_USERNAME
\u304a\u3088\u3073 BASIC_AUTH_PASSWORD
\u74b0\u5883\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c\u306f\u81ea\u52d5\u7684\u306b\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002
\u8b66\u544a
\u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c\u306e\u81ea\u52d5\u8a2d\u5b9a\u306f\u3001\u5229\u4fbf\u6027\u306e\u305f\u3081\u306b\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3084\u6a5f\u5bc6\u30c7\u30fc\u30bf\u3092\u4fdd\u8b77\u3059\u308b\u305f\u3081\u306e\u5b89\u5168\u306a\u65b9\u6cd5\u3068\u306f\u307f\u306a\u3055\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/docker-images/nginx/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e BASIC_AUTH restricted \u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c\u3092\u7121\u52b9\u306b\u3059\u308b\u306b\u306f off
\u306b\u8a2d\u5b9a\u3057\u307e\u3059 BASIC_AUTH_USERNAME (\u8a2d\u5b9a\u306a\u3057) \u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c\u306e\u30e6\u30fc\u30b6\u30fc\u30cd\u30fc\u30e0 BASIC_AUTH_PASSWORD (\u8a2d\u5b9a\u306a\u3057) \u30d9\u30fc\u30b7\u30c3\u30af\u8a8d\u8a3c\u306e\u30d1\u30b9\u30ef\u30fc\u30c9(\u975e\u6697\u53f7\u5316) FAST_HEALTH_CHECK (\u8a2d\u5b9a\u306a\u3057) \u7279\u5b9a\u306e\u30e6\u30fc\u30b6\u30fc\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8(StatusCake\u3001Pingdom\u3001Site25x7\u3001Uptime\u3001nagios)\u304b\u3089\u306eGET\u30ea\u30af\u30a8\u30b9\u30c8\u306f\u3001\u8efd\u91cf\u306aLagoon\u30b5\u30fc\u30d3\u30b9\u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u306b\u306f\u3001true
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002"},{"location":"ja/docker-images/nodejs/","title":"Node.js","text":"Lagoon\u306e Node.js
Docker\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002\u516c\u5f0f\u306eNode Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/nodejs/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":"Node.js\u306e\u30a4\u30e1\u30fc\u30b8\u306f2\u3064\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\u3002\u901a\u5e38\u306enode:version
\u30a4\u30e1\u30fc\u30b8\u3068node:version-builder
\u3067\u3059\u3002
node:version-builder
\u306b\u306f\u3001Node.js\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30d3\u30eb\u30c9\u3059\u308b\u969b\u306b\u5fc5\u8981\u306a\u8ffd\u52a0\u30c4\u30fc\u30eb(\u30d3\u30eb\u30c9\u30e9\u30a4\u30d6\u30e9\u30ea\u3001npm\u3001Yarn\u306a\u3069)\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306a\u30ea\u30b9\u30c8\u306b\u3064\u3044\u3066\u306f\u3001Dockerfile\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- 12 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/node-12
- 14 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/node-14
- 16 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/node-16
- 18 Dockerfile (2025\u5e744\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/node-18
- 20 Dockerfile (2026\u5e744\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/node-20
- 22 Dockerfile (2027\u5e744\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/node-22
\u30d2\u30f3\u30c8
Lagoon\u306f\u3001\u516c\u5f0f\u306b\u30a2\u30ca\u30a6\u30f3\u30b9\u3055\u308c\u305f\u7d42\u4e86\u65e5(EOL)\u306e\u5f8c\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3001EOL\u306b\u9054\u3057\u305fNode.js\u30a4\u30e1\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://nodejs.org/en/about/releases/\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/docker-images/nodejs/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"Node.js\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c83000
\u3067\u3059\u3002
Lagoon\u3067\u306f\u3001lagoon.type: node-persistent
\u3092\u4f7f\u7528\u3057\u3066\u3001\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002\u8a73\u7d30\u306f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u4ee5\u4e0b\u306e\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059:
lagoon.persistent
= \u30b3\u30f3\u30c6\u30ca\u5185\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059 - \u4f8b\u3048\u3070\u3001/app/files lagoon.persistent.size
= Lagoon\u306b\u5bfe\u3057\u3001\u3053\u306e\u30d1\u30b9\u306b\u5272\u308a\u5f53\u3066\u308b\u30b9\u30c8\u30ec\u30fc\u30b8\u5bb9\u91cf\u3092\u6307\u5b9a\u3057\u307e\u3059 - \u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5171\u6709\u3059\u308b\u8907\u6570\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u3092\u4f7f\u7528\u3057\u307e\u3059
lagoon.persistent.name
= (\u30aa\u30d7\u30b7\u30e7\u30f3)\u8907\u6570\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5171\u6709\u3059\u308b\u5834\u5408\u3001\u5225\u306e\u540d\u524d\u4ed8\u304d\u30b5\u30fc\u30d3\u30b9\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306bLagoon\u306b\u6307\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/nodejs/#docker-composeyml-snippet","title":"docker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.yml node:\nbuild:\n# \u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0\u306b\u3042\u308bDockerfile\u304b\u3089\u30d3\u30eb\u30c9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# Lagoon\u306b\u5bfe\u3057\u3066\u3001Node.js\u30b5\u30fc\u30d3\u30b9\u3067\u3042\u308b\u3053\u3068\u3001/app/files\u306b500MB\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\nlagoon.type: node-persistent\nlagoon.persistent: /app/files\nlagoon.persistent.size: 500Mi\n\u30dd\u30fc\u30c8:\n# \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u307f\u9069\u7528\u3055\u308c\u308b\u8a2d\u5b9a\u3067\u3059\n# \u30dd\u30fc\u30c83000\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3057\u3001\n# `docker-compose port node 3000`\u3067\u30dd\u30fc\u30c8\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n- \"3000\"\n\u30dc\u30ea\u30e5\u30fc\u30e0:\n# \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u307f\u9069\u7528\u3055\u308c\u308b\u8a2d\u5b9a\u3067\u3059\n# files\u3068\u3044\u3046\u540d\u524d\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u5b9a\u7fa9\u3055\u308c\u305f\u30d1\u30b9\u306b\u3092\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u672c\u756a\u74b0\u5883\u3068\u540c\u3058\u72b6\u614b\u3092\u518d\u73fe\u3059\u308b\u305f\u3081\u306b\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3067\u5229\u7528\u3055\u308c\u307e\u3059\u3002\n- files:/app/files\n
"},{"location":"ja/docker-images/opensearch/","title":"OpenSearch","text":"OpenSearch\u306f\u3001\u30c7\u30fc\u30bf\u3092\u7c21\u5358\u306b\u53d6\u308a\u8fbc\u307f\u3001\u691c\u7d22\u3001\u53ef\u8996\u5316\u3001\u5206\u6790\u3059\u308b\u305f\u3081\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u4e3b\u5c0e\u306eApache2.0\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u63a1\u7528\u3057\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u691c\u7d22\u304a\u3088\u3073\u5206\u6790\u30b9\u30a4\u30fc\u30c8\u3067\u3059\u3002
- \u51fa\u5178: https://opensearch.org/
"},{"location":"ja/docker-images/opensearch/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 2 Dockerfile -
uselagoon/opensearch-2
"},{"location":"ja/docker-images/opensearch/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"OpenSearch \u306e\u4e00\u90e8\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8\u5024 \u8aac\u660e OPENSEARCH_JAVA_OPTS -Xms512m -Xmx512m OpenSearch\u30b3\u30f3\u30c6\u30ca\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u4e21\u65b9\u306e\u5024\u306f\u540c\u3058\u5024\u3067\u306a\u3051\u308c\u3070\u3001OpenSearch\u306f\u6b63\u5e38\u306b\u8d77\u52d5\u3057\u307e\u305b\u3093\u3002"},{"location":"ja/docker-images/opensearch/#_1","title":"\u65e2\u77e5\u306e\u554f\u984c","text":"Linux\u30d9\u30fc\u30b9\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u3001vm.max_map_count
\u8a2d\u5b9a\u304c\u4f4e\u3044\u305f\u3081\u306b\u3001OpenSearch\u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5\u304c\u5931\u6557\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002
bash title=\"\u30a8\u30e9\u30fc\" opensearch_1 | ERROR: [1] bootstrap checks failed opensearch_1 | [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
\u3053\u306e\u554f\u984c\u306e\u89e3\u6c7a\u7b56\u306f\u3053\u3053\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059.
"},{"location":"ja/docker-images/php-cli/","title":"PHP-CLI","text":"Lagoon\u306e php-cli
Docker\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002Lagoon\u306e php-fpm
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3001\u65e5\u5e38\u7684\u306a\u64cd\u4f5c\u306b\u5fc5\u8981\u306a\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u304c\u3059\u3079\u3066\u63c3\u3063\u3066\u3044\u307e\u3059\u3002
cli
\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u8d77\u52d5\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca(\u307e\u305f\u306f\u30dd\u30c3\u30c9)\u306fComposer\u3084Node.js\u30d9\u30fc\u30b9\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30fc\u30c9\u30d3\u30eb\u30c9\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002
\u307e\u305f\u3001MariaDB\u3068PostgreSQL\u4e21\u65b9\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9cli
\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
\u60c5\u5831
\u3053\u306eDockerfile\u306f\u3001Lagoon\u5185\u3067\u306e\u3042\u3089\u3086\u308bcli
\u30cb\u30fc\u30ba\u306e\u57fa\u76e4\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/php-cli/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 7.3 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-7.3-cli
- 7.4 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-7.4-cli
- 8.0 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-8.0-cli
- 8.1 Dockerfile (2024\u5e7411\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.1-cli
- 8.2 Dockerfile (2025\u5e7412\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.2-cli
- 8.3 Dockerfile (2026\u5e7412\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.3-cli
\u3059\u3079\u3066\u306ePHP\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u3001\u305d\u308c\u305e\u308c\u306eDockerfiles\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/php-cli/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 COMPOSER_ALLOW_SUPERUSER=1
\u306f\u3001root\u3068\u3057\u3066Composer\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u95a2\u3059\u308b\u8b66\u544a\u3092\u524a\u9664\u3057\u307e\u3059\u3002 80-shell-timeout.sh
\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u304cKubernetes\u74b0\u5883\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3001\u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306ecli
\u30dd\u30c3\u30c9\u306b\u5bfe\u3057\u306610\u5206\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 cli
\u30b3\u30f3\u30c6\u30ca\u306f\u3001Lagoon\u306b\u3088\u3063\u3066\u6ce8\u5165\u3055\u308c\u308b\u304b\u3001SSH_PRIVATE_KEY
\u74b0\u5883\u5909\u6570\u3067\u5b9a\u7fa9\u3055\u308c\u305fSSH\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/php-cli/#cli","title":"CLI\u30c4\u30fc\u30eb","text":"\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u308bCLI\u30c4\u30fc\u30eb\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059:
composer
\u30d0\u30fc\u30b8\u30e7\u30f31.9.0 ( COMPOSER_VERSION
\u304a\u3088\u3073COMPOSER_HASH_SHA256
\u7d4c\u7531\u3067\u5909\u66f4\u53ef\u80fd) node.js
\u30d0\u30fc\u30b8\u30e7\u30f317 (2022\u5e743\u6708\u73fe\u5728) npm
yarn
mariadb-client
postgres ql-client
"},{"location":"ja/docker-images/php-cli/#nodejs","title":"Node.js\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u5909\u66f4","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306fnodejs-current
\u30d1\u30c3\u30b1\u30fc\u30b8(2022\u5e743\u6708\u6642\u70b9\u3067v17)\u304c\u642d\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5225\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u73fe\u5728\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u524a\u9664\u3057\u3066\u76ee\u7684\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001Node.js 16\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u306b\u306f\u3001Dockerfile\u3092\u6b21\u306e\u3088\u3046\u306b\u5909\u66f4\u3057\u307e\u3059\u3002
Node.js\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u66f4\u65b0RUN apk del nodejs-current \\\n&& apk add --no-cache nodejs=~16\n
"},{"location":"ja/docker-images/php-cli/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002php-fpm\u74b0\u5883\u5909\u6570\u3082\u9069\u7528\u3055\u308c\u307e\u3059\u3002
\u540d\u524d \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e MARIADB_MAX_ALLOWED_PACKET 64M MySql\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u6700\u5927\u8a31\u5bb9\u30d1\u30b1\u30c3\u30c8\u30b5\u30a4\u30ba\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002"},{"location":"ja/docker-images/php-fpm/","title":"PHP-FPM","text":"Lagoon\u306e php-fpm
Docker\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002\u516c\u5f0f\u306ePHP Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
PHP-FPM(FastCGI Process Manager)\u306f\u3001FastCGI \u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u5229\u7528\u3057\u305f PHP \u306e\u5b9f\u88c5\u306e\u3072\u3068\u3064\u3067\u3001\u69d8\u3005\u306a\u898f\u6a21\u306e\u30b5\u30a4\u30c8\u3001\u7279\u306b\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u304c\u591a\u3044\u30b5\u30a4\u30c8\u5411\u3051\u306b\u4fbf\u5229\u306a\u8ffd\u52a0\u6a5f\u80fd\u3092\u5099\u3048\u3066\u3044\u307e\u3059\u3002
- \u51fa\u5178: https://php-fpm.org/
FastCGI\u306f\u3001\u30b5\u30fc\u30d0\u30fc\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u6642\u9593\u306e\u304b\u304b\u308b\u30b3\u30fc\u30c9\u3092\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u30ed\u30fc\u30c9\u3055\u308c\u308b\u6bce\u5ea6\u3067\u306f\u306a\u304f\u3001\u4e00\u5ea6\u3060\u3051\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u4ed5\u7d44\u307f\u3067\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\u3092\u524a\u6e1b\u3057\u307e\u3059\u3002
\u60c5\u5831
Dockerfile\u306f\u3001Lagoon\u5185\u3067PHP
\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306e\u30d9\u30fc\u30b9\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u60f3\u5b9a\u3067\u3059\u3002\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u81ea\u4f53\u304c\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3092\u4f5c\u6210\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001php-fpm
\u306b\u3088\u308bFastCGI\u30ea\u30b9\u30ca\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002php-fpm
\u30d7\u30fc\u30eb\u306e\u8a2d\u5b9a\u3092\u8abf\u6574\u3059\u308b\u5fc5\u8981\u304c\u751f\u3058\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/docker-images/php-fpm/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 7.3 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-7.3-fpm
- 7.4 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-7.4-fpm
- 8.0 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/php-8.0-fpm
- 8.1 Dockerfile (2024\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.1-fpm
- 8.2 Dockerfile (2025\u5e7412\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.2-fpm
- 8.3 Dockerfile (2026\u5e7412\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/php-8.3-fpm
\u3059\u3079\u3066\u306ePHP\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u305d\u308c\u305e\u308c\u306eDockerfiles\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
\u30d2\u30f3\u30c8
Lagoon\u306f\u3001\u516c\u5f0f\u306b\u30a2\u30ca\u30a6\u30f3\u30b9\u3055\u308c\u305f\u7d42\u4e86\u65e5(EOL)\u306e\u5f8c\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3001EOL\u306b\u9054\u3057\u305fPHP\u30a4\u30e1\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://www.php.net/supported-versions.php\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/docker-images/php-fpm/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 /usr/local/etc/php/php.ini
\u304a\u3088\u3073 /usr/local/etc/php-fpm.conf
\u30d5\u30a1\u30a4\u30eb\u3001/usr/local/etc/php-f pm.d/
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u5168\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3092\u901a\u3057\u3066envplate
\u3067\u51e6\u7406\u3055\u308c\u307e\u3059\u3002 - \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b
PHP
\u62e1\u5f35\u6a5f\u80fd\u306b\u3064\u3044\u3066\u306f\u3001Dockerfile\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u3055\u3089\u306a\u308b\u62e1\u5f35\u6a5f\u80fd\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u306b\u306f\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u3082\u3068\u306bDockerfile\u3092\u62e1\u5f35\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u62e1\u5f35\u6a5f\u80fd\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306f\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8How to install more PHP extensions.\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/docker-images/php-fpm/#php","title":"PHP\u8a2d\u5b9a","text":"PHP
\u8a2d\u5b9a\u306b\u306f\u3001PHP
\u30d7\u30fc\u30eb\u8a2d\u5b9a\u306e\u4f5c\u6210\u3092\u5bb9\u6613\u306b\u3059\u308b\u305f\u3081\u306e\u9069\u5207\u306a\u5024\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u305d\u306e\u4e00\u90e8\u306e\u30ea\u30b9\u30c8\u3067\u3059\u3002\u8a73\u7d30\u306f/usr/local/etc/php.ini
\u3001/usr/local/etc/php-fpm.conf
\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044:
\u5024 \u8a73\u7d30 max_execution_time = 900
PHP_MAX_EXECUTION_TIME
\u3067\u5909\u66f4\u53ef\u80fd realpath_cache_size = 256k
\u5927\u898f\u6a21\u306aPHP\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6271\u3046\u305f\u3081\u306e\u8a2d\u5b9a memory_limit = 400M
\u5927\u898f\u6a21\u306aPHP\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6271\u3046\u305f\u3081\u306e\u8a2d\u5b9a(PHP_MEMORY_LIMIT
\u3067\u5909\u66f4\u53ef\u80fd) opcache.memory_consumption = 265
\u5927\u898f\u6a21\u306aPHP\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6271\u3046\u305f\u3081\u306e\u8a2d\u5b9a opcache.enable_file_override = 1
\u3068 opcache.huge_code_pages = 1
\u3088\u308a\u9ad8\u901f\u306aPHP\u306e\u305f\u3081\u306e\u8a2d\u5b9a display_errors = Off
\u3068 display_startup_errors = Off
\u5b9f\u7528\u7684\u306aproduction\u8a2d\u5b9a (PHP_DISPLAY_ERRORS
\u304a\u3088\u3073 PHP_DISPLAY_STARTUP_ERRORS
\u3067\u5909\u66f4\u53ef\u80fd)\u3002 upload_max_filesize = 2048M
\u5927\u5bb9\u91cf\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u305f\u3081\u306e\u8a2d\u5b9a apc.shm_size = 32m
\u3068 apc.enabled = 1
PHP_APC_SHM_SIZE
\u304a\u3088\u3073 PHP_APC_ENABLED
\u3067\u5909\u66f4\u53ef\u80fd \u307e\u305f\u3001php-fpm
\u306e\u30a8\u30e9\u30fc\u30ed\u30b0\u306f stderr
\u306b\u8a18\u9332\u3055\u308c\u307e\u3059\u3002
\ud83d\udca1 \u3053\u308c\u3089\u306e\u8a2d\u5b9a\u306e\u3044\u305a\u308c\u3082\u6c17\u306b\u5165\u3089\u306a\u3044\u5834\u5408\u306f\u3001\u6b21\u306e3\u3064\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059:
- \u8a2d\u5b9a\u5024\u304c\u74b0\u5883\u5909\u6570\u3067\u5909\u66f4\u3067\u304d\u308b\u5834\u5408\u306f\u3001\u74b0\u5883\u5909\u6570\u3092\u4f7f\u3063\u3066\u304f\u3060\u3055\u3044(\u3053\u308c\u304c\u63a8\u5968\u3055\u308c\u308b\u65b9\u6cd5\u3067\u3059\u3002\u74b0\u5883\u5909\u6570\u306e\u8868 \u306e\u8a73\u7d30\u306f\u4ee5\u4e0b\u306e\u8868\u306b\u307e\u3068\u3081\u3066\u3042\u308a\u307e\u3059\u306e\u3067\u3001\u53c2\u7167\u304f\u3060\u3055\u3044\u3002)
- \u4ee5\u4e0b\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u3042\u308b
php_admin_value
\u304a\u3088\u3073php_admin_flag
\u3092\u4f7f\u3063\u3066\u3001\u72ec\u81ea\u306e\u30ab\u30b9\u30bf\u30e0fpm-pool
\u8a2d\u5b9a\u3092\u4f5c\u6210\u3057\u3001\u305d\u308c\u3092\u9069\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 - \u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001
PHP \u3092 Apache \u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u3057\u3066\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8
\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306fApache\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u3057\u3066\u306ePHP\u5b9f\u884c\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u307e\u3059\u304c\u3001php-fpm
\u306b\u3082\u5f53\u3066\u306f\u307e\u308a\u307e\u3059\u3002 \u91cd\u8981: - \u72ec\u81ea\u306e
php-fpm
\u30d7\u30fc\u30eb\u3092\u9069\u7528\u3057\u305f\u3044\u5834\u5408\u306f\u3001/usr/local/etc/php-fpm.d/www.conf
\u30d5\u30a1\u30a4\u30eb\u3092\u81ea\u5206\u306e\u8a2d\u5b9a\u3067\u4e0a\u66f8\u304d\u3059\u308b\u304b\u3001\u5225\u306e\u540d\u524d\u3092\u4ed8\u3051\u305f\u3044\u5834\u5408\u306f\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u64cd\u4f5c\u3092\u884c\u308f\u306a\u3044\u3068\u3001\u6700\u521d\u304b\u3089\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u30d7\u30fc\u30eb\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002 PHP_INI_SYSTEM
\u5909\u66f4\u53ef\u80fd\u30e2\u30fc\u30c9\u306ePHP\u306e\u8a2d\u5b9a\u5024\u306f\u3001fpm-pool
\u8a2d\u5b9a\u3067\u306f\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u3046\u3044\u3063\u305f\u8a2d\u5b9a\u5024\u306f\u3001\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u74b0\u5883\u5909\u6570\u3092\u4f7f\u3046\u304b\u3001\u307e\u305f\u306f: - \u72ec\u81ea\u306e
php.ini
\u307e\u305f\u306fphp-fpm.conf
\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059(\u3053\u306e\u65b9\u6cd5\u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093)
"},{"location":"ja/docker-images/php-fpm/#fpm-pool","title":"\u30c7\u30d5\u30a9\u30eb\u30c8\u306efpm-pool","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u3001fpm-pool
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb(php-fpm.d/www.conf
)\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306ffpm-pool
\u3092\u4f5c\u6210\u3057\u3001\u30dd\u30fc\u30c89000\u3067\u30ea\u30c3\u30b9\u30f3\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u307b\u3068\u3093\u3069\u306ePHP\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30cb\u30fc\u30ba\u3092\u6700\u521d\u304b\u3089\u30ab\u30d0\u30fc\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3067\u3059\u3002\u3082\u3061\u308d\u3093\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u72ec\u81ea\u306e\u8a2d\u5b9a\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306e\u8aac\u660e:
- IPv4\u3068IPv6\u3067\u30dd\u30fc\u30c89000\u3067\u30ea\u30c3\u30b9\u30f3\u3057\u307e\u3059\u3002
- pm
dynamic
\u3092\u4f7f\u7528\u3057\u30012\u304b\u308950\u307e\u3067\u306e\u5b50\u30d7\u30ed\u30bb\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 - \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u9632\u3050\u305f\u3081\u306b\u3001500\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u5f8c\u306b
php-fpm
\u30d7\u30fc\u30eb\u306e\u5b50\u30d7\u30ed\u30bb\u30b9\u3092\u518d\u751f\u6210\u3057\u307e\u3059\u3002 /ping
\u3078\u306efastcgi\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u5bfe\u3057\u3066pong
\u3067\u5fdc\u7b54\u3057\u307e\u3059(\u30d7\u30fc\u30eb\u304c\u8d77\u52d5\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306e\u81ea\u52d5\u30c6\u30b9\u30c8\u306b\u4fbf\u5229)\u3002 catch_workers_output = yes
\u306b\u3088\u308a\u3001PHP\u306e\u30a8\u30e9\u30fc\u3092\u78ba\u8a8d\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u3002 clear_env = no
\u306b\u3088\u308a\u3001\u901a\u5e38\u306e Docker \u74b0\u5883\u5909\u6570\u3092\u4f7f\u3063\u3066 PHP \u74b0\u5883\u5909\u6570\u3092\u6ce8\u5165\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b
"},{"location":"ja/docker-images/php-fpm/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u4e00\u90e8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e NEWRELIC_ENABLED false NewRelic\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002\u6709\u52b9\u306b\u3059\u308b\u306b\u306fNEWRELIC_LICENSE
\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3059\u3002 NEWRELIC_LICENSE (\u8a2d\u5b9a\u306a\u3057) \u4f7f\u7528\u3059\u308bNewRelic\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3002\u91cd\u8981:NewRelic\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306fNEWRELIC_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 NEWRELIC_BROWSER_MONITORING_ENABLED true NewRelic\u30d6\u30e9\u30a6\u30b6\u76e3\u8996\u7528\u306eJavaScript\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u306e\u81ea\u52d5\u633f\u5165\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002\u91cd\u8981:NewRelic\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306fNEWRELIC_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 NEWRELIC_DISTRIBUTED_TRACING_ENABLED false \u5206\u6563\u30c8\u30ec\u30fc\u30b9\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002\u91cd\u8981:NewRelic\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001NEWRELIC_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 PHP_APC_ENABLED 1 APC\u3092\u7121\u52b9\u306b\u3059\u308b\u306b\u306f0
\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 PHP_APC_SHM_SIZE 32m \u5404\u5171\u6709\u30e1\u30e2\u30ea\u30bb\u30b0\u30e1\u30f3\u30c8\u306e\u30b5\u30a4\u30ba\u3002 PHP_DISPLAY_ERRORS Off \u30a8\u30e9\u30fc\u3092\u8868\u793a\u3055\u308c\u308b\u304b\u975e\u8868\u793a\u306b\u3059\u308b\u304b\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_DISPLAY_STARTUP_ERRORS Off \u8d77\u52d5\u6642\u306e\u30a8\u30e9\u30fc\u3092\u8868\u793a\u3059\u308b\u304b\u975e\u8868\u793a\u3059\u308b\u304b\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_ERROR_REPORTING Production E_ALL & ~E _DEPRECATED & ~E_STRICT
Development: E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
PHP\u306b\u4f7f\u7528\u3055\u308c\u308bdesired logging\u30ec\u30d9\u30eb\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_FPM_PM_MAX_CHILDREN 50 \u5b50\u30d7\u30ed\u30bb\u30b9\u306e\u6700\u5927\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3002 PHP_FPM_PM_MAX_REQUESTS 500 \u5404\u5b50\u30d7\u30ed\u30bb\u30b9\u304c\u518d\u751f\u6210\u3055\u308c\u308b\u524d\u306b\u5b9f\u884c\u3059\u308b\u3079\u304d\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_FPM_PM_MAX_SPARE_SERVERS 2 \u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306e\u30b5\u30fc\u30d0\u30fc\u30d7\u30ed\u30bb\u30b9\u306e\u6700\u5927\u8a31\u5bb9\u6570\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_FPM_PM_MIN_SPARE_SERVERS 2 \u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306e\u30b5\u30fc\u30d0\u30fc\u30d7\u30ed\u30bb\u30b9\u306e\u6700\u5c0f\u8a31\u5bb9\u6570\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_FPM_PM_PROCESS_IDLE_TIMEOUT 60s \u30a2\u30a4\u30c9\u30eb\u72b6\u614b\u306e\u30d7\u30ed\u30bb\u30b9\u304c\u7d42\u4e86\u3055\u308c\u308b\u307e\u3067\u306e\u79d2\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_FPM_PM_START_SERVERS 2 \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u5b50\u30d7\u30ed\u30bb\u30b9\u306e\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_MAX_EXECUTION_TIME 900 \u5404\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u6700\u5927\u5b9f\u884c\u6642\u9593(\u79d2)\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_MAX_FILE_UPLOADS 20 \u540c\u6642\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u308b\u30d5\u30a1\u30a4\u30eb\u306e\u6700\u5927\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_MAX_INPUT_VARS 2000 \u53d7\u3051\u5165\u308c\u53ef\u80fd\u306a\u5165\u529b\u5909\u6570\u306e\u6570\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 PHP_MEMORY_LIMIT 400M \u30b9\u30af\u30ea\u30d7\u30c8\u304c\u6d88\u8cbb\u3067\u304d\u308b\u30e1\u30e2\u30ea\u306e\u6700\u5927\u91cf\u3002\u8a73\u7d30\u306f\u3001php.net\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 XDEBUG_ENABLE (\u8a2d\u5b9a\u306a\u3057) xdebug
\u62e1\u5f35\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001true
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 BLACKFIRE_ENABLED (\u8a2d\u5b9a\u306a\u3057) blackfire
\u62e1\u5f35\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f true
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 BLACKFIRE_SERVER_ID (\u8a2d\u5b9a\u306a\u3057) Blackfire.io\u304c\u63d0\u4f9b\u3059\u308bBlackfire\u30b5\u30fc\u30d0\u30fcID\u3002BLACKFIRE_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 BLACKFIRE_SERVER_TOKEN (\u8a2d\u5b9a\u306a\u3057) Blackfire.io\u304c\u63d0\u4f9b\u3059\u308bBlackfire\u30b5\u30fc\u30d0\u30fc\u30c8\u30fc\u30af\u30f3\u3002BLACKFIRE_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 BLACKFIRE_LOG_LEVEL 3 blackfire\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u30ed\u30b0\u30ec\u30d9\u30eb\u3092\u5909\u66f4\u3057\u307e\u3059\u3002\u5229\u7528\u53ef\u80fd\u306a\u5024:\u30ed\u30b0\u306e\u5197\u9577\u6027\u30ec\u30d9\u30eb (4: \u30c7\u30d0\u30c3\u30b0, 3: \u60c5\u5831, 2: \u8b66\u544a, 1: \u30a8\u30e9\u30fc)
\u8a73\u7d30\u306f\u3001blackfire.io\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002"},{"location":"ja/docker-images/postgres/","title":"PostgreSQL","text":"Lagoon PostgreSQL Docker\u30a4\u30e1\u30fc\u30b8\u3002\u516c\u5f0fPostgreSQL Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/postgres/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 11 (\u4e92\u63db\u6027\u306e\u305f\u3081\u3060\u3051\u306b\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u306b\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093) -
uselagoon/postgres-11
- 12 Dockerfile (2024\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/postgres-12
- 13 Dockerfile (2025\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/postgres-13
- 14 Dockerfile (2026\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/postgres-14
- 15 Dockerfile (2027\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/postgres-15
- 16 Dockerfile (2028\u5e7411\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/postgres-16
\u30d2\u30f3\u30c8
Lagoon\u306f\u3001\u516c\u5f0f\u306b\u30a2\u30ca\u30a6\u30f3\u30b9\u3055\u308c\u305f\u7d42\u4e86\u65e5(EOL)\u306e\u5f8c\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3001EOL\u306b\u9054\u3057\u305fPostgreSQL\u30a4\u30e1\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://www.postgresql.org/support/versioning\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/docker-images/postgres/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"Postgres\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c85432
\u3067\u3059\u3002
Lagoon\u304cPostgres\u30b3\u30f3\u30c6\u30ca\u306e\u5b9f\u884c\u65b9\u6cd5\u3092\u6700\u9069\u306b\u9078\u629e\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001lagoon.type: postgres
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001DBaaS\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306f\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u3067\u5229\u7528\u53ef\u80fd\u306a\u5834\u5408\u3001\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u5185\u3067Postgres\u3092\u78ba\u5b9f\u306b\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306f\u3001lagoon.type: postgres-single
\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002Postgres\u30b3\u30f3\u30c6\u30ca\u306b\u5bfe\u3057\u3066\u306f\u3001\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u5e38\u306b/var/lib/postgresql/data
\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/postgres/#docker-composeyml-snippet","title":"docker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.ymlpostgres:\nimage: uselagoon/postgres-14-drupal:latest\nlabels:\n# Lagoon\u306bPostgres\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3042\u308b\u3053\u3068\u3092\u4f1d\u3048\u308b\nlagoon.type: postgres\nports:\n# \u30dd\u30fc\u30c85432\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u3067\u516c\u958b\u3057\u3001\n# `docker-compose port postgres 5432`\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\n- \"5432\"\nvolumes:\n# Postgres\u7528\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d1\u30b9\u306b\u540d\u524d\u4ed8\u304d\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\n- db:/var/lib/postgresql/data\n
"},{"location":"ja/docker-images/postgres/#_1","title":"\u30d2\u30f3\u30c8\uff06\u30b3\u30c4","text":"\u30b3\u30f3\u30c6\u30ca\u8d77\u52d5\u76f4\u5f8c\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u305f\u3081\u306eSQL\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3089\u306e.sql
\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30f3\u30c6\u30ca\u306edocker-entrypoint-initdb.d
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308b .sql
\u30d5\u30a1\u30a4\u30eb\u306f\u3001PostgreSQL\u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5\u6642\u306b\u81ea\u52d5\u7684\u306b\u5b9f\u884c\u3055\u308c\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u521d\u671f\u5316\u51e6\u7406\u306e\u4e00\u90e8\u3068\u3057\u3066\u52d5\u4f5c\u3057\u307e\u3059\u3002
\u8b66\u544a
\u3053\u308c\u3089\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001\u7a7a\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u3055\u308c\u305f\u5834\u5408\u306b\u306e\u307f\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066\u306f\u52d5\u4f5c\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/docker-images/python/","title":"Python","text":"Lagoon python
Docker image\u3002\u3053\u308c\u306f\u516c\u5f0f\u306ePython Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/python/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 2.7 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/python-2.7
- 3.7 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/python-3.7
- 3.8 Dockerfile (2024\u5e7410\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/python-3.8
- 3.9 Dockerfile (2025\u5e7410\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/python-3.9
- 3.10 Dockerfile (2026\u5e7410\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/python-3.10
- 3.11 Dockerfile (2027\u5e7410\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/python-3.11
- 3.12 Dockerfile (2028\u5e7410\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8)-
uselagoon/python-3.12
\u30d2\u30f3\u30c8
Lagoon\u306f\u3001\u516c\u5f0f\u306b\u30a2\u30ca\u30a6\u30f3\u30b9\u3055\u308c\u305f\u7d42\u4e86\u65e5(EOL)\u306e\u5f8c\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3001EOL\u306b\u9054\u3057\u305fPython\u30a4\u30e1\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://devguide.python.org/versions/#versions\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/docker-images/python/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"Python\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c88800
\u3067\u3059\u3002
Lagoon\u3067\u306f\u3001lagoon.type: python-persistent
\u3092\u4f7f\u7528\u3057\u3066\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002
\u6c38\u7d9a\u7684\u306a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u4ee5\u4e0b\u306e\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059: lagoon.persistent
= \u30b3\u30f3\u30c6\u30ca\u5185\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059 - \u4f8b\u3048\u3070/app/files lagoon.persistent.size
= Lagoon\u306b\u5bfe\u3057\u3066\u3001\u3053\u306e\u30d1\u30b9\u306b\u5272\u308a\u5f53\u3066\u308b\u30b9\u30c8\u30ec\u30fc\u30b8\u5bb9\u91cf\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
\u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5171\u6709\u3059\u308b\u8907\u6570\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u3092\u4f7f\u7528\u3057\u307e\u3059 lagoon.persistent.name
=(\u30aa\u30d7\u30b7\u30e7\u30f3)\u8907\u6570\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5171\u6709\u3059\u308b\u5834\u5408\u3001\u5225\u306e\u540d\u524d\u4ed8\u304d\u30b5\u30fc\u30d3\u30b9\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306bLagoon\u306b\u6307\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/python/#docker-composeyml-snippet","title":"docker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.ymlpython:\nbuild:\n# \u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0\u306b\u3042\u308bDockerfile\u3092\u4f7f\u7528\u3057\u3066\u30d3\u30eb\u30c9\u3092\u884c\u3046\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# Lagoon\u306b\u5bfe\u3057\u3001Python\u30b5\u30fc\u30d3\u30b9\u3067\u3042\u308b\u3053\u3068\u3068\u3001/app/files\u306b500MB\u306e\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\nlagoon.type: python-persistent\nlagoon.persistent: /app/files\nlagoon.persistent.size: 500Mi\nports:\n# \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u307f\u9069\u7528\u3055\u308c\u308b\u8a2d\u5b9a\u3067\u3059\n# \u30dd\u30fc\u30c88800\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3057\u3001\n# `docker compose port node 8800`\u3067\u30dd\u30fc\u30c8\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n- \"8800\"\nvolumes:\n# \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u307f\u9069\u7528\u3055\u308c\u308b\u8a2d\u5b9a\u3067\u3059\n# files\u3068\u3044\u3046\u540d\u524d\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u5b9a\u7fa9\u3055\u308c\u305f\u30d1\u30b9\u306b\u3092\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u672c\u756a\u74b0\u5883\u3068\u540c\u3058\u72b6\u614b\u3092\u518d\u73fe\u3059\u308b\u305f\u3081\u306b\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3067\u5229\u7528\u3055\u308c\u307e\u3059\u3002\n- files:/app/files\n
"},{"location":"ja/docker-images/rabbitmq/","title":"RabbitMQ","text":"Lagoon RabbitMQ Dockerfile\u3067\u3001\u7ba1\u7406\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u3059\u3002docker-hub\u306b\u3042\u308b\u516c\u5f0f\u306erabbitmq:3-management
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eRabbitMQ\u30ad\u30e5\u30fc\u30d6\u30ed\u30fc\u30ab\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u3060\u3051\u3067\u306a\u304f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u9ad8\u53ef\u7528\u6027\u30ad\u30e5\u30fc\u30b5\u30dd\u30fc\u30c8(\u30df\u30e9\u30fc\u30ea\u30f3\u30b0\u30ad\u30e5\u30fc)\u3092\u5099\u3048\u305f\u30af\u30e9\u30b9\u30bf\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306e\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3068\u3057\u3066\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001RabbitMQ\u30d6\u30ed\u30fc\u30ab\u30fc\u306f\u30b7\u30f3\u30b0\u30eb\u30ce\u30fc\u30c9\u3067\u8d77\u52d5\u3057\u307e\u3059\u3002\u30af\u30e9\u30b9\u30bf\u3092\u8d77\u52d5\u3059\u308b\u5834\u5408\u306f\u3001rabbitmq
\u30a4\u30e1\u30fc\u30b8\u306b\u52a0\u3048\u3066rabbitmq_peer_discovery_k8s
\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\u7d44\u307f\u8fbc\u307e\u308c\u305frabbitmq-cluster
Docker\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/docker-images/rabbitmq/#_1","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 3.10 Dockerfile (2023\u5e747\u6708\u307e\u3067\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/rabbitmq
"},{"location":"ja/docker-images/rabbitmq/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 /etc/rabbitmq/definitions.json
\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3092\u6301\u3064envplate
\u3092\u901a\u3057\u3066\u51e6\u7406\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/rabbitmq/#rabbitmqdefinitionsjson","title":"RabbitMQ\u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30ad\u30fc\u30de(definitions.json)","text":" - \u30df\u30e9\u30fc\u30ea\u30f3\u30b0\u30ad\u30e5\u30fc\u306e\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u306b\u306f\u3001\u5c11\u306a\u304f\u3068\u3082\u4e00\u3064\u306e
policy
\u304c\u5fc5\u8981\u3067\u3059\u3002 definitions.json
\u30b9\u30ad\u30fc\u30de\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u5b9f\u884c\u3001virtualhost
(vhost
)\u3001\u7ba1\u7406UI\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306eusername
\u3001password
\u3001permissions
\u3001policies
\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306e\u6700\u5c0f\u9650\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u8d77\u52d5\u6642\u306blagoon-ha
\u3068\u3044\u3046\u540d\u524d\u306e\u30dd\u30ea\u30b7\u30fc\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u304c\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u30ad\u30e5\u30fc\u540d\u306e\u30d1\u30bf\u30fc\u30f3\u306b\u4e00\u81f4\u3057\u306a\u3044\u305f\u3081\u3001\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
definitions.json\"policies\":[\n{\"vhost\":\"${RABBITMQ_DEFAULT_VHOST}\",\"name\":\"lagoon-ha\",\"pattern\":\"${RABBITMQ_DEFAULT_HA_PATTERN}\", \"definition\":{\"ha-mode\":\"exactly\",\"ha-params\":2,\"ha-sync-mode\":\"automatic\",\"ha-sync-batch-size\":5}}\n]\n
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001ha-mode
\u306fexactly
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u304a\u308a\u3001\u30ad\u30e5\u30fc(mirrors)\u306e\u30df\u30e9\u30fc\u30ea\u30f3\u30b0\u30ce\u30fc\u30c9\u306e\u6b63\u78ba\u306a\u6570\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002\u30ce\u30fc\u30c9\u306e\u6570\u306f ha-params
\u3067\u5236\u5fa1\u3055\u308c\u307e\u3059\u3002
\u8a73\u7d30\u306a\u60c5\u5831\u3084\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u306f\u3001\u516c\u5f0f\u306e RabbitMQ \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/docker-images/rabbitmq/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e RABBITMQ_DEFAULT_USER guest \u7ba1\u7406UI\u3078\u306e\u30a2\u30af\u30bb\u30b9\u7528\u306e\u30e6\u30fc\u30b6\u540d RABBITMQ_DEFAULT_PASS guest \u7ba1\u7406UI\u3078\u306e\u30a2\u30af\u30bb\u30b9\u7528\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 RABBITMQ_DEFAULT_VHOST / RabbitMQ\u306e\u30e1\u30a4\u30f3\u306e\u4eee\u60f3\u30db\u30b9\u30c8 RABBITMQ_DEFAULT_HA_PATTERN ^$ \u30df\u30e9\u30fc\u30ea\u30f3\u30b0\u3055\u308c\u305f\u30ad\u30e5\u30fc\u3092\u4e00\u81f4\u3055\u305b\u308b\u305f\u3081\u306e\u6b63\u898f\u8868\u73fe"},{"location":"ja/docker-images/redis/","title":"Redis","text":"Lagoon Redis
\u30a4\u30e1\u30fc\u30b8Dockerfile \u306f\u3001\u516c\u5f0f redis:alpine
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eRedis ephemeral \u30b5\u30fc\u30d0\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 5 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/redis-5
\u307e\u305f\u306fuselagoon/redis-5-persistent
- 6 Dockerfile -
uselagoon/redis-6
\u307e\u305f\u306fuselagoon/redis-6-persistent
- 7 Dockerfile -
uselagoon/redis-7
\u307e\u305f\u306fuselagoon/redis-7-persistent
"},{"location":"ja/docker-images/redis/#_1","title":"\u4f7f\u7528\u65b9\u6cd5","text":"Redis\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Ephemeral(\u4e00\u6642\u7684)\u3068Persistent(\u6c38\u7d9a\u7684)\u306e2\u7a2e\u985e\u306e\u30bf\u30a4\u30d7\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#ephemeral","title":"Ephemeral(\u4e00\u6642\u7684)","text":"Ephemeral\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4e00\u6642\u7684\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u304a\u308a\u3001\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u30c7\u30fc\u30bf\u306f\u4fdd\u6301\u3055\u308c\u307e\u305b\u3093\u3002
\u30e1\u30e2\u30ea\u5185(RAM)\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u5927\u304d\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u6271\u3046\u5834\u5408\u306f\u3001\u6700\u521d\u306b\u8abf\u6574\u3057\u305f\u3044\u306e\u304cMAXMEMORY
\u5909\u6570\u3067\u3059\u3002\u3053\u306e\u5909\u6570\u306f\u3001Redis\u304c\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30a2\u30a4\u30c6\u30e0\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30e1\u30e2\u30ea(RAM)\u306e\u6700\u5927\u91cf\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#persistent","title":"Persistent (\u6c38\u7d9a\u7684)","text":"Persistent\u306aRedis\u30a4\u30e1\u30fc\u30b8\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u30c7\u30fc\u30bf\u3092\u4fdd\u6301\u3057\u3001\u30ad\u30e5\u30fc\u3084\u6c38\u7d9a\u5316\u304c\u5fc5\u8981\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
Redis\u30b3\u30f3\u30c6\u30ca\u304c\u518d\u8d77\u52d5\u3057\u3066\u30c7\u30a3\u30b9\u30af\u304b\u3089\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3080\u9593\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u4e88\u671f\u3057\u306a\u3044\u526f\u4f5c\u7528\u304c\u751f\u3058\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u901a\u5e38\u306f\u30e1\u30e2\u30ea\u5185\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30b7\u30ca\u30ea\u30aa\u3067Persistent Redis\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u306f\u304a\u52e7\u3081\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/docker-images/redis/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 /etc/redis/*
\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8\u3092\u901a\u3057\u3066envplate
\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#redisconf","title":"redis.conf
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Lagoon\u3067\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3055\u308c\u305f \u30c7\u30d5\u30a9\u30eb\u30c8 \u306eRedis\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u4e00\u90e8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 -1 \u8d77\u52d5\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u6570(-1\u306f\u7121\u5236\u9650) \u30ed\u30b0\u30ec\u30d9\u30eb \u901a\u77e5 \u30ed\u30b0\u306e\u30ec\u30d9\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059 \u6700\u5927\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf 100mb \u6700\u5927\u30e1\u30e2\u30ea\u5bb9\u91cf \u6700\u5927\u30e1\u30e2\u30ea\u30dd\u30ea\u30b7\u30fc allkeys-lru Redis\u304c\u6700\u5927\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306b\u9054\u3057\u305f\u3068\u304d\u306b\u30ad\u30fc\u3092\u8ffd\u3044\u51fa\u3059\u305f\u3081\u306e\u30dd\u30ea\u30b7\u30fc REDIS_PASSWORD \u7121\u52b9 \u8a8d\u8a3c\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002"},{"location":"ja/docker-images/redis/#_2","title":"\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a","text":"\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u306b\u57fa\u3065\u3044\u3066\u3001\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 Redis\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8a73\u7d30\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u3061\u3089\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/docker-images/redis/#redis_1","title":"Redis \u6c38\u7d9a\u5316","text":"Lagoon\u306e redis
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u3057\u305fLagoon\u306e redis-persistent
Docker\u30a4\u30e1\u30fc\u30b8\u306f\u3001Redis\u30b5\u30fc\u30d3\u30b9\u3092persistent
\u30e2\u30fc\u30c9\u3067\u4f7f\u7528\u3059\u308b\u5834\u5408(\u3064\u307e\u308a\u3001\u30ad\u30fc\u304c\u30c7\u30a3\u30b9\u30af\u306b\u4fdd\u5b58\u3055\u308c\u308b\u6c38\u7d9a\u5316\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408)\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
redis
\u3068\u306e\u9055\u3044\u306f\u3001FLAVOR
\u74b0\u5883\u5909\u6570\u306e\u307f\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u4f7f\u7528\u3055\u308c\u308bredis\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5fdc\u3058\u3066\u3001\u305d\u308c\u305e\u308c\u306eRedis\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#_3","title":"\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":"Lagoon\u306eRedis\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3059\u3079\u3066redis-cli
\u30b3\u30de\u30f3\u30c9\u304c\u4e8b\u524d\u306b\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3092\u4f7f\u7528\u3057\u3066\u3001Redis \u30b5\u30fc\u30d3\u30b9\u306b\u60c5\u5831\u3092\u554f\u3044\u5408\u308f\u305b\u305f\u308a\u3001\u8a2d\u5b9a\u5024\u3092\u52d5\u7684\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u3053\u3053\u306e\u624b\u9806\u3092\u4f7f\u7528\u3057\u3066\u3001pod
\u5024\u3068\u3057\u3066redis
\u3092\u6307\u5b9a\u3057\u3066Redis\u30dd\u30c3\u30c9\u306bSSH\u3067\u63a5\u7d9a\u3057\u3001\u63a5\u7d9a\u3057\u305f\u3089\u30bf\u30fc\u30df\u30ca\u30eb\u304b\u3089\u5b9f\u884c\u3059\u308b\u3060\u3051\u3067\u3059\u3002
"},{"location":"ja/docker-images/redis/#_4","title":"\u6700\u5927\u30e1\u30e2\u30ea\u30dd\u30ea\u30b7\u30fc","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Lagoonredis
\u30a4\u30e1\u30fc\u30b8\u306fallkeys-lru
\u30dd\u30ea\u30b7\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30dd\u30ea\u30b7\u30fc\u306f\u3001Redis\u30b5\u30fc\u30d3\u30b9\u304cmaxmemory
\u5236\u9650\u306b\u9054\u3057\u305f\u5834\u5408\u3001\u6700\u5f8c\u306b\u4f7f\u7528\u3055\u308c\u305f\u30ad\u30fc\u304b\u3089\u9806\u306b\u3001Redis\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u4efb\u610f\u306e\u30ad\u30fc\u3092\u8ffd\u3044\u51fa\u3059\u3053\u3068\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002
\u4e00\u822c\u7684\u306a\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u306f\u3001Drupal\u304cRedis\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u5404\u30ad\u30fc\u306bTTL
\u5024\u3092\u8a2d\u5b9a\u3057\u306a\u3044\u5834\u5408\u304c\u3042\u308b\u305f\u3081\u3001\u3053\u308c\u304c\u7406\u60f3\u7684\u306a\u8a2d\u5b9a\u3067\u3059\u3002maxmemory-policy
\u304cvolatile-lru
\u306e\u3088\u3046\u306a\u3082\u306e\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u3066\u3001Drupal\u304c\u3053\u308c\u3089\u306eTTL
\u30bf\u30b0\u3092\u63d0\u4f9b\u3057\u306a\u3044\u5834\u5408\u3001Redis\u30b3\u30f3\u30c6\u30ca\u304c\u3044\u3063\u3071\u3044\u306b\u306a\u308a\u3001\u4efb\u610f\u306e\u30ad\u30fc\u306e\u8ffd\u3044\u51fa\u3057\u304c\u5b8c\u5168\u306b\u3067\u304d\u306a\u304f\u306a\u308a\u3001\u65b0\u3057\u3044\u30ad\u30e3\u30c3\u30b7\u30e5\u30ad\u30fc\u306e\u53d7\u3051\u5165\u308c\u3082\u5b8c\u5168\u306b\u505c\u6b62\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002
Redis\u306emaxmemory\u30dd\u30ea\u30b7\u30fc\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u60c5\u5831\u306f\u3001Redis\u306e\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
\u6ce8\u610f\u3057\u3066\u9032\u3081\u3066\u304f\u3060\u3055\u3044
\u3053\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\u3068\u3001Redis\u304c\u5b8c\u5168\u306b\u3044\u3063\u3071\u3044\u306b\u306a\u308a\u3001\u7d50\u679c\u3068\u3057\u3066\u969c\u5bb3\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#redismaxmemory","title":"Redis\u306emaxmemory
\u5024\u306e\u8abf\u6574","text":"Redis\u306b\u5272\u308a\u5f53\u3066\u308b\u6700\u9069\u306a\u30e1\u30e2\u30ea\u91cf\u3092\u898b\u3064\u3051\u308b\u306e\u306f\u3001\u306a\u304b\u306a\u304b\u96e3\u3057\u3044\u4f5c\u696d\u3067\u3059\u3002Redis\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30e1\u30e2\u30ea\u30b5\u30a4\u30ba\u3092\u8abf\u6574\u3059\u308b\u524d\u306b\u3001\u901a\u5e38\u901a\u308a\u306e\u4f7f\u7528\u3067\u3001\u5c11\u306a\u304f\u3068\u30821\u65e5\u9593\u306f\u901a\u5e38\u901a\u308a\u306b\u5b9f\u884c\u3055\u305b\u308b\u306e\u304c\u8ce2\u660e\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u30e1\u30e2\u30ea\u5024\u3092\u8abf\u6574\u3059\u308b\u969b\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u9ad8\u30ec\u30d9\u30eb\u306a\u30dd\u30a4\u30f3\u30c8\u304c\u3042\u308a\u307e\u3059\uff1a
- \u6700\u521d\u306b\u78ba\u8a8d\u3059\u308b\u3079\u304d\u3053\u3068\u306f \u73fe\u5728Redis\u304c\u4f7f\u7528\u3057\u3066\u3044\u308b\u30e1\u30e2\u30ea\u306e\u5272\u5408\u3067\u3059\u3002
- \u3053\u306e\u5272\u5408\u304c
50\uff05
\u672a\u6e80\u306e\u5834\u5408\u306f\u3001maxmemory
\u306e\u5024\u309225\uff05\u6e1b\u3089\u3059\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u3053\u306e\u5272\u5408\u304c
50\uff05
\u304b\u308975\uff05
\u306e\u9593\u3067\u3042\u308c\u3070\u3001\u554f\u984c\u306a\u304f\u7a3c\u50cd\u3057\u3066\u3044\u307e\u3059\u3002 - \u3053\u306e\u5024\u304c
75\uff05
\u3092\u8d85\u3048\u308b\u5834\u5408\u3001maxmemory
\u3092\u5897\u3084\u3059\u5fc5\u8981\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3001\u4ed6\u306e\u5909\u6570\u3092\u78ba\u8a8d\u3059\u308b\u4fa1\u5024\u304c\u3042\u308a\u307e\u3059\u3002
- Redis\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u7387\u304c\u9ad8\u3044\u3068\u5224\u65ad\u3057\u305f\u5834\u5408\u3001\u6b21\u306b\u30ad\u30fc\u306e\u8ffd\u3044\u51fa\u3057\u56de\u6570\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044\u3002
- \u30ad\u30fc\u306e\u8ffd\u3044\u51fa\u3057\u56de\u6570\u304c\u591a\u304f\u3001\u30e1\u30e2\u30ea\u4f7f\u7528\u7387\u304c
95\uff05
\u3092\u8d85\u3048\u3066\u3044\u308b\u5834\u5408\u306f\u3001Redis\u306emaxmemory
\u8a2d\u5b9a\u3092\u9ad8\u304f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 - \u30ad\u30fc\u306e\u8ffd\u3044\u51fa\u3057\u56de\u6570\u304c\u591a\u304f\u306a\u3044\u3088\u3046\u3067\u3001\u5fdc\u7b54\u6642\u9593\u304c\u59a5\u5f53\u306a\u5834\u5408\u306f\u3001\u5358\u306b Redis \u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30e1\u30e2\u30ea\u3092\u60f3\u5b9a\u901a\u308a\u306b\u7ba1\u7406\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/redis/#_5","title":"\u30b3\u30de\u30f3\u30c9\u4f8b","text":"\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001Redis\u30b5\u30fc\u30d3\u30b9\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059:
- Redis\u30b5\u30fc\u30d3\u30b9\u306b\u95a2\u3059\u308b\u3059\u3079\u3066\u306e\u60c5\u5831\u3092\u8868\u793a:
redis-cli info
- \u30b5\u30fc\u30d3\u30b9\u306e\u30e1\u30e2\u30ea\u60c5\u5831\u3092\u8868\u793a:
redis-cli info memory
- \u30b5\u30fc\u30d3\u30b9\u306e\u30ad\u30fc\u30b9\u30da\u30fc\u30b9\u60c5\u5831\u3092\u8868\u793a:
redis-cli info keyspace
- \u30b5\u30fc\u30d3\u30b9\u306e\u7d71\u8a08\u60c5\u5831\u3092\u8868\u793a:
redis-cli info stats
Redis\u30b5\u30fc\u30d3\u30b9\u306e\u5024\u3092\u3001Redis\u30b5\u30fc\u30d3\u30b9\u3092\u518d\u8d77\u52d5\u305b\u305a\u306b\u52d5\u7684\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u305f\u3060\u3057\u3001\u3053\u308c\u3089\u306e\u52d5\u7684\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u5024\u306f\u3001\u30dd\u30c3\u30c9\u304c\u518d\u8d77\u52d5\u3057\u305f\u5834\u5408 (\u30c7\u30d7\u30ed\u30a4\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3001\u307e\u305f\u306f\u5358\u306b\u30ce\u30fc\u30c9\u9593\u3067\u30b7\u30e3\u30c3\u30d5\u30eb\u3055\u308c\u305f\u5834\u5408\u306b\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059) \u306b\u306f\u6c38\u7d9a\u5316\u3055\u308c\u306a\u3044\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
maxmemory
\u8a2d\u5b9a\u5024\u3092\u52d5\u7684\u306b500mb
\u306b\u8a2d\u5b9a: config set maxmemory 500mb
maxmemory-policy
\u8a2d\u5b9a\u5024\u3092\u52d5\u7684\u306bvolatile-lru
\u306b\u8a2d\u5b9a: config set maxmemory-policy volatile-lru
"},{"location":"ja/docker-images/ruby/","title":"Ruby","text":"Lagoon ruby
Docker\u30a4\u30e1\u30fc\u30b8\u3002\u516c\u5f0f\u306ePython Alpine\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/ruby/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 3.0 (\u4e92\u63db\u6027\u306e\u305f\u3081\u3060\u3051\u306b\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u306b\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093) -
uselagoon/ruby-3.0
- 3.1 Dockerfile (2025\u5e743\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/ruby-3.1
- 3.2 Dockerfile (2026\u5e743\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/ruby-3.2
- 3.3 Dockerfile (2027\u5e743\u6708\u307e\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8) -
uselagoon/ruby-3.3
\u30d2\u30f3\u30c8
Lagoon\u306f\u3001\u516c\u5f0f\u306b\u30a2\u30ca\u30a6\u30f3\u30b9\u3055\u308c\u305f\u7d42\u4e86\u65e5(EOL)\u306e\u5f8c\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u308b\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3001EOL\u306b\u9054\u3057\u305fRuby\u30a4\u30e1\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://www.ruby-lang.org/en/downloads/releases/\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/docker-images/ruby/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"ruby\u30b3\u30f3\u30c6\u30ca\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u516c\u958b\u30dd\u30fc\u30c8\u306f\u30dd\u30fc\u30c83000
\u3067\u3059\u3002
Lagoon\u306b\u306fRuby\u30b5\u30fc\u30d3\u30b9\u5c02\u7528\u306e\u4e8b\u524d\u5b9a\u7fa9\u3055\u308c\u305f\u578b\u306f\u3042\u308a\u307e\u305b\u3093\u3002lagoon.type: generic
\u3092\u4f7f\u7528\u3057\u3066\u69cb\u6210\u3057\u3001lagoon.port: 3000 \u3067\u30dd\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/docker-images/ruby/#docker-composeyml-snippet","title":"docker-compose.yml
\u30b9\u30cb\u30da\u30c3\u30c8","text":"docker-compose.ymlruby:\nbuild:\n# \u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0\u306b\u3042\u308bDockerfile\u3092\u4f7f\u7528\u3057\u3066\u30d3\u30eb\u30c9\u3092\u884c\u3046\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\ncontext: .\ndockerfile: Dockerfile\nlabels:\n# Lagoon\u306b\u3053\u308c\u304c\u4e00\u822c\u7684\u306a\u30b5\u30fc\u30d3\u30b9\u3067\u3001\u30dd\u30fc\u30c83000\u3092\u516c\u958b\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u4f1d\u3048\u307e\u3059\nlagoon.type: generic\nlagoon.port: 3000\nports:\n# \u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306e\u307f\u9069\u7528\u3055\u308c\u308b\u8a2d\u5b9a\u3067\u3059\n# \u30dd\u30fc\u30c83000\u3092\u30e9\u30f3\u30c0\u30e0\u306a\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3057\u3001\n# `docker-compose port node 3000`\u3067\u30dd\u30fc\u30c8\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n- \"3000\"\n
"},{"location":"ja/docker-images/solr/","title":"Solr","text":"Lagoon Solr
\u30a4\u30e1\u30fc\u30b8\u306eDockerfile\u3002\u516c\u5f0f\u306esolr:<version>-alpine
\u30a4\u30e1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u3053\u306eDockerfile\u306f\u3001\u521d\u671f\u30b3\u30a2mycore
\u3092\u6301\u3064\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306eSolr\u30b5\u30fc\u30d0\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/docker-images/solr/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 5.5 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059)
- 6.6 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059)
- 7.7 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059)
- 7 (\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059) -
uselagoon/solr-7
- 8 Dockerfile -
uselagoon/solr-8
- 9 Dockerfile -
uselagoon/solr-9
"},{"location":"ja/docker-images/solr/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002 10-solr-port.sh
\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001Solr
\u30dd\u30fc\u30c8\u306e\u4fee\u6b63\u3068\u78ba\u8a8d\u3092\u884c\u3044\u307e\u3059\u3002 20-solr-datadir.sh
\u306f\u3001Solr
\u306e\u8a2d\u5b9a\u304cLagoon\u306b\u9069\u5408\u3057\u3066\u3044\u308b\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u3053\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30d1\u30b9\u3092\u8a2d\u5b9a\u3057\u3001\u6b63\u3057\u3044\u30ed\u30c3\u30af\u30bf\u30a4\u30d7\u3092\u69cb\u6210\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/solr/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u4e00\u90e8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3092\u901a\u3058\u3066\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e SOLR_JAVA_MEM 512M \u30c7\u30d5\u30a9\u30eb\u30c8\u306eJava HEAP\u30b5\u30a4\u30ba(\u4f8b. SOLR_JAVA_MEM=\"-Xms10g -Xmx10g\"
) SOLR_DATA_DIR /var/solr Solr\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3002\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u3053\u308c\u3092\u5909\u66f4\u3059\u308b\u3068\u30c7\u30fc\u30bf\u304c\u5931\u308f\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff01 SOLR_COPY_DATA_DIR_SOURCE (\u8a2d\u5b9a\u306a\u3057) \u8d77\u52d5\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u5b9a\u7fa9\u6e08\u307f\u306eSOLR_DATA_DIR
\u306b\u30b3\u30d4\u30fc\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u3067\u3059\u3002\u65e2\u5b58\u306e\u30b3\u30a2\u3092\u4f7f\u3063\u3066 Solr \u3092\u4e8b\u524d\u306b\u8a2d\u5b9a\u3057\u3066\u304a\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30b9\u30af\u30ea\u30d7\u30c8\u306f\u5b9f\u969b\u306e Solr \u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u30b3\u30d4\u30fc\u306f\u3001\u5b9b\u5148\u306b Solr \u30b3\u30a2\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306e\u307f\u884c\u308f\u308c\u307e\u3059\u3002"},{"location":"ja/docker-images/varnish/","title":"Varnish","text":"Lagoon\u306e Varnish
\u30a4\u30e1\u30fc\u30b8Dockerfile\u3067\u3059\u3002 \u516c\u5f0f Varnish
\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/docker-images/varnish/#supported-versions","title":"\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d0\u30fc\u30b8\u30e7\u30f3","text":" - 5(\u4e92\u63db\u6027\u306e\u305f\u3081\u306e\u307f\u5229\u7528\u53ef\u80fd\u3001\u516c\u5f0f\u30b5\u30dd\u30fc\u30c8\u306f\u7d42\u4e86\u3057\u3066\u3044\u307e\u3059)-
uselagoon/varnish-5
- 6.0 LTS Dockerfile -
uselagoon/varnish-6
- 7 Dockerfile -
uselagoon/varnish-7
"},{"location":"ja/docker-images/varnish/#included-varnish-modules","title":"Varnish\u30e2\u30b8\u30e5\u30fc\u30eb","text":" vbox-dynamic
- DNS \u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u3068 SRV \u30ec\u30b3\u30fc\u30c9\u304b\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u691c\u51fa\u306b\u3088\u308b\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u30d0\u30c3\u30af\u30a8\u30f3\u30c9 vbox-bodyaccess
- \u30ea\u30af\u30a8\u30b9\u30c8\u30dc\u30c7\u30a3\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b Varnish vmod
"},{"location":"ja/docker-images/varnish/#lagoon-adaptions","title":"Lagoon\u306e\u9069\u5fdc","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306fLagoon\u3067\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u3066\u6e96\u5099\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059:
- \u30d5\u30a9\u30eb\u30c0\u306e\u6a29\u9650\u306f\u3001
fix-permissions
\u3067\u81ea\u52d5\u7684\u306b\u9069\u5fdc\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002
"},{"location":"ja/docker-images/varnish/#included-defaultvcl-configuration-file","title":"default.vcl
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306b\u306f\u3001Lagoon\u3067\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\u6700\u9069\u5316\u3055\u308c\u305f\u30c7\u30d5\u30a9\u30eb\u30c8\u306evcl
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059(\u74b0\u5883\u5909\u6570\u3092\u53c2\u7167\u3057\u3066\u4e0b\u3055\u3044)\u3002
"},{"location":"ja/docker-images/varnish/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\u53ef\u80fd\u3067\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e VARNISH_BACKEND_HOST NGINX \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30db\u30b9\u30c8 VARNISH_BACKEND_PORT 8080 \u30c7\u30d5\u30a9\u30eb\u30c8\u306eVarnish\u30dd\u30fc\u30c8 VARNISH_SECRET lagoon_default_secret \u7ba1\u7406\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308bVarnish\u30b7\u30fc\u30af\u30ec\u30c3\u30c8 LIBVMOD_DYNAMIC_VERSION 5.2 vmod-dynamic
\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d0\u30fc\u30b8\u30e7\u30f3 LIBVMOD_BODYACCESS_VERSION 5.0 vmod-bodyaccess
\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30d0\u30fc\u30b8\u30e7\u30f3 HTTP_RESP_HDR_LEN 8k \u4efb\u610f\u306eHTTP\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30ec\u30b9\u30dd\u30f3\u30b9\u30d8\u30c3\u30c0\u306e\u6700\u5927\u9577 HTTP_RESP_SIZE 32k \u51e6\u7406\u53ef\u80fd\u306aHTTP\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u6700\u5927\u30d0\u30a4\u30c8\u6570 NUKE_LIMIT 150 \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30dc\u30c7\u30a3\u306e\u305f\u3081\u306e\u7a7a\u304d\u3092\u4f5c\u308b\u305f\u3081\u306b\u524a\u9664\u3092\u8a66\u307f\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u6700\u5927\u6570 CACHE_TYPE malloc varnish\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30bf\u30a4\u30d7 CACHE_SIZE 100M \u30ad\u30e3\u30c3\u30b7\u30e5\u30b5\u30a4\u30ba LISTEN 8080 \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30b5\u30fc\u30d0\u30fc\u30dd\u30fc\u30c8 MANAGEMENT_LISTEN 6082 \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u7ba1\u7406\u30ea\u30b9\u30cb\u30f3\u30b0\u30dd\u30fc\u30c8"},{"location":"ja/installing-lagoon/add-group/","title":"\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0","text":"\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0 lagoon add group -N groupname\n
"},{"location":"ja/installing-lagoon/add-project/","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8ffd\u52a0","text":""},{"location":"ja/installing-lagoon/add-project/#lagoon","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092Lagoon\u306b\u8ffd\u52a0\u3059\u308b","text":" -
\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8ffd\u52a0lagoon add project \\\n--gitUrl <YOUR-GITHUB-REPO-URL> \\\n--openshift 1 \\\n--productionEnvironment <YOUR-PROD-ENV> \\\n--branches <THE-BRANCHES-YOU-WANT-TO-DEPLOY> \\\n--project <YOUR-PROJECT-NAME>\n
--openshift
\u306e\u5024\u306f\u3001\u3042\u306a\u305f\u306eKubernetes\u30af\u30e9\u30b9\u30bf\u306eID\u3067\u3059\u3002 - \u672c\u756a\u74b0\u5883\u306f\u3001\u672c\u756a\u74b0\u5883\u3068\u3057\u3066\u4f7f\u7528\u3057\u305f\u3044\u30d6\u30e9\u30f3\u30c1\u306e\u540d\u524d\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002
- \u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u30d6\u30e9\u30f3\u30c1\u306f\u3001\u6b21\u306e\u3088\u3046\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059:
\u201c^(main|develop)$\u201d
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u306f\u4f55\u3067\u3082\u826f\u3044 - \u201c\u4f1a\u793e\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8,\u201d \u201c\u4f8b,\u201d \u306a\u3069\u3067\u3059\u3002
-
Lagoon UI\u306b\u79fb\u52d5\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u30ea\u30b9\u30c8\u306b\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u306f\u305a\u3067\u3059\uff01
"},{"location":"ja/installing-lagoon/add-project/#git","title":"\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u8ffd\u52a0\u3059\u308b","text":"Lagoon\u306f\u5404\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u308c\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3068\u3057\u3066\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3001Lagoon\u304c\u30b3\u30fc\u30c9\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-
\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ad\u30fc\u306e\u53d6\u5f97lagoon get project-key --project <YOUR-PROJECT-NAME>\n
-
\u30ad\u30fc\u3092\u30b3\u30d4\u30fc\u3057\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u3068\u3057\u3066\u4fdd\u5b58\u3057\u307e\u3059\u3002
GitHub GitLab Bitbucket
"},{"location":"ja/installing-lagoon/add-project/#gitwebhooks","title":"Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306bwebhooks\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092\u8ffd\u52a0\u3059\u308b","text":"Lagoon\u304c\u30b3\u30fc\u30c9\u306e\u66f4\u65b0\u6642\u306b\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u308b\u3088\u3046\u306b\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u63a5\u7d9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-
Lagoon\u30af\u30e9\u30b9\u30bf\u306ewebhook\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
- \u30da\u30a4\u30ed\u30fc\u30c9URL:
<LAGOON-WEBHOOK-INGRESS>
- \u30b3\u30f3\u30c6\u30f3\u30c4\u30bf\u30a4\u30d7: JSON
- \u30a2\u30af\u30c6\u30a3\u30d6: \u30a2\u30af\u30c6\u30a3\u30d6(\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u6709\u52b9/\u7121\u52b9\u3092\u5207\u308a\u66ff\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059)
- \u30a4\u30d9\u30f3\u30c8: \u95a2\u9023\u3059\u308b\u30a4\u30d9\u30f3\u30c8\u3092\u9078\u629e\u3059\u308b\u304b\u3001\u5168\u3066\u3092\u9078\u629e\u3057\u307e\u3059\u3002\u901a\u5e38\u306f\u30d7\u30c3\u30b7\u30e5\u3001\u30d6\u30e9\u30f3\u30c1\u306e\u4f5c\u6210/\u524a\u9664\u304c\u5fc5\u8981\u3067\u3059
GitHub GitLab Bitbucket
"},{"location":"ja/installing-lagoon/create-user/","title":"Lagoon\u30e6\u30fc\u30b6\u30fc\u306e\u4f5c\u6210","text":" -
Lagoon CLI\u3092\u4f7f\u3063\u3066\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059:
\u30e6\u30fc\u30b6\u30fc\u306e\u8ffd\u52a0lagoon add user --email user@example.com --firstName MyFirstName --lastName MyLastName\n
-
\u3042\u306a\u305f\u306e\u30e1\u30fc\u30eb\u306b\u79fb\u52d5\u3057\u3001\u30e1\u30fc\u30eb\u5185\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u30ea\u30bb\u30c3\u30c8\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
- \u6307\u793a\u306b\u5f93\u3063\u3066\u4f5c\u6210\u3057\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u3067Lagoon UI\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059\u3002
- \u30e6\u30fc\u30b6\u30fc\u306eSSH\u516c\u958b\u9375\u3092\u8a2d\u5b9a\u304b\u3089\u8ffd\u52a0\u3057\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/deploy-project/","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b","text":" -
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306e\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u30c7\u30d7\u30ed\u30a4lagoon deploy branch -p <\u3042\u306a\u305f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d> -b <\u3042\u306a\u305f\u306e\u30d6\u30e9\u30f3\u30c1\u540d>\n
-
Lagoon\u306eUI\u306b\u79fb\u52d5\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u78ba\u8a8d\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044 - \u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u74b0\u5883\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u306f\u305a\u3067\u3059\uff01
- \u30af\u30e9\u30b9\u30bf\u5185\u306ePods\u30ea\u30b9\u30c8\u3092\u78ba\u8a8d\u3057\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3057\u305f\u308a\u3001\u30b5\u30fc\u30d3\u30b9\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u305f\u308a\u3059\u308b\u30d3\u30eb\u30c9Pod\u304c\u898b\u3048\u308b\u306f\u305a\u3067\u3059\u3002\u5168\u3066\u306epods\u3092\u898b\u308b
kubectl get pods --all-namespaces | grep lagoon-build\n
"},{"location":"ja/installing-lagoon/gitlab/","title":"GitLab","text":"*\u307b\u3068\u3093\u3069\u306e*\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u3053\u308c\u306fLagoon\u3068GitLab\u3092\u30e6\u30fc\u30b6\u30fc\u304a\u3088\u3073\u30b0\u30eb\u30fc\u30d7\u8a8d\u8a3c\u306e\u305f\u3081\u306b\u7d71\u5408\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
- \u7ba1\u7406\u8005\u6a29\u9650\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u306eGitLab\u3067\u30d1\u30fc\u30bd\u30ca\u30eb\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
your-gitlab.com/admin/hooks
\u306e\u4e0b\u306b\u30b7\u30b9\u30c6\u30e0\u30d5\u30c3\u30af\u3092\u4f5c\u6210\u3057\u3001webhookhandler.lagoon.example.com
\u306b\u30dd\u30a4\u30f3\u30c8\u3057\u3001\u30e9\u30f3\u30c0\u30e0\u306a\u79d8\u5bc6\u306e\u30c8\u30fc\u30af\u30f3\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 - \u300c\u30ea\u30dd\u30b8\u30c8\u30ea\u66f4\u65b0\u30a4\u30d9\u30f3\u30c8\u300d\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002
-
lagoon-core-values.yml
\u3092\u66f4\u65b0\u3057\u307e\u3059:
lagoon-core-values.ymlapi:\nadditionalEnvs:\nGITLAB_API_HOST: <<GitLab\u306eURL \u4f8b: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << API\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u6301\u3064\u30d1\u30fc\u30bd\u30ca\u30eb\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3 >>\nGITLAB_SYSTEM_HOOK_TOKEN: << \u30b7\u30b9\u30c6\u30e0\u30d5\u30c3\u30af\u79d8\u5bc6\u30c8\u30fc\u30af\u30f3 >>\nwebhook-haondler:\nadditionalEnvs:\nGITLAB_API_HOST: <<GitLab\u306eURL \u4f8b: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << API\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u6301\u3064\u30d1\u30fc\u30bd\u30ca\u30eb\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3 >>\nGITLAB_SYSTEM_HOOK_TOKEN: << \u30b7\u30b9\u30c6\u30e0\u30d5\u30c3\u30af\u79d8\u5bc6\u30c8\u30fc\u30af\u30f3 >>\nwebhooks2tasks:\nadditionalEnvs:\nGITLAB_API_HOST: <<GitLab\u306eURL \u4f8b: https://your-gitlab.com>>\nGITLAB_API_TOKEN: << Personal API\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u6301\u3064\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3 >>\nGITLAB_SYSTEM_HOOK_TOKEN: << \u30b7\u30b9\u30c6\u30e0\u30d5\u30c3\u30af\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30c8\u30fc\u30af\u30f3 >>\n
-
lagoon-core
helmchart\u3092Helm\u3067\u66f4\u65b0\u3057\u307e\u3059\u3002
- \u3059\u3067\u306bKeycloak\u306b\u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u305d\u308c\u3089\u3092\u524a\u9664\u3057\u307e\u3059\u3002
- API\u30dd\u30c3\u30c9\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:GitLab\u3068\u540c\u671f
yarn sync:gitlab:all\n
"},{"location":"ja/installing-lagoon/install-harbor/","title":"Harbor\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":" -
Helm\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0\u3057\u307e\u3059:
Helm\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0helm repo add harbor https://helm.goharbor.io\n
-
\u3042\u306a\u305f\u306e\u7279\u5b9a\u306e\u72b6\u6cc1\u306b\u6700\u9069\u306aHarbor\u306e\u8a2d\u5b9a\u3092\u8003\u616e\u3057\u3066\u304f\u3060\u3055\u3044 - \u8a73\u7d30\u306a\u63a8\u5968\u4e8b\u9805\u306b\u3064\u3044\u3066\u306f\u5f7c\u3089\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044:
- \u753b\u50cf\u306eblob(
imageChartStorage
)\u306b\u306fS3\u4e92\u63db\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002 - Postgres\u30b5\u30fc\u30d3\u30b9(
database.type
)\u306b\u306f\u30de\u30cd\u30fc\u30b8\u30c9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002 - \u9ad8\u8ca0\u8377\u30b7\u30ca\u30ea\u30aa\u3067\u306f\u3001\u30de\u30cd\u30fc\u30b8\u30c9Redis\u30b5\u30fc\u30d3\u30b9(
redis.type
)\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002
-
\u8a2d\u5b9a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306bharbor-values.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u30d7\u30ed\u30ad\u30b7\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u6ce8\u91c8\u306f\u5927\u304d\u306a\u753b\u50cf\u306e\u30d7\u30c3\u30b7\u30e5\u306b\u5f79\u7acb\u3061\u307e\u3059:
harbor-values.ymlexpose:\ningress:\nannotations:\nkubernetes.io/tls-acme: \"true\"\nnginx.ingress.kubernetes.io/proxy-buffering: \"off\"\nnginx.ingress.kubernetes.io/proxy-request-buffering: \"off\"\nhosts:\ncore: harbor.lagoon.example.com\ntls:\nenabled: true\ncertSource: secret\nsecret:\nsecretName: harbor-harbor-ingress\nexternalURL: https://harbor.lagoon.example.com\nharborAdminPassword: <\u3042\u306a\u305f\u306eHarbor\u7ba1\u7406\u8005\u30d1\u30b9\u30ef\u30fc\u30c9>\nchartmuseum:\nenabled: false\nclair:\nenabled: false\nnotary:\nenabled: false\ntrivy:\nenabled: false\njobservice:\njobLogger: stdout\n
-
\u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308bHarbor\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u8981\u4ef6\u3092\u78ba\u8a8d\u3057\u306a\u304c\u3089\u3001Harbor\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
Harbor\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebhelm upgrade --install --create-namespace \\\n--namespace harbor --wait \\\n-f harbor-values.yml \\\nharbor harbor/harbor\n
-
harbor.yml
\u3067\u8a2d\u5b9a\u3057\u305fURL\u3067Harbor\u3092\u8a2a\u308c\u307e\u3059\u3002
- \u30e6\u30fc\u30b6\u30fc\u540d:admin
- \u30d1\u30b9\u30ef\u30fc\u30c9:
Harbor\u306e\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u53d6\u5f97kubectl -n harbor get secret harbor-core -o jsonpath=\"{.data.HARBOR_ADMIN_PASSWORD}\" | base64 --decode\n
-
\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306eLagoon Remote values.yml
\u3068harbor-values.yml
\u306b\u4e0a\u8a18\u306eHarbor\u306e\u8cc7\u683c\u60c5\u5831\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/install-lagoon-remote/","title":"Lagoon Remote\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u6b21\u306b\u3001Lagoon Remote\u3092Lagoon\u540d\u524d\u7a7a\u9593\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002RabbitMQ\u30b5\u30fc\u30d3\u30b9\u304c\u30d6\u30ed\u30fc\u30ab\u30fc\u3068\u306a\u308a\u307e\u3059\u3002
-
\u524d\u306e\u4e8c\u3064\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u540c\u69d8\u306b\u3001\u8a2d\u5b9a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306blagoon-remote-values.yml
\u3092\u4f5c\u6210\u3057\u3001\u5024\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002
- rabbitMQPassword
RabbitMQ password\u3092\u53d6\u5f97kubectl -n lagoon-core get secret lagoon-core-broker -o jsonpath=\"{.data.RABBITMQ_PASSWORD}\" | base64 --decode\n
- rabbitMQHostname
lagoon-remote-values.ymllagoon-core-broker.lagoon-core.svc.local\n
- taskSSHHost
SSH Host\u3092\u66f4\u65b0kubectl get service lagoon-core-broker-amqp-ext \\\n-o custom-columns=\"NAME:.metadata.name,IP ADDRESS:.status.loadBalancer.ingress[*].ip,HOSTNAME:.status.loadBalancer.ingress[*].hostname\"\n
- harbor-password
Harbor secret\u3092\u53d6\u5f97kubectl -n harbor get secret harbor-harbor-core -o jsonpath=\"{.data.HARBOR_ADMIN_PASSWORD}\" | base64 --decode\n
-
Harbor\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u30b9\u30c6\u30c3\u30d7\u304b\u3089Harbor\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
lagoon-remote-values.ymllagoon-build-deploy:\nenabled: true\nextraArgs:\n- \"--enable-harbor=true\"\n- \"--harbor-url=https://harbor.lagoon.example.com\"\n- \"--harbor-api=https://harbor.lagoon.example.com/api/\"\n- \"--harbor-username=admin\"\n- \"--harbor-password=<from harbor-harbor-core secret>\"\nrabbitMQUsername: lagoon\nrabbitMQPassword: <from lagoon-core-broker secret>\nrabbitMQHostname: lagoon-core-broker.lagoon-core.svc.cluster.local\nlagoonTargetName: <name of lagoon remote, can be anything>\ntaskSSHHost: <IP of ssh service loadbalancer>\ntaskSSHPort: \"22\"\ntaskAPIHost: \"api.lagoon.example.com\"\ndbaas-operator:\nenabled: true\nmariadbProviders:\nproduction:\nenvironment: production\nhostname: 172.17.0.1.nip.io\nreadReplicaHostnames:\n- 172.17.0.1.nip.io\npassword: password\nport: '3306'\nuser: root\ndevelopment:\nenvironment: development\nhostname: 172.17.0.1.nip.io\nreadReplicaHostnames:\n- 172.17.0.1.nip.io\npassword: password\nport: '3306'\nuser: root\n
-
ssh-core service account
-
Lagoon Remote\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b:
Lagoon remote\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebhelm upgrade --install --create-namespace \\\n--namespace lagoon \\\n-f lagoon-remote-values.yml \\\nlagoon-remote lagoon/lagoon-remote\n
"},{"location":"ja/installing-lagoon/lagoon-backups/","title":"Lagoon\u30d0\u30c3\u30af\u30a2\u30c3\u30d7","text":"Lagoon\u306f\u3001K8up\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059:https://k8up.io\u3002Lagoon\u306fK8up\u3068\u5bc6\u63a5\u306b\u7d71\u5408\u3055\u308c\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3080\u3057\u308d\u3001Lagoon\u306f\u305d\u306e\u30ea\u30bd\u30fc\u30b9\u3092K8up\u304c\u81ea\u52d5\u7684\u306b\u767a\u898b\u3057\u3066\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3067\u304d\u308b\u3088\u3046\u306b\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002
Lagoon\u306fK8up 1.x\u3068\u5e83\u7bc4\u306b\u30c6\u30b9\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u307e\u30602.x\u3068\u306f\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u30021.1.0\u30c1\u30e3\u30fc\u30c8\u30d0\u30fc\u30b8\u30e7\u30f3(\u30a2\u30d7\u30ea\u30d0\u30fc\u30b8\u30e7\u30f3v1.2.0)\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u307e\u3059\u3002
-
\u30dd\u30ea\u30b7\u30fc\u3092\u6301\u3064\u65b0\u3057\u3044AWS\u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
example K8up IAM user{\n\"Version\":\"2012-10-17\",\n\"Statement\":[\n{\n\"Sid\":\"VisualEditor0\",\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:ListAllMyBuckets\",\n\"s3:CreateBucket\",\n\"s3:GetBucketLocation\"\n],\n\"Resource\":\"*\"\n},\n{\n\"Sid\":\"VisualEditor1\",\n\"Effect\":\"Allow\",\n\"Action\":\"s3:ListBucket\",\n\"Resource\":\"arn:aws:s3:::baas-*\"\n},\n{\n\"Sid\":\"VisualEditor2\",\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:PutObject\",\n\"s3:GetObject\",\n\"s3:AbortMultipartUpload\",\n\"s3:DeleteObject\",\n\"s3:ListMultipartUploadParts\"\n],\n\"Resource\":\"arn:aws:s3:::baas-*/*\"\n}\n]\n}\n
-
\u3042\u306a\u305f\u306e\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306b\u5408\u308f\u305b\u3066k8up-values.yml
\u3092\u4f5c\u6210\u3057\u307e\u3059:
k8up-values.ymlk8up:\nenvVars:\n- name: BACKUP_GLOBALS3ENDPOINT\nvalue: 'https://s3.eu-west-1.amazonaws.com'\n- name: BACKUP_GLOBALS3BUCKET\nvalue: ''\n- name: BACKUP_GLOBALKEEPJOBS\nvalue: '1'\n- name: BACKUP_GLOBALSTATSURL\nvalue: 'https://backup.lagoon.example.com'\n- name: BACKUP_GLOBALACCESSKEYID\nvalue: ''\n- name: BACKUP_GLOBALSECRETACCESSKEY\nvalue: ''\n- name: BACKUP_BACKOFFLIMIT\nvalue: '2'\n- name: BACKUP_GLOBALRESTORES3BUCKET\nvalue: ''\n- name: BACKUP_GLOBALRESTORES3ENDPOINT\nvalue: 'https://s3.eu-west-1.amazonaws.com'\n- name: BACKUP_GLOBALRESTORES3ACCESSKEYID\nvalue: ''\n- name: BACKUP_GLOBALRESTORES3SECRETACCESSKEY\nvalue: ''\ntimezone: Europe/Zurich\n
-
K8up\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb:
K8up\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u30b9\u30c6\u30c3\u30d71helm repo add appuio https://charts.appuio.ch\n
K8up\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u30b9\u30c6\u30c3\u30d7 2kubectl apply -f https://github.com/vshn/k8up/releases/download/v1.2.0/k8up-crd.yaml\n
K8up\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30b9\u30c6\u30c3\u30d73helm upgrade --install --create-namespace \\\n--namespace k8up \\\n-f k8up-values.yaml \\\n--version 1.1.0 \\\nk8up appuio/k8up\n
-
lagoon-core-values.yml
\u3092\u66f4\u65b0\u3057\u307e\u3059:
lagoon-core-values.ymls3BAASAccessKeyID: <<Access Key ID for restore bucket>>\ns3BAASSecretAccessKey: <<Access Key Secret for restore bucket>>\n
-
lagoon-core
\u3092\u518d\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/lagoon-cli/","title":"Lagoon CLI\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":" - \u3042\u306a\u305f\u306e\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u306b\u5bfe\u5fdc\u3059\u308b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001https://github.com/uselagoon/lagoon-cli#install\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002macOS\u3068Linux\u3067\u306f\u3001Homebrew\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
brew tap uselagoon/lagoon-cli
brew install lagoon
-
CLI\u306fLagoon\u3068\u3069\u306e\u3088\u3046\u306b\u901a\u4fe1\u3059\u308b\u304b\u3092\u77e5\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
Lagoon config lagoon config add \\\n--graphql https://YOUR-API-URL/graphql \\\n--ui https://YOUR-UI-URL \\\n--hostname YOUR.SSH.IP \\\n--lagoon YOUR-LAGOON-NAME \\\n--port 22\n
-
SSH\u30ad\u30fc\u3067\u8a8d\u8a3c\u3057\u3066Lagoon\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002
- Lagoon UI(URL\u306f
values.yml
\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059)\u306b\u79fb\u52d5\u3057\u3001\u8a2d\u5b9a\u306b\u9032\u307f\u307e\u3059\u3002 - \u516c\u958bSSH\u30ad\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
-
amazee.io\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u4f7f\u7528\u3057\u3088\u3046\u3068\u3059\u308b\u306e\u3092\u9632\u3050\u305f\u3081\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306eLagoon\u3092_\u3042\u306a\u305f\u306e_ Lagoon\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
Lagoon config lagoon config default --lagoon <YOUR-LAGOON-NAME>\n
-
lagoon login
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002Lagoon\u306fSSH\u306b\u63a5\u7d9a\u3057\u3001\u516c\u958b/\u79d8\u5bc6\u30ad\u30fc\u30da\u30a2\u306b\u5bfe\u3057\u3066\u8a8d\u8a3c\u3092\u884c\u3044\u3001\u30e6\u30fc\u30b6\u30fc\u540d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002
-
lagoon whoami
\u3092\u901a\u3058\u3066\u691c\u8a3c\u3057\u307e\u3059\u3002\u305d\u308c\u304c \u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u307e\u3059\u3002
\u60c5\u5831
\u4e00\u822c\u7684\u306b\u306fLagoon\u7ba1\u7406\u8005\u30ed\u30fc\u30eb\u306e\u4f7f\u7528\u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u6700\u521d\u306b\u59cb\u3081\u308b\u305f\u3081\u306b\u306f\u7ba1\u7406\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u7406\u60f3\u7684\u306b\u306f\u3001\u7ba1\u7406\u8005\u3067\u306f_\u306a\u3044_\u5225\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u3059\u3050\u306b\u4f5c\u6210\u3057\u3066\u4f5c\u696d\u3092\u884c\u3044\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/lagoon-core/","title":"Lagoon Core\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":""},{"location":"ja/installing-lagoon/lagoon-core/#install-the-helm-chart","title":"Helm\u30c1\u30e3\u30fc\u30c8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":" -
Lagoon Charts\u30ea\u30dd\u30b8\u30c8\u30ea\u3092Helm\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u8ffd\u52a0\u3057\u307e\u3059:
Lagoon Charts\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u8ffd\u52a0helm repo add lagoon https://uselagoon.github.io/lagoon-charts/\n
-
\u4f5c\u6210\u3059\u308b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002values.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3067\u3053\u306e\u30d1\u30b9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u4f5c\u6210\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b
values.yml
\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8URL\u3092\u66f4\u65b0\u3057\u307e\u3059(\u305d\u308c\u3089\u3092api.lagoon.example.com
\u304b\u3089\u3042\u306a\u305f\u306e\u5024\u306b\u5909\u66f4\u3057\u307e\u3059)\u3002 \u4f8b: https://github.com/uselagoon/lagoon-charts/blob/main/charts/lagoon-core/ci/linter-values.yaml -
\u6b21\u306b\u3001values.yml
\u3092\u6307\u5b9a\u3057\u3066helm upgrade --install
\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:
values.yml\u3092\u4f7f\u7528\u3057\u3066Helm\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9helm upgrade --install --create-namespace --namespace lagoon-core -f values.yml lagoon-core lagoon/lagoon-core`\n
-
Lagoon Core\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3057\u305f\uff01
\u8b66\u544a
\u6642\u3005\u3001Docker Hub\u306e\u30d7\u30eb\u5236\u9650\u306b\u906d\u9047\u3057\u307e\u3059\u3002\u3053\u308c\u304c\u7d9a\u304f\u5834\u5408\u306f\u3001\u79c1\u305f\u3061\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u4ed6\u306e\u5834\u6240\u306b\u79fb\u52d5\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/lagoon-core/#configure-keycloak","title":"Keycloak \u3092\u69cb\u6210\u3059\u308b","text":"Keycloak \u306e values.yml
\u3067\u5b9a\u7fa9\u3057\u305f URL \u3067 Keycloak \u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002
- \u300c\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059
- \u30e6\u30fc\u30b6\u30fc\u540d:
admin
- \u30d1\u30b9\u30ef\u30fc\u30c9:
lagoon-core-keycloak
\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3001\u30ad\u30fc\u5024 KEYCLOAK_ADMIN_PASSWORD
\u3092\u4f7f\u7528\u3057\u307e\u3059 - \u6b21\u306e\u3088\u3046\u306b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u53d6\u5f97\u3057\u307e\u3059: \u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u53d6\u5f97
kubectl -n lagoon-core get secret lagoon-core-keycloak -o jsonpath=\"{.data.KEYCLOAK_ADMIN_PASSWORD}\" | base64 --decode\n
-
\u53f3\u4e0a\u306e \u30e6\u30fc\u30b6\u30fc \u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
1. \u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u7ba1\u7406 \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
2. \u4f5c\u6210\u3057\u305f\u7ba1\u7406\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u306e \u30e1\u30fc\u30eb \u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
3. \u4fdd\u5b58\u3057\u307e\u3059\u3002
-
Realm Lagoon -> Realm Settings -> Email \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
1. Keycloak \u306e\u30e1\u30fc\u30eb \u30b5\u30fc\u30d0\u30fc\u3092\u8a2d\u5b9a\u3057\u3001\u300cTest connection\u300d\u30dc\u30bf\u30f3\u3067\u63a5\u7d9a\u3092\u30c6\u30b9\u30c8\u3057\u307e\u3059\u3002
-
Realm Lagoon -> Realm Settings -> Login \u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
1. \u300cForgot Password\u300d\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002
2. \u4fdd\u5b58\u3057\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/lagoon-core/#log-in-to-the-ui","title":"UI \u306b\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059\u3002","text":"\u3053\u308c\u3067\u3001UI \u306e values.yml
\u3067\u5b9a\u7fa9\u3057\u305f URL \u3067 Lagoon UI \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002
- \u30e6\u30fc\u30b6\u30fc\u540d:
lagoonadmin
- \u30b7\u30fc\u30af\u30ec\u30c3\u30c8:
lagoon-core-keycloak
\u30b7\u30fc\u30af\u30ec\u30c3\u30c8 \u30ad\u30fc\u5024: LAGOON-CORE-KEYCLOAK
\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 - \u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002 \u79d8\u5bc6\u3092\u53d6\u5f97\u3059\u308b
kubectl -n lagoon-core get secret lagoon-core-keycloak -o jsonpath=\"{.data.KEYCLOAK_LAGOON_ADMIN_PASSWORD}\" | base64 --decode\n
"},{"location":"ja/installing-lagoon/lagoon-files/","title":"Lagoon\u30d5\u30a1\u30a4\u30eb","text":"Lagoon\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306a\u3069\u306e\u30bf\u30b9\u30af\u306e\u30d5\u30a1\u30a4\u30eb\u51fa\u529b\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001S3\u4e92\u63db\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u30db\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002
-
\u30dd\u30ea\u30b7\u30fc\u3092\u6301\u3064\u65b0\u3057\u3044AWS\u30e6\u30fc\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059:
\u4f8b:\u30d5\u30a1\u30a4\u30ebIAM\u30e6\u30fc\u30b6\u30fc{\n\"Version\":\"2012-10-17\",\n\"Statement\":[\n{\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:ListBucket\",\n\"s3:GetBucketLocation\",\n\"s3:ListBucketMultipartUploads\"\n],\n\"Resource\":\"arn:aws:s3:::S3_BUCKET_NAME\"\n},\n{\n\"Effect\":\"Allow\",\n\"Action\":[\n\"s3:PutObject\",\n\"s3:GetObject\",\n\"s3:DeleteObject\",\n\"s3:ListMultipartUploadParts\",\n\"s3:AbortMultipartUpload\"\n],\n\"Resource\":\"arn:aws:s3:::S3_BUCKET_NAME/*\"\n}\n]\n}\n
-
lagoon-core-values.yml
\u3092\u66f4\u65b0\u3057\u307e\u3059:
lagoon-core-values.ymls3FilesAccessKeyID: <<\u30a2\u30af\u30bb\u30b9\u30ad\u30fcID>>\ns3FilesBucket: <<Lagoon\u30d5\u30a1\u30a4\u30eb\u7528\u306e\u30d0\u30b1\u30c3\u30c8\u540d>>\ns3FilesHost: <<S3\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8(\u4f8b:\"https://s3.eu-west-1.amazonaws.com\")>>\ns3FilesSecretAccessKey: <<\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u30b7\u30fc\u30af\u30ec\u30c3\u30c8>>\ns3FilesRegion: <<S3\u30ea\u30fc\u30b8\u30e7\u30f3>>\n
-
\u3082\u3057\u3082\u3042\u306a\u305f\u304c lagoon-core
\u306e\u524d\u306bingress-nginx
\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u63d0\u6848\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u3088\u308a\u5927\u304d\u306a\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059:
lagoon-core-values.ymlcontroller:\nconfig:\nclient-body-timeout: '600' # \u6700\u5927600\u79d2\u306e\u30d5\u30a1\u30a4\u30eb\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\nproxy-send-timeout: '1800' # \u6700\u592730\u5206\u306e\u63a5\u7d9a - \u30a6\u30a7\u30d6\u30bd\u30b1\u30c3\u30c8\u306b\u5fc5\u8981\nproxy-read-timeout: '1800' # \u6700\u592730\u5206\u306e\u63a5\u7d9a - \u30a6\u30a7\u30d6\u30bd\u30b1\u30c3\u30c8\u306b\u5fc5\u8981\nproxy-body-size: 1024m # 1GB\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\nproxy-buffer-size: 64k # \u5927\u304d\u306a\u30d0\u30c3\u30d5\u30a1\n
"},{"location":"ja/installing-lagoon/lagoon-logging/","title":"Lagoon\u30ed\u30ae\u30f3\u30b0","text":"Lagoon\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3001\u30b3\u30f3\u30c6\u30ca\u3001\u30eb\u30fc\u30bf\u30fc\u306e\u30ed\u30b0\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306bOpenSearch\u3068\u7d71\u5408\u3057\u307e\u3059\u3002Lagoon\u30ed\u30ae\u30f3\u30b0\u306f\u3001Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304b\u3089\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3001\u30eb\u30fc\u30bf\u30fc\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u30ed\u30b0\u3092\u53ce\u96c6\u3057\u3001\u305d\u308c\u3089\u3092\u30ed\u30b0\u96c6\u7d04\u5668\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002\u305d\u308c\u306f\u5404lagoon-remote
\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u3055\u3089\u306b\u3001\u305d\u308c\u306flagoon-core
\u30b5\u30fc\u30d3\u30b9\u304b\u3089\u30ed\u30b0\u3092\u53ce\u96c6\u3059\u308b\u305f\u3081\u306blagoon-core
\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3079\u304d\u3067\u3059\u3002\u3053\u308c\u306fLagoonLogs
\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30ed\u30ae\u30f3\u30b0\u6982\u8981:Lucid Chart
\u53c2\u7167:Logging\u3002
Lagoon\u30ed\u30ae\u30f3\u30b0\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u306f\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044:https://github.com/uselagoon/lagoon-charts/tree/main/charts/lagoon-logging
-
lagoon-logging-values.yaml
\u3092\u4f5c\u6210\u3057\u307e\u3059:
lagoon-logging-values.yamltls:\ncaCert: |\n<< content of ca.pem from Logs-Concentrator>>\nclientCert: |\n<< content of client.pem from Logs-Concentrator>>\nclientKey: |\n<< content of client-key.pem from Logs-Concentrator>>\nforward:\nusername: <<Username for Lagoon Remote 1>>\npassword: <<Password for Lagoon Remote 1>>\nhost: <<ExternalIP of Logs-Concentrator Service LoadBalancer>>\nhostName: <<Hostname in Server Cert of Logs-Concentrator>>\nhostPort: '24224'\nselfHostname: <<Hostname in Client Cert of Logs-Concentrator>>\nsharedKey: <<Generated ForwardSharedKey of Logs-Concentrator>>\ntlsVerifyHostname: false\nclusterName: <<Short Cluster Identifier>>\nlogsDispatcher:\nserviceMonitor:\nenabled: false\nlogging-operator:\nmonitoring:\nserviceMonitor:\nenabled: false\nlagoonLogs:\nenabled: true\nrabbitMQHost: lagoon-core-broker.lagoon-core.svc.cluster.local\nrabbitMQUser: lagoon\nrabbitMQPassword: <<RabbitMQ Lagoon Password>>\nexcludeNamespaces: {}\n
-
lagoon-logging
\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059:
Install lagoon-logginghelm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com\n\nhelm upgrade --install --create-namespace \\\n--namespace lagoon-logging \\\n-f lagoon-logging-values.yaml \\\nlagoon-logging lagoon/lagoon-logging\n
"},{"location":"ja/installing-lagoon/lagoon-logging/#logging-nginx-in-gress","title":"Logging NGINX In gress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9","text":"lagoon-logging
\u5185\u306eingress-nginx
\u304b\u3089\u30ed\u30b0\u304c\u5fc5\u8981\u306a\u5834\u5408:
- ingress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306f
ingress-nginx
\u3068\u3044\u3046\u540d\u524d\u7a7a\u9593\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 -
\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u3092ingress-nginx
\u306b\u8ffd\u52a0\u3057\u307e\u3059:
ingress-nginx log-format-upstreamcontroller:\nconfig:\nlog-format-upstream: >-\n{\n\"time\": \"$time_iso8601\",\n\"remote_addr\": \"$remote_addr\",\n\"x-forwarded-for\": \"$http_x_forwarded_for\",\n\"true-client-ip\": \"$http_true_client_ip\",\n\"req_id\": \"$req_id\",\n\"remote_user\": \"$remote_user\",\n\"bytes_sent\": $bytes_sent,\n\"request_time\": $request_time,\n\"status\": \"$status\",\n\"host\": \"$host\",\n\"request_proto\": \"$server_protocol\",\n\"request_uri\": \"$uri\",\n\"request_query\": \"$args\",\n\"request_length\": $request_length,\n\"request_time\": $request_time,\n\"request_method\": \"$request_method\",\n\"http_referer\": \"$http_referer\",\n\"http_user_agent\": \"$http_user_agent\",\n\"namespace\": \"$namespace\",\n\"ingress_name\": \"$ingress_name\",\n\"service_name\": \"$service_name\",\n\"service_port\": \"$service_port\"\n}\n
-
\u3042\u306a\u305f\u306e\u30ed\u30b0\u304c\u6d41\u308c\u59cb\u3081\u308b\u306f\u305a\u3067\u3059\uff01
"},{"location":"ja/installing-lagoon/logs-concentrator/","title":"\u30ed\u30b0\u96c6\u7d04\u5668","text":"\u30ed\u30b0\u96c6\u7d04\u5668\u306f\u3001Lagoon\u30af\u30e9\u30b9\u30bf\u304b\u3089\u9001\u4fe1\u3055\u308c\u308b\u30ed\u30b0\u3092\u53ce\u96c6\u3057\u3001\u305d\u308c\u3089\u306b\u8ffd\u52a0\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u4ed8\u52a0\u3057\u3066\u304b\u3089Elasticsearch\u306b\u633f\u5165\u3057\u307e\u3059\u3002
- ReadMe\u306b\u5f93\u3063\u3066\u8a3c\u660e\u66f8\u3092\u4f5c\u6210\u3057\u307e\u3059:https://github.com/uselagoon/lagoon-charts/tree/main/charts/lagoon-logs-concentrator
-
logs-concentrator-values.yml
\u3092\u4f5c\u6210\u3057\u307e\u3059:
logs-concentrator-values.ymltls:\ncaCert: |\n<<ca.pem\u306e\u5185\u5bb9>>\nserverCert: |\n<<server.pem\u306e\u5185\u5bb9\nserverKey: |\n<<server-key.pem\u306e\u5185\u5bb9>>\nelasticsearchHost: elasticsearch-opendistro-es-client-service.elasticsearch.svc.cluster.local\nelasticsearchAdminPassword: <<ElasticSearch\u7ba1\u7406\u8005\u30d1\u30b9\u30ef\u30fc\u30c9>>\nforwardSharedKey: <<\u30e9\u30f3\u30c0\u30e0\u306a32\u6587\u5b57\u306e\u30d1\u30b9\u30ef\u30fc\u30c9>>\nusers:\n- username: <<Lagoon\u30ea\u30e2\u30fc\u30c81\u306e\u30e6\u30fc\u30b6\u30fc\u540d>>\npassword: <<Lagoon\u30ea\u30e2\u30fc\u30c81\u306e\u30e9\u30f3\u30c0\u30e0\u30d1\u30b9\u30ef\u30fc\u30c9>>\nservice:\ntype: LoadBalancer\nserviceMonitor:\nenabled: false\n
-
\u30ed\u30b0\u96c6\u7d04\u5668\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059:
Install logs-concentrator
helm upgrade --install --create-namespace ```\n--namespace lagoon-logs-concentrator \\\n-f logs-concentrator-values.yaml \\\nlagoon-logs-concentrator lagoon/lagoon-logs-concentrator\n
\u3053\u306e\u30c6\u30ad\u30b9\u30c8\u306f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b3\u30fc\u30c9\u3067\u3042\u308a\u3001\u7279\u5b9a\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u7ffb\u8a33\u306f\u9069\u7528\u3055\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/installing-lagoon/opendistro/","title":"OpenDistro","text":"OpenDistro\u30af\u30e9\u30b9\u30bf\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u306b\u306f\u3001Lagoon\u304c\u305d\u308c\u3068\u5b89\u5168\u306b\u901a\u4fe1\u3067\u304d\u308b\u3088\u3046\u306bTLS\u3068\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3044\u304f\u3064\u304b\u306eJSON\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 - \u3053\u308c\u3089\u3092\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30d7\u30ed\u30bb\u30b9\u5168\u4f53\u3092\u901a\u3058\u3066\u4f5c\u6210\u3057\u3066\u304d\u305f\u5024\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u540c\u3058\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u7f6e\u3044\u3066\u304f\u3060\u3055\u3044\u3002
OpenDistro Helm\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://opendistro.github.io/for-elasticsearch-docs/docs/install/helm/\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/installing-lagoon/opendistro/#_1","title":"\u30ad\u30fc\u3068\u8a3c\u660e\u66f8\u306e\u4f5c\u6210","text":" - \u8a3c\u660e\u66f8\u306e\u751f\u6210
\u6ce8\u610f:
CFSSL\u306fCloudFlare\u306ePKI/TLS\u30b9\u30a4\u30b9\u30a2\u30fc\u30df\u30fc\u30ca\u30a4\u30d5\u3067\u3059\u3002\u3053\u308c\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3067\u3042\u308a\u3001TLS\u8a3c\u660e\u66f8\u306e\u7f72\u540d\u3001\u691c\u8a3c\u3001\u30d0\u30f3\u30c9\u30eb\u5316\u3092\u884c\u3046HTTP API\u30b5\u30fc\u30d0\u3067\u3059\u3002\u30d3\u30eb\u30c9\u306b\u306fGo 1.12+\u304c\u5fc5\u8981\u3067\u3059\u3002
1. CFSSL\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059: https://github.com/cloudflare/cfssl 2. CA\u3092\u751f\u6210\u3057\u307e\u3059\u3002\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u3067\u3059:
ca-csr.json{\n\"CN\": \"ca.elasticsearch.svc.cluster.local\",\n\"hosts\": [\n\"ca.elasticsearch.svc.cluster.local\"\n],\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n},\n\"ca\": {\n\"expiry\": \"87600h\"\n}\n}\n
-
\u6b21\u306e2\u3064\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059 :
\u8a3c\u660e\u66f8\u306e\u751f\u6210cfssl gencert -initca ca-csr.json | cfssljson -bare ca -\nrm ca.csr\n
ca-key.pem
\u3068ca.pem
\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u304c\u3042\u306a\u305f\u306eCA\u30ad\u30fc\u3068\u81ea\u5df1\u7f72\u540d\u8a3c\u660e\u66f8\u3067\u3059\u3002
-
\u6b21\u306b\u3001\u30ce\u30fc\u30c9\u306e\u30d4\u30fc\u30ea\u30f3\u30b0\u8a3c\u660e\u66f8\u3092\u751f\u6210\u3057\u307e\u3059\u3002\u6b21\u306e2\u3064\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u3067\u3059:
ca-config.json{\n\"signing\": {\n\"default\": {\n\"expiry\": \"87600h\"\n},\n\"profiles\": {\n\"peer\": {\n\"expiry\": \"87600h\",\n\"usages\": [\n\"signing\",\n\"key encipherment\",\n\"server auth\",\n\"client auth\"\n]\n},\n\"client\": {\n\"expiry\": \"87600h\",\n\"usages\": [\n\"signing\",\n\"key encipherment\",\n\"client auth\"\n]\n}\n}\n}\n}\n
node.json{\n\"hosts\": [\n\"node.elasticsearch.svc.cluster.local\"\n],\n\"CN\": \"node.elasticsearch.svc.cluster.local\",\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n}\n}\n
-
\u6b21\u306e2\u3064\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u8a3c\u660e\u66f8\u30ad\u30fc\u306e\u751f\u6210cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer node.json | cfssljson -bare node\nrm node.csr\n
node.pem
\u3068node-key.pem
\u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u3053\u308c\u304cES\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u30ce\u30fc\u30c9\u3067\u4f7f\u7528\u3055\u308c\u308b\u30d4\u30a2\u8a3c\u660e\u66f8\u306b\u306a\u308a\u307e\u3059\u3002
-
\u6b21\u306b\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30ad\u30fc\u3092Java\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u5f62\u5f0f\u306b\u5909\u63db\u3057\u307e\u3059:
\u30ad\u30fc\u5f62\u5f0f\u306e\u5909\u63dbopenssl pkey -in node-key.pem -out node-key.pkcs8\n
-
\u6b21\u306b\u3001\u7ba1\u7406\u8005\u8a3c\u660e\u66f8\u3092\u751f\u6210\u3057\u307e\u3059\u3002\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u3067\u3059:
admin.json{\n\"CN\": \"admin.elasticsearch.svc.cluster.local\",\n\"key\": {\n\"algo\": \"ecdsa\",\n\"size\": 256\n}\n}\n
-
\u6b21\u306e2\u3064\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u7ba1\u7406\u8005\u8a3c\u660e\u66f8\u30ad\u30fc\u306e\u751f\u6210cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client admin.json | cfssljson -bare admin\nrm admin.csr\n
admin.pem
\u3068admin-key.pem
\u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u3053\u308c\u304copendistro-security\u30d7\u30e9\u30b0\u30a4\u30f3\u3067\u7ba1\u7406\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u8a3c\u660e\u66f8\u306b\u306a\u308a\u307e\u3059\u3002
-
\u6b21\u306b\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30ad\u30fc\u3092Java\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u5f62\u5f0f\u306b\u5909\u63db\u3057\u307e\u3059:
\u30ad\u30fc\u5f62\u5f0f\u306e\u5909\u63dbopenssl pkey -in admin-key.pem -out admin-key.pkcs8\n
"},{"location":"ja/installing-lagoon/opendistro/#opendistro_1","title":"OpenDistro\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u30ad\u30fc\u3068\u8a3c\u660e\u66f8\u3092\u624b\u306b\u5165\u308c\u305f\u306e\u3067\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u7d9a\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
-
\u30cf\u30c3\u30b7\u30e5\u5316\u3055\u308c\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u751f\u6210\u3057\u307e\u3059\u3002
elasticsearch-secrets-values.yaml
\u306b\u306f2\u3064\u306e\u30cf\u30c3\u30b7\u30e5\u5316\u3055\u308c\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u5fc5\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u305d\u308c\u3089\u3092\u4f5c\u6210\u3057\u307e\u3059(2\u56de\u5b9f\u884c\u3057\u3001\u30e9\u30f3\u30c0\u30e0\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3001\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u30cf\u30c3\u30b7\u30e5\u5316\u3055\u308c\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u4e21\u65b9\u3092\u4fdd\u5b58\u3057\u307e\u3059)\u3002
\u30cf\u30c3\u30b7\u30e5\u5316\u3055\u308c\u305f\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u751f\u6210docker run --rm -it docker.io/amazon/opendistro-for-elasticsearch:1.12.0 sh -c \"chmod +x /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh; /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh\"\n
-
secrets\u3092\u4f5c\u6210\u3057\u307e\u3059:
elasticsearch-secrets-values.yaml
\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306egist\u3092\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044:https://gist.github.com/Schnitzel/43f483dfe0b23ca0dddd939b12bb4b0b
-
\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067secrets\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059:
secrets\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebhelm repo add incubator https://charts.helm.sh/incubator`\nhelm upgrade --namespace elasticsearch --create-namespace --install elasticsearch-secrets incubator/raw --values elasticsearch-secrets-values.yaml `\n
-
\u3042\u306a\u305f\u306f\u5fc5\u8981\u3068\u3059\u308b\u3067\u3057\u3087\u3046 elasticsearch-values.yaml
\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u4f8b\u3068\u3057\u3066\u3053\u306egist\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044:(\u3059\u3079\u3066\u306e<\\>\u306b\u5024\u3092\u57cb\u3081\u3066\u304f\u3060\u3055\u3044)https://gist.github.com/Schnitzel/1e386654b6abf75bf4d66a544db4aa6a
-
Elasticsearch\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb:
Elasticsearch\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebhelm upgrade --namespace elasticsearch --create-namespace --install elasticsearch opendistro-es-X.Y.Z.tgz --values elasticsearch-values.yaml\n
-
Elasticsearch\u5185\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u6b21\u306e\u3088\u3046\u306b\u8a2d\u5b9a:
\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8a2d\u5b9akubectl exec -n elasticsearch -it elasticsearch-opendistro-es-master-0 -- bash\nchmod +x /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh\n/usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh -nhnv -cacert /usr/share/elasticsearch/config/admin-root-ca.pem -cert /usr/share/elasticsearch/config/admin-crt.pem -key /usr/share/elasticsearch/config/admin-key.pem -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/\n
-
lagoon-core-values.yaml
\u3092\u6b21\u306e\u3088\u3046\u306b\u66f4\u65b0:
lagoon-core-values.yamlelasticsearchURL: http://elasticsearch-opendistro-es-client-service.elasticsearch.svc.cluster.local:9200\nkibanaURL: https://<<Kibana Public URL>>\nlogsDBAdminPassword: \"<<PlainText Elasticsearch Admin Password>>\"\n
-
\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8Lagoon Core:
Rollout Lagoon Corehelm upgrade --install --create-namespace --namespace lagoon-core -f values.yaml lagoon-core lagoon/lagoon-core\n
-
\u3059\u3079\u3066\u306eLagoon\u30b0\u30eb\u30fc\u30d7\u3092Opendistro Elasticsearch\u3068\u540c\u671f\u3055\u305b\u308b
Sync groupskubectl -n lagoon-core exec -it deploy/lagoon-core-api -- sh\nyarn run sync:opendistro-security\n
"},{"location":"ja/installing-lagoon/querying-graphql/","title":"GraphQL\u3067\u306e\u30af\u30a8\u30ea","text":" -
GraphQL\u30af\u30a8\u30ea\u306e\u9001\u53d7\u4fe1\u306b\u306f\u30a2\u30d7\u30ea\u304c\u5fc5\u8981\u3067\u3059\u3002GraphiQL\u3092\u63a8\u5968\u3057\u307e\u3059\u3002
- Homebrew\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001
brew install --cask graphiql
\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002
-
Lagoon Core\u306bKubernetes\u30af\u30e9\u30b9\u30bf\u306b\u3064\u3044\u3066\u901a\u77e5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002GraphQL\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059:https://<YOUR-API-URL>/graphql
-
HTTP\u30d8\u30c3\u30c0\u30fc\u3092\u7de8\u96c6\u306b\u79fb\u52d5\u3057\u3001\u30d8\u30c3\u30c0\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
- \u30d8\u30c3\u30c0\u30fc\u540d:
Authorization
- \u5024:
Bearer YOUR-TOKEN-HERE
- \u30db\u30fc\u30e0\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306bLagoon CLI\u304c
.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30c8\u30fc\u30af\u30f3\u3092\u30b3\u30d4\u30fc\u3057\u3066\u3001\u3053\u3053\u3067\u306e\u5024\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 - \u4fdd\u5b58\u3002
-
\u3053\u308c\u3067\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3059\u308b\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\u3002\u6b21\u306e\u30c6\u30b9\u30c8\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3057\u3066\u3001\u3059\u3079\u3066\u304c\u6b63\u3057\u304f\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059:
Get all projectsquery allProjects {allProjects {name } }\n
-
\u3053\u308c\u306b\u3088\u308a\u3001\u6b21\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u5f97\u3089\u308c\u308b\u306f\u305a\u3067\u3059:
API Response {\n \"data\": {\n \"allProjects\": []\n }\n }\n
\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306eGraphQL\u306b\u3064\u3044\u3066\u306e\u30da\u30fc\u30b8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
-
\u6b63\u3057\u3044\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u5f97\u3089\u308c\u305f\u3089\u3001\u5909\u7570\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-
\u6b21\u306e\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3057\u307e\u3059:
\u7a81\u7136\u5909\u7570\u3092\u8ffd\u52a0mutation addKubernetes {\naddKubernetes(input:\n{\nname: \"<TARGET-NAME-FROM-REMOTE-VALUES.yml>\",\nconsoleUrl: \"<URL-OF-K8S-CLUSTER>\",\ntoken: \"xxxxxx\u201d\nrouterPattern: \"${environment}.${project}.lagoon.example.com\"\n}){id}\n}\n
name
: lagoon-remote-values.yml
\u304b\u3089\u53d6\u5f97 consoleUrl
: Kubernetes\u30af\u30e9\u30b9\u30bf\u306eAPI\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3002values.yml
\u304b\u3089\u53d6\u5f97 -
token
: ssh-core
\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u7528\u306e\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97
\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97kubectl -n lagoon get secret/lagoon-remote-ssh-core-token -o json | jq -r '.data.token | @base64d'\n
\u60c5\u5831
GraphQL\u306e\u8a8d\u8a3c\u30c8\u30fc\u30af\u30f3\u306e\u6709\u52b9\u671f\u9650\u306f\u975e\u5e38\u306b\u77ed\u3044\u305f\u3081\u3001\u65b0\u3057\u3044\u30c8\u30fc\u30af\u30f3\u3092\u751f\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002lagoon login
\u3092\u5b9f\u884c\u3057\u3001\u65b0\u3057\u3044\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3092cat\u30b3\u30de\u30f3\u30c9\u3067\u8868\u793a\u3057\u3001HTTP\u30d8\u30c3\u30c0\u30fc\u306e\u53e4\u3044\u30c8\u30fc\u30af\u30f3\u3092\u65b0\u3057\u3044\u3082\u306e\u306b\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/installing-lagoon/requirements/","title":"\u65e2\u5b58\u306eKubernetes\u30af\u30e9\u30b9\u30bf\u30fc\u3078\u306eLagoon\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":""},{"location":"ja/installing-lagoon/requirements/#requirements","title":"\u5fc5\u8981\u6761\u4ef6","text":" - Kubernetes 1.23+(Kubernetes 1.21\u3082\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u30011.23\u3092\u63a8\u5968\u3057\u307e\u3059)
- Helm\u3001Helm Charts\u3001kubectl\u306b\u7cbe\u901a\u3057\u3066\u3044\u308b\u3053\u3068\u3002
- Ingress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3001\u6211\u3005\u306fingress-nginx\u3092\u63a8\u5968\u3057\u3001ingress-nginx\u540d\u524d\u7a7a\u9593\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068
- Cert manager(TLS\u7528) - letsencrypt\u306e\u4f7f\u7528\u3092\u5f37\u304f\u63a8\u5968\u3057\u307e\u3059
- StorageClasses(\u30c7\u30d5\u30a9\u30eb\u30c8\u3068\u3057\u3066RWO\u3001\u6c38\u7d9a\u30bf\u30a4\u30d7\u7528\u306bRWM)
\u6ce8\u610f:
\u3053\u308c\u306f\u591a\u304f\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u5fc5\u8981\u3067\u3042\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3057\u3066\u304a\u308a\u3001\u4eca\u5f8c\u3059\u3050\u306b\u884c\u3046\u4e88\u5b9a\u306e\u30ed\u30fc\u30c9\u30de\u30c3\u30d7\u306b\u306f\u3001\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306e\u30b9\u30c6\u30c3\u30d7\u6570\u3092\u6e1b\u3089\u3059\u3053\u3068\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/requirements/#specific-requirements-as-of-january-2023","title":"\u7279\u5b9a\u306e\u8981\u4ef6 (2023\u5e741\u6708\u73fe\u5728)","text":""},{"location":"ja/installing-lagoon/requirements/#kubernetes","title":"Kubernetes","text":"Lagoon\u306fKubernetes\u30d0\u30fc\u30b8\u30e7\u30f31.21\u4ee5\u964d\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u7a4d\u6975\u7684\u306bKubernetes 1.24\u306b\u5bfe\u3057\u3066\u30c6\u30b9\u30c8\u3068\u958b\u767a\u3092\u884c\u3063\u3066\u304a\u308a\u3001\u5b9a\u671f\u7684\u306b1.21\u30011.22\u30011.25\u306b\u5bfe\u3057\u3066\u3082\u30c6\u30b9\u30c8\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002
\u6b21\u306e\u5927\u898f\u6a21\u306a\u7834\u58ca\u7684\u5909\u66f4\u306fKubernetes 1.25\u306b\u3042\u308a\u3001\u6211\u3005\u306f\u3053\u308c\u3089\u3092\u4e8b\u524d\u306b\u628a\u63e1\u3059\u308b\u52aa\u529b\u3092\u3057\u307e\u3059\u304c\u3001\u3053\u308c\u306f\u6700\u4f4e\u30b5\u30dd\u30fc\u30c8\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u4e0a\u6607\u3092\u5fc5\u8981\u3068\u3059\u308b\u3067\u3057\u3087\u3046\u3002 Lagoon\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3002
"},{"location":"ja/installing-lagoon/requirements/#ingress-nginx","title":"ingress-nginx","text":"Lagoon\u306f\u73fe\u5728\u3001\u5358\u4e00\u306e ingress-nginx
\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u307f\u306b\u5bfe\u5fdc\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u904e\u53bb\u306b\u306f IngressClass
\u306e\u5b9a\u7fa9\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
\u6700\u8fd1\u306e ingress-nginx
\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc(\u30d0\u30fc\u30b8\u30e7\u30f34\u4ee5\u964d\u3001Kubernetes 1.22\u304c\u5fc5\u8981)\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002ingress-nginx
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002
nginx-ingress
\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 - Helm\u306e\u5024\u3067 .controller.ingressClassResource.default: true
\u3092\u8a2d\u5b9a\u3057\u307e\u3059 nginx-ingress
\u306f IngressClass
\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044Ingress\u3092\u76e3\u8996\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 - Helm\u306e\u5024\u3067 .controller.watchIngressWithoutClass: true
\u3092\u8a2d\u5b9a\u3057\u307e\u3059
\u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u65b0\u3057\u3044Ingress\u3092 IngressClass
\u3068\u3057\u3066\u81ea\u8eab\u3067\u4f5c\u6210\u3057\u3001IngressClass
\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u65e2\u5b58\u306eIngress\u3092\u51e6\u7406\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
\u4ed6\u306e\u8a2d\u5b9a\u3082\u53ef\u80fd\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u30c6\u30b9\u30c8\u306f\u884c\u308f\u308c\u3066\u3044\u307e\u305b\u3093\u3002
"},{"location":"ja/installing-lagoon/requirements/#harbor","title":"Harbor","text":"\u73fe\u5728\u3001Harbor \u306e\u30d0\u30fc\u30b8\u30e7\u30f3 2.1 \u304a\u3088\u3073 2.2+ \u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30ed\u30dc\u30c3\u30c8 \u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5\u306f 2.2 \u3067\u5909\u66f4\u3055\u308c\u3001Lagoon \u30ea\u30e2\u30fc\u30c8 \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306f\u3053\u308c\u3089\u306e\u30c8\u30fc\u30af\u30f3\u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002\u3064\u307e\u308a\u3001Harbor \u306f lagoon-core
\u3067\u306f\u306a\u304f lagoon-build-deploy
\u306e\u8cc7\u683c\u60c5\u5831\u3092\u4f7f\u7528\u3057\u3066\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
2.6.0 \u4ee5\u964d\u306e Harbor \u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u3001Helm \u30c1\u30e3\u30fc\u30c8 1.10.0 \u4ee5\u4e0a\u3068\u3068\u3082\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/requirements/#k8up-for-backups","title":"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u7528\u306e k8up","text":"Lagoon \u306b\u306f\u3001K8up \u30d0\u30c3\u30af\u30a2\u30c3\u30d7 \u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u306e\u69cb\u6210\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u307e\u3059\u3002 Lagoon \u3067\u306f\u3001\u4e8b\u524d\u30d0\u30c3\u30af\u30a2\u30c3\u30d7 \u30dd\u30c3\u30c9\u3001\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3001\u4fdd\u6301\u671f\u9593\u3092\u8a2d\u5b9a\u3057\u3001K8up \u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3068\u5fa9\u5143\u3092\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002\u73fe\u5728\u3001Lagoon \u306f\u3001v2 \u4ee5\u964d\u306e\u540d\u524d\u7a7a\u9593\u306e\u5909\u66f4\u306b\u3088\u308a\u3001K8up \u306e 1.x \u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u307f\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u4fee\u6b63\u306b\u53d6\u308a\u7d44\u3093\u3067\u3044\u307e\u3059\u3002
\u30d0\u30b0 k8up v2
Lagoon \u306f\u3001\u540d\u524d\u7a7a\u9593\u306e\u5909\u66f4\u306b\u3088\u308a\u3001\u73fe\u5728 K8up v2 \u4ee5\u964d\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093 (\u3053\u3061\u3089)\u3002
K8up \u30d0\u30fc\u30b8\u30e7\u30f3 1.2.0 \u3092 Helm Chart 1.1.0 \u3068\u3068\u3082\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/requirements/#storage-provisioners","title":"\u30b9\u30c8\u30ec\u30fc\u30b8\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc","text":"Lagoon \u306f\u3001\u307b\u3068\u3093\u3069\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u306b\u5bfe\u3057\u3066\u30c7\u30d5\u30a9\u30eb\u30c8\u306e standard
StorageClass
\u3092\u5229\u7528\u3057\u3001\u307b\u3068\u3093\u3069\u306e Kubernetes \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u5185\u90e8\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc\u3067\u5341\u5206\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u53ef\u80fd\u306a\u5834\u5408\u306f\u52d5\u7684\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3068\u62e1\u5f35\u304c\u53ef\u80fd\u306b\u306a\u308b\u3088\u3046\u306b\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u307e\u305f\u3001Lagoon\u3067\u306f\u3001\u6c38\u7d9a\u7684\u306a\u30dd\u30c3\u30c9\u30ec\u30d7\u30ea\u30ab(\u30ce\u30fc\u30c9\u9593)\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b\u3001'bulk'\u3068\u547c\u3070\u308c\u308bStorageClass
\u304c\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u306eStorageClass
\u306fReadWriteMany
(RWX)\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u53ef\u80fd\u306a\u9650\u308a\u52d5\u7684\u306a\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3068\u62e1\u5f35\u6027\u304c\u3042\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u8a73\u7d30\u306fhttps://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes \u3092\u53c2\u7167\u3057\u3001\u4e92\u63db\u6027\u306e\u3042\u308b\u30c9\u30e9\u30a4\u30d0\u306e\u5b8c\u5168\u306a\u30ea\u30b9\u30c8\u306b\u3064\u3044\u3066\u306fproduction drivers list\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u73fe\u5728\u3001\u79c1\u305f\u3061\u306f(\u73fe\u5728\u306f\u5ec3\u6b62\u3055\u308c\u3066\u3044\u308b)EFS Provisioner\u306e\u6307\u793a\u3060\u3051\u3092\u542b\u3081\u3066\u3044\u307e\u3059\u3002\u672c\u756a\u306eEFS CSI driver\u306f\u3001120\u4ee5\u4e0a\u306ePVC\u3092\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3059\u308b\u969b\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u3002\u79c1\u305f\u3061\u306f\u30a2\u30c3\u30d7\u30b9\u30c8\u30ea\u30fc\u30e0\u3067\u306e\u53ef\u80fd\u306a\u4fee\u6b63\u3092\u3053\u3053\u3068\u3053\u3053\u3067\u5f85\u3063\u3066\u3044\u307e\u3059 - \u3057\u304b\u3057\u3001\u4ed6\u306e\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30d0\u30a4\u30c0\u306eCSI\u30c9\u30e9\u30a4\u30d0\u3082\u52d5\u4f5c\u3059\u308b\u306f\u305a\u3067\u3001NFS\u4e92\u63db\u306e\u30b5\u30fc\u30d0\u3068\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc\u3092\u5099\u3048\u305f\u8a2d\u5b9a\u3082\u540c\u69d8\u3067\u3059\u3002
"},{"location":"ja/installing-lagoon/requirements/#kubernetes_1","title":"\u3069\u308c\u304f\u3089\u3044 Kubernetes\u306e\u7d4c\u9a13/\u77e5\u8b58\u306f\u5fc5\u8981\u3067\u3059\u304b\uff1f","text":"Lagoon\u306f\u3001\u975e\u5e38\u306b\u9ad8\u5ea6\u306aKubernetes\u3068\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u306e\u6982\u5ff5\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001Lagoon\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3084\u8a2d\u5b9a\u306b\u5b8c\u5168\u306a\u719f\u77e5\u304c\u5fc5\u8981\u306a\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u554f\u984c\u306e\u8a3a\u65ad\u3084\u8ca2\u732e\u306f\u3001\u5341\u5206\u306a\u77e5\u8b58\u304c\u306a\u3051\u308c\u3070\u96e3\u3057\u304f\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
\u6307\u6a19\u3068\u3057\u3066\u3001Certified Kubernetes Administrator\u306e\u30ab\u30ea\u30ad\u30e5\u30e9\u30e0\u306b\u5bfe\u3059\u308b\u5feb\u9069\u3055\u3092\u6700\u4f4e\u9650\u3068\u3057\u3066\u63d0\u6848\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/update-lagoon/","title":"\u66f4\u65b0","text":" -
Helm\u3092\u4f7f\u7528\u3057\u3066\u6700\u65b0\u306e\u30c1\u30e3\u30fc\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002
\u6700\u65b0\u306e\u30c1\u30e3\u30fc\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9helm repo update\n
-
helm diff
\u3092\u4f7f\u3063\u3066\u5909\u66f4\u70b9\u3092\u78ba\u8a8d\u3057\u307e\u3059(https://github.com/databus23/helm-diff)\u3002
\u5909\u66f4\u70b9\u3092\u78ba\u8a8dhelm diff upgrade --install --create-namespace --namespace lagoon-core \\\n-f values.yml lagoon-core lagoon/lagoon-core\n
-
\u4efb\u610f\u306eHelm\u64cd\u4f5c\u524d\u306b\u3001Lagoon\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u53d6\u308a\u307e\u3059\u3002 \u307e\u305f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u30b9\u30af\u30ea\u30d7\u30c8\u304cinitContainers\u3067\u5b9f\u884c\u3055\u308c\u308b\u306e\u3092\u652f\u63f4\u3059\u308b\u305f\u3081\u306b\u3001API\u3092\u5358\u4e00\u306e\u30dd\u30c3\u30c9\u306b\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u3082\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
-
Helm\u3092\u4f7f\u7528\u3057\u3066\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u5b9f\u884chelm upgrade --install --create-namespace --namespace lagoon-core \\\n-f values.yaml lagoon-core lagoon/lagoon-core\n
-
(Lagoon v2.11.0\u4ee5\u964d\u3001\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u4e0d\u8981\u306b\u306a\u308a\u307e\u3057\u305f) Lagoon Core\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u5834\u5408\u3001\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u5f8c\u306e\u79fb\u884c\u3092\u884c\u3046\u305f\u3081\u306brerun_initdb.sh
\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884ckubectl --namespace lagoon-core exec -it lagoon-core-api-db-0 -- \\\nsh -c /rerun_initdb.sh\n
-
API\u30dd\u30c3\u30c9\u3092\u5143\u306e\u6570\u306b\u623b\u3057\u3066\u30b9\u30b1\u30fc\u30eb\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002 \u30ec\u30d9\u30eb\u3002
-
Lagoon Core\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3001OpenSearch\u306e\u30b0\u30eb\u30fc\u30d7/\u30e6\u30fc\u30b6\u30fc\u540c\u671f\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u308b\u5834\u5408\u3001OpenSearch\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u66f4\u65b0\u3059\u308b\u305f\u3081\u306bsync:opendistro-security
\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u5168\u4f53\u306e\u30b0\u30eb\u30fc\u30d7\u69cb\u9020\u306e\u540c\u671f\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u5834\u5408\u3001\u4e00\u5ea6\u306b1\u3064\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u540c\u671f\u3059\u308b\u305f\u3081\u306bGROUP_REGEX=<group-to-sync
\u3067\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u4ed8\u3051\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u5b9f\u884ckubectl --namespace lagoon-core exec -it deploy/lagoon-core-api -- \\\nsh -c yarn sync:opendistro-security\n
\u8ffd\u52a0\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u306b\u3064\u3044\u3066\u306f\u3001https://github.com/uselagoon/lagoon/releases\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/installing-lagoon/update-lagoon/#database-backups","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7","text":"Lagoon Core\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u524d\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u4f5c\u6210\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u305d\u308c\u3089\u3092\u4f7f\u7528\u3057\u3066\u5fa9\u5143\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5f8c\u3067\u305d\u308c\u3089\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/update-lagoon/#api-db","title":"API DB","text":"API DB\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7kubectl --namespace lagoon-core exec -it lagoon-core-api-db-0 -- \\\nsh -c 'mysqldump --max-allowed-packet=500M --events \\\n --routines --quick --add-locks --no-autocommit \\\n --single-transaction infrastructure | gzip -9 > \\\n /var/lib/mysql/backup/$(date +%Y-%m-%d_%H%M%S).infrastructure.sql.gz'\n
"},{"location":"ja/installing-lagoon/update-lagoon/#keycloak-db","title":"Keycloak DB","text":"Keycloak DB\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7kubectl --namespace lagoon-core exec -it lagoon-core-keycloak-db-0 -- \\\nsh -c 'mysqldump --max-allowed-packet=500M --events \\\n --routines --quick --add-locks --no-autocommit \\\n --single-transaction keycloak | gzip -9 > \\\n /var/lib/mysql/backup/$(date +%Y-%m-%d_%H%M%S).keycloak.sql.gz'\n
"},{"location":"ja/interacting/graphql-queries/#running-graphql-queries","title":"GraphQL\u30af\u30a8\u30ea\u306e\u5b9f\u884c","text":"Lagoon\u3067\u306e\u76f4\u63a5\u7684\u306aAPI\u306e\u76f8\u4e92\u4f5c\u7528\u306f\u3001GraphQL\u3092\u7d4c\u7531\u3057\u3066\u884c\u308f\u308c\u307e\u3059\u3002
API\u3068\u306e\u8a8d\u8a3c\u3092\u884c\u3046\u305f\u3081\u306b\u306f\u3001\u79c1\u305f\u3061\u304c\u7ba1\u7406\u8005\u3068\u3057\u3066GraphQL API\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308bJWT(JSON Web Token)\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u306e\u30c8\u30fc\u30af\u30f3\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001Kubernetes UI\u7d4c\u7531\u3001\u307e\u305f\u306fkubectl\u3092\u4f7f\u7528\u3057\u3066storage-calculator
\u30dd\u30c3\u30c9\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304d\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
JWT\u30c8\u30fc\u30af\u30f3\u306e\u751f\u6210./create_jwt.py\n
\u3053\u308c\u306b\u3088\u308aJWT\u30c8\u30fc\u30af\u30f3\u3067\u3042\u308b\u9577\u3044\u6587\u5b57\u5217\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u30af\u30a8\u30ea\u3092\u9001\u4fe1\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u3068\u306a\u308b\u306e\u3067\u3001\u30e1\u30e2\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002
\u307e\u305f\u3001API\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306eURL\u3082\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306fKubernetes UI\u306e\"Ingresses\"\u306e\u4e0b\u3001\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u306ekubectl\u3092\u7d4c\u7531\u3057\u3066\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8URL\u3082\u5fc5\u8981\u306b\u306a\u308b\u306e\u3067\u3001\u30e1\u30e2\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002
GraphQL\u30af\u30a8\u30ea\u3092\u4f5c\u6210\u3057\u9001\u4fe1\u3059\u308b\u306b\u306f\u3001\u81ea\u52d5\u88dc\u5b8c\u6a5f\u80fd\u306a\u3069\u3092\u5099\u3048\u305f\u30c7\u30b9\u30af\u30c8\u30c3\u30d7GraphQL\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\u3042\u308bGraphiQL.app\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u6b21\u306e\u624b\u9806\u306b\u9032\u3080\u306b\u306f\u3001\u3053\u306e\u30a2\u30d7\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u8d77\u52d5\u3057\u307e\u3059\u3002
\"GraphQL Endpoint\"\u306e\u4e0b\u306b/graphql
\u3092\u672b\u5c3e\u306b\u4ed8\u3051\u305fAPI\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8URL\u3092\u5165\u529b\u3057\u307e\u3059\u3002\u6b21\u306b\"Edit HTTP Headers\"\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u65b0\u3057\u3044\u30d8\u30c3\u30c0\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059:
- \"\u30d8\u30c3\u30c0\u30fc\u540d\":
Authorization
- \"\u30d8\u30c3\u30c0\u30fc\u5024\":
Bearer [JWT\u30c8\u30fc\u30af\u30f3]
(\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044 JWT\u30c8\u30fc\u30af\u30f3\u306b\u30b9\u30da\u30fc\u30b9\u304c\u306a\u3044\u3053\u3068(\u30b9\u30da\u30fc\u30b9\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3068\u52d5\u4f5c\u3057\u307e\u305b\u3093)
ESC\u30ad\u30fc\u3092\u62bc\u3057\u3066HTTP\u30d8\u30c3\u30c0\u30fc\u30aa\u30fc\u30d0\u30fc\u30ec\u30a4\u3092\u9589\u3058\u3001\u6700\u521d\u306eGraphQL\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\uff01
\u3053\u308c\u3092\u5de6\u30d1\u30cd\u30eb\u306b\u5165\u529b\u3057\u307e\u3059
\u30af\u30a8\u30ea\u306e\u5b9f\u884cquery allProjects{\nallProjects {\nname\n}\n}\n
\u305d\u3057\u3066\u3001\u25b6\ufe0f\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u304b(\u307e\u305f\u306fCTRL+ENTER\u3092\u62bc\u3059)\u3002
\u3059\u3079\u3066\u304c\u3046\u307e\u304f\u3044\u3051\u3070\u3001\u6700\u521d\u306eGraphQL\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u3059\u3050\u306b\u53f3\u306e\u30da\u30a4\u30f3\u306b\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/interacting/graphql-queries/#creating-the-first-project","title":"\u6700\u521d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210","text":"Lagoon\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306e\u6700\u521d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3057\u3087\u3046\uff01\u3053\u308c\u306b\u306f\u3001create-project.gql
\u306eGraphQL\u30af\u30a8\u30ea\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
\u5404\u30af\u30a8\u30ea(mutation {
\u3067\u59cb\u307e\u308b\u30d6\u30ed\u30c3\u30af)\u306b\u3064\u3044\u3066\u3001TODO\u30b3\u30e1\u30f3\u30c8\u3067\u30de\u30fc\u30af\u3055\u308c\u305f\u7a7a\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u3059\u3079\u3066\u57cb\u3081\u3066\u3001GraphiQL.app\u3067\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u305d\u308c\u305e\u308c1\u3064\u305a\u3064\u4f5c\u6210\u3055\u308c\u307e\u3059:
kubernetes
: Lagoon\u304c\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304dKubernetes(\u307e\u305f\u306fOpenshift)\u30af\u30e9\u30b9\u30bf\u3002Lagoon\u306f\u81ea\u8eab\u306eKubernetes\u30af\u30e9\u30b9\u30bf\u306b\u3060\u3051\u3067\u306a\u304f\u3001\u4efb\u610f\u306eKubernetes\u306b\u3082\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002 \u4e16\u754c\u4e2d\u306e\u3069\u3053\u3067\u3082\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002 project
: \u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308bLagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3001\u30eb\u30fc\u30c8\u306b\u30b3\u30df\u30c3\u30c8\u3055\u308c\u305f .lagoon.yml
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u6301\u3064Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u3059\u3002
"},{"location":"ja/interacting/graphql-queries/#allowing-access-to-the-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u8a31\u53ef","text":"Lagoon\u3067\u306f\u3001\u5404\u958b\u767a\u8005\u306f\u81ea\u5206\u306eSSH\u30ad\u30fc\u3067\u8a8d\u8a3c\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u4ee5\u4e0b\u3078\u306e\u30a2\u30af\u30bb\u30b9\u304c\u6c7a\u307e\u308a\u307e\u3059:
- \u81ea\u5206\u304c\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3064\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u898b\u3066\u7de8\u96c6\u3067\u304d\u308bLagoon API\u3002
- \u81ea\u5206\u304c\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3064\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u3078\u306e\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u30a2\u30af\u30bb\u30b9\u3002
- \u30ea\u30af\u30a8\u30b9\u30c8\u30ed\u30b0\u3001\u30b3\u30f3\u30c6\u30ca\u30ed\u30b0\u3001Lagoon\u30ed\u30b0\u306a\u3069\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308bLagoon\u306e\u30ed\u30b0\u30b7\u30b9\u30c6\u30e0\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8a31\u53ef\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u307e\u305aAPI\u306b\u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
API\u306b\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0mutation {\naddGroup (\ninput: {\n# TODO: \u65b0\u3057\u3044\u30b0\u30eb\u30fc\u30d7\u306e\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n}\n) {\nid\nname\n}\n}\n
\u6b21\u306b\u3001API\u306b\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
API\u306b\u65b0\u898f\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0mutation {\naddUser(\ninput: {\nemail: \"michael.schmid@example.com\"\nfirstName: \"Michael\"\nlastName: \"Schmid\"\ncomment: \"CTO\"\n}\n) {\n# TODO: \u8fd4\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fcID\u3092\u30e1\u30e2\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002\nid\n}\n}\n
\u305d\u308c\u304b\u3089\u3001\u305d\u306e API\u306b\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0:
API\u306bSSH\u516c\u958b\u9375\u3092\u8ffd\u52a0\u3059\u308bmutation {\naddSshKey(\ninput: {\n# TODO: name\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u4e0b\u3055\u3044\u3002\n# \u3053\u308c\u306fSSH\u30ad\u30fc\u306e\u975e\u4e00\u610f\u306a\u8b58\u5225\u5b50\u3067\u3059\u3002\nname: \"\"\n# TODO: keyValue\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u4e0b\u3055\u3044\u3002\n# \u3053\u308c\u306f\u5b9f\u969b\u306eSSH\u516c\u958b\u9375\u3067\u3059(\u6700\u521d\u306e\u30bf\u30a4\u30d7\u3068\u6700\u5f8c\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u9664\u3044\u3066\u3001\u4f8b `AAAAB3NzaC1yc2EAAAADAQ...3QjzIOtdQERGZuMsi0p`)\u3002\nkeyValue: \"\"\n# TODO: keyType\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u4e0b\u3055\u3044\u3002\n# \u6709\u52b9\u306a\u5024\u306f\u3001SSH_RSA\u3001SSH_ED25519\u3001ECDSA_SHA2_NISTP256/384/521\u306e\u3044\u305a\u308c\u304b\u3067\u3059\u3002\nkeyType: SSH_RSA\nuser: {\n# TODO: userId\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u4e0b\u3055\u3044\u3002\n# \u3053\u308c\u306faddUser\u30af\u30a8\u30ea\u304b\u3089\u53d6\u5f97\u3057\u305f\u30e6\u30fc\u30b6\u30fcID\u3067\u3059\u3002\nid:\"0\",\nemail:\"michael.schmid@example.com\"\n}\n}\n) {\nid\n}\n}\n
\u30ad\u30fc\u3092\u8ffd\u52a0\u3057\u305f\u5f8c\u3001\u30e6\u30fc\u30b6\u30fc\u3092\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
\u30e6\u30fc\u30b6\u30fc\u3092\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3059\u308bmutation {\naddUserToGroup (\ninput: {\nuser: {\n#TODO: \u30e6\u30fc\u30b6\u30fc\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nemail: \"\"\n}\ngroup: {\n#TODO: \u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3057\u305f\u3044\u30b0\u30eb\u30fc\u30d7\u306e\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n}\n#TODO: \u30e6\u30fc\u30b6\u30fc\u306e\u5f79\u5272\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 .\nrole: OWNER\n}\n) {\nid\nname\n}\n}\n
\u3053\u308c\u3089\u306e\u30af\u30a8\u30ea\u306e\u4e00\u90e8\u307e\u305f\u306f\u5168\u90e8\u3092\u5b9f\u884c\u3057\u305f\u5f8c\u3001\u30e6\u30fc\u30b6\u30fc\u306fSSH\u7d4c\u7531\u3067\u30c8\u30fc\u30af\u30f3\u3092\u4f5c\u6210\u3057\u305f\u308a\u3001\u30b3\u30f3\u30c6\u30ca\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u308a\u3059\u308b\u6a29\u9650\u304c\u4ed8\u4e0e\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/interacting/graphql-queries/#adding-notifications-to-the-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u901a\u77e5\u3092\u8ffd\u52a0\u3059\u308b","text":"\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u4e2d\u306b\u4f55\u304c\u8d77\u3053\u3063\u3066\u3044\u308b\u306e\u304b\u3092\u77e5\u308a\u305f\u3044\u5834\u5408\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u901a\u77e5\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u307e\u3059:
- \u30d7\u30c3\u30b7\u30e5\u901a\u77e5
- \u30d3\u30eb\u30c9\u958b\u59cb\u60c5\u5831
- \u30d3\u30eb\u30c9\u6210\u529f\u307e\u305f\u306f\u5931\u6557\u30e1\u30c3\u30bb\u30fc\u30b8
- \u305d\u306e\u4ed6\u591a\u6570\uff01
\u901a\u77e5\u306f\u3001\u5fc5\u8981\u306a\u60c5\u5831\u306e\u70b9\u3067\u304b\u306a\u308a\u7570\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u5404\u901a\u77e5\u30bf\u30a4\u30d7\u306b\u306f\u72ec\u81ea\u306e\u5909\u7570\u304c\u3042\u308a\u307e\u3059\u3002
\u30e6\u30fc\u30b6\u30fc\u3068\u540c\u69d8\u306b\u3001\u307e\u305a\u901a\u77e5\u3092\u8ffd\u52a0\u3057\u307e\u3059:
\u901a\u77e5\u3092\u8ffd\u52a0\u3059\u308bmutation {\naddNotificationSlack(\ninput: {\n# TODO: \u540d\u524d\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u901a\u77e5\u306e\u305f\u3081\u306e\u81ea\u8eab\u306e\u8b58\u5225\u5b50\u3067\u3059\u3002\nname: \"\"\n# TODO: \u30c1\u30e3\u30f3\u30cd\u30eb\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u9001\u4fe1\u3055\u308c\u308b\u30c1\u30e3\u30f3\u30cd\u30eb\u3067\u3059\u3002\nchannel: \"\"\n# TODO: \u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u9001\u4fe1\u3055\u308c\u308b\u3079\u304d\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u306eURL\u3067\u3001\u901a\u5e38\u306f\u30c1\u30e3\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u304b\u3089\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002\nwebhook: \"\"\n}\n) {\nid\n}\n}\n
\u901a\u77e5\u304c\u4f5c\u6210\u3055\u308c\u305f\u5f8c\u3001 \u3053\u308c\u3067\u3001\u79c1\u305f\u3061\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u901a\u77e5\u3092\u5272\u308a\u5f53\u3066\u308bmutation {\naddNotificationToProject(\ninput: {\nnotificationType: SLACK\n# TODO: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3067\u3059\u3002\nproject: \"\"\n# TODO: \u901a\u77e5\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u901a\u77e5\u306e\u540d\u524d\u3067\u3059\u3002\nnotificationName: \"\"\n# TODO: \u30aa\u30d7\u30b7\u30e7\u30f3\n# \u8208\u5473\u306e\u3042\u308b\u901a\u77e5\u30af\u30e9\u30b9\u306e\u7a2e\u985e\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067DEPLOYMENT\u306b\u306a\u308a\u307e\u3059\ncontentType: DEPLOYMENT/PROBLEM\n# TODO: \u30aa\u30d7\u30b7\u30e7\u30f3\n# contentType PROBLEM\u306b\u95a2\u9023\u3057\u3066\u3001\u6211\u3005\u304c\u901a\u77e5\u3092\u53d7\u3051\u305f\u3044\u554f\u984c\u306e\u7a2e\u985e\u306e\u95be\u5024\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\nnotificationSeverityThreshold: \"NONE/UNKNOWN/NEGLIGIBLE/LOW/MEDIUM/HIGH/CRITICAL\n}\n) {\nid\n}\n}\n
\u3053\u308c\u3067\u3001\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3054\u3068\u306b\u3001\u5b9a\u7fa9\u3057\u305f\u30c1\u30e3\u30f3\u30cd\u30eb\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u3051\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/graphql-queries/#example-graphql-queries","title":"GraphQL\u30af\u30a8\u30ea\u306e\u4f8b","text":""},{"location":"ja/interacting/graphql-queries/#adding-a-new-kubernetes-target","title":"\u65b0\u3057\u3044Kubernetes\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u8ffd\u52a0","text":"\u6ce8\u610f:
Lagoon\u3067\u306f\u3001addKubernetes
\u3068addOpenshift
\u306e\u3069\u3061\u3089\u3082Kubernetes\u3068OpenShift\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u4e21\u65b9\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u3069\u3061\u3089\u3082\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u3059\u3002
Lagoon\u304c\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u30af\u30e9\u30b9\u30bf\u3002
Kubernetes\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u8ffd\u52a0mutation {\naddKubernetes(\ninput: {\n# TODO: \u540d\u524d\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30af\u30e9\u30b9\u30bf\u306e\u4e00\u610f\u306e\u8b58\u5225\u5b50\u3067\u3059\u3002\nname: \"\"\n# TODO: consoleUrl\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306fKubernetes\u30af\u30e9\u30b9\u30bf\u306eURL\u3067\u3059\nconsoleUrl: \"\"\n# TODO: \u30c8\u30fc\u30af\u30f3\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u3001\u3053\u306e\u30af\u30e9\u30b9\u30bf\u3067\u4f5c\u6210\u3055\u308c\u305f`lagoon`\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30c8\u30fc\u30af\u30f3\u3067\u3059(\u3053\u308c\u306f\u3001Lagoon\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6642\u306b\u3082\u4f7f\u7528\u3057\u305f\u306e\u3068\u540c\u3058\u30c8\u30fc\u30af\u30f3\u3067\u3059)\u3002\ntoken: \"\"\n}\n){\nname\nid\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#adding-a-group-to-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3059\u308b","text":"\u3053\u306e\u30af\u30a8\u30ea\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u305d\u306e\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u5f7c\u3089\u306f\u305d\u306e\u30b0\u30eb\u30fc\u30d7\u3067\u306e\u5f79\u5272\u306b\u57fa\u3065\u3044\u3066\u5909\u66f4\u3092\u52a0\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3059\u308bmutation {\naddGroupsToProject (\ninput: {\nproject: {\n#TODO: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n}\ngroups: {\n#TODO: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3055\u308c\u308b\u30b0\u30eb\u30fc\u30d7\u306e\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n}\n}\n) {\nid\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#adding-a-new-project","title":"\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8ffd\u52a0\u3059\u308b","text":"\u3053\u306e\u30af\u30a8\u30ea\u306f\u3001\u65b0\u3057\u3044Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30eb\u30fc\u30c8\u306b\u30b3\u30df\u30c3\u30c8\u3055\u308c\u305f.lagoon.yml
\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u6301\u3064Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u3059\u3002
\u3082\u3057 privateKey
\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u3042\u308b\u5834\u5408\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u65b0\u3057\u3044SSH\u30ad\u30fc\u304c\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u307e\u3059\u3002
\u5225\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304b\u3089\u30ad\u30fc\u3092\u518d\u5229\u7528\u3057\u305f\u3044\u5834\u5408\u306f\u3001addProject
\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u30ad\u30fc\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8ffd\u52a0mutation {\naddProject(\ninput: {\n# TODO: \u540d\u524d\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3067\u3059\u3002\nname: \"\"\n# TODO: \u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ad\u30fc\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044(\u6539\u884c\u306f '\\n' \u3067\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044)\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ad\u30fc\u3067\u3001Git\u306e\u30b3\u30fc\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\nprivateKey: \"\"\n# TODO: Kubernetes\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u308bKubernetes\u307e\u305f\u306fOpenShift\u306eID\u3067\u3059\u3002\nkubernetes: 0\n# TODO: \u540d\u524d\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3067\u3059\u3002\ngitUrl: \"\"\n# TODO: \u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30d6\u30e9\u30f3\u30c1\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nbranches: \"\"\n# TODO: \u672c\u756a\u74b0\u5883\u3092\u5b9a\u7fa9\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nproductionEnvironment: \"\"\n}\n) {\nname\nkubernetes {\nname\nid\n}\ngitUrl\nbranches\npullrequests\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#list-projects-and-groups","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30b0\u30eb\u30fc\u30d7\u306e\u30ea\u30b9\u30c8","text":"\u3053\u308c\u306f\u3001\u79c1\u305f\u3061\u306eLagoon\u5185\u306b\u5b58\u5728\u3059\u308b\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u6982\u8981\u3092\u898b\u308b\u305f\u3081\u306e\u826f\u3044\u30af\u30a8\u30ea\u3067\u3059\u3002
\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u3001\u304a\u3088\u3073\u30b0\u30eb\u30fc\u30d7\u306e\u6982\u8981\u3092\u53d6\u5f97query {\nallProjects {\nname\ngitUrl\n}\nallKubernetes {\nname\nid\n}\nallGroups{\nid\nname\nmembers {\n# \u3053\u308c\u306f\u3053\u306e\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u8868\u793a\u3057\u307e\u3059\u3002\nuser {\nid\nfirstName\nlastName\n}\nrole\n}\ngroups {\nid\nname\n}\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#single-project","title":"\u5358\u4e00\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8","text":"\u5358\u4e00\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a73\u3057\u304f\u898b\u308b\u5834\u5408\u3001\u3053\u306e\u30af\u30a8\u30ea\u304c\u975e\u5e38\u306b\u6709\u7528\u3067\u3042\u308b\u3053\u3068\u304c\u8a3c\u660e\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a73\u3057\u304f\u898b\u308bquery {\nprojectByName(\n# TODO: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n) {\nid\nbranches\ngitUrl\npullrequests\nproductionEnvironment\nnotifications(type: SLACK) {\n... on NotificationSlack {\nname\nchannel\nwebhook\nid\n}\n}\nenvironments {\nname\ndeployType\nenvironmentType\n}\nkubernetes {\nid\n}\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#querying-a-project-by-its-git-url","title":"Git URL\u306b\u3088\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30af\u30a8\u30ea","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3092\u899a\u3048\u3066\u3044\u306a\u3044\u304c\u3001Git URL\u306f\u77e5\u3063\u3066\u3044\u308b\u5834\u5408\uff1f\u3082\u3046\u63a2\u3059\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3001\u305d\u306e\u305f\u3081\u306eGraphQL\u30af\u30a8\u30ea\u304c\u3042\u308a\u307e\u3059:
Git URL\u306b\u3088\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30af\u30a8\u30eaquery {\nprojectByGitUrl(gitUrl: \"git@server.com:org/repo ```\n.git\") {\nname\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#updating-objects","title":"\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u66f4\u65b0","text":"Lagoon GraphQL API\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8868\u793a\u3057\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u30d1\u30c3\u30c1\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 \u3092\u4f7f\u7528\u3057\u3066\u65e2\u5b58\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u66f4\u65b0\u3059\u308b\u80fd\u529b\u3082\u3042\u308a\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30d6\u30e9\u30f3\u30c1\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002
\u30c7\u30d7\u30ed\u30a4\u30d6\u30e9\u30f3\u30c1\u306e\u66f4\u65b0\u3002mutation {\nupdateProject(\ninput: { id: 109, patch: { branches: \"^(prod|stage|dev|update)$\" } }\n) {\nid\n}\n}\n
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u672c\u756a\u74b0\u5883\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002
\u8b66\u544a
\u3053\u306e\u5909\u66f4\u3092\u30b3\u30f3\u30c6\u30ca\u306b\u53cd\u6620\u3055\u305b\u308b\u306b\u306f\u3001\u518d\u30c7\u30d7\u30ed\u30a4\u304c\u5fc5\u8981\u3067\u3059\u3002
\u672c\u756a\u74b0\u5883\u306e\u66f4\u65b0 mutation {\nupdateProject(\ninput: { id: 109, patch: { productionEnvironment: \"main\" } }\n) {\nid\n}\n}\n
\u307e\u305f\u3001\u4e00\u5ea6\u306b\u8907\u6570\u306e\u5909\u66f4\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u672c\u756a\u74b0\u5883\u306e\u66f4\u65b0\u3068\u30c7\u30d7\u30ed\u30a4\u30d6\u30e9\u30f3\u30c1\u306e\u8a2d\u5b9a\u3002mutation {\nupdateProject(\ninput: {\nid: 109\npatch: {\nproductionEnvironment: \"main\"\nbranches: \"^(prod|stage|dev|update)$\"\n}\n}\n) {\nid\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#deleting-environments","title":"\u74b0\u5883\u306e\u524a\u9664","text":"Lagoon GraphQL API\u3092\u4f7f\u7528\u3057\u3066\u3001\u74b0\u5883\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u74b0\u5883\u3002\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3068\u74b0\u5883\u540d\u3092\u77e5\u3063\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u74b0\u5883\u3092\u524a\u9664\u3059\u308bmutation {\ndeleteEnvironment(\ninput: {\n# TODO: name\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u74b0\u5883\u540d\u3067\u3059\u3002\nname: \"\"\n# TODO: project\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n# \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3067\u3059\u3002\nproject: \"\"\nexecute:true\n}\n)\n}\n
"},{"location":"ja/interacting/graphql-queries/#querying-a-project-to-see-what-groups-and-users-are-assigned","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30b0\u30eb\u30fc\u30d7\u3068\u30e6\u30fc\u30b6\u30fc\u3092\u78ba\u8a8d\u3059\u308b","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3069\u306e\u30b0\u30eb\u30fc\u30d7\u3068\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u304b\u898b\u305f\u3044\u3067\u3059\u304b\uff1f\u5f7c\u3089\u306e\u5f79\u5272\u306f\u4f55\u304b\u77e5\u308a\u305f\u3044\u3067\u3059\u304b\uff1f\u305d\u306e\u305f\u3081\u306e\u30af\u30a8\u30ea\u304c\u3042\u308a\u307e\u3059\uff01\u4e0b\u8a18\u306e\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u691c\u7d22\u3057\u3001\u305d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30b0\u30eb\u30fc\u30d7\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u5f79\u5272\u3092\u8868\u793a\u3067\u304d\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30b0\u30eb\u30fc\u30d7\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u5f79\u5272\u3092\u30af\u30a8\u30ea\u3059\u308bquery search{\nprojectByName(\n#TODO: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nname: \"\"\n) {\nid,\nbranches,\nproductionEnvironment,\npullrequests,\ngitUrl,\nkubernetes {\nid\n},\ngroups{\nid\nname\ngroups {\nid\nname\n}\nmembers {\nrole\nuser {\nid\nemail\n}\n}\n}\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#maintaining-project-metadata","title":"\u7dad\u6301 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30e1\u30bf\u30c7\u30fc\u30bf","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30e1\u30bf\u30c7\u30fc\u30bf\u306f\u3001\u4efb\u610f\u306e\u30ad\u30fc/\u5024\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u3088\u3063\u3066\u554f\u3044\u5408\u308f\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u7a2e\u985e\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u3001\u307e\u305f\u306f\u5f8c\u3067\u554f\u3044\u5408\u308f\u305b\u308b\u305f\u3081\u306e\u4efb\u610f\u306e\u30ab\u30c6\u30b4\u30ea\u30fc\u306b\u3088\u3063\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5206\u985e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/graphql-queries/#addupdate-metadata-on-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u8ffd\u52a0/\u66f4\u65b0\u3059\u308b","text":"\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u66f4\u65b0\u306f\u30ad\u30fc/\u5024\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306fUPSERT
\u3068\u3057\u3066\u52d5\u4f5c\u3057\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u65e2\u306b\u30ad\u30fc\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u306f\u5024\u304c\u66f4\u65b0\u3055\u308c\u3001\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306f\u633f\u5165\u3055\u308c\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u4efb\u610f\u306e\u6570\u306ek/v\u30da\u30a2\u3092\u4fdd\u5b58\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u30ad\u30fc/\u5024\u306e\u30da\u30a2\u3092\u8ffd\u52a0\u3059\u308bmutation {\nupdateProjectMetadata(\ninput: { id: 1, patch: { key: \"type\", value: \"saas\" } }\n) {\nid\nmetadata\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#query-for-projects-by-metadata","title":"\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u3088\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30af\u30a8\u30ea","text":"\u30af\u30a8\u30ea\u306fkey
\u306e\u307f(\u4f8b:\u7279\u5b9a\u306e\u30ad\u30fc\u304c\u5b58\u5728\u3059\u308b\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8fd4\u3059)\u307e\u305f\u306fkey
\u3068value
\u306e\u4e21\u65b9(\u30ad\u30fc\u3068\u5024\u306e\u4e21\u65b9\u304c\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059)\u306b\u3088\u3063\u3066\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
version
\u30bf\u30b0\u3092\u6301\u3064\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8:
\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u3088\u308b\u30af\u30a8\u30eaquery projectsByMetadata {\nprojectsByMetadata(metadata: [{key: \"version\"] ) {\nid\nname\n}\n}\n
\u7279\u306b\u30d0\u30fc\u30b8\u30e7\u30f38
\u306eversion
\u30bf\u30b0\u3092\u6301\u3064\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8:
\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u3088\u308b\u30af\u30a8\u30eaquery projectsByMetadata {\nprojectsByMetadata(metadata: [{key: \"version\", value: \"8\"] ) {\nid\nname\n}\n}\n
"},{"location":"ja/interacting/graphql-queries/#removing-metadata-on-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u524a\u9664\u3059\u308b","text":"\u30e1\u30bf\u30c7\u30fc\u30bf\u306f\u30ad\u30fc\u3054\u3068\u306b\u524a\u9664\u3067\u304d\u307e\u3059\u3002\u4ed6\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u30ad\u30fc/\u5024\u306e\u30da\u30a2\u306f\u6b8b\u308a\u307e\u3059\u3002
\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u524a\u9664\u3059\u308bmutation {\nremoveProjectMetadataByKey (\ninput: { id: 1, key: \"version\" }\n) {\nid\nmetadata\n}\n}\n
"},{"location":"ja/interacting/graphql/#graphql-api","title":"GraphQL API\u3078\u306e\u63a5\u7d9a","text":"Lagoon\u3067\u306eAPI\u3068\u306e\u3084\u308a\u3068\u308a\u306fGraphQL\u3092\u901a\u3058\u3066\u884c\u3044\u307e\u3059\u3002API\u306b\u8a8d\u8a3c\u3059\u308b\u305f\u3081\u306b\u306f\u3001JWT(JSON Web Token)\u304c\u5fc5\u8981\u3067\u3001\u3053\u308c\u306b\u3088\u308aSSH\u516c\u958b\u9375\u3092\u901a\u3058\u3066API\u306b\u5bfe\u3059\u308b\u8a8d\u8a3c\u304c\u884c\u308f\u308c\u307e\u3059\u3002
\u3053\u306e\u30c8\u30fc\u30af\u30f3\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001token
\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3063\u3066\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059:
\u30c8\u30fc\u30af\u30f3\u306e\u53d6\u5f97ssh -p [PORT] -t lagoon@[HOST] token\n
amazee.io\u306e\u4f8b:
amazee.io\u30c8\u30fc\u30af\u30f3\u306e\u53d6\u5f97ssh -p 32222 -t lagoon@ssh.lagoon.amazeeio.cloud token\n
\u3053\u308c\u306b\u3088\u308a\u9577\u3044\u6587\u5b57\u5217\u304c\u8fd4\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u304cJWT\u30c8\u30fc\u30af\u30f3\u3067\u3059\u3002
\u307e\u305f\u3001API\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306eURL\u3082\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306b\u3064\u3044\u3066\u306fLagoon\u306e\u7ba1\u7406\u8005\u306b\u5c0b\u306d\u3066\u304f\u3060\u3055\u3044\u3002
amazee.io\u3067\u306f\u3053\u308c\u306fhttps://api.lagoon.amazeeio.cloud/graphql
\u3067\u3059\u3002
\u3055\u3066\u3001GraphQL\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002\u6280\u8853\u7684\u306b\u306f\u3053\u308c\u306f\u5358\u306a\u308bHTTP\u3067\u3059\u304c\u3001\u6211\u3005\u306fGraphiQL\u3092\u63a8\u5968\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u7d20\u6575\u306aUI\u3092\u5099\u3048\u3066\u304a\u308a\u3001\u30aa\u30fc\u30c8\u30b3\u30f3\u30d7\u30ea\u30fc\u30c8\u3067GraphQL\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u8d77\u52d5\u3057\u307e\u3059\u3002 [GraphiQL App]
API\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8URL\u3092\u5165\u529b\u3057\u307e\u3059\u3002\u6b21\u306b\"Edit HTTP Headers\"\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u65b0\u3057\u3044\u30d8\u30c3\u30c0\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059:
- \"Header name\":
Authorization
- \"Header value\":
Bearer [jwt token]
( JWT\u30c8\u30fc\u30af\u30f3\u306b\u30b9\u30da\u30fc\u30b9\u304c\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u305d\u308c\u306f\u52d5\u4f5c\u3057\u307e\u305b\u3093)
HTTP\u30d8\u30c3\u30c0\u30fc\u30aa\u30fc\u30d0\u30fc\u30ec\u30a4\u3092\u9589\u3058\u307e\u3059(ESC\u30ad\u30fc\u3092\u62bc\u3057\u307e\u3059)\u3002\u3053\u308c\u3067\u3042\u306a\u305f\u306f\u521d\u3081\u3066\u306eGraphQL\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3046\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\uff01
\u5de6\u5074\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u6b21\u306e\u5185\u5bb9\u3092\u5165\u529b\u3057\u307e\u3059:
\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3059\u308bquery whatIsThere {\nallProjects {\nid\ngitUrl\nname\nbranches\npullrequests\nproductionEnvironment\nenvironments {\nname\nenvironmentType\n}\n}\n}\n
\u305d\u3057\u3066\u3001\u25b6\ufe0f\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u304b(\u307e\u305f\u306fCTRL+ENTER\u3092\u62bc\u3059)\u3002
\u3059\u3079\u3066\u3046\u307e\u304f\u3044\u3051\u3070\u3001\u521d\u3081\u3066\u306eGraphQL\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/interacting/graphql/#_1","title":"\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3","text":"Lagoon\u306eGraphQL API\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8868\u793a\u3057\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u65e2\u5b58\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u66f4\u65b0\u3059\u308b\u6a5f\u80fd\u3082\u6301\u3063\u3066\u3044\u307e\u3059\u3002Lagoon\u306e\u3059\u3079\u3066\u306eGraphQL\u306f\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002
\u60c5\u5831
GraphQL\u306e\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u30af\u30a8\u30ea\u306f\u3001\u30c7\u30fc\u30bf\u30b9\u30c8\u30a2\u306e\u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3001\u5024\u3092\u8fd4\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3001\u30c7\u30fc\u30bf\u306e\u633f\u5165\u3001\u66f4\u65b0\u3001\u524a\u9664\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u30b9\u30ad\u30fc\u30de\u306e\u4e00\u90e8\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30d6\u30e9\u30f3\u30c1\u3092\u66f4\u65b0\u3057\u307e\u3059:
\u30c7\u30d7\u30ed\u30a4\u30d6\u30e9\u30f3\u30c1\u3092\u66f4\u65b0mutation editProjectBranches {\nupdateProject(input:{id:109, patch:{branches:\"^(prod|stage|dev|update)$\"}}) {\nid\n}\n}\n
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u88fd\u54c1\u74b0\u5883\u3092\u66f4\u65b0\u3057\u307e\u3059:
\u8b66\u544a
\u3059\u3079\u3066\u306e\u5909\u66f4\u304c\u30b3\u30f3\u30c6\u30ca\u306b\u53cd\u6620\u3055\u308c\u308b\u3088\u3046\u306b\u3001\u518d\u30c7\u30d7\u30ed\u30a4\u304c\u5fc5\u8981\u3067\u3059\u3002
\u88fd\u54c1\u74b0\u5883\u306e\u66f4\u65b0mutation editProjectProductionEnvironment {\nupdateProject(input:{id:109, patch:{productionEnvironment:\"prod\"}}) {\nid\n}\n}\n
\u307e\u305f\u3001\u8907\u6570\u306e\u5909\u66f4\u3092\u4e00\u3064\u306e\u30af\u30a8\u30ea\u306b\u307e\u3068\u3081\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
\u8907\u6570\u306e\u5909\u66f4mutation editProjectProductionEnvironmentAndBranches {\nupdateProject(input:{id:109, patch:{productionEnvironment:\"prod\", branches:\"^(prod|stage|dev|update)$\"}}) {\nid\n}\n}\n
"},{"location":"ja/interacting/lagoon-ui/","title":"LagoonUI","text":"Lagoon UI\u306f\u3001Lagoon\u3068\u306e\u6700\u521d\u306e\u63a5\u70b9\u3067\u3059\u3002\u30a2\u30af\u30bb\u30b9\u306b\u95a2\u3059\u308b\u554f\u984c\u304c\u3042\u308b\u5834\u5408\u306f\u3001Lagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
UI\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u7d44\u7e54\u306b\u95a2\u3059\u308b\u3055\u307e\u3056\u307e\u306a\u30bf\u30b9\u30af\u3092\u5b8c\u4e86\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7d44\u7e54\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306f\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\u3001UI\u3067\u7d44\u7e54\u3068\u4f55\u304c\u3067\u304d\u308b\u304b\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/interacting/organizations/","title":"UI\u3067\u7d44\u7e54\u3068\u5171\u540c\u4f5c\u696d\u3059\u308b","text":"\u4ee5\u4e0b\u306b\u3001Lagoon UI\u3067\u30b0\u30eb\u30fc\u30d7\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u304a\u3088\u3073\u5f79\u5272\u306b\u95a2\u9023\u3059\u308b\u6709\u7528\u306a\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u30ac\u30a4\u30c9\u3092\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/interacting/organizations/#log-in-and-find-organizations","title":"\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u7d44\u7e54\u3092\u63a2\u3059","text":""},{"location":"ja/interacting/organizations/#view-who-has-access-to-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3064\u4eba\u3092\u78ba\u8a8d\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#add-user-to-group-with-role","title":"\u30e6\u30fc\u30b6\u30fc\u3092\u30ed\u30fc\u30eb\u4ed8\u304d\u306e\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#remove-a-user-from-a-group","title":"\u30e6\u30fc\u30b6\u30fc\u3092\u30b0\u30eb\u30fc\u30d7\u304b\u3089\u524a\u9664\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#change-a-user-role","title":"\u30e6\u30fc\u30b6\u30fc\u306e\u30ed\u30fc\u30eb\u3092\u5909\u66f4\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#add-an-email-notification-to-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30e1\u30fc\u30eb\u901a\u77e5\u3092\u8ffd\u52a0\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#add-a-group-to-a-project","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#add-a-user-with-organization-owner-privileges","title":"\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc\u6a29\u9650\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3059\u308b","text":""},{"location":"ja/interacting/organizations/#create-a-new-project-add-a-group-and-create-a-production-environment","title":"\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001\u30b0\u30eb\u30fc\u30d7\u3092\u8ffd\u52a0\u3057\u3001\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b","text":""},{"location":"ja/interacting/rbac/","title":"\u30ed\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1 (RBAC)","text":"Lagoon \u30d0\u30fc\u30b8\u30e7\u30f3 1.0 \u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u65b9\u6cd5\u304c\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u306f\u30b0\u30eb\u30fc\u30d7\u7d4c\u7531\u3067\u51e6\u7406\u3055\u308c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f 1 \u3064\u307e\u305f\u306f\u8907\u6570\u306e\u30b0\u30eb\u30fc\u30d7\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306f\u30ed\u30fc\u30eb\u3092\u6301\u3064\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002\u30b0\u30eb\u30fc\u30d7\u306f\u30b5\u30d6\u30b0\u30eb\u30fc\u30d7\u5185\u306b\u30cd\u30b9\u30c8\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u5909\u66f4\u306b\u3088\u308a\u3001\u67d4\u8edf\u6027\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u3001Lagoon \u5185\u3067\u5b9f\u969b\u306e\u30c1\u30fc\u30e0\u3092\u518d\u73fe\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#roles","title":"\u5f79\u67c4","text":"\u30e6\u30fc\u30b6\u30fc\u3092\u30b0\u30eb\u30fc\u30d7\u306b\u5272\u308a\u5f53\u3066\u308b\u3068\u304d\u306f\u3001\u3053\u306e\u30b0\u30eb\u30fc\u30d7\u5185\u3067\u305d\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u30b0\u30eb\u30fc\u30d7 \u30ed\u30fc\u30eb\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u73fe\u5728\u5b58\u5728\u3059\u308b 5 \u3064\u306e\u30b0\u30eb\u30fc\u30d7 \u30ed\u30fc\u30eb\u306e\u305d\u308c\u305e\u308c\u304c\u3001\u30b0\u30eb\u30fc\u30d7\u3068\u30b0\u30eb\u30fc\u30d7\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3059\u308b\u7570\u306a\u308b\u6a29\u9650\u3092\u30e6\u30fc\u30b6\u30fc\u306b\u4ed8\u4e0e\u3057\u307e\u3059\u3002\u73fe\u5728 Lagoon \u306b\u3042\u308b\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u30ed\u30fc\u30eb\u3068\u30b0\u30eb\u30fc\u30d7 \u30ed\u30fc\u30eb\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002
"},{"location":"ja/interacting/rbac/#platform-wide-roles","title":"\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u30ed\u30fc\u30eb","text":""},{"location":"ja/interacting/rbac/#platform-wide-admin","title":"\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u7ba1\u7406\u8005","text":"\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u7ba1\u7406\u8005\u306f\u3001Lagoon \u5168\u4f53\u306e\u3059\u3079\u3066\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u524a\u9664\u3059\u308b\u306a\u3069\u306e\u5371\u967a\u306a\u5909\u66f4\u3082\u542b\u307e\u308c\u307e\u3059\u3002\u975e\u5e38\u306b\u614e\u91cd\u306b\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/interacting/rbac/#platform-wide-owner","title":"\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u6240\u6709\u8005","text":"\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u30aa\u30fc\u30ca\u30fc\u306f\u3001\u30b0\u30eb\u30fc\u30d7\u30aa\u30fc\u30ca\u30fc\u306e\u5f79\u5272\u3068\u540c\u69d8\u306b\u3059\u3079\u3066\u306eLagoon\u30b0\u30eb\u30fc\u30d7\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u3059\u3079\u3066\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304c\u3001\u5404\u30b0\u30eb\u30fc\u30d7\u306b\u30e6\u30fc\u30b6\u30fc\u3092\u5272\u308a\u5f53\u3066\u305f\u304f\u306a\u3044\u5834\u5408\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#organization-roles","title":"\u7d44\u7e54\u306e\u5f79\u5272","text":""},{"location":"ja/interacting/rbac/#organization-owner","title":"\u7d44\u7e54\u306e\u6240\u6709\u8005","text":"\u7d44\u7e54\u306e\u6240\u6709\u8005\u306e\u30ed\u30fc\u30eb\u306b\u3088\u308a\u3001\u7d44\u7e54\u5185\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u3001\u901a\u77e5\u3092\u4f5c\u6210\u304a\u3088\u3073\u524a\u9664\u3067\u304d\u307e\u3059\u3002
\u5f7c\u3089\u306f\u30e6\u30fc\u30b6\u30fc\u3092\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3057\u3001\u305d\u306e\u30b0\u30eb\u30fc\u30d7\u5185\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u30ed\u30fc\u30eb\u3092\u5909\u66f4\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30b0\u30eb\u30fc\u30d7\u306b\u95a2\u9023\u4ed8\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc\u306f\u8ab0\u304c\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3063\u3066\u3044\u308b\u304b\u3092\u660e\u78ba\u306b\u628a\u63e1\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u3092\u8fc5\u901f\u306b\u8ffd\u52a0\u30fb\u524a\u9664\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc\u306f\u3001Slack\u3084\u305d\u306e\u4ed6\u306e\u901a\u77e5\u3092\u76f4\u63a5\u4f5c\u6210\u3057\u3001\u305d\u308c\u3089\u306e\u901a\u77e5\u3092Lagoon\u7ba1\u7406\u8005\u306e\u52a9\u3051\u3092\u501f\u308a\u305a\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002
\u7d44\u7e54\u306e\u6240\u6709\u8005\u306f\u3001\u7d44\u7e54\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306b\u4ed6\u306e\u6240\u6709\u8005\u3001\u7ba1\u7406\u8005\u3001\u307e\u305f\u306f\u95b2\u89a7\u8005\u3092\u8ffd\u52a0\u304a\u3088\u3073\u524a\u9664\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u6ce8\u610f
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u3053\u306e\u30ed\u30fc\u30eb\u306f\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u74b0\u5883\u3092\u4f5c\u6210\u3057\u305f\u308a\u3001\u30c7\u30d7\u30ed\u30a4\u3092\u30c8\u30ea\u30ac\u30fc\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u5f7c\u3089\u306f\u81ea\u5206\u81ea\u8eab\u3092\u3001\u305d\u306e\u6a29\u9650\u3092\u4ed8\u4e0e\u3059\u308b\u30ed\u30fc\u30eb\u3092\u6301\u3064\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u3001\u7d44\u7e54\u306e\u30aa\u30fc\u30ca\u30fc\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30b0\u30eb\u30fc\u30d7\u306e\u30aa\u30fc\u30ca\u30fc\u3068\u3057\u3066\u8ffd\u52a0\u3055\u308c\u308b\u3053\u3068\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#organization-admin","title":"\u7d44\u7e54\u7ba1\u7406\u8005","text":"\u7d44\u7e54\u7ba1\u7406\u8005\u306e\u5f79\u5272\u306f\u7d44\u7e54\u6240\u6709\u8005\u3068\u540c\u3058\u3067\u3059\u304c\u3001\u3053\u306e\u5f79\u5272\u3067\u306f\u7d44\u7e54\u306e\u6240\u6709\u8005\u3001\u7ba1\u7406\u8005\u3001\u307e\u305f\u306f\u95b2\u89a7\u8005\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
"},{"location":"ja/interacting/rbac/#organization-viewer","title":"\u7d44\u7e54\u306e\u30d3\u30e5\u30fc\u30a2","text":"\u7d44\u7e54\u306e\u30d3\u30e5\u30fc\u30ef\u30fc\u306f\u3001\u81ea\u7d44\u7e54\u5185\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u3068\u30e6\u30fc\u30b6\u30fc\u306e\u30a2\u30af\u30bb\u30b9\u3001\u901a\u77e5\u3092\u8868\u793a\u3059\u308b\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#group-roles","title":"\u30b0\u30eb\u30fc\u30d7\u306e\u30ed\u30fc\u30eb","text":""},{"location":"ja/interacting/rbac/#owner","title":"\u30aa\u30fc\u30ca\u30fc","text":"\u30aa\u30fc\u30ca\u30fc\u306e\u30ed\u30fc\u30eb\u306f\u3001\u30b0\u30eb\u30fc\u30d7\u3068\u305d\u306e\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u5168\u3066\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5f7c\u3089\u306f\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3057\u3001\u7ba1\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3053\u306e\u30ed\u30fc\u30eb\u306b\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3001\u306a\u305c\u306a\u3089\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u672c\u756a\u74b0\u5883\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u3089\u3067\u3059\u3002
"},{"location":"ja/interacting/rbac/#maintainer","title":"\u30e1\u30f3\u30c6\u30ca","text":"\u30e1\u30f3\u30c6\u30ca\u306e\u30ed\u30fc\u30eb\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u81ea\u4f53\u3084\u672c\u756a\u74b0\u5883\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3092\u9664\u3044\u3066\u3001\u30b0\u30eb\u30fc\u30d7\u3068\u305d\u306e\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u4f55\u3067\u3082\u3067\u304d\u307e\u3059\u3002\u5f7c\u3089\u306f\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3057\u3001\u7ba1\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#developer","title":"\u958b\u767a\u8005","text":"\u958b\u767a\u8005\u30ed\u30fc\u30eb\u306f\u958b\u767a\u74b0\u5883\u3078\u306eSSH\u30a2\u30af\u30bb\u30b9\u306e\u307f\u304c\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30ed\u30fc\u30eb\u306f\u3001\u672c\u756a\u74b0\u5883\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3001\u66f4\u65b0\u3001\u524a\u9664\u3092\u884c\u3046\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u672c\u756a\u74b0\u5883\u3092\u30bd\u30fc\u30b9\u3068\u3057\u3066\u540c\u671f\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u3059\u304c\u3001\u5b9b\u5148\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u30b0\u30eb\u30fc\u30d7\u306e\u30e6\u30fc\u30b6\u30fc\u7ba1\u7406\u3082\u884c\u3048\u307e\u305b\u3093\u3002
\u91cd\u8981
\u3053\u306e\u30ed\u30fc\u30eb\u306f\u3001Git\u30d7\u30c3\u30b7\u30e5\u306b\u3088\u3063\u3066\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u308b\u305f\u3081\u3001\u672c\u756a\u74b0\u5883\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u9632\u3050\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002Git\u30b5\u30fc\u30d0\u30fc\u304c\u3053\u308c\u3089\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u672c\u756a\u74b0\u5883\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u306b\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u306e\u3092\u9632\u3050\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#reporter","title":"\u30ec\u30dd\u30fc\u30bf\u30fc","text":"\u30ec\u30dd\u30fc\u30bf\u30fc\u306e\u30ed\u30fc\u30eb\u306f\u3001\u95b2\u89a7\u30a2\u30af\u30bb\u30b9\u306e\u307f\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u5f7c\u3089\u306fSSH\u7d4c\u7531\u3067\u74b0\u5883\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u308a\u3001\u305d\u308c\u3089\u3092\u5909\u66f4\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u5f7c\u3089\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u30af\u30ea\u30a2\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30ed\u30fc\u30eb\u306f\u4e3b\u306b\u3001\u30b9\u30c6\u30fc\u30af\u30db\u30eb\u30c0\u30fc\u304cLagoon UI\u3068\u30ed\u30b0\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/interacting/rbac/#guest","title":"\u30b2\u30b9\u30c8","text":"\u30b2\u30b9\u30c8\u306e\u30ed\u30fc\u30eb\u306f\u3001\u4e0a\u8a18\u306e\u30ec\u30dd\u30fc\u30bf\u30fc\u306e\u30ed\u30fc\u30eb\u3068\u540c\u7b49\u306e\u6a29\u9650\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002
\u4ee5\u4e0b\u306f\u305d\u306e\u8868\u3067\u3059\u3002 \u5f7c\u3089\u304c\u6301\u3064\u30ed\u30fc\u30eb\u3068\u30a2\u30af\u30bb\u30b9\u3092\u30ea\u30b9\u30c8\u3057\u307e\u3059:
"},{"location":"ja/interacting/rbac/#lagoon-100-rbac-permission-matrix","title":"Lagoon 1.0.0 RBAC \u6a29\u9650\u30de\u30c8\u30ea\u30c3\u30af\u30b9","text":"\u81ea\u5206\u81ea\u8eab\u30b2\u30b9\u30c8\u958b\u767a\u8005\u30e1\u30f3\u30c6\u30ca\u30fc\u30aa\u30fc\u30ca\u30fc\u7d44\u7e54\u30d3\u30e5\u30fc\u30a2\u7d44\u7e54\u30aa\u30fc\u30ca\u30fc\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u6240\u6709\u8005\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5168\u4f53\u306e\u7ba1\u7406\u8005 \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID userCanSshToEnvironment environment ssh:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID userCanSshToEnvironment environment ssh:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u7bc4\u56f2 \u5c5e\u6027 addOrUpdateEnvironmentStorage environment storage addNotificationSlack notification add updateNotificationSlack notification update deleteNotificationSlack notification delete addKubernetes kubernetes add updateKubernetes kubernetes update deleteKubernetes kubernetes delete getAllOpenshifts openshift viewAll getAllProjects project viewAll addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID allEnvironments environment viewAll getEnvironmentStorageMonthByEnvironmentId environment storage getEnvironmentHoursMonthByEnvironmentId environment storage getEnvironmentHitsMonthByEnvironmentId environment storage addOrUpdateEnvironmentStorage environment storage addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add getAllOrganizations organization viewAll addOrganization add viewAll updateOrganization update viewAll deleteOrganization delete viewAll getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId \u540d\u524d \u30ea\u30bd\u30fc\u30b9 \u30b9\u30b3\u30fc\u30d7 \u5c5e\u6027 getEnvironmentStorageMonthByEnvironmentId environment storage getEnvironmentHoursMonthByEnvironmentId environment storage getEnvironmentHitsMonthByEnvironmentId environment storage getAllOpenshifts openshift viewAll addOrUpdateEnvironmentStorage environment storage addNotificationSlack notification add updateNotificationSlack notification update deleteNotificationSlack notification delete addKubernetes kubernetes add updateKubernetes kubernetes update deleteKubernetes kubernetes delete getAllProjects project viewAll addSshKey ssh_key add userID updateSshKey ssh_key update userID deleteSshKey ssh_key delete userID getUserSshKeys ssh_key view:user userID updateUser user update userID deleteUser user delete userID deleteEnvironment environment delete:production projectID deleteProject project delete projectID getProjectByEnvironmentId project viewPrivateKey projectID getProjectByGitUrl project viewPrivateKey projectID getProjectByName project viewPrivateKey projectID deleteBackup backup delete projectID addEnvVariable (to Project) env_var project:add projectID addEnvVariable (to Environment) env_var environment:add:production projectID deleteEnvVariable env_var delete projectID deleteEnvVariable (from Project) env_var project:delete projectID deleteEnvVariable (from Environment) env_var environment:delete:production projectID getEnvVarsByProjectId env_var project:viewValue projectID getEnvVarsByEnvironmentId env_var environment:viewValue:production projectID addOrUpdateEnvironment environment addOrUpdate:production projectID updateEnvironment environment update:production projectID addDeployment environment deploy:production projectID deleteDeployment deployment delete projectID updateDeployment deployment update projectID setEnvironmentServices environment update:production projectID deployEnvironmentLatest environment deploy:production projectID deployEnvironmentBranch environment deploy:production projectID deployEnvironmentPullrequest environment deploy:production projectID deployEnvironmentPromote environment deploy:production projectID updateGroup group update groupID deleteGroup group delete groupID addUserToGroup group addUser groupID removeUserFromGroup group removeUser groupID addNotificationToProject project addNotification projectID removeNotificationFromProject project removeNotification projectID updateProject project update projectID addGroupsToProject project addGroup projectID removeGroupsFromProject project removeGroup projectID addTask task add:production projectID taskDrushUserLogin task drushUserLogin:destination:production environmentID taskDrushSqlSync task drushSqlSync:destination:production projectID taskDrushRsyncFiles task drushRsync:destination:production projectID addBackup backup add projectID getBackupsByEnvironmentId backup view projectID addEnvVariable (to Environment) env_var environment:add:development projectID deleteEnvVariable (from Environment) env_var environment:delete:development projectID getEnvVarsByEnvironmentId env_var environment:viewValue:development projectID addOrUpdateEnvironment environment addOrUpdate:development projectID updateEnvironment environment update:development projectID deleteEnvironment environment delete:development projectID addDeployment environment deploy:development projectID setEnvironmentServices environment update:development projectID deployEnvironmentLatest environment deploy:development projectID deployEnvironmentBranch environment deploy:development projectID deployEnvironmentPullrequest environment deploy:development projectID deployEnvironmentPromote environment deploy:development projectID getNotificationsByProjectId notification view projectID addTask task add:development projectID taskDrushArchiveDump task drushArchiveDump:development projectID taskDrushArchiveDump task drushArchiveDump:production projectID taskDrushSqlDump task drushSqlDump:development projectID taskDrushSqlDump task drushSqlDump:production projectID taskDrushUserLogin task drushUserLogin:destination:development environmentID taskDrushSqlSync task drushSqlSync:source:development projectID taskDrushSqlSync task drushSqlSync:source:production projectID taskDrushSqlSync task drushSqlSync:destination:development projectID taskDrushRsyncFiles task drushRsync:source:development projectID taskDrushRsyncFiles task drushRsync:source:production projectID taskDrushRsyncFiles task drushRsync:destination:development projectID deleteTask task delete projectID updateTask task update projectID uploadFilesForTask task update projectID deleteFilesForTask task delete projectID getBackupsByEnvironmentId deployment view projectID getEnvironmentsByProjectId environment view projectID getEnvironmentServicesByEnvironmentId environment view projectID getEnvVarsByEnvironmentId env_var environment:view:development projectID getEnvVarsByEnvironmentId env_var environment:view:production projectID getEnvVarsByProjectId env_var project:view projectID addGroup group add getOpenshiftByProjectId openshift view projectID addProject project add getProjectByEnvironmentId project view projectID getProjectByGitUrl project view projectID getProjectByName project view projectID addRestore restore add projectID updateRestore restore update projectID taskDrushCacheClear task drushCacheClear:development projectID taskDrushCacheClear task drushCacheClear:production projectID taskDrushCron task drushCron:development projectID taskDrushCron task drushCron:production projectID getFilesByTaskId task view projectID getTasksByEnvironmentId task view projectID getTaskByRemoteId task view projectID getTaskById task view projectID addUser user add getAllOrganizations organization viewAll addOrganization add viewAll updateOrganization update viewAll deleteOrganization delete viewAll getOrganizationById organization view organizationId getProjectByEnvironmentId organization viewProject organizationId getGroupsByOrganizationId organization viewGroup organizationId getUsersByOrganizationId organization viewUsers organizationId getUserByEmailAndOrganizationId organization viewUser organizationId getNotificationsByOrganizationId organization viewNotification organizationId addProject organization addProject organizationId updateProject organization updateProject organizationId deleteProject organization deleteProject organizationId addGroup organization addGroup organizationId deleteGroup organization removeGroup organizationId addNotificationSlack organization addNotification organizationId updateNotificationSlack organization updateNotification organizationId deleteNotificationSlack organization removeNotification organizationId addUserToOrganization organization addOwner organizationId addUserToOrganization organization addViewer organizationId updateOrganization organization updateOrganization organizationId"},{"location":"ja/interacting/ssh/","title":"SSH","text":"Lagoon\u3067\u306f\u3001SSH\u3092\u901a\u3058\u3066\u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u81ea\u4f53\u306b\u306fSSH\u30b5\u30fc\u30d0\u30fc\u306f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u4ee3\u308f\u308a\u306bSSH\u3092\u4f7f\u3063\u3066Lagoon\u306b\u63a5\u7d9a\u3057\u3001\u305d\u3053\u304b\u3089Kubernetes API\u3092\u901a\u3058\u3066\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u63a5\u7d9a\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
"},{"location":"ja/interacting/ssh/#ssh_1","title":"SSH\u30a2\u30af\u30bb\u30b9\u306e\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3059\u308b","text":""},{"location":"ja/interacting/ssh/#ssh_2","title":"SSH\u30ad\u30fc\u306e\u751f\u6210","text":"\u540c\u3058\u30ad\u30fc\u3092\u8907\u6570\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u9593\u3067\u5171\u6709\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u5404\u30c7\u30d0\u30a4\u30b9\u3054\u3068\u306b\u5225\u3005\u306eSSH\u30ad\u30fc\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u5404\u30b7\u30b9\u30c6\u30e0\u3067\u306eSSH\u30ad\u30fc\u306e\u751f\u6210\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u4ee5\u4e0b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/interacting/ssh/#osxmac","title":"OSX(Mac)","text":"Mac
"},{"location":"ja/interacting/ssh/#linuxubuntu","title":"Linux(Ubuntu)","text":"Linux
"},{"location":"ja/interacting/ssh/#ssh_3","title":"SSH\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8","text":""},{"location":"ja/interacting/ssh/#osxmac_1","title":"OSX(Mac)","text":"OSX\u306f\u3001\u8d77\u52d5\u6642\u306b\u8a2d\u5b9a\u3055\u308c\u305fSSH\u30ad\u30fc\u3092\u30ed\u30fc\u30c9\u3059\u308b\u3088\u3046\u306bSSH\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u3053\u308c\u306b\u3088\u308a\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306e\u8a2d\u5b9a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u3061\u3089\u306e\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044:https://www.backarapper.com/add-ssh-keys-to-ssh-agent-on-startup-in-macos/
"},{"location":"ja/interacting/ssh/#linux","title":"Linux","text":"Linux\u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u306f\u3001ssh-agent
\u306e\u4f7f\u7528\u65b9\u6cd5\u306b\u3088\u308a\u307e\u3059\u3002\u4e00\u822c\u7684\u306a\u30ac\u30a4\u30c9\u306f\u3053\u3053\u306b\u3042\u308a\u307e\u3059:https://www.ssh.com/academy/ssh/agent
"},{"location":"ja/interacting/ssh/#windows_1","title":"Windows","text":"\u6700\u8fd1\u3067\u306fWindows\u3067\u306eSSH\u30ad\u30fc\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u3001\u73fe\u5728\u3067\u306f\u30cd\u30a4\u30c6\u30a3\u30d6\u306b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002Windows 10\u306eSSH\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u306e\u4fbf\u5229\u306a\u30ac\u30a4\u30c9\u306f\u3053\u3053\u306b\u3042\u308a\u307e\u3059:https://richardballard.co.uk/ssh-keys-on-windows-10/
"},{"location":"ja/interacting/ssh/#ssh_4","title":"SSH\u30ad\u30fc\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9","text":""},{"location":"ja/interacting/ssh/#ui","title":"UI\u3092\u901a\u3058\u3066","text":"SSH\u30ad\u30fc\u3092UI\u3092\u901a\u3058\u3066\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002\u901a\u5e38\u901a\u308a\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u53f3\u4e0a\u306e\u89d2\u306b\u3042\u308b\u8a2d\u5b9a\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059:
\u6b21\u306b\u3001SSH\u30ad\u30fc\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u308b\u30da\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u3001\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30ad\u30fc\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u30ad\u30fc\u3092\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306b\u8cbc\u308a\u4ed8\u3051\u3001\u540d\u524d\u3092\u4ed8\u3051\u3066\u300c\u8ffd\u52a0\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u305d\u308c\u3060\u3051\u3067\u3059\uff01\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u8ffd\u52a0\u306e\u30ad\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
"},{"location":"ja/interacting/ssh/#_1","title":"\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u7d4c\u7531","text":"\u30e6\u30fc\u30b6\u30fc\u306bSSH\u30ad\u30fc\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306eLagoon API\u3092GraphQL\u7d4c\u7531\u3067\u4f7f\u7528\u3059\u308b\u4e00\u822c\u7684\u306a\u4f8b\u306f\u3001\u3053\u3061\u3089\u306b\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/interacting/ssh/#ssh_5","title":"\u30dd\u30c3\u30c9\u3078\u306eSSH\u63a5\u7d9a","text":""},{"location":"ja/interacting/ssh/#_2","title":"\u63a5\u7d9a","text":"\u63a5\u7d9a\u306f\u76f4\u63a5\u7684\u3067\u3001\u6b21\u306e\u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3044\u307e\u3059:
SSHssh -p [PORT] -t [PROJECT-ENVIRONMENT-NAME]@[HOST]\n
PORT
- \u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u306eSSH\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u30dd\u30fc\u30c8(amazee.io\u306e\u5834\u5408:22
)\u3002 HOST
- \u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u306eSSH\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u30db\u30b9\u30c8(amazee.io\u306e\u5834\u5408ssh.example.com
)\u3002 PROJECT-ENVIRONMENT-NAME
- \u63a5\u7d9a\u3057\u305f\u3044\u74b0\u5883\u3002\u3053\u308c\u306f\u901a\u5e38PROJECTNAME-ENVIRONMENT
\u306e\u30d1\u30bf\u30fc\u30f3\u3067\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
\u4f8b\u3048\u3070:
SSH examplessh -p 22 -t drupal-example-main@ssh.example.com\n
\u3053\u308c\u306b\u3088\u308a\u3001main
\u74b0\u5883\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8drupal-example
\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002
"},{"location":"ja/interacting/ssh/#_3","title":"\u30dd\u30c3\u30c9/\u30b5\u30fc\u30d3\u30b9\u3001\u30b3\u30f3\u30c6\u30ca\u5b9a\u7fa9","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30ea\u30e2\u30fc\u30c8\u30b7\u30a7\u30eb\u306f\u30bf\u30a4\u30d7cli
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3057\u3088\u3046\u3068\u3057\u307e\u3059\u3002\u4ed6\u306e\u30dd\u30c3\u30c9/\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3067\u304d\u307e\u3059:
SSH to another servicessh -p [PORT] -t [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8-\u74b0\u5883\u540d]@[\u30db\u30b9\u30c8] service=[\u30b5\u30fc\u30d3\u30b9\u540d]\n
\u3042\u306a\u305f\u306e\u30dd\u30c3\u30c9/\u30b5\u30fc\u30d3\u30b9\u306b\u8907\u6570\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001Lagoon\u306f\u3042\u306a\u305f\u3092\u6700\u521d\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u63a5\u7d9a\u3057\u305f\u3044\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
\u30b3\u30f3\u30c6\u30ca\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002ssh -p [\u30dd\u30fc\u30c8] -t [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8-\u74b0\u5883\u540d]@[\u30db\u30b9\u30c8] service=[\u30b5\u30fc\u30d3\u30b9\u540d] container=[\u30b3\u30f3\u30c6\u30ca\u540d]\n
\u4f8b\u3048\u3070\u3001nginx
\u30dd\u30c3\u30c9\u5185\u306ephp
\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3059\u308b\u306b\u306f:
SSH to php containerssh -p 22 -t drupal-example-main@sssh.example.com service=nginx container=php\n
"},{"location":"ja/interacting/ssh/#_4","title":"\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30d4\u30fc","text":"\u4e00\u822c\u7684\u306a\u30b1\u30fc\u30b9\u3067\u3001\u30d5\u30a1\u30a4\u30eb\u3092cli
\u30dd\u30c3\u30c9\u306b\u30b3\u30d4\u30fc\u3059\u308b\u3053\u3068\u306f\u3001\u901a\u5e38\u306eSSH\u4e92\u63db\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066\u9054\u6210\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/interacting/ssh/#scp","title":"scp","text":"Copy file with scpscp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P 22 [\u30ed\u30fc\u30ab\u30eb\u30d1\u30b9] [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d]-[\u74b0\u5883\u540d]@ssh.example.com:[\u30ea\u30e2\u30fc\u30c8\u30d1\u30b9]\n
"},{"location":"ja/interacting/ssh/#rsync","title":"rsync","text":"Copy files with rsyncrsync --rsh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 22' [\u30ed\u30fc\u30ab\u30eb\u30d1\u30b9] [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d]-[\u74b0\u5883\u540d]@ssh.example.com:[\u30ea\u30e2\u30fc\u30c8\u30d1\u30b9]\n
"},{"location":"ja/interacting/ssh/#tar","title":"tar","text":"Bashssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P 22 [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d]-[\u74b0\u5883\u540d]@ssh.example.com tar -zcf - [\u30ea\u30e2\u30fc\u30c8\u30d1\u30b9] | tar -zxf - -C /tmp/\n
"},{"location":"ja/interacting/ssh/#cli","title":"\u975eCLI\u30dd\u30c3\u30c9/\u30b5\u30fc\u30d3\u30b9\u306e\u6307\u5b9a","text":"\u307e\u308c\u306a\u30b1\u30fc\u30b9\u3067\u3001\u975eCLI\u30b5\u30fc\u30d3\u30b9\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 service=...
\u304a\u3088\u3073/\u307e\u305f\u306fcontainer=...
\u5f15\u6570\u306f\u30b3\u30d4\u30fc\u30b3\u30de\u30f3\u30c9\u306b\u3042\u308a\u307e\u3059\u3002
tar
\u3092ssh
\u63a5\u7d9a\u3092\u901a\u3057\u3066\u30d1\u30a4\u30d7\u3059\u308b\u3053\u3068\u306f\u6700\u3082\u5358\u7d14\u306a\u65b9\u6cd5\u3067\u3001\u901a\u5e38\u306etar
\u30d5\u30e9\u30b0\u3092\u7528\u3044\u3066\u30d5\u30a1\u30a4\u30eb\u3084\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u30b3\u30d4\u30fc\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059:
Bashssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P 32222 [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d]-[\u74b0\u5883\u540d]@ssh.example.com service=solr tar -zcf - [\u30ea\u30e2\u30fc\u30c8\u30d1\u30b9] | tar -zxf - -C /tmp/\n
\u307e\u305f\u3001Lagoon\u306eSSH\u30b5\u30fc\u30d3\u30b9\u306b\u5fc5\u8981\u306a\u5f62\u3067ssh
\u306e\u5f15\u6570\u3092\u4e26\u3079\u66ff\u3048\u308b\u30e9\u30c3\u30d1\u30fc\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u7528\u3044\u3066rsync
\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059:
Bash#!/usr/bin/env sh\nsvc=$1 user=$3 host=$4\nshift 4\nexec ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 22 -l \"$user\" \"$host\" \"$svc\" \"$@\"\n
\u305d\u308c\u3092\u5b9f\u884c\u53ef\u80fd\u306a\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8rsh.sh
\u306b\u5165\u308c\u3066\u3001rsync
\u30b3\u30de\u30f3\u30c9\u3067service=...
\u3092\u6307\u5b9a\u3057\u307e\u3059:
rsync to non-CLI podrsync --rsh=\"/path/to/rsh.sh service=cli\" /tmp/foo [\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d]-[\u74b0\u5883\u540d]@sssh.example.com:/tmp/foo\n
\u3053\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001container=...
\u5f15\u6570\u3082\u51e6\u7406\u3059\u308b\u3088\u3046\u306b\u8abf\u6574\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/installing-lagoon/efs-provisioner/","title":"EFS\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc","text":"\u60c5\u5831
\u3053\u308c\u306fAWS\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u306e\u307f\u9069\u7528\u3055\u308c\u307e\u3059\u3002
-
Helm\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0\u3057\u307e\u3059:
Helm\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0helm repo add stable https://charts.helm.sh/stable\n
-
\u8a2d\u5b9a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306befs-provisioner-values.yml
\u3092\u4f5c\u6210\u3057\u3001\u5024\u3092\u66f4\u65b0\u3057\u307e\u3059:
efs-provisioner-values.ymlefsProvisioner:\nefsFileSystemId: <efsFileSystemId>\nawsRegion: <awsRegion>\npath: /\nprovisionerName: example.com/aws-efs\nstorageClass:\nname: bulk\nisDefault: false\nreclaimPolicy: Delete\nmountOptions: []\nglobal:\ndeployEnv: prod\n
-
EFS\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059:
EFS\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebhelm upgrade --install --create-namespace \\\n--namespace efs-provisioner --wait \\\n-f efs-provisioner-values.yaml \\\nefs-provisioner stable/efs-provisioner\n
"},{"location":"ja/lagoonizing/","title":"\u65e2\u5b58\u306e\u30b5\u30a4\u30c8\u3092Lagoonizing","text":"\u300cLagoonizing\u300d\u3068\u306f\u3001\u65e2\u5b58\u306e\u30b5\u30a4\u30c8\u3092Lagoon\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9069\u5fdc\u3055\u305b\u308b\u3053\u3068\u3067\u3001\u901a\u5e38\u306f\u96e3\u3057\u304f\u306a\u3044\u4f5c\u696d\u3067\u3059\uff08\u305f\u3060\u3057\u3001\u30b5\u30a4\u30c8\u3084\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306b\u3088\u308a\u7570\u306a\u308a\u307e\u3059\uff09\u3002\u300cLagoonizing\u300d\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u624b\u9806\u304c\u5fc5\u8981\u3068\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u7c21\u5358\u306b\u3059\u308b\u305f\u3081\u306e\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u306e\u30ac\u30a4\u30c9\u3092\u307e\u3068\u3081\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_1","title":"\u8981\u4ef6","text":"\u3042\u306a\u305f\u306e\u30b7\u30b9\u30c6\u30e0\u304c\u30ed\u30fc\u30ab\u30eb\u3067Lagoon\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u8981\u4ef6\u3092\u6e80\u305f\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#_2","title":"\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883","text":"\u30ed\u30fc\u30ab\u30eb\u3067\u306e\u958b\u767a\u74b0\u5883\u306e\u8a2d\u5b9a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002Pygmy\u307e\u305f\u306fLando\u306e\u3044\u305a\u308c\u304b\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#git","title":"\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3068Git","text":"Lagoon\u3068\u306e\u3084\u308a\u53d6\u308a\u306b\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304c\u5fc5\u8981\u3067\u3059\u3057\u3001Git\u3082\u4f7f\u7528\u3057\u307e\u3059\u306e\u3067\u3001\u3053\u308c\u3089\u304c\u6e96\u5099\u3067\u304d\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#_3","title":"\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3","text":"\u30bf\u30b9\u30af\u306e\u5b9f\u884c\u306b\u306f\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002OS\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30c4\u30fc\u30eb\u3092\u542b\u3081\u3001\u4f55\u3092\u4f7f\u7528\u3057\u3066\u3044\u305f\u3060\u3044\u3066\u3082\u69cb\u3044\u307e\u305b\u3093\u3002\u4ee5\u4e0b\u306b\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u793a\u3057\u307e\u3059:
- iTerm2 (Mac)
- PowerShell (Windows)
- Fish (Mac, Windows, Linux)
- Tabby (Mac, Windows, Linux)
"},{"location":"ja/lagoonizing/#git_1","title":"Git\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u307e\u3060Git\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001 \u4f55\u3089\u304b\u306e\u5f62\u3067Git\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5fc5\u8981\u3068\u306a\u308a\u307e\u3059\u3002\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3001GUI\u3001\u4f55\u3067\u3082\u69cb\u3044\u307e\u305b\u3093(\u79c1\u305f\u3061\u306e\u4f8b\u3067\u306f\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3092\u4f7f\u7528\u3057\u307e\u3059)\u3002\u4ee5\u4e0b\u306b\u3044\u304f\u3064\u304b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u793a\u3057\u307e\u3059:
- Git\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb (Mac\u3001Windows\u3001Linux)
- SourceTree (Mac\u3001Windows)
- GitHub Desktop (Mac\u3001Windows)
- GitKraken (Mac\u3001Windows\u3001Linux - \u516c\u958b\u30ea\u30dd\u30b8\u30c8\u30ea\u306f\u7121\u6599)
"},{"location":"ja/lagoonizing/#lagoon","title":"Lagoon\u7ba1\u7406\u8005\u304c\u5fc5\u8981\u3068\u3059\u308b\u3082\u306e","text":"Lagoon\u3092\u8a2d\u5b9a\u3059\u308bLagoon\u7ba1\u7406\u8005\u306f\u3001\u5404\u7a2e\u60c5\u5831\u304c\u5fc5\u8981\u3068\u306a\u308a\u307e\u3059\u3002\u8a73\u7d30\u306f\u3053\u3061\u3089\u3002
"},{"location":"ja/lagoonizing/#webhooks","title":"Webhooks\u306e\u8a2d\u5b9a","text":"\u6b21\u306b\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u305f\u3081\u306ewebhooks\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u624b\u9806\u306f\u3053\u3061\u3089\u304b\u3089\u3054\u78ba\u8a8d\u3044\u305f\u3060\u3051\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#docker-composeyml","title":"docker-compose.yml
","text":"docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u3001Lagoon\u306b\u304a\u3044\u3066\u4ee5\u4e0b\u306e\u76ee\u7684\u3067\u4f7f\u7528\u3055\u308c\u307e\u3059:
- \u3069\u306e\u30b5\u30fc\u30d3\u30b9/\u30b3\u30f3\u30c6\u30ca\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u304b\u3092\u5b66\u3076\u3002
- \u30b3\u30f3\u30c6\u30ca\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u3069\u306e\u3088\u3046\u306b\u30d3\u30eb\u30c9\u3055\u308c\u308b\u304b\u3092\u5b9a\u7fa9\u3059\u308b\u3002
- \u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u306a\u3069\u306e\u8ffd\u52a0\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3059\u308b\u3002
\u3055\u3089\u306b\u8a73\u3057\u3044\u60c5\u5831\u306fdocker-compose.yml
\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044.
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u3092Lagoon\u306b\u5bfe\u5fdc\u3055\u305b\u308b\u305f\u3081\u306b\u4f5c\u6210\u30fb\u8a2d\u5b9a\u3059\u308b2\u3064\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u3046\u3061\u306e1\u3064\u3067\u3059\u3002
Docker-compose
(\u30c4\u30fc\u30eb)\u306f\u3001YAML\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u3092\u53b3\u683c\u306b\u691c\u8a3c\u3059\u308b\u306e\u3067\u3001\u30b5\u30fc\u30d3\u30b9\u5b9a\u7fa9\u306e\u30e9\u30d9\u30eb\u5185\u3067\u306e\u307f\u8a2d\u5b9a\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u8b66\u544a
Lagoon\u306fdocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30e9\u30d9\u30eb\u3001\u30b5\u30fc\u30d3\u30b9\u540d\u3001\u30a4\u30e1\u30fc\u30b8\u540d\u3001\u30d3\u30eb\u30c9\u5b9a\u7fa9\u306e\u307f\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002\u30dd\u30fc\u30c8\u3001\u74b0\u5883\u5909\u6570\u3001\u30dc\u30ea\u30e5\u30fc\u30e0\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u30ea\u30f3\u30af\u3001\u30e6\u30fc\u30b6\u30fc\u306a\u3069\u306e\u5b9a\u7fa9\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u610f\u56f3\u7684\u306a\u3082\u306e\u3067\u3001docker-compose
\u30d5\u30a1\u30a4\u30eb\u306f\u3042\u306a\u305f\u306e\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002Lagoon\u306flagoon.type
\u304b\u3089\u3042\u306a\u305f\u304c\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u3044\u308b\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30d7\u3092\u5b66\u3073\u3001\u305d\u306e\u7d50\u679c\u3001\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u5fc5\u8981\u3068\u3059\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u30dd\u30fc\u30c8\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u305d\u306e\u4ed6\u306e\u8ffd\u52a0\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u77e5\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u57fa\u672c\u7684\u306a\u30b5\u30fc\u30d3\u30b9\u306e\u8a2d\u5b9a\u65b9\u6cd5\u3092\u3044\u304f\u3064\u304b\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u4f8b\u3067\u306f\u3001Drupal\u3001Laravel\u3001\u305d\u306e\u4ed6\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30de\u30cd\u30b8\u30e1\u30f3\u30c8\u30b7\u30b9\u30c6\u30e0\u306a\u3069\u3001\u591a\u304f\u306e\u30b7\u30b9\u30c6\u30e0\u306b\u5fc5\u8981\u306aNGINX\u3001PHP\u3001MariaDB\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
\u4ee5\u4e0b\u306f\u3001Drupal\u7528\u306edocker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306e\u4f8b\u3067\u3059:
docker-compose.ymlversion: '2.3'\nx-lagoon-project:\n# Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\uff08\u3053\u3053\u3092\u7de8\u96c6\u3059\u308b\u5834\u5408\u306f\u3001&lagoon-project\u3092\u4fdd\u6301\u3057\u3066\u304f\u3060\u3055\u3044\uff09\n&lagoon-project drupal-example\nx-volumes:\n&default-volumes\n# Docker\u30b3\u30f3\u30c6\u30ca\u306b\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u30de\u30a6\u30f3\u30c8\u3057\u305f\u3044\u3059\u3079\u3066\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u5b9a\u7fa9\u3057\u307e\u3059\nvolumes:\n- .:/app:delegated\nx-environment:\n&default-environment\nLAGOON_PROJECT: *lagoon-project\n# \u30ed\u30fc\u30ab\u30eb\u3067\u4f7f\u7528\u3059\u308b\u30eb\u30fc\u30c8\u3002pygmy\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30eb\u30fc\u30c8\u306f *\u5fc5\u305a* .docker.amazee.io\u3067\u7d42\u308f\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\nLAGOON_ROUTE: http://drupal-example.docker.amazee.io\n# \u30b7\u30b9\u30c6\u30e0\u3092\u672c\u756a\u74b0\u5883\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3055\u305b\u305f\u3044\u5834\u5408\u306f\u4ee5\u4e0b\u306e\u884c\u306e\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\n#LAGOON_ENVIRONMENT_TYPE: production\n# xdebug\u3092\u6709\u52b9\u306b\u3057\u3001`docker-compose up -d`\u3067\u518d\u8d77\u52d5\u3057\u305f\u3044\u5834\u5408\u306f\u4ee5\u4e0b\u306e\u884c\u306e\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\n#XDEBUG_ENABLE: \"true\"\nx-user:\n&default-user\n# \u30b3\u30f3\u30c6\u30ca\u304c\u5b9f\u884c\u3059\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30e6\u30fc\u30b6\u30fc\u3002Linux\u4e0a\u3067id `1000`\u4ee5\u5916\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u3057\u3066\u5b9f\u884c\u3059\u308b\u5834\u5408\u306b\u306f\u3053\u308c\u3092\u5909\u66f4\u3057\u307e\u3059\u3002\nuser: '1000'\nservices:\nnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.name: nginx\nlagoon.persistent: /app/web/sites/default/files/\nmariadb:\nimage: uselagoon/mariadb-10.11-drupal\nlabels:\nlagoon.type: mariadb\n
\u305d\u308c\u305e\u308c\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u4f55\u3092\u610f\u5473\u3059\u308b\u304b\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002
"},{"location":"ja/lagoonizing/#_4","title":"\u57fa\u672c\u8a2d\u5b9a","text":"x-lagoon-project
: \u3053\u308c\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30de\u30b7\u30f3\u540d\u3067\u3059\u3001\u3053\u3053\u3067\u5b9a\u7fa9\u3057\u307e\u3059\u3002\"drupal-example\"\u3068\u3044\u3046\u4f8b\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
x-volumes
: \u3053\u308c\u306fLagoon\u306b\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3059\u308b\u3082\u306e\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f/app
\u306b\u5b58\u5728\u3057\u307e\u3059\u304c\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3092\u8ffd\u52a0\u307e\u305f\u306f\u5909\u66f4\u3067\u304d\u307e\u3059\u3002
x-environment
:
- \u3053\u3053\u3067\u30ed\u30fc\u30ab\u30eb\u958b\u767aURL\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002Pygmy\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001
.docker.amazee.io.
\u3067\u7d42\u308f\u3089\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 - \u672c\u756a\u74b0\u5883\u3068\u5168\u304f\u540c\u3058\u74b0\u5883\u3092\u518d\u73fe\u3057\u305f\u3044\u5834\u5408\u306f\u3001
LAGOON_ENVIRONMENT_TYPE: production
\u306e\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - x-debug\u3092\u6709\u52b9\u306b\u3057\u305f\u3044\u5834\u5408\u306f\u3001
DEBUG_ENABLE: \"true\"
\u306e\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002
x-user
: \u3053\u308c\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u307b\u3068\u3093\u3069\u3042\u308a\u307e\u305b\u3093\u304c\u3001Linux\u3092\u4f7f\u7528\u3057\u3066\u3044\u30661000\u4ee5\u5916\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u3057\u3066\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306f\u5909\u66f4\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#services","title":"services
","text":"services
\u306f\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002docker-compose
\u306f\u305d\u308c\u3089\u3092\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3073\u307e\u3059\u304c\u3001\u5b9f\u969b\u306b\u306f\u30b3\u30f3\u30c6\u30ca\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002\u4eca\u5f8c\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u3067\u3053\u308c\u3089\u3092\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3073\u307e\u3059\u3002
\u30b5\u30fc\u30d3\u30b9\u306e \u540d\u524d (\u4e0a\u8a18\u306e\u4f8b\u3067\u306f nginx
\u3001php
\u3001mariadb
) \u306f\u3001\u751f\u6210\u3055\u308c\u308b Kubernetes \u30dd\u30c3\u30c9 (\u3053\u308c\u3082\u5225\u306e\u7528\u8a9e\u3067\u3059\u304c\u3001\u3053\u3053\u3067\u306f\u30b5\u30fc\u30d3\u30b9\u3068\u547c\u3073\u307e\u3059) \u306e\u540d\u524d\u3068\u3057\u3066 Lagoon \u306b\u3088\u3063\u3066\u4f7f\u7528\u3055\u308c\u3001\u3055\u3089\u306b\u5b9a\u7fa9\u3055\u308c\u305f lagoon.type
\u306b\u57fa\u3065\u3044\u3066\u4f5c\u6210\u3055\u308c\u308b\u8ffd\u52a0\u306e Kubernetes \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u3068\u3057\u3066\u3082\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u3001\u30eb\u30fc\u30c8\u3001\u6c38\u7d9a\u30b9\u30c8\u30ec\u30fc\u30b8\u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#docker-images","title":"Docker \u30a4\u30e1\u30fc\u30b8","text":"\u30c7\u30d7\u30ed\u30a4\u6bce\u306b\u30b5\u30fc\u30d3\u30b9\u7528\u306eDockerfile\u3092Lagoon\u304c\u30d3\u30eb\u30c9\u3059\u308b\u3088\u3046\u8a2d\u5b9a\u3057\u305f\u3044\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3067\u304d\u307e\u3059:
build
- context
: Docker \u306e build
\u30b3\u30de\u30f3\u30c9\u306b\u6e21\u3059\u3079\u304d\u30d3\u30eb\u30c9\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u30d1\u30b9\u3002 - dockerfile
: \u30d3\u30eb\u30c9\u3059\u308b Dockerfile \u306e\u5834\u6240\u3068\u540d\u524d\u3002
\u6ce8\u610f
Lagoon \u306f build: <Dockerfile>
\u306e\u77ed\u7e2e\u5f62\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u3089\u305a\u3001\u3053\u306e\u5f62\u5f0f\u306e\u5b9a\u7fa9\u304c\u898b\u3064\u304b\u308b\u3068\u30d3\u30eb\u30c9\u306b\u5931\u6557\u3057\u307e\u3059\u3002
image
- Dockerfile \u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u306a\u304f\u3001\u65e2\u5b58\u306e Dockerfile \u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001image
\u3067\u5b9a\u7fa9\u3057\u307e\u3059\u3002
\u3053\u306e\u4f8b\u3067\u306f\u3001\u73fe\u5728\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002NGINX \u306f nginx.dockerfile
\u3092\u30d3\u30eb\u30c9\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3001PHP \u306f php.dockerfile
\u3092\u30d3\u30eb\u30c9\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002MariaDB \u306f uselagoon/mariadb-10.11-drupal
\u306e\u65e2\u5b58\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002Docker \u30a4\u30e1\u30fc\u30b8\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089 \u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#types","title":"\u30bf\u30a4\u30d7","text":"Lagoon\u306f\u3001\u6b63\u3057\u3044Kubernetes\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30d7\u3092\u77e5\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u3053\u308c\u306f lagoon.type
\u30e9\u30d9\u30eb\u3092\u4ecb\u3057\u3066\u884c\u308f\u308c\u307e\u3059\u3002\u9078\u629e\u3067\u304d\u308b\u30bf\u30a4\u30d7\u306f\u591a\u5c90\u306b\u308f\u305f\u308a\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u30bf\u30a4\u30d7\u3068\u8ffd\u52a0\u7684\u306a\u8a2d\u5b9a\u53ef\u80fd\u6027\u3092\u898b\u308b\u305f\u3081\u306b\u3001\u516c\u958b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 Service Types \u3092\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002
\u4f8b\u3067\u306f\u3001PHP\u3068NGINX\u306e\u30b5\u30fc\u30d3\u30b9\u306f nginx-php-persistent
\u3068\u3057\u3066\u30bf\u30a4\u30d7\u306e\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30dd\u30c3\u30c9\u3068\u547c\u3070\u308c\u308b\u3082\u306e\u3067\u3059\u3002
"},{"location":"ja/lagoonizing/#_5","title":"\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30dd\u30c3\u30c9","text":"Kubernetes\u306f\u5358\u72ec\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001\u4e00\u3064\u307e\u305f\u306f\u8907\u6570\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u542b\u3080\u30dd\u30c3\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002\u901a\u5e38\u3001Lagoon\u306f\u5b9a\u7fa9\u3055\u308c\u305f docker-compose
\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3057\u3066\u3001\u4e00\u3064\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u542b\u3080\u5358\u4e00\u306e\u30dd\u30c3\u30c9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u4e00\u90e8\u306e\u30b1\u30fc\u30b9\u3067\u306f\u3001\u4e92\u3044\u306b\u4f9d\u5b58\u5ea6\u304c\u9ad8\u3044\u305f\u3081\u3001\u4e8c\u3064\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u5358\u4e00\u306e\u30dd\u30c3\u30c9\u5185\u306b\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002Drupal\u306e\u3088\u3046\u306a\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306ePHP\u30b3\u30fc\u30c9\u3092\u542b\u3080PHP\u3068NGINX\u30b3\u30f3\u30c6\u30ca\u304c\u305d\u306e\u4f8b\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u30b1\u30fc\u30b9\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066Lagoon\u306b\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u4e00\u7dd2\u306b\u914d\u7f6e\u3055\u308c\u308b\u3079\u304d\u304b\u3092\u6307\u793a\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059:
- \u4e8c\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u5fc5\u8981\u306a
lagoon.type
\u3092\u6307\u5b9a\u3057\u3066\u3001\u305d\u308c\u305e\u308c\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\uff08\u3053\u306e\u4f8b\u3067\u306f\u3001NGINX\u3068PHP\u306e\u30b5\u30fc\u30d3\u30b9\u306bnginx-php-persistent
\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\uff09\u3002 - \u4e8c\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u306e
lagoon.name
\u30e9\u30d9\u30eb\u3092\u4e00\u756a\u76ee\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u4e00\u81f4\u3055\u305b\u3066\u30ea\u30f3\u30af\u3057\u307e\u3059\uff08\u4f8b\u3067\u306flagoon.name: nginx
\u306b\u3088\u308a\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\uff09\u3002
\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u306f nginx
\u3068 php
\u306e\u30b5\u30fc\u30d3\u30b9\u304c nginx
\u3068\u547c\u3070\u308c\u308b\u30dd\u30c3\u30c9\u306b\u7d50\u5408\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3057\u307e\u3059\u3002
Lagoon\u306f2\u3064\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u3046\u3061\u3069\u3061\u3089\u304c\u500b\u3005\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3067\u3042\u308b\u304b(\u3053\u306e\u5834\u5408\u306f nginx
\u3068 php
)\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u4e00\u81f4\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u306e\u30b5\u30fc\u30d3\u30b9\u540d\u3092\u691c\u7d22\u3059\u308b\u3053\u3068\u3067\u884c\u3044\u307e\u3059\u3002 nginx-php-persistent
\u306f\u3001 docker-compose.yml
\u306e\u4e2d\u3067 nginx
\u3068\u3044\u3046\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u3068 php
\u3068\u3044\u3046\u540d\u524d\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u3059\u3002
\u30b5\u30fc\u30d3\u30b9\u540d\u3092\u5909\u66f4\u3057\u305f\u3044\u5834\u5408\u3084\u3001nginx-php-persistent
\u30bf\u30a4\u30d7\u306e\u8907\u6570\u306e\u30dd\u30c3\u30c9\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001lagoon.deployment.servicetype
\u3068\u3044\u3046\u8ffd\u52a0\u306e\u30e9\u30d9\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u5b9f\u969b\u306e\u30b5\u30fc\u30d3\u30b9\u30bf\u30a4\u30d7\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002
\u4ee5\u4e0b\u306b\u3001\u30de\u30eb\u30c1\u30b3\u30f3\u30c6\u30ca\u30dd\u30c3\u30c9\u3092\u3088\u308a\u8a73\u7d30\u306b\u8a2d\u5b9a\u3059\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059:
docker-compose.ymlnginx:\nbuild:\ncontext: .\ndockerfile: nginx.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # \u3053\u308c\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3001Lagoon\u306f\u30b3\u30f3\u30c6\u30ca\u306e\u540d\u524d\u3001\u3053\u306e\u5834\u5408\u306fnginx\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\nlagoon.deployment.servicetype: nginx\nphp:\nbuild:\ncontext: .\ndockerfile: php.dockerfile\nlabels:\nlagoon.type: nginx-php-persistent\nlagoon.persistent: /app/web/sites/default/files/\nlagoon.name: nginx # \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092Lagoon\u306enginx\u30dd\u30c3\u30c9\u306e\u4e00\u90e8\u306b\u3057\u305f\u3044\u3067\u3059\u3002\nlagoon.deployment.servicetype: php\n
docker-compose.yml\u3067\u3067\u304d\u308b\u3053\u3068\u306f\u3082\u3063\u3068\u3042\u308a\u307e\u3059\u304c\u3001\u30b5\u30fc\u30d3\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u6700\u3082\u91cd\u8981\u306a\u90e8\u5206\u3067\u3059\u3002docker-compose.yml
\u306b\u95a2\u3059\u308b\u6211\u3005\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u4ed6\u306b\u4f55\u304c\u3067\u304d\u308b\u304b\u3092\u5b66\u3093\u3067\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#lagoonyml","title":".lagoon.yml
","text":".lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u306e\u4e2d\u5fc3\u3068\u306a\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3001\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u542b\u3093\u3067\u3044\u307e\u3059:
- \u30b5\u30a4\u30c8\u3078\u306e\u30a2\u30af\u30bb\u30b9\u30eb\u30fc\u30c8\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
- \u30d7\u30ec\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002
- \u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b\u3002
- SSL\u8a3c\u660e\u66f8\u3092\u8a2d\u5b9a\u3059\u308b\u3002
- \u74b0\u5883\u306e\u305f\u3081\u306ecron\u30b8\u30e7\u30d6\u3092\u8ffd\u52a0\u3059\u308b\u3002
.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30eb\u30fc\u30c8\u306b\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u4ee5\u4e0b\u306f\u3001Drupal\u30b5\u30a4\u30c8\u7528\u306e\u69d8\u3005\u306a\u8a2d\u5b9a\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u793a\u3059.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u306e\u4f8b\u3067\u3059:
.lagoon.ymldocker-compose-yaml: docker-compose.yml\nenvironment_variables:\ngit_sha: 'true'\ntasks:\npre-rollout:\n- run:\nname: drush sql-dump\ncommand: mkdir -p /app/web/sites/default/files/private/ && drush sql-dump --ordered-dump --gzip --result-file=/app/web/sites/default/files/private/pre-deploy-dump.sql.gz\nservice: cli\npost-rollout:\n- run:\nname: drush cim\ncommand: drush -y cim\nservice: cli\nshell: bash\n- run:\nname: drush cr\ncommand: drush -y cr\nservice: cli\nroutes:\ninsecure: Redirect\nenvironments:\nmain:\nmonitoring_urls:\n- \"www.example.com\"\n- \"www.example.com/special_page\"\nroutes:\n- nginx:\n- example.com\n- example.net\n- \"www.example.com\":\ntls-acme: 'true'\ninsecure: Redirect\nhsts: max-age=31536000\n- \"example.ch\":\nAnnotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # 1\u6642\u9593\u306b1\u56decron\u3092\u5b9f\u884c\u3057\u307e\u3059\ncommand: drush cron\nservice: cli\nstaging:\ncronjobs:\n- name: drush cron\nschedule: \"H * * * *\" # 1\u6642\u9593\u306b1\u56decron\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\ncommand: drush cron\nservice: cli\n
"},{"location":"ja/lagoonizing/#_6","title":"\u4e00\u822c\u8a2d\u5b9a","text":""},{"location":"ja/lagoonizing/#docker-compose-yaml","title":"docker-compose-yaml
","text":"\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30d3\u30eb\u30c9\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u3069\u306edocker-compose
YAML\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3079\u304d\u304b\u3092\u6307\u793a\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3068\u30b3\u30f3\u30c6\u30ca\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u304b\u3092\u5224\u65ad\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306fdocker-compose.yml
\u3067\u3059\u304c\u3001\u7279\u5b9a\u306eLagoon docker-compose
YAML\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u306a\u5834\u5408\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#environment_variablesgit_sha","title":"environment_variables.git_sha
","text":"\u3053\u306e\u8a2d\u5b9a\u306b\u3088\u308a\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f Git SHA \u3092\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u633f\u5165\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u5024\u3092 true
\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001SHA \u304c\u74b0\u5883\u5909\u6570 LAGOON_GIT_SHA
\u3068\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#tasks","title":"\u30bf\u30b9\u30af","text":"\u30d3\u30eb\u30c9\u30d5\u30ed\u30fc\u306e\u4e2d\u3067\u5b9f\u884c\u3055\u308c\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u306b\u3088\u3063\u3066\u3001\u7570\u306a\u308b\u30bf\u30a4\u30d7\u306e\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\uff1a
"},{"location":"ja/lagoonizing/#pre-rollout-tasks-pre_rolloutirun","title":"\u30d7\u30ec\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af - pre_rollout.[i].run
","text":"pre_rollout
\u30bf\u30b9\u30af\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u30bf\u30b9\u30af\u306f\u3001\u65b0\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u304c\u6b63\u5e38\u306b\u30d3\u30eb\u30c9\u3055\u308c\u305f \u5f8c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u4f55\u3089\u304b\u306e\u5f62\u3067\u5909\u66f4\u3055\u308c\u308b \u524d \u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306b\u3088\u308a\u3001\u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e\u4f8b\u306e\u3088\u3046\u306b\u3001\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u306e\u5b9f\u884c\u524d\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30c0\u30f3\u30d7\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u3067\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#post-rollout-tasks-post_rolloutirun","title":"\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af - post_rollout.[i].run
","text":"\u3053\u3053\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u6761\u4ef6\u304c\u6e80\u305f\u3055\u308c\u305f\u5f8c\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u306e\u3042\u308b\u30bf\u30b9\u30af\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\uff1a
- \u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u6b63\u5e38\u306b\u30d3\u30eb\u30c9\u3055\u308c\u305f
- \u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u65b0\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u3067\u66f4\u65b0\u3055\u308c\u305f
- \u5b9f\u884c\u4e2d\u306e\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u6e96\u5099\u72b6\u614b\u30c1\u30a7\u30c3\u30af\u306b\u5408\u683c\u3057\u305f
post_rollout
\u30bf\u30b9\u30af\u306e\u4e00\u822c\u7684\u306a\u7528\u9014\u306b\u306f\u3001drush updb
\u3001drush cim
\u306e\u5b9f\u884c\u3001\u307e\u305f\u306f\u3055\u307e\u3056\u307e\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30a2\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001drush cim
\u3068 drush cr
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
name
- name \u306f\u3001\u30ed\u30b0\u3067\u5404\u30bf\u30b9\u30af\u3092\u8b58\u5225\u3057\u3084\u3059\u304f\u3059\u308b\u305f\u3081\u306e\u4efb\u610f\u306e\u30e9\u30d9\u30eb\u3067\u3059\u3002
command
- \u3053\u3053\u3067\u306f\u3001\u5b9f\u884c\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3001\u5404\u30b3\u30f3\u30c6\u30ca\u306e
WORKDIR
\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002Lagoon \u30a4\u30e1\u30fc\u30b8\u306e\u5834\u5408\u3001\u3053\u308c\u306f /app
\u3067\u3059\u3002\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u7279\u5b9a\u306e\u5834\u6240\u306b cd
\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u306e\u70b9\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
service
- \u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u3002\u79c1\u305f\u3061\u306edrupal-example\u306b\u5f93\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u308c\u306fCLI\u30b3\u30f3\u30c6\u30ca\u306b\u306a\u308a\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001\u305d\u308c\u306f\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u306e\u30b3\u30fc\u30c9\u3001\u30d5\u30a1\u30a4\u30eb\u3001\u305d\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u3092\u5168\u3066\u6301\u3063\u3066\u3044\u308b\u304b\u3089\u3067\u3059\u3002\u901a\u5e38\u3001\u3053\u308c\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
shell
\u30bf\u30b9\u30af\u306e\u5b9f\u884c\u306b\u4f7f\u7528\u3059\u308b\u30b7\u30a7\u30eb\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f sh
\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u304c\u3001\u30b3\u30f3\u30c6\u30ca\u306b\u4ed6\u306e\u30b7\u30a7\u30eb(bash\u306a\u3069)\u304c\u3042\u308b\u5834\u5408\u3001\u3053\u3053\u3067\u305d\u308c\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30dd\u30b9\u30c8\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u5185\u3067\u3044\u304f\u3064\u304b\u306e\u5c0f\u3055\u306aif/else bash\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306b\u4fbf\u5229\u3067\u3059\u3002(\u4e0a\u8a18\u306e\u4f8b\u3067\u8907\u6570\u884c\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u66f8\u304f\u65b9\u6cd5\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044)\u3002
"},{"location":"ja/lagoonizing/#routes","title":"\u30eb\u30fc\u30c8","text":""},{"location":"ja/lagoonizing/#routesautogenerateenabled","title":"routes.autogenerate.enabled
","text":"\u3053\u308c\u306b\u3088\u308a\u3001\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u3092\u5b8c\u5168\u306b\u7121\u52b9\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u74b0\u5883\u3054\u3068\u306e\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u3092\u7121\u52b9\u306b\u3059\u308b\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u8a73\u7d30\u306f\u4e0b\u8a18\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#routesautogenerateinsecure","title":"routes.autogenerate.insecure
","text":"\u3053\u308c\u306b\u3088\u308a\u3001\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u30eb\u30fc\u30c8\u306e\u52d5\u4f5c\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u74b0\u5883\u3054\u3068\u306e\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff08\u8a73\u7d30\u306f\u5f8c\u8ff0\uff09\u3002\u3053\u308c\u306f\u4e0a\u8a18\u306e\u4f8b\u3067\u4f7f\u7528\u3057\u3066\u3044\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3001insecure: Redirect
\u3068\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
\u4ee5\u4e0b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u3059:
Allow
- HTTP\u3068HTTPS\u306e\u4e21\u65b9\u306e\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059(\u3053\u308c\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3059)\u3002
Redirect
- \u3059\u3079\u3066\u306eHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092HTTPS\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002
None
- HTTP\u306e\u30eb\u30fc\u30c8\u306f\u4f5c\u6210\u3055\u308c\u305a\u3001\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3082\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/lagoonizing/#_7","title":"\u74b0\u5883","text":"\u74b0\u5883\u540d\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u307e\u305f\u306f\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u4e00\u81f4\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5404\u74b0\u5883\u306f\u7570\u306a\u308b\u8a2d\u5b9a\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u4f8b\u3067\u306f\u3001main\u3068staging\u306e\u74b0\u5883\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_8","title":"\u7279\u5b9a\u306e\u30d1\u30b9\u306e\u76e3\u8996","text":"UptimeRobot\u304c\u30af\u30e9\u30b9\u30bf\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001Lagoon\u306f\u5404\u30eb\u30fc\u30c8/\u30a4\u30f3\u30b0\u30ec\u30b9\u306bstakater/IngressControllerMonitor
\u3067\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u6ce8\u5165\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u52d5\u4f5c\u306f\u30eb\u30fc\u30c8\u306e\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u3092\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u7279\u5b9a\u306e\u30eb\u30fc\u30c8\u3092\u76e3\u8996\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001\u30eb\u30fc\u30c8\u306e\u4ed5\u69d8\u306bmonitoring-path
\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3053\u308c\u3092\u4e0a\u66f8\u304d\u3067\u304d\u307e\u3059\u3002\u4e00\u822c\u7684\u306a\u4f7f\u7528\u6cd5\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30d0\u30a4\u30d1\u30b9\u3059\u308b\u76e3\u8996\u7528\u306e\u30d1\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u30b5\u30a4\u30c8\u306e\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u76e3\u8996\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002
.lagoon.yml\u306e\u4f8b - \"www.example.com\":\nmonitoring-path: \"/bypass-cache\"\n
"},{"location":"ja/lagoonizing/#environmentsnameroutes","title":"environments.[name].routes
","text":"\u30eb\u30fc\u30c8\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u74b0\u5883\u304c\u5fdc\u7b54\u3059\u308b\u30c9\u30e1\u30a4\u30f3\u540d\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u901a\u5e38\u3001\u672c\u756a\u74b0\u5883\u7528\u306e\u30eb\u30fc\u30c8\u306e\u307f\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u74b0\u5883\u306f\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u304c\u3001\u672c\u756a\u4ee5\u5916\u306e\u74b0\u5883\u304c\u72ec\u81ea\u306e\u30c9\u30e1\u30a4\u30f3\u540d\u3092\u5fc5\u8981\u3068\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u6307\u5b9a\u3057\u3001DNS\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3067\u305d\u306e\u30c9\u30e1\u30a4\u30f3\u3092\u751f\u6210\u3055\u308c\u305f\u30eb\u30fc\u30c8\u540d\u3078\u306eCNAME\u3068\u3057\u3066\u8ffd\u52a0\u3067\u304d\u307e\u3059\uff08\u3053\u308c\u3089\u306e\u30eb\u30fc\u30c8\u306f\u30c7\u30d7\u30ed\u30a4\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u516c\u958b\u3055\u308c\u307e\u3059\uff09\u3002
\u74b0\u5883\u8a2d\u5b9a\u306e\u5f8c\u306b\u8a18\u8ff0\u3055\u308c\u308b\u6700\u521d\u306e\u8981\u7d20\u306f\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u30b5\u30fc\u30d3\u30b9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u4f8b\u3067\u306fNGINX\u304c\u30bf\u30fc\u30b2\u30c3\u30c8\u30b5\u30fc\u30d3\u30b9\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u53d7\u4fe1\u3057\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u8ee2\u9001\u3059\u308b\u304b\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002
\u6700\u3082\u30b7\u30f3\u30d7\u30eb\u306a\u30eb\u30fc\u30c8\u306f\u3001\u4e0a\u8a18\u306e\u30b5\u30f3\u30d7\u30eb.lagoon.yml
\u306b\u3042\u308bexample.com
\u306e\u4f8b\u3067\u3059\u3002\u8ffd\u52a0\u306e\u8a2d\u5b9a\u304c\u306a\u3044\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30eb\u30fc\u30c8\u306bLet's Encrypt\u8a3c\u660e\u66f8\u304c\u5fc5\u8981\u3067\u3001HTTPS\u304b\u3089HTTP\u3078\u306e\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u304c\u4e0d\u8981\u3067\u3042\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_9","title":"\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3","text":"\u60c5\u5831
\u30eb\u30fc\u30c8/\u30a4\u30f3\u30b0\u30ec\u30b9\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3001nginx-ingress
\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u30af\u30e9\u30b9\u30bf\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u6a5f\u80fd\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306f\u3001Lagoon\u7ba1\u7406\u8005\u306b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3001nginx-ingress\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308bYAML\u30de\u30c3\u30d7\u5f62\u5f0f\u3067\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u7c21\u5358\u306a\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306b\u4fbf\u5229\u3067\u3059:
\u4f8b\u3048\u3070\u3001example.ch
\u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092https://www.example.ch
\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u3001\u30d5\u30a9\u30eb\u30c0\u3084\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u7dad\u6301\u3057\u305f\u3044\u5834\u5408\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059:
(example.com/folder?query -> https://www.example.ch/folder?query)
.lagoon.yml \u306e\u4f8b - \"example.ch\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.example.ch$request_uri\n- www.example.ch\n
\u3082\u3061\u308d\u3093\u3001Lagoon\u3067\u30db\u30b9\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u4ed6\u306eURL\u3078\u306e\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3082\u53ef\u80fd\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001example.de
\u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092https://www.google.com
\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u5834\u5408:
.lagoon.yml \u306e\u4f8b - \"example.de\":\nannotations:\nnginx.ingress.kubernetes.io/permanent-redirect: https://www.google.com\n
"},{"location":"ja/lagoonizing/#ssl-tls-acme","title":"SSL\u8a2d\u5b9a - tls-acme
","text":"tls-acme : \u2018true\u2019
- Lagoon\u306b\u305d\u306e\u30eb\u30fc\u30c8\u306b\u5bfe\u3057\u3066Let's Encrypt\u8a3c\u660e\u66f8\u3092\u767a\u884c\u3059\u308b\u3088\u3046\u6307\u793a\u3057\u307e\u3059\u3002\u3053\u308c\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3059\u3002
- Let's Encrypt\u304c\u4e0d\u8981\u306a\u5834\u5408\u3001\u3053\u308c\u3092
tls-acme: \u2018false\u2019
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002
insecure
Allow
\uff1aHTTP\u3068HTTPS\u4e21\u65b9\u306e\u30eb\u30fc\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09\u3002 Redirect
\uff1aHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092HTTPS\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002 None
\uff1aHTTP\u30eb\u30fc\u30c8\u306f\u4f5c\u6210\u3055\u308c\u305a\u3001\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3082\u884c\u308f\u308c\u307e\u305b\u3093\u3002
None
- HTTP\u306e\u30eb\u30fc\u30c8\u306f\u4f5c\u6210\u3055\u308c\u305a\u3001\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3082\u884c\u308f\u308c\u307e\u305b\u3093\u3002
Hsts
max-age=31536000;includeSubDomains;preload
\u306e\u3088\u3046\u306a\u5024\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002 - \u30b9\u30da\u30fc\u30b9\u3084\u4ed6\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
max-age
\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u307f\u304c\u5fc5\u9808\u3067\u3059\u3002\u3053\u308c\u306fHSTS\u30dd\u30ea\u30b7\u30fc\u306e\u6709\u52b9\u671f\u9593\u3092\u79d2\u5358\u4f4d\u3067\u6307\u5b9a\u3057\u307e\u3059\u3002
Info
\u8a3c\u660e\u66f8\u8a8d\u8a3c\u5c40(CA)\u306b\u3088\u3063\u3066\u7f72\u540d\u3055\u308c\u305f SSL \u8a3c\u660e\u66f8\u304b\u3089 Let's Encrypt \u8a3c\u660e\u66f8\u306b\u5207\u308a\u66ff\u3048\u308b\u4e88\u5b9a\u304c\u3042\u308b\u5834\u5408\u306f\u3001Lagoon \u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u79fb\u884c\u3092\u76e3\u7763\u3057\u3066\u3082\u3089\u3046\u306e\u304c\u6700\u5584\u3067\u3059\u3002
"},{"location":"ja/lagoonizing/#environmentsnametypes","title":"environments.[name].types
","text":"Lagoon \u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306e lagoon.type
\u30e9\u30d9\u30eb\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u3069\u306e\u30bf\u30a4\u30d7\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u304b\u3092\u5224\u65ad\u3057\u307e\u3059(docker-compose.yml \u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u7d30\u3092\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u7279\u5b9a\u306e\u74b0\u5883\u3067\u306e\u307f\u30bf\u30a4\u30d7\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#service-name-service-type","title":"`service-name: service-type","text":" service-name
\u306fdocker-compose.yml
\u304b\u3089\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3067\u3059\u3002 service-type
\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u4f7f\u7528\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u30bf\u30a4\u30d7\u3067\u3059\u3002
\u4f8b\u3048\u3070\u3001main
\u3068\u3044\u3046\u540d\u524d\u306e\u672c\u756a\u74b0\u5883\u7528\u306bMariaDB-Galera\u306e\u9ad8\u53ef\u7528\u6027\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f7f\u7528\u3057\u305f\u3044\u5834\u5408:
.lagoon.yml \u4f8benvironments:\nmain:\ntypes:\nmariadb: mariadb-galera\n
"},{"location":"ja/lagoonizing/#environmentsnametemplates","title":"environments.[name].templates
","text":"Lagoon\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306elagoon.template
\u30e9\u30d9\u30eb\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u30b5\u30fc\u30d3\u30b9\u306b\u30ab\u30b9\u30bf\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059(docker-compose.yml\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u7279\u5b9a\u306e\u74b0\u5883\u3067\u306e\u307f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u5834\u5408:
"},{"location":"ja/lagoonizing/#service-name-template-file","title":"service-name: template-file
","text":" service-name
\u306f\u3001docker-compose.yml
\u304b\u3089\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u540d\u524d\u3067\u3059\u3002 template-file
\u306f\u3001\u3053\u306e\u74b0\u5883\u3067\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u4f7f\u7528\u3059\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30d1\u30b9\u3068\u540d\u524d\u3067\u3059\u3002
.lagoon.yml \u4f8benvironments:\nmain:\ntemplates:\nmariadb: mariadb.main.deployment.yml\n
"},{"location":"ja/lagoonizing/#environmentsnamerollouts","title":"environments.[name].rollouts
","text":"Lagoon\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306elagoon.rollout
\u30e9\u30d9\u30eb\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u30b5\u30fc\u30d3\u30b9\u306b\u30ab\u30b9\u30bf\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059(docker-compose.yml\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u8a73\u3057\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
\u3059\u3079\u3066\u306e\u74b0\u5883\u306b\u5bfe\u3057\u3066\u3067\u306f\u306a\u304f\u3001\u3072\u3068\u3064\u306e\u74b0\u5883\u306b\u5bfe\u3057\u3066\u3060\u3051\u30bf\u30a4\u30d7\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u305f\u3044\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#service-name-rollout-type","title":"service-name: rollout-type
","text":" service-name
\u306f\u4e0a\u66f8\u304d\u3057\u305f\u3044docker-compose.yml
\u306e\u30b5\u30fc\u30d3\u30b9\u540d\u3067\u3059\u3002 rollout-type
\u306f\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u306e\u30bf\u30a4\u30d7\u3067\u3059\u3002\u53ef\u80fd\u306a\u5024\u306b\u3064\u3044\u3066\u306fdocker-compose.yml\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
.lagoon.yml \u4f8benvironments:\nmain:\nrollouts:\nmariadb: statefulset\n
"},{"location":"ja/lagoonizing/#cron-environmentsnamecronjobs","title":"Cron\u30b8\u30e7\u30d6 - environments.[name].cronjobs
","text":"\u901a\u5e38\u3001\u5168\u3066\u306e\u74b0\u5883\u3067\u540c\u3058Cron\u30b8\u30e7\u30d6\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u671b\u307e\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002\u305d\u306e\u305f\u3081\u3001\u5404\u74b0\u5883\u3067\u5b9f\u884c\u3057\u305f\u3044\u30b8\u30e7\u30d6\u3092\u660e\u793a\u7684\u306b\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3068\u3057\u3066\u30011\u6642\u9593\u306b1\u56de\u5b9f\u884c\u3059\u308bdrush cron\u30b8\u30e7\u30d6\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
name
- Cron\u30b8\u30e7\u30d6\u306e\u76ee\u7684\u3092\u8b58\u5225\u3059\u308b\u305f\u3081\u306e\u308f\u304b\u308a\u3084\u3059\u3044\u540d\u524d\u3002
schedule
- Cron\u30b8\u30e7\u30d6\u306e\u5b9f\u884c\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002\u6a19\u6e96\u7684\u306acron\u8a18\u6cd5\u306b\u5f93\u3044\u307e\u3059\u3002\u69cb\u6587\u304c\u4e0d\u660e\u306a\u5834\u5408\u306f\u3001Crontab Generator\u304c\u5f79\u7acb\u3061\u307e\u3059\u3002
- \u5206
M
\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u6bce\u6642\u9593\u30e9\u30f3\u30c0\u30e0\u306a\u5206\uff08\u6bce\u6642\u540c\u3058\u5206\uff09\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002M/15
\u3068\u3059\u308b\u306815\u5206\u3054\u3068\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u304c\u3001\u6642\u9593\u304b\u3089\u306e\u30aa\u30d5\u30bb\u30c3\u30c8\u306f\u30e9\u30f3\u30c0\u30e0\u3067\u3059\uff08\u4f8b\uff1a6, 21, 36, 51\uff09\u3002 - \u6642
H
\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001\u6bce\u65e5\u30e9\u30f3\u30c0\u30e0\u306a\u6642\u9593\uff08\u6bce\u65e5\u540c\u3058\u6642\u9593\uff09\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002H(2-4)
\u3068\u3059\u308b\u3068\u30012\u6642\u304b\u30894\u6642\u306e\u9593\u306b1\u56de\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002
command
- \u5b9f\u884c\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3002\u30bf\u30b9\u30af\u3068\u540c\u69d8\u306b\u3001\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u30b5\u30fc\u30d3\u30b9\u306e
WORKDIR
\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002Lagoon\u306e\u30a4\u30e1\u30fc\u30b8\u3067\u306f\u3001\u3053\u308c\u306f /app
\u3067\u3059\u3002
service
- \u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b5\u30fc\u30d3\u30b9\u3002\u307b\u3068\u3093\u3069\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3053\u308c\u306fCLI\u30b5\u30fc\u30d3\u30b9\u3067\u3059\u3002
.lagoon.yml
\u3067\u3067\u304d\u308b\u3053\u3068\u306f\u307e\u3060\u305f\u304f\u3055\u3093\u3042\u308a\u307e\u3059\u3002\u8a73\u7d30\u306f .lagoon.yml
\u306b\u3064\u3044\u3066\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 \u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#drupal","title":"Drupal\u7279\u6709\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7","text":"Drupal\u30b5\u30a4\u30c8\u3092Lagoon\u306b\u79fb\u884c\u3059\u308b\u5834\u5408\u3001\u5168\u3066\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u3044\u304f\u3064\u304bDrupal\u7279\u6709\u306e\u30bf\u30b9\u30af\u3092\u5b8c\u4e86\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_10","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb","text":"\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u66f4\u65b0\u3067\u3059\u3002Lagoon\u306f\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u74b0\u5883\u56fa\u6709\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u6a5f\u5bc6\u60c5\u5831\u304c\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3055\u308c\u308b\u3053\u3068\u306f\u306a\u304f\u3001\u3059\u3079\u3066\u5b89\u5168\u306b\u30b3\u30df\u30c3\u30c8\u3067\u304d\u307e\u3059\u3002\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u69d8\u3005\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f8b\u304c\u3042\u308a\u307e\u3059\u3002\u65b0\u898f\u306b\u59cb\u3081\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u3089\u306e\u4f7f\u7528\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u306f\u3001\u985e\u4f3c\u306e\u3082\u306e\u3092\u9078\u3093\u3067\u95a2\u9023\u3059\u308b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u74b0\u5883\u5909\u6570\u306e\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001\u74b0\u5883\u5909\u6570\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
\u30ea\u30dd\u30b8\u30c8\u30ea\u304b\u3089\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3057\u3001\u30b5\u30a4\u30c8\u3067\u4f7f\u7528\u3057\u3066\u3044\u306a\u3044\u30b5\u30fc\u30d3\u30b9\u306e\u8a2d\u5b9a\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\uff08\u4f8b\uff1a\u3059\u3079\u3066\u306e\u30b5\u30a4\u30c8\u304cSolr\u3084Redis\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff09\u3002\u7279\u5b9a\u306e\u74b0\u5883\u30bf\u30a4\u30d7\uff08\u958b\u767a\u74b0\u5883\u3067\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u7121\u52b9\u5316\u306a\u3069\uff09\u306e\u8a2d\u5b9a\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001\u8ffd\u52a0\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\uff08\u4f8b\u793a\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u3059\u3067\u306b\u3044\u304f\u3064\u304b\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\uff09\u3002\u30d5\u30a1\u30a4\u30eb\u306f\u4ee5\u4e0b\u306e\u9806\u5e8f\u3067\u8aad\u307f\u8fbc\u307e\u308c\u307e\u3059\uff1a
settings.php all.settings.php\n all.services.yml\n production.settings.php\n production.services.yml\n development.settings.php\n development.services.yml\n settings.local.php\n services.local.yml\n
"},{"location":"ja/lagoonizing/#gitignore","title":".gitignore
\u306e\u8a2d\u5b9a\u3092\u66f4\u65b0\u3059\u308b","text":".gitignore
\u304c\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30df\u30c3\u30c8\u3092\u8a31\u53ef\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002Drupal\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067sites/*/settings*.php
\u3068sites/*/services*.yml
\u3092.gitignore
\u306b\u542b\u3081\u3066\u3044\u307e\u3059\u3002Lagoon\u3067\u306f\u6a5f\u5bc6\u60c5\u5831\u3092Git\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u4fdd\u5b58\u3057\u306a\u3044\u306e\u3067\u3001\u3053\u308c\u3089\u3092\u524a\u9664\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#drupalwebroot","title":"Drupal\u306eWebroot\u306b\u3064\u3044\u3066\u306e\u6ce8\u610f\u70b9","text":"\u6b8b\u5ff5\u306a\u304c\u3089\u3001Drupal\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u30a6\u30a7\u30d6\u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0\u540d\u3092\u6a19\u6e96\u5316\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3088\u3063\u3066\u306fDrupal\u3092/web
\u5185\u306b\u3001\u4ed6\u306f/docroot
\u3084\u4ed6\u306e\u5834\u6240\u306b\u914d\u7f6e\u3057\u3066\u3044\u307e\u3059\u3002Lagoon Drupal\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u3001Drupal\u304c/web
\u5185\u306b\u3042\u308b\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u3082\u3057\u3042\u306a\u305f\u306eDrupal\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u7570\u306a\u308b\u5834\u5408\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u9069\u5b9c\u8abf\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#_11","title":"\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9\u3059\u308b","text":"\u307e\u305a\u3001\u5b9a\u7fa9\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
build your imagesdocker-compose build\n
\u3053\u308c\u306b\u306f\u6570\u5206\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u3001\u9577\u3044\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u8fd4\u3063\u3066\u304d\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u3082\u306e\u306b\u306a\u308b\u306f\u305a\u3067\u3059\u3002
\u3053\u308c\u306b\u3088\u308a\u3001docker-compose\u306fdocker-compose.yml
\u5185\u3067build:
\u5b9a\u7fa9\u304c\u3042\u308b\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3057\u307e\u3059\u3002\u901a\u5e38\u3001Drupal\u306e\u5834\u5408\u3001\u3053\u308c\u306b\u306fcli
\u3001nginx
\u3001php
\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u7279\u5b9a\u306e\u30d3\u30eb\u30c9\u30b3\u30de\u30f3\u30c9\uff08composer install
\u306a\u3069\uff09\u3092\u5b9f\u884c\u3057\u305f\u308a\u3001\u7279\u5b9a\u306e\u74b0\u5883\u5909\u6570\uff08WEBROOT
\u306a\u3069\uff09\u3092\u30a4\u30e1\u30fc\u30b8\u306b\u6ce8\u5165\u3057\u305f\u308a\u3059\u308b\u305f\u3081\u306b\u884c\u3044\u307e\u3059\u3002
\u901a\u5e38\u3001 Drupal\u306e\u30b3\u30fc\u30c9\u3092\u7de8\u96c6\u3059\u308b\u305f\u3073\u306b\u30d3\u30eb\u30c9\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093(\u30b3\u30fc\u30c9\u306f\u30db\u30b9\u30c8\u304b\u3089\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u307e\u3059)\u3001\u3057\u304b\u3057\u518d\u30d3\u30eb\u30c9\u306f\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u3055\u3089\u306b\u3001Lagoon\u306f\u30c7\u30d7\u30ed\u30a4\u4e2d\u306b\u5168\u304f\u540c\u3058Docker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3059\u308b\u306e\u3067\u3001docker-compose build
\u3092\u518d\u5ea6\u5b9f\u884c\u3059\u308b\u3060\u3051\u3067\u3001\u30d3\u30eb\u30c9\u304c\u30c7\u30d7\u30ed\u30a4\u4e2d\u306b\u3082\u6a5f\u80fd\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_12","title":"\u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5","text":"\u30a4\u30e1\u30fc\u30b8\u304c\u30d3\u30eb\u30c9\u3055\u308c\u305f\u306e\u3067\u3001\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3067\u304d\u307e\u3059:
start the containersdocker-compose up -d\n
\u6b21\u306e\u3088\u3046\u306a\u5fdc\u7b54\u304c\u8868\u793a\u3055\u308c\u307e\u3059:
containers started\u279c lagoon-test git:(main) docker compose up -d\nRecreating lagoon-test_cli_1 ... done\nStarting lagoon-test_redis_1 ... done\nStarting lagoon-test_solr_1 ... done\nStarting lagoon-test_mariadb_1 ... done\nRecreating lagoon-test_php_1 ... done\nRecreating lagoon-test_nginx_1 ... done\nRecreating lagoon-test_varnish_1 ... done\n
\u3053\u308c\u306b\u3088\u308a\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002\u30b3\u30de\u30f3\u30c9\u304c\u5b8c\u4e86\u3057\u305f\u5f8c\u3001docker compose ps
\u3067\u78ba\u8a8d\u3057\u3066\u3001\u3059\u3079\u3066\u5b8c\u5168\u306b\u8d77\u52d5\u3057\u3001\u30af\u30e9\u30c3\u30b7\u30e5\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5fdc\u7b54\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308b\u306f\u305a\u3067\u3059:
view running containers\u279c lagoon-test git:(main) docker compose ps\nName Command State Ports\n----------------------------------------------------------------------------------------\nlagoon-test_cli_1 /sbin/tini -- /lagoon/entr ... Up 9000/tcp\nlagoon-test_mariadb_1 /sbin/tini -- /lagoon/entr ... Up 0.0.0.0:32768->3306/tcp\nlagoon-test_nginx_1 /sbin/tini -- /lagoon/entr ... Up 8080/tcp\nlagoon-test_php_1 /sbin/tini -- /lagoon/entr ... Up 9000/tcp\nlagoon-test_redis_1 /sbin/tini -- /lagoon/entr ... Up 6379/tcp\nlagoon-test_solr_1 /sbin/tini -- /lagoon/entr ... Up 0.0.0.0:32769->8983/tcp\n
\u554f\u984c\u304c\u3042\u308b\u5834\u5408\u306f\u3001 docker-compose logs -f [servicename]
\u3092\u4f7f\u7528\u3057\u3066\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#composer-installcomposer","title":"composer install
\u306e\u518d\u5b9f\u884c\uff08Composer\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u307f\uff09","text":"Drupal 8\u4ee5\u964d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u3001Composer\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u306f\u305a\u3067\u3059\u3002\u5168\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002cli\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3057\u3001composer install
\u3092\u5b9f\u884c\u3057\u307e\u3059\uff1a
re-run composer installdocker-compose exec cli bash\n[drupal-example]cli-drupal:/app$ composer install\n
\u3053\u308c\u306f\u5947\u5999\u306b\u805e\u3053\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u30d3\u30eb\u30c9\u6bb5\u968e\u3067\u3059\u3067\u306bcomposer install
\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u304b\u3089\u3067\u3059\u3002\u518d\u5ea6\u5b9f\u884c\u3059\u308b\u7406\u7531\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a
- \u30db\u30b9\u30c8\u4e0a\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3057\u3001\u3059\u3050\u306b\u30b3\u30f3\u30c6\u30ca\u3067\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e
docker-composer.yml
\u306f\u30d5\u30a9\u30eb\u30c0\u5168\u4f53\u3092\u30b3\u30f3\u30c6\u30ca\u306b\u30de\u30a6\u30f3\u30c8\u3057\u307e\u3059\uff08\u3053\u308c\u306fvolumes
\u30bb\u30af\u30b7\u30e7\u30f3\u306e.:/app:delegated
\u3067\u884c\u308f\u308c\u307e\u3059\uff09\u3002\u3053\u308c\u306f\u3001Docker\u30d3\u30eb\u30c9\u4e2d\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u5168\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u304c\u30db\u30b9\u30c8\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u4e0a\u66f8\u304d\u3055\u308c\u308b\u3053\u3068\u3082\u610f\u5473\u3057\u307e\u3059\u3002 - \u30ed\u30fc\u30ab\u30eb\u3067\u306f\u3001\u304a\u305d\u3089\u304f
composer.json
\u306erequire-dev
\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u4f9d\u5b58\u95a2\u4fc2\u306b\u30a2\u30af\u30bb\u30b9\u3057\u305f\u3044\u3067\u3057\u3087\u3046\u304c\u3001\u672c\u756a\u30c7\u30d7\u30ed\u30a4\u3067\u306f\u305d\u308c\u3089\u306f\u4e0d\u8981\u306a\u30b9\u30da\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3060\u3051\u3067\u3059\u3002\u305d\u306e\u305f\u3081\u3001Dockerfile\u3067\u306fcomposer install --no-dev
\u3092\u5b9f\u884c\u3057\u3001\u624b\u52d5\u3067composer install
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
\u5168\u3066\u304c\u4e0a\u624b\u304f\u3044\u3063\u305f\u5834\u5408\u3001docker-compose.yml
\u3067\u5b9a\u7fa9\u3055\u308c\u305fLAGOON_ROUTE
\uff08\u4f8b\uff1ahttp://drupal.docker.amazee.io
\uff09\u3092\u958b\u304f\u3068\u3001Drupal\u306e\u30a8\u30e9\u30fc\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044 - \u4eca\u306e\u3068\u3053\u308d\u3053\u308c\u3067\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u6700\u3082\u91cd\u8981\u306a\u306e\u306f\u3001Drupal\u30b5\u30a4\u30c8\u3092\u8aad\u307f\u8fbc\u3082\u3046\u3068\u3057\u3066\u3044\u308b\u3053\u3068\u3067\u3059\u3002
500\u307e\u305f\u306f\u540c\u69d8\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001Composer\u3067\u5168\u3066\u304c\u6b63\u3057\u304f\u8aad\u307f\u8fbc\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/lagoonizing/#drupal_1","title":"\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u78ba\u8a8d\u3068Drupal\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"\u6700\u5f8c\u306bDrupal\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u6642\u304c\u6765\u307e\u3057\u305f\u304c\u3001\u305d\u306e\u524d\u306b\u5168\u3066\u304c\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002\u305d\u306e\u305f\u3081\u306bDrush\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002drush status
\u3092\u5b9f\u884c\u3057\u307e\u3059\uff1a
run drush statusdocker-compose exec cli bash\n[drupal-example]cli-drupal:/app$ drush status\n
\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u7d50\u679c\u3092\u8fd4\u3059\u306f\u305a\u3067\u3059:
drush status results[drupal-example]cli-drupal:/app$ drush status\n[notice] Missing database table: key_value\nDrupal version : 8.6.1\nSite URI : http://drupal.docker.amazee.io\nDatabase driver : mysql\nDatabase hostname : mariadb\nDatabase port : 3306\nDatabase username : drupal\nDatabase name : drupal\nPHP binary : /usr/local/bin/php\nPHP config : /usr/local/etc/php/php.ini\nPHP OS : Linux\nDrush script : /app/vendor/drush/drush/drush\nDrush version : 9.4.0\nDrush temp : /tmp\nDrush configs : /home/.drush/drush.yml\n /app/vendor/drush/drush/drush.yml\nDrupal root : /app/web\nSite path : sites/default\n
\u60c5\u5831
\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u9032\u3080\u524d\u306b\u3001\u516c\u958b\u9375\u306b\u3064\u3044\u3066pygmy\u306b\u4f1d\u3048\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002Permission denied (publickey)
\u3068\u3044\u3046\u30a8\u30e9\u30fc\u304c\u8868\u793a\u3055\u308c\u305f\u5834\u5408\u306f\u3001\u3053\u3061\u3089\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044:pygmy - ssh\u30ad\u30fc\u306e\u8ffd\u52a0\u3002
\u3053\u308c\u3067Drupal\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u6642\u304c\u6765\u307e\u3057\u305f\uff08\u4ee3\u308f\u308a\u306b\u65e2\u5b58\u306eSQL\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002\u305f\u3060\u3057\u3001\u6700\u521d\u306f\u30af\u30ea\u30fc\u30f3\u306aDrupal\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3001\u5168\u3066\u304c\u52d5\u4f5c\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\uff09\u3002
drush si\u306e\u5b9f\u884c
[drupal-example]cli-drupal:/app$ drush site-install\n
\u3053\u308c\u306b\u3088\u308a\u3001\u6b21\u306e\u3088\u3046\u306a\u51fa\u529b\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059: drush si\u306e\u7d50\u679c[drupal-example]cli-drupal:/app$ drush site-install\nYou are about to DROP all tables in your 'drupal' database. Do you want to continue? (y/n): y\nStarting Drupal installation. This takes a while. Consider using the --notify global option.\nInstallation complete. User name: admin User password: arbZJekcqh\nCongratulations, you installed Drupal!\n
\u3053\u308c\u3067LAGOON_ROUTE
\u3067\u5b9a\u7fa9\u3055\u308c\u305fURL\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u65b0\u3057\u304f\u30af\u30ea\u30fc\u30f3\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305fDrupal\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059 - \u304a\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307e\u3059\uff01
"},{"location":"ja/lagoonizing/#_13","title":"\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u306e\u30a4\u30f3\u30dd\u30fc\u30c8","text":"\u65e2\u5b58\u306eDrupal\u30b5\u30a4\u30c8\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30ed\u30fc\u30ab\u30eb\u30b5\u30a4\u30c8\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u3044\u3067\u3057\u3087\u3046\u3002\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u306f\u591a\u6570\u3042\u308a\u307e\u3059\u304c\u3001\u73fe\u5728\u306e\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30d7\u30ed\u30d0\u30a4\u30c0\u306bDrush\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\uff1a
drush sql-dump[your-existing-site]$ drush sql-dump --result-file=dump.sql\nDatabase dump saved to dump.sql [success]\n
\u3053\u308c\u3067\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5168\u4f53\u3092\u542b\u3080dump.sql\u30d5\u30a1\u30a4\u30eb\u304c\u3067\u304d\u307e\u3057\u305f\u3002\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30ab\u30eb\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u30b3\u30d4\u30fc\u3057\u3001CLI\u306b\u63a5\u7d9a\u3059\u308b\u3068\u3001\u305d\u3053\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\uff1a
dump file
[drupal-example] docker compose exec cli bash\n[drupal-example]cli-drupal:/app$ ls -l dump.sql\n-rw-r--r-- 1 root root 5281 Dec 19 12:46 dump.sql\n
\u3053\u308c\u3067\u3001\u73fe\u5728\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u524a\u9664\u3057\u305f\u5f8c\u306b\u30c0\u30f3\u30d7\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\uff08\u307e\u3060cli\u306b\u63a5\u7d9a\u3057\u305f\u307e\u307e\u3067\u3059\uff09\uff1a dump existing db and import dump file[drupal-example]cli-drupal:/app$ drush sql-drop\nDo you really want to drop all tables in the database drupal? (y/n): y\n[drupal-example]cli-drupal:/app$ drush sql-cli < dump.sql\n
"},{"location":"ja/lagoonizing/#drupal_2","title":"Drupal\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea","text":"Drupal\u30b5\u30a4\u30c8\u306b\u306f\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3082\u542b\u307e\u308c\u307e\u3059\u3002\u65e2\u5b58\u306e\u30b5\u30a4\u30c8\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u79fb\u884c\u3059\u308b\u306b\u306f\u3001\u6b63\u3057\u3044\u30d5\u30a9\u30eb\u30c0\uff08\u304a\u305d\u3089\u304fweb/sites/default/files
\u3001sites/default/files
\u3001\u307e\u305f\u306f\u985e\u4f3c\u306e\u3082\u306e\uff09\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3059\u308b\u3060\u3051\u3067\u3059\u3002\u30a6\u30a7\u30d6\u30eb\u30fc\u30c8\u3068\u3057\u3066\u8a2d\u5b9a\u3057\u305f\u3082\u306e\u3092\u899a\u3048\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044 - \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3088\u3063\u3066\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/lagoonizing/#_14","title":"\u30c7\u30d7\u30ed\u30a4","text":"\u3053\u306e\u30ac\u30a4\u30c9\u306e\u5168\u3066\u306e\u624b\u9806\u3092\u5b8c\u4e86\u3057\u3001Lagoon\u7ba1\u7406\u8005\u304c\u5168\u3066\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u308c\u3070\u3001\u30b5\u30a4\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\uff01
Drupal\u30b5\u30a4\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5834\u5408\u306f\u3001\u3053\u306e\u30c7\u30d7\u30ed\u30a4\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u305d\u308c\u4ee5\u5916\u306e\u5168\u3066\u306e\u30c7\u30d7\u30ed\u30a4\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u306e\u30c7\u30d7\u30ed\u30a4\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/logging/kibana-examples/","title":"Kibana\u306e\u4f8b","text":"Kibana\u306e\u5165\u9580\u30d3\u30c7\u30aa\u3092\u898b\u3066\u3001\u30ed\u30b0\u3092\u6271\u3046\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\u304b\uff1f\u79c1\u305f\u3061\u304c\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\uff01\u3053\u306e\u30da\u30fc\u30b8\u3067\u306f\u3001\u4f7f\u7528\u3067\u304d\u308bKibana\u30af\u30a8\u30ea\u306e\u4f8b\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002\u3053\u308c\u306fKibana 101\u306e\u30af\u30e9\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001Kibana\u3067\u4f55\u304c\u3067\u304d\u308b\u306e\u304b\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002
\u59cb\u3081\u308b\u6e96\u5099\u306f\u3067\u304d\u307e\u3057\u305f\u304b\uff1f\u3000\u3067\u306f\u59cb\u3081\u307e\u3057\u3087\u3046\uff01
\u6ce8\u610f:
\u958b\u59cb\u3059\u308b\u524d\u306b\u30c6\u30ca\u30f3\u30c8\u3092\u9078\u629e\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff01 \u5de6\u5074\u306e\u30e1\u30cb\u30e5\u30fc\u306b\u3042\u308b Tenant
\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u305d\u308c\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30c6\u30ca\u30f3\u30c8\u3092\u9078\u629e\u3057\u305f\u3089\u3001\u518d\u5ea6 Discover
\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u59cb\u3081\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/logging/kibana-examples/#_1","title":"\u30eb\u30fc\u30bf\u30fc\u30ed\u30b0","text":"\u4ee5\u4e0b\u306b\u30012\u3064\u306e\u4e00\u822c\u7684\u306a\u30ed\u30b0\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u4f8b\u3092\u793a\u3057\u307e\u3059:
- \u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u3078\u306e\u30d2\u30c3\u30c8/\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u7dcf\u6570\u3092\u8868\u793a\u3057\u307e\u3059\u3002
- \u7279\u5b9a\u306eIP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u306e\u30d2\u30c3\u30c8/\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6570\u3092\u8868\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/logging/kibana-examples/#_2","title":"\u30b5\u30a4\u30c8\u3078\u306e\u30d2\u30c3\u30c8/\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u7dcf\u6570","text":" - Kibana\u3092\u8d77\u52d5\u3057\u3001
Discovery
\u3092\u9078\u629e\u3057\u307e\u3057\u3087\u3046(\u4ee5\u4e0b\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u306e\uff031) - \u6b21\u306b\u3042\u306a\u305f\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30bf\u30fc\u30ed\u30b0\u3067\u3059(\uff032)\u3002
- \u305d\u3053\u304b\u3089\u3001\u3053\u306e\u60c5\u5831\u3092\u5c11\u3057\u7d5e\u308a\u8fbc\u307f\u307e\u3059\u3002\u79c1\u305f\u3061\u306e\u4e3b\u306a\u88fd\u54c1\u74b0\u5883\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3057\u3087\u3046\u3002
-
\u691c\u7d22\u30d0\u30fc(\uff033)\u306b\u5165\u529b\u3057\u307e\u3059:
openshift_project: \"\u672c\u756a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\"
- \u3053\u308c\u306b\u3088\u308a\u3001\u6307\u5b9a\u3055\u308c\u305f\u671f\u9593\u5185\u306e\u672c\u756a\u74b0\u5883\u3078\u306e\u3059\u3079\u3066\u306e\u30d2\u30c3\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059
- \u53f3\u4e0a\u9685\u306e\u30e1\u30cb\u30e5\u30fc (#4) \u3067\u671f\u9593\u3092\u5909\u66f4\u3067\u304d\u307e\u3059\u3002
- \u30a8\u30f3\u30c8\u30ea\u306e\u6a2a\u306b\u3042\u308b\u77e2\u5370\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068 (#5)\u3001\u30a8\u30f3\u30c8\u30ea\u304c\u5c55\u958b\u3055\u308c\u3001\u30ad\u30e3\u30d7\u30c1\u30e3\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u60c5\u5831\u304c\u8868\u793a\u3055\u308c\u307e\u3059
- \u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u30ab\u30fc\u30bd\u30eb\u3092\u5408\u308f\u305b\u3066\u5de6\u5074\u306e\u300c\u8ffd\u52a0\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068 (#6)\u3001\u305d\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059
- \u691c\u7d22\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3001\u7d50\u679c\u3092\u3055\u3089\u306b\u7d5e\u308a\u8fbc\u3080\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/logging/kibana-examples/#ip","title":"\u7279\u5b9a\u306eIP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u306e\u30d2\u30c3\u30c8\u6570/\u30ea\u30af\u30a8\u30b9\u30c8\u6570","text":"\u4e0a\u8a18\u306e\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30b5\u30a4\u30c8\u3078\u306e\u3059\u3079\u3066\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u6982\u8981\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u304c\u3001\u7279\u5b9a\u306eIP\u30a2\u30c9\u30ec\u30b9\u306b\u7d5e\u308a\u8fbc\u307f\u305f\u3044\u5834\u5408\u306f\u3069\u3046\u3067\u3057\u3087\u3046\u304b\uff1f\u4f8b\u3048\u3070\u3001\u3042\u308bIP\u30a2\u30c9\u30ec\u30b9\u304c\u30b5\u30a4\u30c8\u306b\u4f55\u56de\u30a2\u30af\u30bb\u30b9\u3057\u305f\u304b\u3001\u305d\u306eIP\u30a2\u30c9\u30ec\u30b9\u304c\u3069\u306e\u30da\u30fc\u30b8\u3092\u898b\u3066\u3044\u305f\u304b\u3092\u78ba\u8a8d\u3057\u305f\u3044\u5834\u5408\u3067\u3059\u3002\u3053\u306e\u6b21\u306e\u30af\u30a8\u30ea\u304c\u5f79\u7acb\u3061\u307e\u3059\u3002
\u307e\u305a\u3001\u524d\u56de\u3068\u540c\u3058\u30af\u30a8\u30ea\u304b\u3089\u59cb\u3081\u307e\u3059\u304c\u3001\u3044\u304f\u3064\u304b\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
- \u6700\u521d\u306b\u3001\u4ee5\u4e0b\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\uff1a
client_ip
\u304a\u3088\u3073http_request
- \u3053\u308c\u306b\u3088\u308a\u3001\u3059\u3079\u3066\u306eIP\u30a2\u30c9\u30ec\u30b9\u3068\u305d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3057\u305f\u30da\u30fc\u30b8\u306e\u30ea\u30b9\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u6b21\u306f\u3001Amazee.io\u30da\u30fc\u30b8\u306e\u5834\u5408\u306e\u8868\u793a\u5185\u5bb9\u3067\u3059:
![\u3059\u3079\u3066\u306eIP\u30a2\u30c9\u30ec\u30b9\u3068\u305d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3057\u305f\u30da\u30fc\u30b8:]( \u8981\u6c42\u3055\u308c\u305f\u3002](../images/kibana_example2.png)
\u3053\u308c\u306f\u826f\u3055\u305d\u3046\u3067\u3059\u304c\u3001\u7279\u5b9a\u306eIP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3060\u3051\u3092\u8868\u793a\u3057\u305f\u3044\u5834\u5408\u306f\u3069\u3046\u3067\u3057\u3087\u3046\u304b\uff1f\u691c\u7d22\u6761\u4ef6\u306b\u30a2\u30c9\u30ec\u30b9\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002
- \u6b21\u306e\u3088\u3046\u306b\u8ffd\u52a0\u3057\u307e\u3059:
AND client_ip: \"IP\u30a2\u30c9\u30ec\u30b9\"
. - \u3053\u308c\u306b\u3088\u308a\u3001\u305d\u306e\u7279\u5b9a\u306eIP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u306e\u30d2\u30c3\u30c8\u3068\u3001\u305d\u306e\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u30da\u30fc\u30b8\u3060\u3051\u304c\u7d50\u679c\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306famazee.io\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u4f8b\u3067\u3059:
"},{"location":"ja/logging/kibana-examples/#_3","title":"\u30b3\u30f3\u30c6\u30ca\u30ed\u30b0","text":"\u30b3\u30f3\u30c6\u30ca\u30ed\u30b0\u306f\u3001\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ca\u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3059\u308b\u3059\u3079\u3066\u306e\u6a19\u6e96\u51fa\u529b\uff08stdout
\uff09\u304a\u3088\u3073\u6a19\u6e96\u30a8\u30e9\u30fc\uff08stderr
\uff09\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\u3057\u307e\u3059\u3002\u6b21\u306b\u3001\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ca\u304b\u3089\u30ed\u30b0\u3092\u53d6\u5f97\u3057\u3001\u305d\u306e\u30b3\u30f3\u30c6\u30ca\u5185\u306e\u7279\u5b9a\u306e\u30a8\u30e9\u30fc\u756a\u53f7\u3092\u898b\u3064\u3051\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002
"},{"location":"ja/logging/kibana-examples/#_4","title":"\u30b3\u30f3\u30c6\u30ca\u304b\u3089\u306e\u30ed\u30b0","text":"\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ca\uff08php\u3001nginx\u306a\u3069\uff09\u306e\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u305f\u3044\u3067\u3059\u304b\uff1f\u305d\u306e\u5834\u5408\u306f\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u304c\u5f79\u7acb\u3061\u307e\u3059\uff01\u3053\u3053\u3067\u306fNGINX\u30ed\u30b0\u3092\u78ba\u8a8d\u3059\u308b\u65b9\u6cd5\u306b\u7126\u70b9\u3092\u5f53\u3066\u307e\u3059\u3002
- \u307e\u305a\u3001Kibana\u3092\u958b\u304d\u3001Discover\u3092\u9078\u629e\u3057\u307e\u3059(\u4e0b\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8\u306e\uff031)\u3002
- \u6b21\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30f3\u30c6\u30ca\u30ed\u30b0\u3092\u9078\u629e\u3057\u307e\u3059(\uff032)\u3002
- \u691c\u7d22\u30d0\u30fc(\uff033)\u306b\u79fb\u52d5\u3057\u3001
kubernetes.container_name: \"nginx\"
\u3068\u5165\u529b\u3057\u307e\u3059\u3002 - \u3053\u308c\u306b\u3088\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u3059\u3079\u3066\u306eNGINX\u30ed\u30b0\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 \u30a8\u30f3\u30c8\u30ea\u306e\u96a3\u306e\u77e2\u5370\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b(\uff034)\u3068\u3001\u305d\u306e\u30a8\u30f3\u30c8\u30ea\u304c\u5c55\u958b\u3055\u308c\u3001\u53ce\u96c6\u3057\u305f\u3059\u3079\u3066\u306e\u60c5\u5831\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
- \u30e1\u30c3\u30bb\u30fc\u30b8\u30d5\u30a3\u30fc\u30eb\u30c9\u3068\u30ec\u30d9\u30eb\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u30d3\u30e5\u30fc\u306b\u8ffd\u52a0\u3057\u307e\u3057\u3087\u3046\u3002\u5de6\u5074\u306e\u300cAdd\u300d\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3053\u3068\u3067\u8ffd\u52a0\u3067\u304d\u307e\u3059(\uff035)\u3002
- \u753b\u9762\u306e\u53f3\u4e0a\u9685(\uff036)\u3067\u6642\u9593\u67a0\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u4f8b\u3067\u306f\u3001\u904e\u53bb4\u6642\u9593\u306e\u30ed\u30b0\u3092\u898b\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/logging/kibana-examples/#_5","title":"\u30ed\u30b0\u306e\u7279\u5b9a\u306e\u30a8\u30e9\u30fc","text":"NGINX\u30b3\u30f3\u30c6\u30ca\u3067\u767a\u751f\u3057\u305f500 Internal Server\u30a8\u30e9\u30fc\u306e\u6570\u3092\u78ba\u8a8d\u3057\u305f\u3044\u3067\u3059\u304b\uff1f\u691c\u7d22\u30af\u30a8\u30ea\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u3088\u3046\u306b\u691c\u7d22\u3057\u307e\u3059:
kubernetes.container_name: \"nginx\" AND message: \"500\"
\u3053\u308c\u306b\u3088\u308a\u3001NGINX\u30b3\u30f3\u30c6\u30ca\u5185\u306e500\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u307f\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u4efb\u610f\u306e\u30b3\u30f3\u30c6\u30ca\u5185\u306e\u4efb\u610f\u306e\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u691c\u7d22\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/logging/kibana-examples/#_6","title":"\u53ef\u8996\u5316","text":"Kibana\u3067\u306f\u3001\u53ef\u8996\u5316\u3084\u30b0\u30e9\u30d5\u3092\u4f5c\u6210\u3059\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u3082\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u4e0a\u8a18\u306e\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u3066\u3001\u6708\u9593\u306e\u30d2\u30c3\u30c8/\u30ea\u30af\u30a8\u30b9\u30c8\u6570\u3092\u8868\u793a\u3059\u308b\u30c1\u30e3\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
- Kibana\u306e\u5de6\u5074\u306b\u3042\u308b\u300cVisualize\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059
- \u9752\u3044\u30d7\u30e9\u30b9\u8a18\u53f7\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059
- \u3053\u306e\u4f8b\u3067\u306f\u3001\u300cVertical Bar\u300d\u30c1\u30e3\u30fc\u30c8\u3092\u9078\u629e\u3057\u307e\u3059
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30bf\u30fc\u30ed\u30b0\u3092\u9078\u629e\u3057\u307e\u3059
- \u300cBuckets\u300d\u306e\u4e0b\u306b\u3042\u308b\u300cX-Axis\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u300cDate Histogram\u300d\u3092\u9078\u629e\u3057\u3001\u9593\u9694\u3092\u300cdaily\uff08\u6bce\u65e5\uff09\u300d\u306b\u8a2d\u5b9a\u3057\u307e\u3059
- \u6210\u529f\u3067\u3059\uff01\u3053\u308c\u3067\u3001\u65e5\u3005\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u8868\u793a\u3059\u308b\u30d0\u30fc\u30c1\u30e3\u30fc\u30c8\u304c\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002
\u6ce8\u610f:
\u53f3\u4e0a\u9685\u306e\u30c7\u30fc\u30bf\u306e\u9069\u5207\u306a\u6642\u9593\u67a0\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
\u4ee5\u4e0b\u306f\u3001\u65e5\u3005\u306e\u30d2\u30c3\u30c8\u6570\u3092\u53ef\u8996\u5316\u3057\u305f\u30c1\u30e3\u30fc\u30c8\u306e\u4f8b\u3067\u3059:
\u307e\u305f\u3001\u53ef\u8996\u5316\uff08\u304a\u3088\u3073\u691c\u7d22\uff09\u3092\u4fdd\u5b58\u3067\u304d\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\uff01\u3053\u308c\u306b\u3088\u308a\u3001\u5c06\u6765\u7684\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306e\u304c\u3055\u3089\u306b\u901f\u304f\u306a\u308a\u307e\u3059\u3002\u5404\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u306f\u72ec\u81ea\u306eKibana\u30c6\u30ca\u30f3\u30c8\u304c\u3042\u308b\u305f\u3081\u3001\u691c\u7d22\u3084\u53ef\u8996\u5316\u304c\u4ed6\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u5171\u6709\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/logging/kibana-examples/#_7","title":"\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":""},{"location":"ja/logging/logging/","title":"\u30ed\u30ae\u30f3\u30b0","text":"Lagoon\u306fKibana\u3092\u4ecb\u3057\u3066\u4ee5\u4e0b\u306e\u30ed\u30b0\u306b\u30a2\u30af\u30bb\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059:
- Kubernetes\u30eb\u30fc\u30bf\u30fc\u304b\u3089\u306e\u30ed\u30b0\u306b\u306f\u3001\u3059\u3079\u3066\u306eHTTP\u304a\u3088\u3073HTTPS\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002:
- \u30bd\u30fc\u30b9IP
- URL
- \u30d1\u30b9
- HTTP\u52d5\u8a5e
- Cookies
- \u30d8\u30c3\u30c0\u30fc
- \u30e6\u30fc\u30b6\u30fc\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8
- \u30b3\u30f3\u30c6\u30ca\u540d
- \u5fdc\u7b54\u30b5\u30a4\u30ba
- \u5fdc\u7b54\u6642\u9593
- \u30b3\u30f3\u30c6\u30ca\u306e\u30ed\u30b0:
stdout
\u3068stderr
\u30e1\u30c3\u30bb\u30fc\u30b8 - \u30b3\u30f3\u30c6\u30ca\u540d
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8
- Lagoon\u306e\u30ed\u30b0:
- Webhooks\u306e\u89e3\u6790
- \u30d3\u30eb\u30c9\u30ed\u30b0
- \u30d3\u30eb\u30c9\u30a8\u30e9\u30fc
- \u305d\u306e\u4ed6\u306eLagoon\u95a2\u9023\u30ed\u30b0
- \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30ed\u30b0:
- Drupal\u306e\u5834\u5408: Drupal Watchdog\u304b\u3089\u306e\u30ed\u30b0\u3092\u53d7\u3051\u53d6\u308b\u305f\u3081\u306b\u3001Lagoon Logs\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
- Laravel\u306e\u5834\u5408: Laravel\u7528Lagoon Logs\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
- \u305d\u306e\u4ed6\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9:
- \u30ed\u30b0\u3092
udp://application-logs.lagoon.svc:5140
\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002 - \u30ed\u30b0\u304cJSON\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u3057\u3066\u69cb\u9020\u5316\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
type
\u30d5\u30a3\u30fc\u30eb\u30c9\u306bKubernetes\u30cd\u30fc\u30e0\u30b9\u30da\u30fc\u30b9\u306e\u540d\u524d\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044($LAGOON_PROJECT-$LAGOON_ENVIRONMENT
)\u3002
\u30ed\u30b0\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u3001Lagoon\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066Kibana\u30eb\u30fc\u30c8\u306eURL\u3092\u53d6\u5f97\u3057\u3066\u304f\u3060\u3055\u3044\uff08amazee.io\u306e\u5834\u5408\u306fhttps://logs.amazeeio.cloud/\u3067\u3059)\u3002
\u5404Lagoon\u30e6\u30fc\u30b6\u30fc\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u306f\u500b\u5225\u306e\u30ed\u30b0\u30a4\u30f3\u304c\u3042\u308a\u3001\u30a2\u30af\u30bb\u30b9\u6a29\u306e\u3042\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30ed\u30b0\u306e\u307f\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
\u5404Lagoon\u30e6\u30fc\u30b6\u30fc\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u307e\u305f\u3001\u72ec\u81ea\u306eKibana Tenant\u3092\u6301\u3063\u3066\u304a\u308a\u3001\u3053\u308c\u306f\u4fdd\u5b58\u3055\u308c\u305f\u691c\u7d22\u3084\u30d3\u30b8\u30e5\u30a2\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3\u304c\u4ed6\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u5171\u6709\u3055\u308c\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
Kibana\u306e\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u77e5\u308a\u305f\u3044\u5834\u5408\u306f\u3001\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044: https://www.elastic.co/webinars/getting-started-kibana
"},{"location":"ja/other-tools/client-libraries/","title":"Lagoon\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30e9\u30a4\u30d6\u30e9\u30ea","text":"Lagoon\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u306e\u30c4\u30fc\u30eb\u958b\u767a\u306b\u8208\u5473\u304c\u3042\u308b\u5834\u5408\u3001\u3044\u304f\u3064\u304b\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u5f79\u7acb\u3064\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/other-tools/client-libraries/#machinery","title":"Machinery","text":"Machinery\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u3001Lagoon\u306e\u30c4\u30fc\u30eb\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4e2d\u3067\u6700\u3082\u7a4d\u6975\u7684\u306b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3001\u958b\u767a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u306f\u3001\u4e3b\u306b(\u3057\u304b\u3057\u6392\u4ed6\u7684\u3067\u306f\u306a\u304f)API\u3068\u306e\u3084\u308a\u53d6\u308a\u306e\u305f\u3081\u306e\u3001\u79c1\u305f\u3061\u306e\u3059\u3079\u3066\u306egolang\u57fa\u76e4\u306e\u30c4\u30fc\u30eb\u30bf\u30a4\u30d7\u306b\u308f\u305f\u308b\u3059\u3079\u3066\u306e\u57fa\u672c\u64cd\u4f5c\u306e\u4e2d\u592e\u30b9\u30c8\u30a2\u3067\u3059\u3002
https://github.com/uselagoon/machinery/
"},{"location":"ja/other-tools/client-libraries/#php","title":"PHP","text":"PHP\u306e\u7d71\u5408\u3092\u63a2\u3057\u3066\u3044\u308b\u306a\u3089\u3001php-sdk\u304c\u3042\u306a\u305f\u306e\u4ed5\u4e8b\u306e\u51fa\u767a\u70b9\u3068\u3057\u3066\u826f\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
https://github.com/uselagoon/lagoon-php-sdk
"},{"location":"ja/other-tools/client-libraries/#_1","title":"\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u30e9\u30a4\u30d6\u30e9\u30ea","text":""},{"location":"ja/other-tools/client-libraries/#ansible","title":"Ansible","text":"Lagoon\u3068\u306e\u3084\u308a\u53d6\u308a\u306e\u305f\u3081\u306e\u983b\u7e41\u306b\u66f4\u65b0\u3055\u308c\u3001\u62e1\u5f35\u3055\u308c\u3066\u3044\u308bAnsible\u30e9\u30a4\u30d6\u30e9\u30ea\u3002
https://github.com/salsadigitalauorg/lagoon_ansible_collection
"},{"location":"ja/resources/faq/","title":"\u3088\u304f\u3042\u308b\u8cea\u554f","text":""},{"location":"ja/resources/faq/#lagoon","title":"Lagoon\u306e\u7ba1\u7406\u8005\u306b\u3069\u306e\u3088\u3046\u306b\u9023\u7d61\u3059\u308c\u3070\u3088\u3044\u3067\u3059\u304b\uff1f","text":"\u5c02\u7528\u306eSlack\u30c1\u30e3\u30cd\u30eb\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u306f\u305a\u306a\u306e\u3067\u3001\u305d\u308c\u3092\u5229\u7528\u3057\u3066\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059 - \u3082\u3057\u306a\u3044\u5834\u5408\u3084\u3001\u3069\u306e\u3088\u3046\u306b\u9023\u7d61\u3059\u308c\u3070\u3088\u3044\u304b\u5fd8\u308c\u3066\u3057\u307e\u3063\u305f\u5834\u5408\u306f\u3001support@amazee.io\u306b\u9023\u7d61\u3057\u3066\u4e0b\u3055\u3044\u3002
"},{"location":"ja/resources/faq/#_2","title":"\u30d0\u30b0\u3092\u898b\u3064\u3051\u307e\u3057\u305f\uff01\ud83d\udc1e","text":"\u30d0\u30b0\u3084\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u554f\u984c\u3092\u898b\u3064\u3051\u305f\u5834\u5408\u306f\u3001\u305d\u306e\u5185\u5bb9\u3092support@amazee.io\u306b\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002GitHub\u306e\u554f\u984c\u3068\u3057\u3066\u5831\u544a\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/resources/faq/#amazeeiolagoon","title":"amazee.io\u306eLagoon\u3092\u5229\u7528\u3057\u305f\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u30b5\u30fc\u30d3\u30b9\u306b\u8208\u5473\u304c\u3042\u308a\u307e\u3059","text":"\u305d\u308c\u306f\u7d20\u6674\u3089\u3057\u3044\u30cb\u30e5\u30fc\u30b9\u3067\u3059\uff01sales@amazee.io\u307e\u3067\u30e1\u30fc\u30eb\u3067\u304a\u554f\u3044\u5408\u308f\u305b\u3044\u305f\u3060\u3051\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#ssl","title":"\u79c1\u306f\u7121\u52b9\u306aSSL\u8a3c\u660e\u66f8\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u3044\u307e\u3059","text":"\u307e\u305a\u6700\u521d\u306b\u8a66\u3059\u3079\u304d\u3053\u3068\u306f\u3001\u79c1\u305f\u3061\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308bSSL\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u53c2\u7167\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002
\u305d\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u3082\u307e\u3060\u30a8\u30e9\u30fc\u304c\u51fa\u308b\u5834\u5408\u306f\u3001\u30c1\u30b1\u30c3\u30c8\u3092\u9001\u4fe1\u3059\u308b\u304b\u3001\u30c1\u30e3\u30c3\u30c8\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u79c1\u305f\u3061\u306f\u3042\u306a\u305f\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u306e\u3092\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#drush-array","title":"Drush\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306b \"Array\" \u30a8\u30e9\u30fc\u304c\u51fa\u3066\u3044\u307e\u3059","text":"\u3053\u308c\u306fDrush\u30d0\u30fc\u30b8\u30e7\u30f38.1.16\u30688.1.17\u3067\u591a\u304f\u898b\u3089\u308c\u305f\u30d0\u30b0\u3067\u3001\u30a8\u30e9\u30fc\u306f\u6b21\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3057\u305f:
Bash\u30b3\u30de\u30f3\u30c9\u3092\u6b63\u5e38\u306b\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f(\u8fd4\u5374:Array [error]\n(\n[default] => Array\n(\n[default] => Array\n(\n[driver] => mysql\n[prefix] => Array\n(\n[default] =>\n)\n, code: 0)\nError: no database record could be found for source @main [error]\n
Drush\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u3068\u3001\u3053\u306e\u554f\u984c\u306f\u89e3\u6d88\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002\u6211\u3005\u306f\u5f37\u304f\u3001\u30d0\u30fc\u30b8\u30e7\u30f38.3\u307e\u305f\u306f\u305d\u308c\u4ee5\u964d\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002Drush\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308c\u3070\u3001\u30b3\u30de\u30f3\u30c9\u306f\u52d5\u4f5c\u3059\u308b\u306f\u305a\u3067\u3059\uff01
"},{"location":"ja/resources/faq/#kibanainternal-server-error","title":"Kibana\u30ed\u30b0\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001Internal Server Error\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059","text":" - Kibana\u306e\u5de6\u5074\u306e\u30e1\u30cb\u30e5\u30fc\u3067\u300c\u30c6\u30ca\u30f3\u30c8\u300d\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
- \u81ea\u5206\u306e\u30c6\u30ca\u30f3\u30c8\u540d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
- \u300c\u30c6\u30ca\u30f3\u30c8\u306e\u5909\u66f4\u300d\u3068\u3042\u306a\u305f\u306e\u30c6\u30ca\u30f3\u30c8\u306e\u540d\u524d\u3068\u3044\u3046\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
- \u300c\u30c7\u30a3\u30b9\u30ab\u30d0\u30fc\u300d\u30bf\u30d6\u306b\u623b\u308a\u3001\u30af\u30a8\u30ea\u3092\u518d\u5ea6\u8a66\u307f\u307e\u3059\u3002
\u3053\u308c\u3067\u30ed\u30b0\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/resources/faq/#ssh","title":"\u4efb\u610f\u306e\u74b0\u5883\u306bSSH\u3067\u63a5\u7d9a\u3067\u304d\u306a\u3044","text":"\u4efb\u610f\u306e\u74b0\u5883\u306bSSH\u3067\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002\u6b21\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u307e\u3059: Permission denied (publickey)
\u3002drush sa
\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30a8\u30a4\u30ea\u30a2\u30b9\u304c\u8fd4\u3055\u308c\u307e\u305b\u3093\u3002
\u3053\u308c\u306f\u901a\u5e38\u3001Pygmy\u306e\u554f\u984c\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002Pygmy\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u3053\u3061\u3089\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:https://pygmystack.github.io/pygmy/troubleshooting/
"},{"location":"ja/resources/faq/#_3","title":"\u30d3\u30eb\u30c9\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/faq/#_4","title":"\u3069\u306e\u3088\u3046\u306b\u3057\u3066\u8ffd\u52a0\u3057\u307e\u3059\u304b \u30af\u30ed\u30f3\u30b8\u30e7\u30d6\u3068\u306f\uff1f","text":""},{"location":"ja/resources/faq/#_5","title":"\u65b0\u3057\u3044\u30eb\u30fc\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\uff1f","text":""},{"location":"ja/resources/faq/#_6","title":"\u30eb\u30fc\u30c8\u3092\u524a\u9664\u3059\u308b\u306b\u306f\uff1f","text":"Lagoon\u306f\u3001.lagoon.yml
\u304b\u3089\u30eb\u30fc\u30c8\u304c\u524a\u9664\u3055\u308c\u305f\u3053\u3068\u3092\u30c7\u30d7\u30ed\u30a4\u6642\u306b\u691c\u51fa\u3057\u307e\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3001\u30eb\u30fc\u30c8\u304c\u81ea\u52d5\u7684\u306b\u524a\u9664\u3055\u308c\u305f\u304b\u3001\u305d\u308c\u3089\u3092\u524a\u9664\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/resources/faq/#pygmy-status","title":"pygmy status
\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30ad\u30fc\u304c\u30ed\u30fc\u30c9\u3055\u308c\u307e\u305b\u3093","text":"SSH\u30ad\u30fc\u3092pygmy\u306b\u30ed\u30fc\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u65b9\u6cd5\u306f\u3053\u3061\u3089:https://pygmystack.github.io/pygmy/ssh_agent
"},{"location":"ja/resources/faq/#drush-sa","title":"drush sa
\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30a8\u30a4\u30ea\u30a2\u30b9\u304c\u8fd4\u3055\u308c\u307e\u305b\u3093","text":"\u3053\u308c\u306f\u901a\u5e38\u3001Pygmy\u306b\u554f\u984c\u304c\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002Pygmy\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u3053\u3061\u3089\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:https://pygmystack.github.io/pygmy/troubleshooting
"},{"location":"ja/resources/faq/#drush","title":"\u300cdrush\u306f\u3088\u308a\u6a5f\u80fd\u7684\u306a\u74b0\u5883\u304c\u5fc5\u8981\u3067\u3059\u300d\u3068\u3044\u3046\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u3001\u30c7\u30d7\u30ed\u30a4\u304c\u5931\u6557\u3059\u308b","text":"\u3053\u308c\u306f\u901a\u5e38\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306e\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/resources/faq/#pygmy","title":"Pygmy\u3092\u8d77\u52d5\u3059\u308b\u3068\u300c\u30a2\u30c9\u30ec\u30b9\u306f\u3059\u3067\u306b\u4f7f\u7528\u4e2d\u300d\u30a8\u30e9\u30fc\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u304b\uff1f","text":"\u30e6\u30fc\u30b6\u30fc\u30e9\u30f3\u30c9\u30d7\u30ed\u30ad\u30b7\u306e\u8d77\u52d5\u30a8\u30e9\u30fc: listen tcp 0.0.0.0:80: bind: address already in use Error: failed to start containers: amazeeio-haproxy
\u3053\u308c\u306f\u65e2\u77e5\u306e\u30a8\u30e9\u30fc\u3067\u3059\uff01\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30dd\u30fc\u30c880\u3067\u3059\u3067\u306b\u4f55\u304b\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u6b21\u306e\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u72af\u4eba\u3092\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
netstat -ltnp | grep -w ':80'\n
\u3053\u308c\u306b\u3088\u308a\u3001\u30dd\u30fc\u30c880\u3067\u5b9f\u884c\u4e2d\u306e\u3059\u3079\u3066\u3092\u30ea\u30b9\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002\u30dd\u30fc\u30c880\u3067\u52d5\u4f5c\u3057\u3066\u3044\u308b\u30d7\u30ed\u30bb\u30b9\u3092\u7d42\u4e86\u3055\u305b\u307e\u3059\u3002\u30dd\u30fc\u30c880\u304c\u89e3\u653e\u3055\u308c\u308b\u3068\u3001Pygmy\u306f\u3053\u308c\u4ee5\u4e0a\u306e\u30a8\u30e9\u30fc\u306a\u304f\u8d77\u52d5\u3059\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/resources/faq/#pr","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d6\u30e9\u30f3\u30c1/PR\u74b0\u5883/\u672c\u756a\u74b0\u5883\u3092\u3069\u306e\u3088\u3046\u306b\u5909\u66f4\u3067\u304d\u307e\u3059\u304b\uff1f","text":"\u305d\u306e\u5909\u66f4\u306fLagoon API\u3092\u4f7f\u7528\u3057\u3066\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff01\u3053\u306e\u5909\u66f4\u306b\u95a2\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306fGraphQL\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059.
"},{"location":"ja/resources/faq/#_7","title":"\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/faq/#ssh_1","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8/\u30b0\u30eb\u30fc\u30d7\u306b\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc(\u304a\u3088\u3073SSH\u30ad\u30fc)\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":"\u3053\u308c\u306fLagoon API\u3092\u4ecb\u3057\u3066\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u5909\u66f4\u306e\u30b9\u30c6\u30c3\u30d7\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u79c1\u305f\u3061\u306eGraphQL\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#_8","title":"\u74b0\u5883\u306f\u5b8c\u5168\u306b\u524a\u9664\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5927\u304d\u306a\u30b3\u30fc\u30c9\u5909\u66f4\u3092\u5c55\u958b\u3067\u304d\u307e\u3059\u304b\uff1f","text":"\u74b0\u5883\u306f\u5404\u30c7\u30d7\u30ed\u30a4\u3067\u5b8c\u5168\u306b\u30bc\u30ed\u304b\u3089\u69cb\u7bc9\u3055\u308c\u3001\u53e4\u3044\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u3066\u30b3\u30fc\u30c9\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3068\u3001\u65b0\u9bae\u306a\u30af\u30ea\u30fc\u30f3\u306a\u30d3\u30eb\u30c9\u304c\u5f97\u3089\u308c\u307e\u3059\u3002\u518d\u540c\u671f\u3092\u5fd8\u308c\u306a\u3044\u3067\u304f\u3060\u3055\u3044\uff01
GraphQL\u3092\u4ecb\u3057\u3066\u74b0\u5883\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u6307\u793a\u306f\u79c1\u305f\u3061\u306eGraphQL\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#_9","title":"\u65b0\u3057\u3044\u74b0\u5883\u5909\u6570\u3092\u8868\u793a\u3055\u305b\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":"GraphQL\u3092\u4ecb\u3057\u3066\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u74b0\u5883\u306b\u30e9\u30f3\u30bf\u30a4\u30e0\u74b0\u5883\u5909\u6570\u3092\u8ffd\u52a0\u3057\u305f\u3089\u3001\u30c7\u30d7\u30ed\u30a4\u3092\u884c\u3046\u3060\u3051\u3067\u65b0\u3057\u3044\u74b0\u5883\u5909\u6570\u3092\u8868\u793a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3042\u306a\u305f\u306e\u74b0\u5883\u306b\u5909\u66f4\u304c\u53cd\u6620\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#lagoonsftp","title":"Lagoon\u74b0\u5883\u306bSFTP\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u9001\u4fe1/\u53d6\u5f97\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":"\u30af\u30e9\u30a6\u30c9\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u306e\u304a\u5ba2\u69d8\u306f\u3001\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u4f7f\u7528\u3057\u3066Lagoon\u74b0\u5883\u306bSFTP\u3067\u63a5\u7d9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:
- \u30b5\u30fc\u30d0\u30fc\u30db\u30b9\u30c8\u540d:
ssh.lagoon.amazeeio.cloud
- \u30dd\u30fc\u30c8: 32222
- \u30e6\u30fc\u30b6\u30fc\u540d: <\u30d7\u30ed\u30b8\u30a7\u30af\u30c8-\u74b0\u5883-\u540d>
\u30e6\u30fc\u30b6\u30fc\u540d\u306f\u3001\u63a5\u7d9a\u3059\u308b\u74b0\u5883\u306e\u540d\u524d\u306b\u306a\u308a\u307e\u3059\u3002\u6700\u3082\u4e00\u822c\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u306f_PROJECTNAME-ENVIRONMENT
_\u3067\u3059\u3002
\u307e\u305f\u3001\u65b0\u3057\u3044Lagoon Sync\u30c4\u30fc\u30eb\u306b\u3064\u3044\u3066\u3082\u30c1\u30a7\u30c3\u30af\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u3053\u3067\u8a73\u7d30\u3092\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059: https://github.com/uselagoon/lagoon-sync
\u8a8d\u8a3c\u306f\u3001SSH\u516c\u958b\u9375\u3068\u79d8\u5bc6\u9375\u306e\u8a8d\u8a3c\u3092\u901a\u3058\u3066\u81ea\u52d5\u7684\u306b\u884c\u308f\u308c\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#lets-encryptssl","title":"Let's Encrypt\u3092\u4f7f\u7528\u3057\u305f\u304f\u306a\u3044\u3002\u79c1\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u3044SSL\u8a3c\u660e\u66f8\u304c\u3042\u308a\u307e\u3059","text":"\u305d\u308c\u306b\u3064\u3044\u3066\u306f\u78ba\u304b\u306b\u304a\u624b\u4f1d\u3044\u3067\u304d\u307e\u3059\u3002\u81ea\u5206\u306eSSL\u8a3c\u660e\u66f8\u3092\u624b\u306b\u5165\u308c\u305f\u3089\u3001\u9060\u616e\u306a\u304f\u30c1\u30b1\u30c3\u30c8\u3092\u63d0\u51fa\u3059\u308b\u304b\u3001\u30c1\u30e3\u30c3\u30c8\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u559c\u3093\u3067\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\uff01\u4ee5\u4e0b\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u9001\u4fe1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
- \u8a3c\u660e\u66f8\u30ad\u30fc (.key)
- \u8a3c\u660e\u66f8\u30d5\u30a1\u30a4\u30eb (.crt)
- \u4e2d\u9593\u8a3c\u660e\u66f8 (.crt)
\u307e\u305f\u3001.lagoon.yml
\u3067tls-acme
\u30aa\u30d7\u30b7\u30e7\u30f3\u3092false\u306b\u8a2d\u5b9a\u3059\u308b\u3002
"},{"location":"ja/resources/faq/#lagoonefsfusesmbetc","title":"Lagoon\u306b\u5916\u90e8\u30dc\u30ea\u30e5\u30fc\u30e0(EFS/Fuse/SMB/etc)\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u3053\u3068\u306f\u53ef\u80fd\u3067\u3059\u304b\uff1f","text":"\u5916\u90e8\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30de\u30a6\u30f3\u30c8\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u5185\u90e8\u3067\u5b8c\u5168\u306b\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001Lagoon\u306f\u3053\u306e\u7a2e\u306e\u63a5\u7d9a\u3092\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u4e00\u90e8\u3068\u3057\u3066\u63d0\u4f9b\u3057\u3066\u3044\u307e\u305b\u3093\u3002
\u958b\u767a\u8005\u306f\u3001\u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30b3\u30f3\u30c6\u30ca\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb(Dockerfile\u7d4c\u7531)\u3057\u3001\u30dc\u30ea\u30e5\u30fc\u30e0\u30de\u30a6\u30f3\u30c8\u304c\u4e8b\u524d\u307e\u305f\u306f\u4e8b\u5f8c\u306e\u30ed\u30fc\u30eb\u30a2\u30a6\u30c8\u30bf\u30b9\u30af\u7d4c\u7531\u3067\u63a5\u7d9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3067\u3053\u308c\u3092\u51e6\u7406\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#lagoon_1","title":"Lagoon\u306e\u30d3\u30eb\u30c9\u3092\u505c\u6b62\u3059\u308b\u65b9\u6cd5\u306f\u3042\u308a\u307e\u3059\u304b\uff1f","text":"\u9577\u6642\u9593\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u30d3\u30eb\u30c9\u3092\u505c\u6b62\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u30b5\u30dd\u30fc\u30c8\u306b\u9023\u7d61\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u73fe\u5728\u3001\u30d3\u30eb\u30c9\u306f\u30af\u30e9\u30b9\u30bf\u3078\u306e\u7ba1\u7406\u8005\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u306e\u307f\u304c\u505c\u6b62\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/resources/faq/#elasticsearchsolrui92008983","title":"Elasticsearch\\Solr\u30b5\u30fc\u30d3\u30b9\u3092\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3057\u305f\u3002\u30d6\u30e9\u30a6\u30b6\u304b\u3089UI(\u30dd\u30fc\u30c89200/8983)\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u3069\u306e\u3088\u3046\u306b\u53d6\u5f97\u3067\u304d\u307e\u3059\u304b\uff1f","text":"\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u74b0\u5883\u3067\u30a6\u30a7\u30d6\u30b5\u30fc\u30d3\u30b9(NGINX/Varnish/Node.js)\u306e\u307f\u3092\u516c\u958b\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u30ed\u30fc\u30ab\u30eb\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u30dd\u30fc\u30c8\u30de\u30c3\u30d4\u30f3\u30b0\u3092docker-compose ps
\u3067\u78ba\u8a8d\u3057\u3066\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002 , \u305d\u3057\u3066 [
http://localhost](http://localhost/)
:` \u3092\u30d6\u30e9\u30a6\u30b6\u3067\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002"},{"location":"ja/resources/faq/#_10","title":"\u3053\u3053\u3067\u306f\u7b54\u3048\u3089\u308c\u306a\u3044\u8cea\u554f\u304c\u3042\u308a\u307e\u3059","text":"
Discord \u307e\u305f\u306f uselagoon@amazee.io \u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u30c1\u30fc\u30e0\u306b\u9023\u7d61\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/resources/glossary/","title":"\u7528\u8a9e\u96c6","text":"\u7528\u8a9e \u5b9a\u7fa9 Access Mode \u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u3069\u306e\u3088\u3046\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u304b\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002 Active/Standby Active/Standby deployments\u306f\u3001\u4e00\u822c\u306bblue/green deployments\u3068\u3082\u547c\u3070\u308c\u3001\u672c\u756a\u74b0\u5883\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30b7\u30fc\u30e0\u30ec\u30b9\u306b\u5207\u308a\u66ff\u3048\u308b\u65b9\u6cd5\u3067\u3059\u3002 Ansible \u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3092\u30b3\u30fc\u30c9\u5316\u53ef\u80fd\u306b\u3059\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30c4\u30fc\u30eb\u30b9\u30a4\u30fc\u30c8\u3002 AWS Amazon Web Services Amazon S3 Glacier \u9577\u671f\u4fdd\u5b58\u306e\u305f\u3081\u306e\u5b89\u5168\u304b\u3064\u4f4e\u30b3\u30b9\u30c8\u306aS3\u30b9\u30c8\u30ec\u30fc\u30b8\u3002 BitBucket Atlassian\u304c\u6240\u6709\u3059\u308bGit\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u3067\u3001\u305d\u306e\u30c4\u30fc\u30eb\u3068\u7d71\u5408\u3057\u307e\u3059\u3002 Brew Homebrew\u306fOSX\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3067\u3059\u3002 CA \u4fe1\u983c\u3067\u304d\u308b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u3042\u308b\u8a3c\u660e\u66f8\u8a8d\u8a3c\u5c40(Certificate Authority)\u306f\u3001Secure Sockets Layer (SSL)\u8a3c\u660e\u66f8\u3092\u767a\u884c\u3057\u307e\u3059\u3002 CDN \u30b3\u30f3\u30c6\u30f3\u30c4\u914d\u4fe1\u30cd\u30c3\u30c8\u30ef\u30fc\u30af - \u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\u306b\u3088\u308b\u30b3\u30f3\u30c6\u30f3\u30c4\u914d\u4fe1 CI \u7d99\u7d9a\u7684\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3 CIDR \u30af\u30e9\u30b9\u30ec\u30b9\u30fb\u30a4\u30f3\u30bf\u30fc\u30c9\u30e1\u30a4\u30f3\u30fb\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0 - IP\u30a2\u30c9\u30ec\u30b9\u306e\u5272\u308a\u5f53\u3066\u65b9\u6cd5 CLI \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9 Cluster \u30b5\u30fc\u30d0\u30fc\u3084VM\u306e\u7d71\u4e00\u3055\u308c\u305f\u30b0\u30eb\u30fc\u30d7\u3067\u3001\u4e00\u7dd2\u306b\u5206\u6563\u7ba1\u7406\u3055\u308c\u3001\u9ad8\u3044\u53ef\u7528\u6027\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u4e00\u3064\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u30b5\u30fc\u30d3\u30b9\u3057\u307e\u3059\u3002 CMS \u30b3\u30f3\u30c6\u30f3\u30c4\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0 Cron job cron\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u306f\u3001Unix\u7cfb\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u306e\u30b8\u30e7\u30d6\u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u3067\u3059\u3002\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u74b0\u5883\u306e\u8a2d\u5b9a\u3068\u7dad\u6301\u3092\u884c\u3046\u30e6\u30fc\u30b6\u30fc\u306f\u3001cron\u3092\u4f7f\u7528\u3057\u3066\u30b8\u30e7\u30d6(cron\u30b8\u30e7\u30d6\u3068\u3082\u547c\u3070\u308c\u308b)\u3092\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3057\u3001\u56fa\u5b9a\u306e\u6642\u9593\u3001\u65e5\u4ed8\u3001\u307e\u305f\u306f\u9593\u9694\u3067\u5b9a\u671f\u7684\u306b\u5b9f\u884c\u3057\u307e\u3059\u3002 Composer \u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc DDEV Drupal\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u4eba\u6c17\u306e\u3042\u308bDocker\u30d9\u30fc\u30b9\u306ePHP\u958b\u767a\u74b0\u5883\u3002 DDoS \u5206\u6563\u578b\u30b5\u30fc\u30d3\u30b9\u62d2\u5426 DNS \u30c9\u30e1\u30a4\u30f3\u30cd\u30fc\u30e0\u30b7\u30b9\u30c6\u30e0 Docker Linux\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u81ea\u52d5\u5316\u3059\u308b\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30b8\u30f3\u3002 Docker Compose YAML\u30d5\u30a1\u30a4\u30eb\u3092\u4ecb\u3057\u3066Docker\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3057\u3001\u5b9f\u884c\u3059\u308b\u30c4\u30fc\u30eb\u3002 Drupal \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0 Drush Drupal\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30b7\u30a7\u30eb\u3002 EC2 Amazon Elastic Compute Cloud Elasticsearch \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u3002\u5206\u6563\u578b\u3001\u30de\u30eb\u30c1\u30c6\u30ca\u30f3\u30c8\u5bfe\u5fdc\u306e\u5168\u6587\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u3092\u63d0\u4f9b\u3057\u3001\u30b9\u30ad\u30fc\u30de\u30d5\u30ea\u30fc\u306eJSON\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3068\u30a6\u30a7\u30d6\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 Galera \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30ca\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u305f\u3081\u306e\u6c4e\u7528\u7684\u306a\u540c\u671f\u30de\u30eb\u30c1\u30de\u30b9\u30bf\u30fc\u8907\u88fd\u30e9\u30a4\u30d6\u30e9\u30ea\u3002 Git \u7121\u6599\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u5206\u6563\u578b\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3002 Git Hash /SHA \u5404\u30b3\u30df\u30c3\u30c8\u3092\u8b58\u5225\u3059\u308b\u751f\u6210\u3055\u308c\u305f\u6587\u5b57\u5217\u3002SHA-1\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u4f7f\u7528\u3057\u307e\u3059 GitHub Git\u3092\u4f7f\u7528\u3057\u305f\u72ec\u81ea\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u4f1a\u793e\u3002\u30de\u30a4\u30af\u30ed\u30bd\u30d5\u30c8\u306e\u5b50\u4f1a\u793e\u3067\u3001Git\u306e\u5206\u6563\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3068\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u7ba1\u7406\u6a5f\u80fd\u3092\u5168\u3066\u63d0\u4f9b\u3057\u3001\u3055\u3089\u306b\u8ffd\u52a0\u6a5f\u80fd\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002 GitLab CI\u6a5f\u80fd\u3092\u5099\u3048\u305fWeb\u30d9\u30fc\u30b9\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3002 Grafana \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u5206\u6790\u304a\u3088\u3073\u76e3\u8996\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3002 GraphQL API\u306e\u305f\u3081\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u30af\u30a8\u30ea\u3068\u64cd\u4f5c\u8a00\u8a9e\u3001\u304a\u3088\u3073\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u3067\u30af\u30a8\u30ea\u3092\u6e80\u305f\u3059\u305f\u3081\u306e\u30e9\u30f3\u30bf\u30a4\u30e0\u3002 Harbor \u30ed\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u3067\u30a4\u30e1\u30fc\u30b8\u3092\u4fdd\u8b77\u3057\u3001\u30a4\u30e1\u30fc\u30b8\u306e\u8106\u5f31\u6027\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u3001\u4fe1\u983c\u3067\u304d\u308b\u30a4\u30e1\u30fc\u30b8\u3068\u3057\u3066\u7f72\u540d\u3059\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u30ec\u30b8\u30b9\u30c8\u30ea\u3002 Helm Kubernetes\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3067\u3001Kubernetes\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7ba1\u7406\u3059\u308b\u306e\u3092\u52a9\u3051\u307e\u3059\u3002 Helm Charts Helm Charts\u306f\u3001\u6700\u3082\u8907\u96d1\u306aKubernetes\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3001\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u306e\u3092\u52a9\u3051\u307e\u3059\u3002 HTTP \u30cf\u30a4\u30d1\u30fc\u30c6\u30ad\u30b9\u30c8\u8ee2\u9001\u30d7\u30ed\u30c8\u30b3\u30eb\u3002HTTP\u306fWorld Wide Web\u306b\u3088\u3063\u3066\u4f7f\u7528\u3055\u308c\u308b\u57fa\u790e\u7684\u306a\u30d7\u30ed\u30c8\u30b3\u30eb\u3067\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u3069\u306e\u3088\u3046\u306b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3055\u308c\u3001\u4f1d\u9001\u3055\u308c\u3001Web\u30b5\u30fc\u30d0\u30fc\u3068\u30d6\u30e9\u30a6\u30b6\u304c\u3055\u307e\u3056\u307e\u306a\u30b3\u30de\u30f3\u30c9\u306b\u5bfe\u3057\u3066\u3069\u306e\u3088\u3046\u306a\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u53d6\u308b\u3079\u304d\u304b\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 IAM AWS Identity and Access Management(IAM)\u306f\u3001AWS\u30ea\u30bd\u30fc\u30b9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u5b89\u5168\u306b\u5236\u5fa1\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u30a6\u30a7\u30d6\u30b5\u30fc\u30d3\u30b9\u3067\u3059\u3002 IDE \u7d71\u5408\u958b\u767a\u74b0\u5883\u306f\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u306e\u305f\u3081\u306e\u5305\u62ec\u7684\u306a\u65bd\u8a2d\u3092\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u306b\u63d0\u4f9b\u3059\u308b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002IDE\u306b\u306f\u901a\u5e38\u3001\u5c11\u306a\u304f\u3068\u3082\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u30a8\u30c7\u30a3\u30bf\u3001\u30d3\u30eb\u30c9\u81ea\u52d5\u5316\u30c4\u30fc\u30eb\u3001\u30c7\u30d0\u30c3\u30ac\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 Ingress controller Ingress controller\u306f\u3001Kubernetes(\u304a\u3088\u3073\u4ed6\u306e\u30b3\u30f3\u30c6\u30ca\u5316\u3055\u308c\u305f)\u74b0\u5883\u7528\u306e\u7279\u5316\u3057\u305f\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u30fc\u3067\u3059\u3002 IPTables Linux\u30ab\u30fc\u30cd\u30eb\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u3002 Jenkins \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u81ea\u52d5\u5316\u30b5\u30fc\u30d0\u30fc\u3002 JWT JSON Web Token\u3002 k3s \u9ad8\u53ef\u7528\u6027\u3001\u8a8d\u5b9a\u6e08\u307f\u306eKubernetes\u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u3002 k3d k3d\u306f\u3001Docker\u5185\u3067k3s\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u8efd\u91cf\u30e9\u30c3\u30d1\u30fc\u3067\u3059\u3002 k8s Kubernetes\u306e\u6570\u5b57\u8a18\u53f7(K + 8\u6587\u5b57 + s) k8up K8up\u306f\u3001k8s/OpenShift\u30af\u30e9\u30b9\u30bf\u30fc\u4e0a\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u30a2\u30d7\u30ea\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u51e6\u7406\u3059\u308b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u3067\u3059\u3002 Keycloak \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u304a\u3088\u3073\u30a2\u30af\u30bb\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3002 Kibana Elasticsearch\u7528\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u53ef\u8996\u5316\u30d7\u30e9\u30b0\u30a4\u30f3\u3002Elasticsearch\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u4e0a\u3067\u8996\u899a\u5316\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 KinD Docker\u5185\u306eKubernetes - Docker\u30b3\u30f3\u30c6\u30ca\u30fc\u300c\u30ce\u30fc\u30c9\u300d\u3092\u4f7f\u7528\u3057\u3066\u30ed\u30fc\u30ab\u30eb\u306eKubernetes\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u5b9f\u884c\u3059\u308b\u30c4\u30fc\u30eb\u3002Kind\u306f\u4e3b\u306bKubernetes\u81ea\u4f53\u306e\u30c6\u30b9\u30c8\u7528\u306b\u8a2d\u8a08\u3055\u308c\u307e\u3057\u305f\u304c\u3001\u30ed\u30fc\u30b1\u30eb\u958b\u767a\u3084CI\u306b\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 kubectl Kubernetes\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306eKubernetes\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3002 Kubernetes \u30b3\u30f3\u30c6\u30ca\u5316\u3055\u308c\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3001\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3001\u304a\u3088\u3073\u7ba1\u7406\u3092\u81ea\u52d5\u5316\u3059\u308b\u305f\u3081\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30b7\u30b9\u30c6\u30e0\u3002 Lagoon Kubernetes\u306e\u305f\u3081\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30c7\u30ea\u30d0\u30ea\u30fc\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3002 Lagoonize \u3042\u306a\u305f\u306e\u30a2\u30d7\u30ea\u3092Lagoon\u3067\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a\u5909\u66f4\u3002 Lando Docker\u3092\u57fa\u76e4\u306b\u3057\u305f\u7121\u6599\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u3001\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3001\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u304a\u3088\u3073DevOps\u30c4\u30fc\u30eb\u3002 Laravel \u30e2\u30c7\u30eb-\u30d3\u30e5\u30fc-\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc(MVC)\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3044\u3001Symfony\u3092\u57fa\u306b\u3057\u305f\u7121\u6599\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9PHP\u30a6\u30a7\u30d6\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3002 Let's Encrypt \u7121\u6599\u306e\u81ea\u52d5\u5316\u3055\u308c\u305f\u30aa\u30fc\u30d7\u30f3\u306a\u8a8d\u8a3c\u5c40(CA)\u3002 MariaDB MySQL\u306e\u95a2\u4fc2\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u958b\u767a\u7248\u3067\u3001\u5546\u696d\u7684\u306b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u304a\u308a\u3001GNU General Public License\u306e\u4e0b\u3067\u7121\u6599\u3067\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3067\u3042\u308b\u3053\u3068\u3092\u7dad\u6301\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002 Master node \u96c6\u5408\u4f53\u306e\u4e2d\u306e\u5358\u4e00\u306e\u30ce\u30fc\u30c9\u3002 \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u5c02\u9580\u7684\u306a\u90e8\u5206\u306b\u5206\u5272\u3059\u308b\u5b9f\u8df5\u3002\u5404\u90e8\u5206\u306fAPI\u3084HTTP\u306e\u3088\u3046\u306aREST\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u4ecb\u3057\u3066\u4e92\u3044\u306b\u901a\u4fe1\u3057\u307e\u3059\u3002 MongoDB MongoDB\u306f\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u6307\u5411\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3059\u3002NoSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d7\u30ed\u30b0\u30e9\u30e0\u3068\u3057\u3066\u5206\u985e\u3055\u308c\u3001MongoDB\u306f\u30b9\u30ad\u30fc\u30de\u4ed8\u304d\u306eJSON\u98a8\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u30de\u30eb\u30c1\u30c6\u30ca\u30f3\u30c8 \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u5358\u4e00\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u30b5\u30fc\u30d0\u30fc\u4e0a\u3067\u52d5\u4f5c\u3057\u3001\u8907\u6570\u306e\u30c6\u30ca\u30f3\u30c8(\u5171\u901a\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u3092\u5171\u6709\u3059\u308b\u30e6\u30fc\u30b6\u30fc\u30b0\u30eb\u30fc\u30d7)\u306b\u30b5\u30fc\u30d3\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306f\u5404\u30c6\u30ca\u30f3\u30c8\u306b\u30ea\u30bd\u30fc\u30b9\u306e\u4e00\u90e8\u3092\u63d0\u4f9b\u3059\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u3066\u3044\u307e\u3059\u3002 MVC \u30e2\u30c7\u30eb-\u30d3\u30e5\u30fc-\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9 - \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30923\u3064\u306e\u4e3b\u8981\u306a\u8ad6\u7406\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8:\u30e2\u30c7\u30eb\u3001\u30d3\u30e5\u30fc\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306b\u5206\u3051\u308b\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30d1\u30bf\u30fc\u30f3\u3002\u3053\u308c\u3089\u306e\u5404\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7279\u5b9a\u306e\u958b\u767a\u5074\u9762\u3092\u51e6\u7406\u3059\u308b\u3088\u3046\u306b\u69cb\u7bc9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 MySQL MySQL\u306f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3067\u3059\u3002 NGINX NGINX\u306f\u3001\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3001\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u3001\u30e1\u30fc\u30eb\u30d7\u30ed\u30ad\u30b7\u3001HTTP\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u3057\u3066\u3082\u4f7f\u7528\u3067\u304d\u308b\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3067\u3059\u3002 \u30ce\u30fc\u30c9 \u5358\u4e00\u306eEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9( Node.js \u30d6\u30e9\u30a6\u30b6\u30fc\u306e\u5916\u90e8\u3067JavaScript\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306eJavaScript\u30e9\u30f3\u30bf\u30a4\u30e0\u74b0\u5883\u3002 Open source \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304c\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u4e0b\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u3001\u8457\u4f5c\u6a29\u8005\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u7814\u7a76\u3001\u5909\u66f4\u3001\u304a\u3088\u3073\u4efb\u610f\u306e\u76ee\u7684\u3067\u8ab0\u306b\u3067\u3082\u914d\u5e03\u3059\u308b\u6a29\u5229\u3092\u4ed8\u4e0e\u3059\u308b\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u4e00\u7a2e\u3002\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306f\u3001\u5171\u540c\u306e\u516c\u958b\u65b9\u5f0f\u3067\u958b\u767a\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 OpenSearch \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u4e3b\u5c0e\u306e\u3001Apache 2.0\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u691c\u7d22\u304a\u3088\u3073\u5206\u6790\u30b9\u30a4\u30fc\u30c8\u3067\u3001\u30c7\u30fc\u30bf\u306e\u53d6\u308a\u8fbc\u307f\u3001\u691c\u7d22\u3001\u8996\u899a\u5316\u3001\u5206\u6790\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002 OpenShift Docker\u3068Kubernetes\u3092\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba\u306b\u3082\u305f\u3089\u3059\u30b3\u30f3\u30c6\u30ca\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3002 PHP PHP(Personal Home Page)\u306f\u3001Web\u958b\u767a\u306e\u305f\u3081\u306b\u5143\u3005\u8a2d\u8a08\u3055\u308c\u305f\u6c4e\u7528\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 PhpStorm PHP\u3068Web\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u305f\u3081\u306e\u958b\u767a\u30c4\u30fc\u30eb(IDE)\u3002 Pod \u540c\u3058\u30db\u30b9\u30c8\u4e0a\u306b\u4e00\u7dd2\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u30b3\u30f3\u30c6\u30ca\u306e\u30b0\u30eb\u30fc\u30d7\u3002 Kubernetes\u304c\u6271\u3046\u57fa\u672c\u5358\u4f4d\u3002 PostgreSQL \u62e1\u5f35\u6027\u3068\u6280\u8853\u6a19\u6e96\u306e\u6e96\u62e0\u3092\u5f37\u8abf\u3057\u305f\u7121\u6599\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3002 Public/Private Key \u516c\u958b\u9375/\u79d8\u5bc6\u9375 Puppet \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u8a2d\u5b9a\u7ba1\u7406\u304a\u3088\u3073\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30c4\u30fc\u30eb\u3002 PV PersistentVolume - \u7ba1\u7406\u8005\u304c\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3057\u305f\u3001\u307e\u305f\u306fStorage Classes\u3092\u4f7f\u7528\u3057\u3066\u52d5\u7684\u306b\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u3055\u308c\u305f\u30af\u30e9\u30b9\u30bf\u5185\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u4e00\u90e8\u3002 PVC Persistent Volume Claim - \u30e6\u30fc\u30b6\u30fc\u306b\u3088\u308b\u30b9\u30c8\u30ec\u30fc\u30b8\u8981\u6c42\u3002 Pygmy amazee.io\u304c\u63d0\u4f9b\u3059\u308b\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u30b7\u30b9\u30c6\u30e0\u3002 Python Python\u306f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u3067\u3001\u89e3\u91c8\u3055\u308c\u3001\u9ad8\u30ec\u30d9\u30eb\u3067\u3001\u4e00\u822c\u7684\u306a\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3067\u3059\u3002 RabbitMQ \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u30d6\u30ed\u30fc\u30ab\u30fc\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3002 RBAC \u30ed\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1 RDS \u95a2\u4fc2\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9 Redis \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30a8\u30f3\u30b8\u30f3\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u30d6\u30ed\u30fc\u30ab\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30a4\u30f3\u30e1\u30e2\u30ea\u30c7\u30fc\u30bf\u30b9\u30c8\u30a2\u3002 Restic \u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d7\u30ed\u30b0\u30e9\u30e0\u3002 ROX Kubernetes\u306e\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9ReadOnlyMany - \u30dc\u30ea\u30e5\u30fc\u30e0\u306f\u591a\u304f\u306e\u30ce\u30fc\u30c9\u3067\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3068\u3057\u3066\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u3059\u3002 Ruby \u8907\u6570\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d1\u30e9\u30c0\u30a4\u30e0\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u89e3\u91c8\u578b\u306e\u9ad8\u30ec\u30d9\u30eb\u6c4e\u7528\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3002\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u5f37\u8abf\u70b9\u3068\u3057\u3066\u8a2d\u8a08\u3055\u308c\u307e\u3057\u305f\u3002 \u751f\u7523\u6027\u3068\u30b7\u30f3\u30d7\u30eb\u3055\u3002Ruby\u3067\u306f\u3001\u3059\u3079\u3066\u304c\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3042\u308a\u3001\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u306a\u30c7\u30fc\u30bf\u578b\u3082\u4f8b\u5916\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 RWO Kubernetes\u306e\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9ReadWriteOnce - \u30dc\u30ea\u30e5\u30fc\u30e0\u306f\u5358\u4e00\u306e\u30ce\u30fc\u30c9\u306b\u3088\u3063\u3066\u8aad\u307f\u66f8\u304d\u53ef\u80fd\u3068\u3057\u3066\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u3059\u3002ReadWriteOnce\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9\u3067\u306f\u3001\u540c\u3058\u30ce\u30fc\u30c9\u4e0a\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u8907\u6570\u306e\u30dd\u30c3\u30c9\u304c\u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002 RWOP Kubernetes\u306e\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9ReadWriteOncePod - \u30dc\u30ea\u30e5\u30fc\u30e0\u306f\u5358\u4e00\u306ePod\u306b\u3088\u3063\u3066\u8aad\u307f\u66f8\u304d\u53ef\u80fd\u3068\u3057\u3066\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u3059\u3002\u30af\u30e9\u30b9\u30bf\u5168\u4f53\u3067\u305f\u3060\u4e00\u3064\u306e\u30dd\u30c3\u30c9\u306e\u307f\u304c\u305d\u306ePVC\u3092\u8aad\u307f\u66f8\u304d\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u305f\u3044\u5834\u5408\u306f\u3001ReadWriteOncePod\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306fCSI\u30dc\u30ea\u30e5\u30fc\u30e0\u3068Kubernetes\u30d0\u30fc\u30b8\u30e7\u30f31.22+\u3067\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 RWX Kubernetes\u306e\u30a2\u30af\u30bb\u30b9\u30e2\u30fc\u30c9ReadWriteMany - \u30dc\u30ea\u30e5\u30fc\u30e0\u306f\u591a\u6570\u306e\u30ce\u30fc\u30c9\u306b\u3088\u3063\u3066\u8aad\u307f\u66f8\u304d\u53ef\u80fd\u3068\u3057\u3066\u30de\u30a6\u30f3\u30c8\u3067\u304d\u307e\u3059\u3002 S3 Amazon Simple Storage Service\u3002 SBOM \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u90e8\u54c1\u8868\u3002 SHA-1 Secure Hash Algorithm 1\u3001\u5165\u529b\u3092\u53d6\u308a\u3001160\u30d3\u30c3\u30c8\u306e\u30cf\u30c3\u30b7\u30e5\u5024(\u901a\u5e38\u306f40\u6841\u306e16\u9032\u6570\u3067\u8868\u793a)\u3092\u751f\u6210\u3059\u308b\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3002\u3053\u308c\u306f\u30a2\u30e1\u30ea\u30ab\u56fd\u5bb6\u5b89\u5168\u4fdd\u969c\u5c40\u306b\u3088\u3063\u3066\u8a2d\u8a08\u3055\u308c\u3001\u7c73\u56fd\u9023\u90a6\u60c5\u5831\u51e6\u7406\u6a19\u6e96\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002 Solr Java\u3067\u66f8\u304b\u308c\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30a8\u30f3\u30bf\u30fc\u30d7\u30e9\u30a4\u30ba\u691c\u7d22\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3002 SSH \u30bb\u30ad\u30e5\u30a2 SSL \u30bb\u30ad\u30e5\u30a2\u30bd\u30b1\u30c3\u30c8\u30ec\u30a4\u30e4\u30fc \u30b9\u30c8\u30ec\u30fc\u30b8\u30af\u30e9\u30b9 \u30b9\u30c8\u30ec\u30fc\u30b8\u30af\u30e9\u30b9\u306f\u3001Kubernetes\u306e\u7ba1\u7406\u8005\u304c\u63d0\u4f9b\u3059\u308b\u300c\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u30af\u30e9\u30b9\u300d\u3092\u8a18\u8ff0\u3059\u308b\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u7570\u306a\u308b\u30af\u30e9\u30b9\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u54c1\u8cea\u30ec\u30d9\u30eb\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30dd\u30ea\u30b7\u30fc\u3001\u307e\u305f\u306f\u30af\u30e9\u30b9\u30bf\u30fc\u7ba1\u7406\u8005\u306b\u3088\u3063\u3066\u6c7a\u5b9a\u3055\u308c\u308b\u4efb\u610f\u306e\u30dd\u30ea\u30b7\u30fc\u306b\u30de\u30c3\u30d7\u3055\u308c\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093 Symfony Symfony\u306fPHP\u306eWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u518d\u5229\u7528\u53ef\u80fd\u306aPHP\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8/\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30bb\u30c3\u30c8\u3067\u3001Drupal 8\u4ee5\u964d\u306fSymfony\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002 TCP \u30c8\u30e9\u30f3\u30b9\u30df\u30c3\u30b7\u30e7\u30f3\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30d7\u30ed\u30c8\u30b3\u30eb\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u30c7\u30fc\u30bf\u3092\u4ea4\u63db\u3067\u304d\u308b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u4f1a\u8a71\u3092\u78ba\u7acb\u3057\u7dad\u6301\u3059\u308b\u65b9\u6cd5\u3092\u5b9a\u7fa9\u3059\u308b\u6a19\u6e96\u3002 TLS \u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8\u5c64\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 Trivy CI\u306b\u9069\u3057\u305f\u30b7\u30f3\u30d7\u30eb\u3067\u5305\u62ec\u7684\u306a\u30b3\u30f3\u30c6\u30ca\u306e\u8106\u5f31\u6027\u30b9\u30ad\u30e3\u30ca\u3002 TTL Time to live\u307e\u305f\u306fhop limit\u306f\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u307e\u305f\u306f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5185\u306e\u30c7\u30fc\u30bf\u306e\u5bff\u547d\u307e\u305f\u306f\u751f\u5b58\u671f\u9593\u3092\u5236\u9650\u3059\u308b\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002 Uptime Robot \u30a2\u30c3\u30d7\u30bf\u30a4\u30e0\u76e3\u8996\u30b5\u30fc\u30d3\u30b9\u3002 Varnish \u5f37\u529b\u306a\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306eHTTP\u30a8\u30f3\u30b8\u30f3/\u30ea\u30d0\u30fc\u30b9HTTP\u30d7\u30ed\u30ad\u30b7\u3067\u3001\u30e6\u30fc\u30b6\u304c\u521d\u3081\u3066Web\u30da\u30fc\u30b8\u306e\u30b3\u30d4\u30fc\u3092\u30ad\u30e3\u30c3\u30b7\u30e5(\u307e\u305f\u306f\u4fdd\u5b58)\u3059\u308b\u3053\u3068\u3067Web\u30b5\u30a4\u30c8\u306e\u901f\u5ea6\u3092\u4e0a\u3052\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 VM \u30d0\u30fc\u30c1\u30e3\u30eb\u30de\u30b7\u30f3 Webhook Webhook\u306f\u3001GitHub\u3001GitLab\u3001Bitbucket\u306a\u3069\u306e\u30a2\u30d7\u30ea\u304c\u4ed6\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u5373\u6642\u30c7\u30fc\u30bf\u3092\u63d0\u4f9b\u3057\u3001\u4f55\u304b(\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306a\u3069)\u306b\u5bfe\u3057\u3066\u884c\u52d5\u3092\u8d77\u3053\u3059\u65b9\u6cd5\u3067\u3059\u3002 YAML YAML Ain't Markup Language - YAML\u306f\u4eba\u9593\u304c\u8aad\u307f\u3084\u3059\u3044\u30c7\u30fc\u30bf\u30b7\u30ea\u30a2\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3\u8a00\u8a9e\u3067\u3059\u3002\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3084\u3001\u30c7\u30fc\u30bf\u304c\u4fdd\u5b58\u307e\u305f\u306f\u9001\u4fe1\u3055\u308c\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002"},{"location":"ja/resources/tutorials-and-webinars/","title":"\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3001\u30a6\u30a7\u30d3\u30ca\u30fc\u3001\u30d3\u30c7\u30aa","text":""},{"location":"ja/resources/tutorials-and-webinars/#lagoon","title":"Lagoon\u30a6\u30a7\u30d3\u30ca\u30fc\u5165\u9580","text":"[\u30b9\u30e9\u30a4\u30c9]
"},{"location":"ja/resources/tutorials-and-webinars/#lagoonlando","title":"Lagoon\u3068\u5171\u306b\u9032\u5316\u3059\u308bLando","text":""},{"location":"ja/resources/tutorials-and-webinars/#-lagoon","title":"\u30a6\u30a7\u30d3\u30ca\u30fc - Lagoon\u30a4\u30f3\u30b5\u30a4\u30c8","text":""},{"location":"ja/resources/tutorials-and-webinars/#lagoon_1","title":"Lagoon\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30c7\u30e2","text":""},{"location":"ja/resources/tutorials-and-webinars/#lagoondrupal","title":"Lagoon\u3092\u4f7f\u3063\u3066\u8907\u6570\u306eDrupal\u30b5\u30a4\u30c8\u3092\u7ba1\u7406\u3059\u308b\u65b9\u6cd5","text":"[\u30b9\u30e9\u30a4\u30c9]
"},{"location":"ja/resources/tutorials-and-webinars/#kubernetes101","title":"Kubernetes\u30a6\u30a7\u30d3\u30ca\u30fc101","text":"[\u30b9\u30e9\u30a4\u30c9]
"},{"location":"ja/resources/tutorials-and-webinars/#kubernetes102","title":"Kubernetes\u30a6\u30a7\u30d3\u30ca\u30fc102","text":"[\u30b9\u30e9\u30a4\u30c9]
"},{"location":"ja/resources/tutorials-and-webinars/#11000","title":"\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9:\u79c1\u305f\u3061\u304c\u6708\u306b1\u51041000\u4e07\u56de\u30d2\u30c3\u30c8\u3059\u308b\u5206\u96e2\u578b\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3092\u904b\u55b6\u3059\u308b\u65b9\u6cd5","text":""},{"location":"ja/resources/tutorials-and-webinars/#lagoondrupaldocker","title":"Lagoon:\u30d5\u30ebDrupal\u30b5\u30dd\u30fc\u30c8\u4ed8\u304d\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9Docker\u30d3\u30eb\u30c9\uff06\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30b7\u30b9\u30c6\u30e0","text":""},{"location":"ja/resources/tutorials-and-webinars/#kibana","title":"Kibana\u3067\u5185\u90e8\u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc\u3092\u4fee\u6b63\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#_2","title":"\u65b0\u3057\u3044\u30eb\u30fc\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#_3","title":"\u30d3\u30eb\u30c9\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u306f\u3069\u306e\u3088\u3046\u306b\u78ba\u8a8d\u3057\u307e\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#lagoon_2","title":"Lagoon\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3088\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#_4","title":"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c0\u30f3\u30d7\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3088\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#_5","title":"\u30af\u30ed\u30f3\u30b8\u30e7\u30d6\u3092\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3088\u3044\u3067\u3059\u304b\uff1f","text":""},{"location":"ja/resources/tutorials-and-webinars/#kubernetesweb-toby-bellwood-techweek21","title":"Kubernetes\u306bWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b - Toby Bellwood | Techweek21\u30c8\u30fc\u30af","text":""},{"location":"ja/resources/tutorials-and-webinars/#covid-19-sean-hamlin-techweek21","title":"Covid-19\u4e2d\u306b\u524d\u4f8b\u306e\u306a\u3044\u898f\u6a21\u3067\u5bfe\u51e6\u3059\u308b - Sean Hamlin| Techweek21\u30c8\u30fc\u30af","text":""},{"location":"ja/resources/tutorials-and-webinars/#silverstripe-on-lagoon-thom-toogood-techweek21","title":"\u30ed\u30fc\u30ab\u30eb\u304b\u3089\u30e9\u30a4\u30d6\u3078\u306eSilverstripe on Lagoon -Thom Toogood | Techweek21\u30c8\u30fc\u30af","text":""},{"location":"ja/using-lagoon-advanced/","title":"Lagoon\u306e\u9ad8\u5ea6\u306a\u4f7f\u3044\u65b9","text":"\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Lagoon\u306e\u3088\u308a\u9ad8\u5ea6\u306a\u6a5f\u80fd\u3084\u7279\u5fb4\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002Lagoon\u304c\u521d\u3081\u3066\u306e\u65b9\u306f\u3001\u307e\u305aLagoon\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u304b\u3089\u59cb\u3081\u3066\u304f\u3060\u3055\u3044\u3002
\u30b5\u30dd\u30fc\u30c8\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u304b\u3001\u79c1\u305f\u3061\u306eDiscord\u3067\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30e1\u30f3\u30d0\u30fc\u3084\u30e1\u30f3\u30c6\u30ca\u30fc\u306b\u554f\u3044\u5408\u308f\u305b\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/active-standby/#_1","title":"\u8a2d\u5b9a","text":"\u65e2\u5b58\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092Active/Standby\u306b\u5bfe\u5fdc\u3055\u305b\u308b\u305f\u3081\u306b\u306f\u3001Lagoon API\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u3092\u3044\u304f\u3064\u304b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
productionEnviromment
\u306f\u3001\u73fe\u5728\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u74b0\u5883\u306e\u30d6\u30e9\u30f3\u30c1\u540d\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 standbyProductionEnvironment
\u306f\u3001\u73fe\u5728\u30b9\u30bf\u30f3\u30d0\u30a4\u4e2d\u306e\u74b0\u5883\u306e\u30d6\u30e9\u30f3\u30c1\u540d\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u306e\u66f4\u65b0mutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionEnvironment:\"production-brancha\"\nstandbyProductionEnvironment:\"production-branchb\"\n}\n}){\nstandbyProductionEnvironment\nname\nproductionEnvironment\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/active-standby/#lagoonyml-production_routes","title":".lagoon.yml
- production_routes
","text":".lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092Active/Standby\u306b\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u306f\u3001active
\u74b0\u5883\u306b\u30a2\u30bf\u30c3\u30c1\u3057\u305f\u3044\u30eb\u30fc\u30c8\u3068standby
\u74b0\u5883\u306b\u30a2\u30bf\u30c3\u30c1\u3057\u305f\u3044\u30eb\u30fc\u30c8\u3092production_routes
\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002Active/Standby\u306e\u5207\u308a\u66ff\u3048\u6642\u306b\u306f\u3001\u3053\u308c\u3089\u306e\u30eb\u30fc\u30c8\u306f2\u3064\u306e\u74b0\u5883\u9593\u3067\u79fb\u884c\u3057\u307e\u3059\u3002
production-brancha
\u3068production-branchb
\u306e2\u3064\u306eproduction
\u74b0\u5883\u304c\u3042\u308a\u3001\u73fe\u5728\u30a2\u30af\u30c6\u30a3\u30d6\u306aproduction
\u74b0\u5883\u304cproduction-brancha
\u3067\u3042\u308b\u5834\u5408\uff1a
production_routes.active
\u914d\u4e0b\u306e\u30eb\u30fc\u30c8\u306fproduction-brancha
\u306b\u5411\u304b\u308f\u305b\u307e\u3059\u3002 production_routes.standby
\u914d\u4e0b\u306e\u30eb\u30fc\u30c8production-branchb
\u306b\u5411\u304b\u308f\u305b\u307e\u3059\u3002
Active/Standby\u306e\u5207\u308a\u66ff\u3048\u6642\u306b\u306f\u3001\u30eb\u30fc\u30c8\u304c\u5165\u308c\u66ff\u308f\u308a\u307e\u3059:
production_routes.active
\u914d\u4e0b\u306e\u30eb\u30fc\u30c8\u306fproduction-branchb
\u306b\u5411\u304b\u308f\u305b\u307e\u3059\u3002 production_routes.standby
\u914d\u4e0b\u306e\u30eb\u30fc\u30c8\u306fproduction-brancha
\u306b\u5411\u304b\u308f\u305b\u307e\u3059\u3002
.lagoon.ymlproduction_routes:\nactive:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'false'\n- active.example.com:\ntls-acme: 'false'\nstandby:\nroutes:\n- nginx:\n- standby.example.com:\ntls-acme: 'false'\n
\u60c5\u5831
environments..routes
\u30bb\u30af\u30b7\u30e7\u30f3\u914d\u4e0b\u306b\u3042\u308b\u30eb\u30fc\u30c8\u306f\u3001Active/Standby\u306e\u4e00\u90e8\u3068\u3057\u3066\u79fb\u52d5\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u3089\u306e\u30eb\u30fc\u30c8\u306f\u5e38\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u306b\u30a2\u30bf\u30c3\u30c1\u3055\u308c\u307e\u3059\u3002Active/Standby\u306e\u5207\u308a\u66ff\u3048\u4e2d\u306b\u7279\u5b9a\u306e\u30eb\u30fc\u30c8\u3092\u79fb\u884c\u3059\u308b\u5fc5\u7528\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3089\u3092\u74b0\u5883\u30bb\u30af\u30b7\u30e7\u30f3\u304b\u3089\u524a\u9664\u3057\u3001Active\u307e\u305f\u306f\u3001Standby\u30eb\u30fc\u30c8\u56fa\u6709\u306eproduction_routes
\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u914d\u7f6e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 .lagoon.yml
\u306e\u30eb\u30fc\u30c8\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u306f\u3053\u3061\u3089\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/active-standby/#_2","title":"\u5207\u308a\u66ff\u3048\u30a4\u30d9\u30f3\u30c8\u306e\u30c8\u30ea\u30ac\u30fc","text":""},{"location":"ja/using-lagoon-advanced/active-standby/#ui","title":"UI\u7d4c\u7531","text":"\u74b0\u5883\u30eb\u30fc\u30c8\u306e\u5207\u308a\u66ff\u3048\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u306b\u306f\u3001Lagoon UI\u3067Standby
\u74b0\u5883\u3092\u8a2a\u308c\u3001Switch Active/Standby environments
\u3068\u3044\u3046\u30e9\u30d9\u30eb\u306e\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u78ba\u8a8d\u3059\u308b\u3088\u3046\u306b\u6c42\u3081\u3089\u308c\u307e\u3059\u3002
\u78ba\u8a8d\u3059\u308b\u3068\u3001\u30bf\u30b9\u30af\u30da\u30fc\u30b8\u306b\u79fb\u52d5\u3057\u3001\u5207\u308a\u66ff\u3048\u306e\u9032\u6357\u72b6\u6cc1\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/active-standby/#api","title":"API\u7d4c\u7531","text":"\u74b0\u5883\u3092\u5207\u308a\u66ff\u3048\u308b\u30a4\u30d9\u30f3\u30c8\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u306b\u306f\u3001\u6b21\u306eGraphQL mutation\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Lagoon\u304c\u30d7\u30ed\u30bb\u30b9\u3092\u958b\u59cb\u3057\u307e\u3059\u3002
\u30a2\u30af\u30c6\u30a3\u30d6\u30b9\u30bf\u30f3\u30d0\u30a4\u30b9\u30a4\u30c3\u30c1mutation ActiveStandby {\nswitchActiveStandby(\ninput:{\nproject:{\nname:\"drupal-example\"\n}\n}\n){\nid\nremoteId\n}\n}\n
\u5207\u308a\u66ff\u3048\u30a4\u30d9\u30f3\u30c8\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u308b\u3068\u3001\u73fe\u5728\u306e\u30a2\u30af\u30c6\u30a3\u30d6\u74b0\u5883\u306e tasks
\u30bf\u30d6\u306b\u30bf\u30b9\u30af\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\u3053\u3053\u3067\u5207\u308a\u66ff\u3048\u306e\u72b6\u614b\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
remoteId
\u3092\u4f7f\u7528\u3057\u3066\u3001switchActiveStandby
mutation\u304b\u3089\u30bf\u30b9\u30af\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u30bf\u30b9\u30af\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u78ba\u8a8dquery getTask {\ntaskByRemoteId(id: \"<remoteId>\") {\nid\nname\ncreated\nstarted\ncompleted\nstatus\nlogs\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/active-standby/#drush","title":"drush
\u30a8\u30a4\u30ea\u30a2\u30b9","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u4ee5\u4e0b\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u304c\u4f5c\u6210\u3055\u308c\u3001Active/Standby\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u306b\u5229\u7528\u3067\u304d\u307e\u3059\u3002
lagoon-production
lagoon-standby
lagoon-production
\u30a8\u30a4\u30ea\u30a2\u30b9\u306fproductionEnvironment
\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30b5\u30a4\u30c8\u3092\u6307\u3057\u3001lagoon-standby
\u306f\u5e38\u306bstandbyProductionEnvironment
\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30b5\u30a4\u30c8\u3092\u6307\u3057\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u66f4\u65b0\u306b\u3088\u3063\u3066\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u305d\u308c\u3089\u3092\u5909\u66f4\u3059\u308b\u3068\u3001\u305d\u308c\u3089\u306b\u4f9d\u5b58\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Drush\u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u66f4\u65b0mutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionAlias:\"custom-lagoon-production-alias\"\nstandbyAlias:\"custom-lagoon-standby-alias\"\n}\n}){\nproductionAlias\nname\nstandbyAlias\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/active-standby/#activestandby_1","title":"Active/Standby\u306e\u7121\u52b9\u5316","text":"\u3053\u308c\u30892\u3064\u306e\u30d6\u30e9\u30f3\u30c1\u306e\u3046\u3061\u3001\u3069\u3061\u3089\u3092\u4e3b\u306a\u74b0\u5883\u3068\u3057\u3066\u9032\u3081\u3066\u3044\u304f\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001 \u305d\u308c\u304c\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30d6\u30e9\u30f3\u30c1\u3068\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002(\u4f8b:production-branchb
)
- \u3053\u306e\u73fe\u5728\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30d6\u30e9\u30f3\u30c1\u306e
.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u3001production_routes.active.routes
\u30bb\u30af\u30b7\u30e7\u30f3\u304b\u3089\u30eb\u30fc\u30c8\u3092environments.production-branchb
\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u305d\u306e\u30eb\u30fc\u30c8\u304cproduction-branchb environment
\u306b\u306e\u307f\u95a2\u9023\u4ed8\u3051\u3089\u308c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002 - \u3053\u308c\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001
.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u5b8c\u5168\u306bproduction_routes\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u524a\u9664\u3057\u3001production-branchb\u74b0\u5883\u3092\u518d\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u307e\u3059\u3002 - \u3082\u30461\u3064\u306e\u30d6\u30e9\u30f3\u30c1\u3067\u3042\u308b
production-brancha
\u304c\u5fc5\u8981\u306a\u3044\u5834\u5408\u306f\u524a\u9664\u3057\u3066\u3082\u304b\u307e\u3044\u307e\u305b\u3093\u3002 - Git\u306b\u30d6\u30e9\u30f3\u30c1\u3092\u4fdd\u6301\u3059\u308b\u5834\u5408\u3001\u6df7\u4e71\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u306e
.lagoon.yml
\u304b\u3089\u3082production_routes
\u3092\u524a\u9664\u3057\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u30d6\u30e9\u30f3\u30c1\u306f\u524a\u9664\u3057\u3066\u518d\u30c7\u30d7\u30ed\u30a4(\u3059\u3079\u3066\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306a\u3069\u3092\u6d88\u53bb)\u3059\u308b\u307e\u3067production
\u30bf\u30a4\u30d7\u3068\u3057\u3066\u6b8b\u308a\u307e\u3059\u3002 - \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c
production-branchb
\u306eproduction
\u74b0\u5883\u306e\u307f\u3067\u3001\u4ed6\u306e\u3059\u3079\u3066\u306e\u74b0\u5883\u304cdevelopment
\u74b0\u5883\u3067\u3042\u308b\u72b6\u614b\u306b\u306a\u3063\u305f\u3089\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u66f4\u65b0\u3057\u3066standbyProductionEnvironment
\u3092\u524a\u9664\u3057\u3001\u74b0\u5883\u306eActive/Standby\u30e9\u30d9\u30eb\u3092\u6d88\u53bb\u3057\u307e\u3059\u3002
\u30a2\u30af\u30c6\u30a3\u30d6/\u30b9\u30bf\u30f3\u30d0\u30a4\u3092\u30aa\u30d5\u306b\u3059\u308bmutation updateProject {\nupdateProject(input:{\nid:1234\npatch:{\nproductionEnvironment:\"production-branchb\"\nstandbyProductionEnvironment:\"\"\n}\n}){\nstandbyProductionEnvironment\nname\nproductionEnvironment\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/active-standby/#_3","title":"\u30ce\u30fc\u30c8","text":"Active/Standby\u30c8\u30ea\u30ac\u30fc\u304c\u5b9f\u884c\u3055\u308c\u305f\u3068\u304d\u3001productionEnvironment
\u3068standbyProductionEnvironments
\u306fLagoon API\u5185\u3067\u5207\u308a\u66ff\u308f\u308a\u307e\u3059\u3002\u4e21\u65b9\u306e\u74b0\u5883\u306f\u307e\u3060production
\u74b0\u5883\u30bf\u30a4\u30d7\u3068\u3057\u3066\u5206\u985e\u3055\u308c\u3066\u3044\u307e\u3059\u3002productionEnvironment
\u306f\u3069\u3061\u3089\u304cactive
\u3068\u30e9\u30d9\u30eb\u4ed8\u3051\u3055\u308c\u3066\u3044\u308b\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002\u74b0\u5883\u30bf\u30a4\u30d7\u306e\u9055\u3044\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306f\u3001environment types
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002
GraphQL\u3092\u4f7f\u3063\u3066\u74b0\u5883\u3092\u53d6\u5f97\u3059\u308bquery projectByName {\nprojectByName(name:\"drupal-example\"){\nproductionEnvironment\nstandbyProductionEnvironment\n}\n}\n
\u74b0\u5883\u3092\u5207\u308a\u66ff\u3048\u308b\u524d
\u74b0\u5883\u30af\u30a8\u30ea\u306e\u7d50\u679c{\n\"data\": {\n\"projectByName\": {\n\"productionEnvironment\": \"production-brancha\",\n\"standbyProductionEnvironment\": \"production-branchb\"\n}\n}\n}\n
\u74b0\u5883\u3092\u5207\u308a\u66ff\u3048\u305f\u5f8c
\u74b0\u5883\u30af\u30a8\u30ea\u306e\u7d50\u679c{\n\"data\": {\n\"projectByName\": {\n\"productionEnvironment\": \"production-branchb\",\n\"standbyProductionEnvironment\": \"production-brancha\"\n}\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/blackfire/","title":"\u30d6\u30e9\u30c3\u30af\u30d5\u30a1\u30a4\u30a2","text":""},{"location":"ja/using-lagoon-advanced/blackfire/#blackfire","title":"Blackfire\u306e\u5909\u6570","text":"Lagoon Base Images\u306b\u306f\u3001PHP Images\u306bBlackfire\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u307e\u3059\u3002(PHP images\u3092\u53c2\u7167)
Lagoon\u3067Blackfire\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e3\u3064\u306e\u74b0\u5883\u5909\u6570\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
\u74b0\u5883\u5909\u6570 \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e BLACKFIRE_ENABLED
(\u8a2d\u5b9a\u306a\u3057) TRUE
\u307e\u305f\u306ftrue
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067blackfire
\u62e1\u5f35\u3092\u6709\u52b9\u306b\u3059\u308b\u3002 BLACKFIRE_SERVER_ID
(\u8a2d\u5b9a\u306a\u3057) Blackfire.io\u304b\u3089\u63d0\u4f9b\u3055\u308c\u308bBlackfire Server ID\u306b\u8a2d\u5b9a\u3059\u308b\u3002BLACKFIRE_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002 BLACKFIRE_SERVER_TOKEN
(\u8a2d\u5b9a\u306a\u3057) Blackfire.io\u304b\u3089\u63d0\u4f9b\u3055\u308c\u308bBlackfire Server Token\u306b\u8a2d\u5b9a\u3059\u308b\u3002BLACKFIRE_ENABLED
\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002"},{"location":"ja/using-lagoon-advanced/blackfire/#blackfire_1","title":"Blackfire\u306e\u30ed\u30fc\u30ab\u30eb\u4f7f\u7528","text":"Lagoon Images\u3067Blackfire\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u4e0a\u8a18\u306e\u74b0\u5883\u5909\u6570\u3092PHP\u30b3\u30f3\u30c6\u30ca\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306fDrupal\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f8b\u3067\u3059\u3002
docker-compose.ymlservices:\n[[snip]]\nphp:\n[[snip]]\nenvironment:\n<< : *default-environment # \u5b9a\u7fa9\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u3092\u4e0a\u304b\u3089\u8aad\u307f\u8fbc\u3080\nBLACKFIRE_ENABLED: TRUE\nBLACKFIRE_SERVER_ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\nBLACKFIRE_SERVER_TOKEN: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n
\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u8d77\u52d5\u3057\u305f\u5f8c\u3001Blackfire\u30d6\u30e9\u30a6\u30b6\u30d7\u30e9\u30b0\u30a4\u30f3\u307e\u305f\u306fBlackfire CLI\u3092\u901a\u3058\u3066\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/blackfire/#blackfire_2","title":"Blackfire\u306e\u30ea\u30e2\u30fc\u30c8\u4f7f\u7528","text":"\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305fLagoon\u74b0\u5883\u3067Blackfire\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u540c\u3058\u74b0\u5883\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u6642\u3001Lagoon\u306b\u74b0\u5883\u5909\u6570\u3092\u8ffd\u52a0\u3059\u308b\u65b9\u6cd5\u3067\u8a2d\u5b9a\u3057\u307e\u3059\u3002
\u91cd\u8981
\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u7528\u306bdocker-compose.yml
\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u306fLagoon\u306e\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u3067\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\uff01
"},{"location":"ja/using-lagoon-advanced/blackfire/#_2","title":"\u30c7\u30d0\u30c3\u30b0","text":"PHP\u30b3\u30f3\u30c6\u30ca\u3067\u52d5\u4f5c\u3057\u3066\u3044\u308bBlackfire\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306f\u3001\u901a\u5e38\u306e\u30b3\u30f3\u30c6\u30ca\u30ed\u30b0\u3068\u3057\u3066\u30ed\u30b0\u3092\u51fa\u529b\u3057\u307e\u3059\u3002\u3053\u308c\u306fdocker-compose logs
\u307e\u305f\u306f\u30ea\u30e2\u30fc\u30c8\u74b0\u5883\u306eLagoon Logging Infrastructure
\u3092\u901a\u3058\u3066\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30ed\u30b0\u306f\u30ec\u30d9\u30eb3
(\u60c5\u5831)\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u74b0\u5883\u5909\u6570BLACKFIRE_LOG_LEVEL
\u3092\u4f7f\u3063\u3066\u30ec\u30d9\u30eb\u30924
(\u30c7\u30d0\u30c3\u30b0)\u306b\u4e0a\u3052\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u591a\u304f\u306e\u60c5\u5831\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/","title":"\u30ab\u30b9\u30bf\u30e0\u30bf\u30b9\u30af","text":"Lagoon\u3067\u306f\u3001\u74b0\u5883\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3001\u30b0\u30eb\u30fc\u30d7\u30ec\u30d9\u30eb\u3067\u30ab\u30b9\u30bf\u30e0\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u73fe\u5728\u3001\u3053\u308c\u306fGraphQL API\u3092\u901a\u3058\u3066\u884c\u308f\u308c\u3001UI\u3067\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_2","title":"\u30ab\u30b9\u30bf\u30e0\u30bf\u30b9\u30af\u306e\u5b9a\u7fa9","text":"\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b\u969b\u306b\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u3053\u3068\u3092\u6c7a\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_3","title":"\u3069\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3057\u307e\u3059\u304b\uff1f","text":"\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u5b9f\u884c\u3059\u308b\u30ab\u30b9\u30bf\u30e0\u30bf\u30b9\u30af\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30f3\u30c6\u30ca\u306e\u4e00\u3064\u3067\u30b7\u30a7\u30eb\u304b\u3089\u5b9f\u884c\u3055\u308c\u308b\u3082\u306e\u3067\u3059\u3002
\u4f8b\u3048\u3070\u3001Node.js\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001node
\u30b3\u30f3\u30c6\u30ca\u3067yarn audit
\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306b\u8208\u5473\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u5834\u5408\u30b3\u30de\u30f3\u30c9\u306f\u5358\u7d14\u306byarn audit
\u3068\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_4","title":"\u3053\u306e\u30bf\u30b9\u30af\u306f\u3069\u3053\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u304b\uff1f","text":"\u3053\u306e\u30bf\u30b9\u30af\u304c\u3069\u3053\u3067\u5b9f\u884c\u3055\u308c\u308b\u304b\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u4e8c\u3064\u306e\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u307e\u305a\u3001\u3069\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u307e\u305f\u306f\u74b0\u5883\u3067\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u304b\u3001\u305d\u3057\u3066\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u884c\u3046\u304b\u3067\u3059\u3002
\u305f\u3068\u3048\u3070\u3001yarn audit
\u30bf\u30b9\u30af\u3092\u7279\u5b9a\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8(\u3053\u306e\u4f8b\u3067\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eID\u309242\u3068\u3057\u307e\u3057\u3087\u3046)\u306e\u4efb\u610f\u306e\u74b0\u5883\u3067\u5b9f\u884c\u53ef\u80fd\u306b\u3057\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u308b\u3068\u3057\u307e\u3057\u3087\u3046\u3002\u30bf\u30b9\u30af\u5b9a\u7fa9\u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u306f\u3001\u4e0b\u8a18\u3067\u8aac\u660e\u3059\u308b\u3088\u3046\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eID\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
2\u3064\u76ee\u306e\u8cea\u554f\u306f\u3001\u3069\u306e\u74b0\u5883\u3092\u30bf\u30b9\u30af\u306e\u5bfe\u8c61\u3068\u3059\u308b\u304b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u969b\u306bdocker-compose.yml
\u3067\u3044\u304f\u3064\u304b\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u540d\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30de\u30f3\u30c9\u304c\u5b9f\u969b\u306b\u3069\u3053\u3067\u5b9f\u884c\u3055\u308c\u308b\u304b\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_5","title":"\u3053\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3067\u304d\u308b\u306e\u306f\u8ab0\u3067\u3059\u304b\uff1f","text":"\u30bf\u30b9\u30af\u30b7\u30b9\u30c6\u30e0\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ed\u30fc\u30eb\u306b\u5bfe\u5fdc\u3057\u305f3\u3064\u306e\u30ec\u30d9\u30eb\u304c\u3042\u308a\u307e\u3059\u3002\u30b2\u30b9\u30c8\u3001\u30c7\u30d9\u30ed\u30c3\u30d1\u30fc\u3001\u30e1\u30f3\u30c6\u30ca\u30fc\u3067\u3059\u3002\u6700\u3082\u5236\u9650\u7684\u306a\u3082\u306e\u304b\u3089\u6700\u3082\u5236\u9650\u306e\u5c11\u306a\u3044\u3082\u306e\u307e\u3067\u3001\u5404\u30ed\u30fc\u30eb\u306f\u305d\u308c\u3088\u308a\u4e0b\u306e\u30ed\u30fc\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30bf\u30b9\u30af\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059(\u30c7\u30d9\u30ed\u30c3\u30d1\u30fc\u306f\u30b2\u30b9\u30c8\u306e\u30bf\u30b9\u30af\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u30e1\u30f3\u30c6\u30ca\u30fc\u306f\u3059\u3079\u3066\u306e\u30bf\u30b9\u30af\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059)\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_6","title":"\u30bf\u30b9\u30af\u306e\u5b9a\u7fa9","text":"\u30bf\u30b9\u30af\u306faddAdvancedTaskDefinition
\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u3067\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u91cd\u8981\u306a\u3053\u3068\u306f\u3001\u3053\u308c\u306f\u5358\u306b\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308b\u3060\u3051\u3067\u547c\u3073\u51fa\u3059\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5358\u306b\u305d\u308c\u3092\u74b0\u5883\u3067\u5b9f\u884c\u53ef\u80fd\u306b\u3059\u308b\u3060\u3051\u3067\u3059\u3002
\u6982\u5ff5\u7684\u306b\u306f\u547c\u3073\u51fa\u3057\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
\u65b0\u3057\u3044\u30bf\u30b9\u30af\u3092\u5b9a\u7fa9\u3059\u308bmutation addAdvancedTask {\naddAdvancedTaskDefinition(input:{\nname: string,\nconfirmationText: string,\ntype: [COMMAND|IMAGE],\n[project|environment]: int,\ndescription: string,\nservice: string,\ncommand: string,\nadvancedTaskDefinitionArguments: [\n{\nname: \"ENVIROMENT_VARIABLE_NAME\",\ndisplayName: \"Friendly Name For Variable\",\ntype: [STRING | ENVIRONMENT_SOURCE_NAME | ENVIRONMENT_SOURCE_NAME_EXCLUDE_SELF]\n}\n]\n}) {\n... on AdvancedTaskDefinitionImage {\nid\nname\ndescription\nservice\nimage\nconfirmationText\nadvancedTaskDefinitionArguments {\ntype\nrange\nname\ndisplayName\n}\n...\n}\n... on AdvancedTaskDefinitionCommand {\nid\nname\ndescription\nservice\ncommand\nadvancedTaskDefinitionArguments {\ntype\nrange\nname\ndisplayName\n}\n...\n}\n}\n}\n
\u30d5\u30a3\u30fc\u30eb\u30c9name
\u3068description
\u306f\u7c21\u5358\u3067\u3059\u3002\u3053\u308c\u3089\u306f\u4e3b\u306bUI\u3067\u4f7f\u7528\u3055\u308c\u308b\u30bf\u30b9\u30af\u306e\u540d\u524d\u3068\u8aac\u660e\u3067\u3059\u3002
type
\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u3064\u3044\u3066\u306f\u8aac\u660e\u304c\u5fc5\u8981\u3067\u3059\u3002\u73fe\u6642\u70b9\u3067\u306f\u3001\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u7ba1\u7406\u8005\u306e\u307f\u304cIMAGE
\u30bf\u30a4\u30d7\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u65e2\u5b58\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5bfe\u8c61\u306b\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u3092\u30bf\u30b9\u30af\u3068\u3057\u3066\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u307b\u3068\u3093\u3069\u306e\u30bf\u30b9\u30af\u306fCOMMAND
\u30bf\u30a4\u30d7\u3067\u3059\u3002
[project|environment]
\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u30bb\u30c3\u30c8\u306f\u3001\u30bf\u30b9\u30af\u3092project
\u307e\u305f\u306fenvironment
\u306b\u95a2\u9023\u4ed8\u3051\u308b(\u4f7f\u7528\u3059\u308b\u30ad\u30fc\u306b\u3088\u308a\u307e\u3059)\u3053\u3068\u3067\u3001\u305d\u306e\u5024\u304cid\u306b\u306a\u308a\u307e\u3059\u3002 \u79c1\u305f\u3061\u304cyarn audit
\u306e\u305f\u3081\u306b\u8003\u3048\u3066\u3044\u308b\u30b1\u30fc\u30b9\u3067\u306f\u3001ID\u304c42
\u306eproject
\u3092\u5bfe\u8c61\u3068\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u660e\u793a\u3057\u307e\u3059\u3002
\u79c1\u305f\u3061\u304c\u30bf\u30b9\u30af\u3067\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3057\u305f\u3044\u30b5\u30fc\u30d3\u30b9\u3092service
\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u7f6e\u304d\u3001command
\u306f\u79c1\u305f\u3061\u304c\u5b9f\u884c\u3057\u305f\u3044\u5b9f\u969b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_7","title":"\u30bf\u30b9\u30af\u306b\u6e21\u3055\u308c\u308b\u5f15\u6570","text":"Lagoon UI\u7d4c\u7531\u3067\u30bf\u30b9\u30af\u3092\u547c\u3073\u51fa\u3059\u30e6\u30fc\u30b6\u30fc\u306b\u67d4\u8edf\u6027\u3092\u4e0e\u3048\u308b\u305f\u3081\u306b\u3001\u30bf\u30b9\u30af\u5f15\u6570\u306e\u5b9a\u7fa9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5f15\u6570\u306f\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u307e\u305f\u306f\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u3068\u3057\u3066\u8868\u793a\u3055\u308c\u3001\u30bf\u30b9\u30af\u3092\u547c\u3073\u51fa\u3059\u305f\u3081\u306b\u5fc5\u8981\u3067\u3059\u3002
\u4ee5\u4e0b\u306f\u30012\u3064\u306e\u5f15\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306e\u4f8b\u3067\u3059\u3002
\u30bf\u30b9\u30af\u5f15\u6570\u306e\u5b9a\u7fa9advancedTaskDefinitionArguments: [\n{\nname: \"ENV_VAR_NAME_SOURCE\",\ndisplayName: \"Environment source\",\ntype: ENVIRONMENT_SOURCE_NAME\n},\n{\nname: \"ENV_VAR_NAME_STRING\",\ndisplayName: \"Echo value\",\ntype: STRING\n}\n]\n})\n
\u3053\u306e\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u304c\u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u4e21\u65b9\u306e\u30bf\u30a4\u30d7\u306e\u5f15\u6570\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 \u6700\u521d\u306eENV_VAR_NAME_SOURCE
\u306fENVIRONMENT_SOURCE_NAME
\u30bf\u30a4\u30d7\u306e\u4f8b\u3067\u3001UI\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u7570\u306a\u308b\u74b0\u5883\u306e\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u3092\u63d0\u793a\u3057\u307e\u3059\u3002\u30bf\u30b9\u30af\u304c\u8d77\u52d5\u3057\u305f\u74b0\u5883\u3067\u5b9f\u884c\u3055\u308c\u308b\u306e\u3092\u8a31\u53ef\u3057\u305f\u304f\u306a\u3044\u5834\u5408(\u4f8b\u3048\u3070\u3001\u4ed6\u306e\u74b0\u5883\u304b\u3089\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u3044\u5834\u5408\u306a\u3069)\u306fENVIRONMENT_SOURCE_NAME_EXCLUDE_SELF
\u3092\u4f7f\u7528\u3057\u3066\u74b0\u5883\u30ea\u30b9\u30c8\u3092\u5236\u9650\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u4e8c\u3064\u76ee\u306eENV_VAR_NAME_STRING
\u306fSTRING
\u578b\u3067\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u3092\u8a18\u5165\u3059\u308b\u3088\u3046\u306b\u4fc3\u3057\u307e\u3059\u3002
\u30e6\u30fc\u30b6\u30fc\u304c\u9078\u629e\u3057\u305f\u5024\u306f\u3001\u30bf\u30b9\u30af\u304c\u5b9f\u884c\u3055\u308c\u305f\u3068\u304d\u306bCOMMAND
\u578b\u306e\u30bf\u30b9\u30af\u3067\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u5229\u7528\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_8","title":"\u30b7\u30b9\u30c6\u30e0\u5168\u4f53\u306e\u30bf\u30b9\u30af","text":"\u30b7\u30b9\u30c6\u30e0\u5168\u4f53\u306e\u30bf\u30b9\u30af\u3092\u767b\u9332\u3067\u304d\u308b\u306e\u306fLagoon\u306e\u7ba1\u7406\u8005\u306e\u307f\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u30bf\u30b9\u30af\u306f\u3059\u3079\u3066\u306e\u74b0\u5883\u3067\u8868\u793a\u3055\u308c\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u6301\u3064\u6a29\u9650\u306b\u3088\u3063\u3066\u5236\u9650\u3055\u308c\u307e\u3059\u3002
\u30b7\u30b9\u30c6\u30e0\u5168\u4f53\u306e\u30bf\u30b9\u30af\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u306f\u3001\u4ed6\u306e\u30bf\u30b9\u30af\u30bf\u30a4\u30d7\u3068\u307b\u307c\u540c\u3058\u3067\u3059\u304c\u30012\u3064\u306e\u4f8b\u5916\u304c\u3042\u308a\u307e\u3059\u3002
\u307e\u305a\u3001addAdvancedTaskDefinition
\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u4e2d\u3067systemWide: true
\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
\u6b21\u306b\u3001groupName
\u3001project
\u3001environment
\u3092\u6307\u5b9a\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u7279\u5b9a\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u305f\u3081\u3001\u6307\u5b9a\u3059\u308b\u3068\u76ee\u7684\u3092\u9038\u8131\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_9","title":"\u78ba\u8a8d","text":"confirmationText
\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u30c6\u30ad\u30b9\u30c8\u304c\u3042\u308b\u3068\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u524d\u306b\u3001UI\u306b\u78ba\u8a8d\u30e2\u30fc\u30c0\u30eb\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_10","title":"\u30bf\u30b9\u30af\u306e\u547c\u3073\u51fa\u3057","text":"\u30bf\u30b9\u30af\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u3068\u3001\u30bf\u30b9\u30af\u306fLagoon UI\u306e\u30bf\u30b9\u30af\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u306b\u8868\u793a\u3055\u308c\u308b\u306f\u305a\u3067\u3059\u3002
\u307e\u305f\u3001invokeTask
\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066GraphQL api\u304b\u3089\u3082\u547c\u3073\u51fa\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
\u30bf\u30b9\u30af\u306e\u547c\u3073\u51fa\u3057mutation invokeTask {\ninvokeRegisteredTask(advancedTaskDefinition: int, environment: int) {\nstatus\n}\n}\n
invokeTask
\u306f\u5e38\u306b\u7279\u5b9a\u306e\u74b0\u5883\u3067\u30bf\u30b9\u30af\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/custom-tasks/#_11","title":"\u4f8b","text":"\u3067\u306f\u3001yarn audit
\u306e\u4f8b\u3092\u8a2d\u5b9a\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002
\u30bf\u30b9\u30af\u5b9a\u7fa9\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3mutation runYarnAudit {\naddAdvancedTaskDefinition(input:{\nname:\"Run yarn audit\",\nproject: 42,\ntype:COMMAND,\npermission:DEVELOPER,\ndescription: \"Runs a 'yarn audit'\",\nservice:\"node\",\ncommand: \"yarn audit\"})\n{\nid\n}\n}\n
\u3053\u308c\u306b\u3088\u308a\u3001\u79c1\u305f\u3061\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8(42)\u306e\u30bf\u30b9\u30af\u304c\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30bf\u30b9\u30af\u5b9a\u7fa9\u306eID\u304c\u8fd4\u3055\u308c\u307e\u3059(\u4f8b\u3048\u3070\u30019
\u3068\u3057\u307e\u3059)
\u3053\u306e\u30bf\u30b9\u30af\u306f\u3001DEVELOPER
\u307e\u305f\u306fMAINTAINER
\u306e\u5f79\u5272\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u304cUI\u304b\u3089\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/deploytarget-configs/","title":"DeployTarget\u8a2d\u5b9a","text":"DeployTarget\u8a2d\u5b9a\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u8907\u6570\u306e\u30af\u30e9\u30b9\u30bf\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u65b9\u6cd5\u3092\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306f\u3001\u672c\u756a\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u5c02\u7528\u306e\u30af\u30e9\u30b9\u30bf\u3068\u3001\u958b\u767a\u30ef\u30fc\u30af\u30ed\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u5225\u306e\u30af\u30e9\u30b9\u30bf\u304c\u3042\u308b\u5834\u5408\u306b\u4fbf\u5229\u3067\u3059\u3002
\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u306f\u3001\u5358\u306b\u672c\u756a/\u958b\u767a\u306e\u5206\u5272\u306b\u9650\u5b9a\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u305f\u3081\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u7279\u5b9a\u306e\u30af\u30e9\u30b9\u30bf\u3092\u8907\u6570\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3067\u304d\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
DeployTarget\u8a2d\u5b9a\u306e\u57fa\u672c\u7684\u306a\u8003\u3048\u65b9\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u8907\u6570\u306e\u30af\u30e9\u30b9\u30bf\u9593\u3067\u3069\u306e\u3088\u3046\u306b\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u308b\u304b\u3092\u7c21\u5358\u306b\u5b9a\u7fa9\u3059\u308b\u65b9\u6cd5\u3067\u3042\u308a\u3001\u74b0\u5883\u304c\u6709\u52b9\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3059\u308b\u65e2\u5b58\u306e\u65b9\u6cd5\u3092\u5229\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/deploytarget-configs/#_1","title":"\u91cd\u8981\u306a\u60c5\u5831","text":"DeployTarget\u8a2d\u5b9a\u3092\u5229\u7528\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3059\u308b\u524d\u306b\u3001\u77e5\u3063\u3066\u304a\u304f\u3079\u304d\u3053\u3068\u304c\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u3002
-
\u74b0\u5883\u306b\u306f\u3069\u306eDeployTarget(Kubernetes\u307e\u305f\u306fOpenShift)\u3067\u4f5c\u6210\u3055\u308c\u305f\u304b\u3092\u8b58\u5225\u3059\u308b\u305f\u3081\u306e\u65b0\u305f\u306a2\u3064\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u5229\u7528\u53ef\u80fd\u306b\u306a\u308a\u307e\u3057\u305f\u3002
kubernetesNamespacePattern
kubernetes
-
\u7279\u5b9a\u306eDeployTarget\u306b\u4e00\u5ea6\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u74b0\u5883\u306f\u3001DeployTarget\u8a2d\u5b9a\u3084\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u304c\u5909\u66f4\u3055\u308c\u3066\u3082\u3001\u5e38\u306b\u3053\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002
- \u3053\u308c\u306b\u3088\u308aDeployTarget\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3057\u3066\u3082\u3001\u7570\u306a\u308b\u30af\u30e9\u30b9\u30bf\u3067\u65b0\u3057\u3044\u74b0\u5883\u304c\u4f5c\u6210\u3055\u308c\u308b\u3053\u3068\u304c\u306a\u304f\u306a\u308a\u3001\u65e2\u5b58\u306e\u74b0\u5883\u306b\u5bfe\u3057\u3066\u4e00\u5b9a\u306e\u5b89\u5168\u6027\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002
- \u3053\u308c\u306fLagoon\u306e\u65b0\u6a5f\u80fd\u3067\u3042\u308a\u3001DeployTarget\u8a2d\u5b9a\u306b\u7279\u5316\u3055\u308c\u305f\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-
\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306bDeployTarget\u306e\u8a2d\u5b9a\u304c\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u305d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u65e2\u5b58\u306e\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u3069\u306e\u74b0\u5883\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u304b\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u4ee5\u4e0b\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
branches
pullrequests
kubernetesNamespacePattern
kubernetes
-
DeployTarget\u306e\u8a2d\u5b9a\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3055\u308c\u308b\u3068\u3001\u4eca\u5f8c\u3059\u3079\u3066\u306e\u30c7\u30d7\u30ed\u30a4\u306f\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u3082\u306e\u306f\u7121\u8996\u3055\u308c\u3001DeployTarget\u306e\u8a2d\u5b9a\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u30e6\u30fc\u30b6\u30fc\u306b\u901a\u77e5\u3059\u308b\u305f\u3081\u306b\u4e0a\u66f8\u304d\u3055\u308c\u307e\u3059\u3002
-
DeployTarget\u306e\u8a2d\u5b9a\u306f\u91cd\u307f\u4ed8\u3051\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u308c\u306f\u5927\u304d\u3044\u91cd\u307f\u306eDeployTarget\u8a2d\u5b9a\u304c\u5c0f\u3055\u3044\u91cd\u307f\u306e\u3082\u306e\u3088\u308a\u512a\u5148\u3055\u308c\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
- \u30af\u30a8\u30ea\u3067\u8fd4\u3055\u308c\u308b\u9806\u5e8f\u304c\u3001\u74b0\u5883\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3079\u304d\u5834\u6240\u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u9806\u5e8f\u3067\u3059\u3002
-
Active/Standby\u74b0\u5883\u306f\u3001\u540c\u3058\u30af\u30e9\u30b9\u30bf\u306a\u306e\u3067\u3001DeployTarget\u8a2d\u5b9a\u306f\u305d\u308c\u3089\u306e\u74b0\u5883\u3092\u540c\u3058\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-
Lagoon\u306epromote
\u6a5f\u80fd\u3092\u6d3b\u7528\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u3001DeployTarget\u8a2d\u5b9a\u304cdestination
\u74b0\u5883\u3067\u306f\u7121\u8996\u3055\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
- \u30c7\u30a3\u30b9\u30c6\u30a3\u30cd\u30fc\u30b7\u30e7\u30f3\u74b0\u5883\u306f\u5e38\u306b
source
\u74b0\u5883\u304c\u3042\u308b\u540c\u3058\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u306e\u3067\u3001DeployTarget\u8a2d\u5b9a\u306f\u3053\u306esource
\u74b0\u5883\u306b\u5bfe\u3057\u3066\u6b63\u3057\u304f\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 - \u5b89\u5168\u306e\u305f\u3081\u3001
source
\u3068destination
\u306e\u74b0\u5883\u3092\u540c\u3058DeployTarget\u8a2d\u5b9a\u306e\u30d6\u30e9\u30f3\u30c1\u6b63\u898f\u8868\u73fe\u3067\u5b9a\u7fa9\u3059\u308b\u306e\u304c\u30d9\u30b9\u30c8\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/deploytarget-configs/#_2","title":"\u8a2d\u5b9a","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067DeployTarget\u8a2d\u5b9a\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u69cb\u6210\u3059\u308b\u306b\u306f\u3001\u6700\u521d\u306e\u30b9\u30c6\u30c3\u30d7\u3068\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
\u4ee5\u4e0b\u306eGraphQL\u306e\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u7279\u5b9a\u306e\u4f8b\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8ID 1\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306bDeployTarget\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u540d\u524d\u304cmain
\u3068\u4e00\u81f4\u3059\u308b\u30d6\u30e9\u30f3\u30c1\u306e\u307f\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u3001pullrequests
\u306ffalse
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 \u3053\u308c\u306f\u3001\u4ed6\u306e\u30d6\u30e9\u30f3\u30c1\u304c\u3053\u306e\u7279\u5b9a\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u305a\u3001\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3082\u3053\u306e\u7279\u5b9a\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002 deployTarget
\u306fID 1\u3067\u3001\u3053\u308c\u306fKubernetes\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u7279\u5b9a\u306e\u5730\u57df\u3084\u7279\u5b9a\u306e\u7a2e\u985e\u306e\u30ef\u30fc\u30af\u30ed\u30fc\u30c9(\u88fd\u54c1\u7248\u307e\u305f\u306f\u958b\u767a\u7248)\u5411\u3051\u306b\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
DeployTarget\u306e\u8a2d\u5b9amutation addDeployTargetConfig{\naddDeployTargetConfig(input:{\nproject: 1\nbranches: \"main\"\npullrequests: \"false\"\ndeployTarget: 1\nweight: 1\n}){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n
\u60c5\u5831
deployTarget
\u306fLagoon API\u5185\u306eKubernetes\u307e\u305f\u306fOpenShift ID\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u3067\u3059
\u307e\u305f\u3001\u8907\u6570\u306eDeployTarget\u8a2d\u5b9a\u3092\u69cb\u6210\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002
\u4ee5\u4e0b\u306eGraphQL\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u4f8b\u3067\u306f\u3001\u4e0a\u8a18\u3068\u540c\u3058\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306bDeployTarget\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
\u3053\u308c\u306b\u3088\u308a\u3001^feature/|^(dev|test|develop)$
\u3068\u6b63\u898f\u8868\u73fe\u304c\u30de\u30c3\u30c1\u3059\u308b\u30d6\u30e9\u30f3\u30c1\u306e\u307f\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002\u305d\u3057\u3066\u3001pullrequests
\u306f true
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3059\u3079\u3066\u306e\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u3053\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u5230\u9054\u3057\u307e\u3059\u3002
\u3053\u306e\u4f8b\u3067\u306f\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u3068\u306a\u308b\u30af\u30e9\u30b9\u30bf\u306fID2\u3067\u3001main
\u30d6\u30e9\u30f3\u30c1\u4e0a\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u3082\u306e\u3068\u306f\u5168\u304f\u7570\u306a\u308bKubernetes\u30af\u30e9\u30b9\u30bf\u3067\u3059\u3002
DeployTarget\u306e\u8a2d\u5b9amutation addDeployTargetConfig{\naddDeployTargetConfig(input:{\nproject: 1\nbranches: \"^feature/|^(dev|test|develop)$\"\npullrequests: \"true\"\ndeployTarget: 2\nweight: 1\n}){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n
\u3053\u308c\u3089\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3055\u308c\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u30af\u30a8\u30ea\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u3059\u3079\u3066\u306eDeployTarget\u8a2d\u5b9a\u3092\u8fd4\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u30c7\u30d7\u30ed\u30a4\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u53d6\u5f97\u3059\u308bquery deployTargetConfigsByProjectId{\ndeployTargetConfigsByProjectId(project:1){\nid\nweight\nbranches\npullrequests\ndeployTargetProjectPattern\ndeployTarget{\nname\nid\n}\nproject{\nname\n}\n}\n}\n# result:\n{\n\"data\": {\n\"deployTargetConfigsByProjectId\": [\n{\n\"id\": 1,\n\"weight\": 1,\n\"branches\": \"main\",\n\"pullrequests\": \"false\",\n\"deployTargetProjectPattern\": null,\n\"deployTarget\": {\n\"name\": \"production-cluster\",\n\"id\": 1\n},\n\"project\": {\n\"name\": \"my-project\"\n}\n},\n{\n\"id\": 2,\n\"weight\": 1,\n\"branches\": \"^feature/|^(dev|test|develop)$\",\n\"pullrequests\": \"true\",\n\"deployTargetProjectPattern\": null,\n\"deployTarget\": {\n\"name\": \"development-cluster\",\n\"id\": 2\n},\n\"project\": {\n\"name\": \"my-project\"\n}\n}\n]\n}\n}\n
"},{"location":"ja/using-lagoon-advanced/nodejs/","title":"Node.js\u306e\u30b0\u30ec\u30fc\u30b9\u30d5\u30eb\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3","text":"Node.js\u306b\u306f\u7d71\u5408\u3055\u308c\u305fWeb\u30b5\u30fc\u30d0\u30fc\u306e\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002\u3055\u3089\u306bExpress\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u62e1\u5f35\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
\u6b8b\u5ff5\u306a\u304c\u3089\u3001Node.js\u306f\u81ea\u8eab\u306e\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3092\u3046\u307e\u304f\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u30b3\u30f3\u30c6\u30ca\u5316\u3055\u308c\u305f\u30b7\u30b9\u30c6\u30e0\u3067\u591a\u304f\u306e\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3057\u307e\u3059\u3002\u6700\u5927\u306e\u554f\u984c\u306f\u3001Node.js\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3059\u308b\u3088\u3046\u306b\u6307\u793a\u3055\u308c\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u63a5\u7d9a\u3092\u5373\u5ea7\u306b\u3092\u5f37\u5236\u7d42\u4e86\u3057\u9069\u5207\u306b\u505c\u6b62\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u3053\u3068\u3067\u3059\u3002
\u3053\u306e\u30d1\u30fc\u30c8\u3067\u306f\u3001\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3057\u7d42\u3048\u3066\u304b\u3089\u3001\u9069\u5207\u306b\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3059\u308b\u3088\u3046\u306bNode.js\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002
\u4f8b\u3068\u3057\u3066\u3001Express\u3092\u4f7f\u7528\u3057\u305f\u30b7\u30f3\u30d7\u30eb\u306aNode.js\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059:
app.jsconst express = require('express');\nconst app = express();\n// \u5168\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306b5\u79d2\u306e\u30c7\u30a3\u30ec\u30a4\u3092\u8ffd\u52a0\u3002\napp.use((req, res, next) => setTimeout(next, 5000));\napp.get('/', function (req, res) {\nres.send(\"Hello World\");\n})\nconst server = app.listen(3000, function () {\nconsole.log('Example app listening on port 3000!');\n})\n
\u3053\u308c\u306f\u3001Web\u30b5\u30fc\u30d0\u30fc\u304c localhost:3000
\u306b\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u3068\u304d\u306b \"Hello World\" \u3092\u8868\u793a\u3057\u307e\u3059\u3002\u8a08\u7b97\u51e6\u7406\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3059\u308b\u305f\u3081\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u306b5\u79d2\u306e\u9045\u5ef6\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/nodejs/#a","title":"\u30d1\u30fc\u30c8A: \u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5b8c\u4e86\u3092\u8a31\u53ef\u3059\u308b","text":"\u4e0a\u8a18\u306e\u4f8b\u3092\u5b9f\u884c\u3057\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u51e6\u7406\u3055\u308c\u3066\u3044\u308b\u9593(5\u79d2\u4ee5\u5185)\u306bNode.js\u30d7\u30ed\u30bb\u30b9\u3092\u505c\u6b62\u3059\u308b\u3068\u3001Node.js\u30b5\u30fc\u30d0\u30fc\u306f\u3059\u3050\u306b\u63a5\u7d9a\u3092\u5207\u65ad\u3057\u3001\u30d6\u30e9\u30a6\u30b6\u306f\u30a8\u30e9\u30fc\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002
Node.js\u30b5\u30fc\u30d0\u30fc\u306b\u3001\u5b9f\u969b\u306b\u81ea\u8eab\u3092\u505c\u6b62\u3059\u308b\u524d\u306b\u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3064\u3079\u304d\u3060\u3068\u4f1d\u3048\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059:
Graceful Shutdownconst startGracefulShutdown = () => {\nconsole.log('Starting shutdown of express...');\nserver.close(function () {\nconsole.log('Express shut down.');\n});\n}\nprocess.on('SIGTERM', startGracefulShutdown);\nprocess.on('SIGINT', startGracefulShutdown);\n
\u3053\u308c\u306f\u57fa\u672c\u7684\u306b server.close()
\u3092\u547c\u3073\u51fa\u3057\u3001\u3053\u308c\u306b\u3088\u308aNode.js HTTP\u30b5\u30fc\u30d0\u30fc\u306b\u5bfe\u3057\u3066\u4ee5\u4e0b\u306e\u6307\u793a\u304c\u51fa\u3055\u308c\u307e\u3059:
- \u3053\u308c\u4ee5\u4e0a\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u53d7\u3051\u4ed8\u3051\u306a\u3044\u3002
- \u3059\u3079\u3066\u306e\u5b9f\u884c\u4e2d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u5b8c\u4e86\u3059\u308b\u3002
\u3053\u308c\u306f SIGINT
( CTRL + C
\u3092\u62bc\u3057\u305f\u3068\u304d)\u307e\u305f\u306f SIGTERM
(\u30d7\u30ed\u30bb\u30b9\u3092\u7d42\u4e86\u3059\u308b\u305f\u3081\u306e\u6a19\u6e96\u4fe1\u53f7)\u3067\u884c\u3044\u307e\u3059\u3002
\u3053\u306e\u5c0f\u3055\u306a\u8ffd\u52a0\u306b\u3088\u308a\u3001Node.js\u306f\u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3064\u3088\u3046\u306b\u306a\u308a\u3001\u305d\u306e\u5f8c\u81ea\u8eab\u3092\u505c\u6b62\u3057\u307e\u3059\u3002
\u3082\u3057\u79c1\u305f\u3061\u304cNode.js\u3092\u30b3\u30f3\u30c6\u30ca\u5316\u3055\u308c\u305f\u74b0\u5883\u3067\u5b9f\u884c\u3057\u3066\u3044\u306a\u3044\u306a\u3089\u3070\u3001\u304a\u305d\u3089\u304f \u6570\u79d2\u5f8c\u306b\u5b9f\u969b\u306bNode.js\u30b5\u30fc\u30d0\u30fc\u3092\u7d42\u4e86\u3059\u308b\u8ffd\u52a0\u306e\u30b3\u30fc\u30c9\u3092\u542b\u3081\u305f\u3044\u3068\u8003\u3048\u3066\u3044\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001\u4e00\u90e8\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u975e\u5e38\u306b\u9577\u304f\u304b\u304b\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u5168\u304f\u505c\u6b62\u3057\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308b\u304b\u3089\u3067\u3059\u3002\u3053\u308c\u306f\u30b3\u30f3\u30c6\u30ca\u5316\u3055\u308c\u305f\u30b7\u30b9\u30c6\u30e0\u5185\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u30b3\u30f3\u30c6\u30ca\u304c\u505c\u6b62\u3057\u306a\u3044\u5834\u5408\u3001Docker\u3068Kubernetes\u306f\u6570\u79d2\u5f8c(\u901a\u5e38\u306f30\u79d2\u5f8c)\u306bSIGKILL
\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u30d7\u30ed\u30bb\u30b9\u81ea\u4f53\u3067\u306f\u51e6\u7406\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u79c1\u305f\u3061\u306f\u6c17\u306b\u3059\u308b\u5fc5\u7528\u304c\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-advanced/nodejs/#byarnnpm","title":"\u30d1\u30fc\u30c8B:Yarn\u3068NPM\u306e\u5b50\u751f\u6210\u554f\u984c","text":"\u3082\u3057\u79c1\u305f\u3061\u304c\u30d1\u30fc\u30c8A\u3060\u3051\u3092\u5b9f\u88c5\u3057\u305f\u5834\u5408\u3001\u826f\u3044\u7d4c\u9a13\u3092\u5f97\u3089\u308c\u308b\u3067\u3057\u3087\u3046\u3002\u73fe\u5b9f\u306e\u4e16\u754c\u3067\u306f\u3001\u591a\u304f\u306eNode.js\u30b7\u30b9\u30c6\u30e0\u304cYarn\u3084NPM\u3067\u69cb\u7bc9\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u308c\u3089\u306fNode.js\u306b\u30d1\u30c3\u30b1\u30fc\u30b8\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3060\u3051\u3067\u306a\u304f\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u7ba1\u7406\u3082\u63d0\u4f9b\u3057\u307e\u3059\u3002
\u3053\u308c\u3089\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u6a5f\u80fd\u3092\u4f7f\u3046\u3068\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8d77\u52d5\u3092\u7c21\u5358\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u591a\u304f\u306epackage.json
\u30d5\u30a1\u30a4\u30eb\u304c\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002
package.json{\n\"name\": \"node\",\n\"version\": \"1.0.0\",\n\"main\": \"index.js\",\n\"license\": \"MIT\",\n\"dependencies\": {\n\"express\": \"^4.15.3\"\n},\n\"scripts\": {\n\"start\": \"node index.js\"\n}\n}\n
\u305d\u3057\u3066\u3001\u5b9a\u7fa9\u3055\u308c\u305fscripts
\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8d77\u52d5\u3059\u308b\u3060\u3051\u3067\u6e08\u307f\u307e\u3059:
\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8d77\u52d5yarn start\n
\u307e\u305f\u306f
\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8d77\u52d5npm start\n
\u3053\u308c\u306f\u4fbf\u5229\u3067\u3001\u958b\u767a\u8005\u3092\u697d\u306b\u3057\u307e\u3059\u3002\u3060\u304b\u3089\u3001\u79c1\u305f\u3061\u306fDockerfiles\u306e\u4e2d\u3067\u3082\u540c\u3058\u3082\u306e\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002
.dockerfileCMD [\"yarn\", \"start\"]\n
\u3057\u304b\u3057\u3001\u3053\u308c\u306b\u306f\u5927\u304d\u306a\u554f\u984c\u304c\u3042\u308a\u307e\u3059:
yarn
\u3084 npm
\u304c SIGINT
\u3084 SIGTERM
\u30b7\u30b0\u30ca\u30eb\u3092\u53d7\u3051\u53d6\u308b\u3068\u3001\u305d\u308c\u3089\u306f\u6b63\u78ba\u306b\u30b7\u30b0\u30ca\u30eb\u3092\u751f\u6210\u3057\u305f\u5b50\u30d7\u30ed\u30bb\u30b9\u306b\u8ee2\u9001\u3057\u307e\u3059\u3002(\u3053\u306e\u5834\u5408\u306f node index.js
)\u3057\u304b\u3057\u3001\u5b50\u30d7\u30ed\u30bb\u30b9\u304c\u505c\u6b62\u3059\u308b\u306e\u3092\u5f85\u3064\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u3001yarn
/npm
\u306f\u5373\u5ea7\u306b\u81ea\u5206\u81ea\u8eab\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Docker/Kubernetes\u306b\u5bfe\u3057\u3066\u30b3\u30f3\u30c6\u30ca\u304c\u5b8c\u4e86\u3057\u305f\u3068\u3044\u3046\u30b7\u30b0\u30ca\u30eb\u304c\u9001\u3089\u308c\u3001Docker/Kubernetes\u306f\u3059\u3050\u306b\u3059\u3079\u3066\u306e\u5b50\u30d7\u30ed\u30bb\u30b9\u3092\u5f37\u5236\u7d42\u4e86\u3057\u307e\u3059\u3002Yarn\u3068NPM\u306b\u306f\u30aa\u30fc\u30d7\u30f3\u306a\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u6b8b\u5ff5\u306a\u304c\u3089\u307e\u3060\u89e3\u6c7a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
\u3053\u306e\u554f\u984c\u306e\u89e3\u6c7a\u7b56\u306f\u3001Yarn\u3084NPM\u3092\u4f7f\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u59cb\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u76f4\u63a5 node
\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3059\u3002
.dockerfileCMD [\"node\", \"index.js\"]\n
\u3053\u308c\u306b\u3088\u308a\u3001Node.js\u306f\u9069\u5207\u306b\u7d42\u4e86\u3057\u3001Docker/Kubernetes\u306fNode.js\u304c\u7d42\u4e86\u3059\u308b\u306e\u3092\u5f85\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/private-repositories/","title":"\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ea\u30dd\u30b8\u30c8\u30ea","text":" - \u30c7\u30d7\u30ed\u30a4\u30ad\u30fc\u306b\u3001\u3042\u306a\u305f\u306eGitHub/GitLab/BitBucket\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u4e0e\u3048\u307e\u3059\u3002
dockerfile
\u306bARG LAGOON_SSH_PRIVATE_KEY
\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002(SSH\u30ad\u30fc\u304c\u5fc5\u8981\u306a\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306e\u30b9\u30c6\u30c3\u30d7\u306e\u524d\u306b) dockerfile
\u306bRUN /lagoon/entrypoints/05-ssh-key.sh
\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002(SSH\u30ad\u30fc\u304c\u5fc5\u8981\u306a\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306e\u30b9\u30c6\u30c3\u30d7\u306e\u524d\u306b)
\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u8a2d\u5b9aRUN /lagoon/entrypoints/05-ssh-key.sh && composer install && rm /home/.ssh/key\n
"},{"location":"ja/using-lagoon-advanced/project-default-users-keys/","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c7\u30d5\u30a9\u30eb\u30c8\u30e6\u30fc\u30b6\u30fc\u3068SSH\u30ad\u30fc","text":"Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u4f5c\u6210\u3055\u308c\u308b\u3068\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u95a2\u9023\u3059\u308bSSH \"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ad\u30fc\"\u304c\u751f\u6210\u3055\u308c\u3001\u305d\u306e\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eCLI\u30dd\u30c3\u30c9\u5185\u3067\u5229\u7528\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8default-user@project
\u3082\u4f5c\u6210\u3055\u308c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306eMAINTAINER
\u30a2\u30af\u30bb\u30b9\u304c\u4ed8\u4e0e\u3055\u308c\u307e\u3059\u3002SSH \"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ad\u30fc\"\u306f\u3001\u305d\u306edefault-user@project
\u306b\u6dfb\u4ed8\u3055\u308c\u307e\u3059\u3002
\u3053\u308c\u306b\u3088\u308a\u3001\u4efb\u610f\u306e\u74b0\u5883\u306eCLI\u30dd\u30c3\u30c9\u5185\u304b\u3089\u540c\u3058\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u4ed6\u306e\u4efb\u610f\u306e\u74b0\u5883\u306bSSH\u3067\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u30a2\u30af\u30bb\u30b9\u306f\u3001\u74b0\u5883\u9593\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u540c\u671f\u5316\u3059\u308b\u306a\u3069\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002(\u4f8b:drush sql-sync
)
MAINTAINER
\u30ed\u30fc\u30eb\u306b\u3064\u3044\u3066\u306e\u8a73\u3057\u3044\u60c5\u5831\u306f\u3001RBAC\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306b\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/project-default-users-keys/#_1","title":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30ad\u30fc\u306e\u6307\u5b9a","text":"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u969b\u306bSSH\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u53ef\u80fd\u3067\u3059\u304c\u3001\u3053\u308c\u306b\u306f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u554f\u984c\u304c\u3042\u308b\u305f\u3081\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/","title":"Lagoon\u3067\u306eXdebug\u306e\u8a2d\u5b9a","text":""},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#xdebug","title":"\u30b3\u30f3\u30c6\u30ca\u3067Xdebug\u62e1\u5f35\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b","text":"Lagoon\u306e\u57fa\u672c\u30a4\u30e1\u30fc\u30b8\u306fXdebug\u304c\u8a2d\u5b9a\u6e08\u307f\u3067\u3059\u304c\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u4e0a\u306e\u7406\u7531\u304b\u3089\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u62e1\u5f35\u6a5f\u80fd\u306f\u30ed\u30fc\u30c9\u3055\u308c\u307e\u305b\u3093\u3002\u62e1\u5f35\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001XDEBUG_ENABLE
\u74b0\u5883\u5909\u6570\u3092true
\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
-
\u30ed\u30fc\u30ab\u30eb (Pygmy\u3068Lando)
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304clagoon-examples\u306e
docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u3092\u30d9\u30fc\u30b9\u306b\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u74b0\u5883\u5909\u6570\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u884c\u3092\u30b3\u30e1\u30f3\u30c8\u89e3\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u74b0\u5883\u5909\u6570\u3092\u5909\u66f4\u3057\u305f\u5f8c\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u3092\u518d\u69cb\u7bc9\u3057\u3066\u518d\u8d77\u52d5\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - \u30ea\u30e2\u30fc\u30c8 (dev/prod)
- Lagoon API\u3092\u4f7f\u7528\u3057\u3066\u3001\u5b9f\u884c\u4e2d\u306e\u74b0\u5883\u306b\u74b0\u5883\u5909\u6570\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
- \u74b0\u5883\u5909\u6570\u3092\u5909\u66f4\u3057\u305f\u5f8c\u306f\u3001\u74b0\u5883\u3092\u518d\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#xdebug_1","title":"Xdebug\u62e1\u5f35\u6a5f\u80fd\u306e\u6709\u52b9\u5316","text":"\u30c7\u30d5\u30a9\u30eb\u30c8\u306eXdebug\u8a2d\u5b9a\u3067\u306f\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u958b\u59cb\u3059\u308b\u305f\u3081\u306b\u62e1\u5f35\u6a5f\u80fd\u3092\u6709\u52b9\u5316\u3059\u308b\"\u30c8\u30ea\u30ac\u30fc\"\u304c\u5fc5\u8981\u3067\u3059\u3002\uff08Xdebug\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\uff09 \u30c7\u30d0\u30c3\u30ac\u3092\u6709\u52b9\u5316\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u7c21\u5358\u306a\u624b\u9806\u3092\u53c2\u8003\u306b\u3057\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#cli","title":"CLI","text":"php-cli
\u30a4\u30e1\u30fc\u30b8\u306fXdebug\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u3068\u304d\u306b\u306f\u5e38\u306bXdebug\u3092\u6709\u52b9\u5316\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3057\u305f\u304c\u3063\u3066\u3001\u4ed6\u306b\u4f55\u3082\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u4efb\u610f\u306ePHP\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3059\u308b\u3068\u30c7\u30d0\u30c3\u30b0\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u958b\u59cb\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#web","title":"Web","text":"Xdebug\u306e\u30d6\u30e9\u30a6\u30b6\u62e1\u5f35\u6a5f\u80fd\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b \u3053\u3068\u3067\u3001\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u30af\u30c3\u30ad\u30fc\u3092\u8a2d\u5b9a/\u89e3\u9664\u3057\u307e\u3059\u3002
\u30c7\u30d0\u30c3\u30b0\u3092\u958b\u59cb\u3057\u305f\u3044\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306b\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u30af\u30c3\u30ad\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#phpstorm","title":"PHPStorm\u306e\u8a2d\u5b9a","text":" - PHPStorm\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
- \u30c4\u30fc\u30eb\u30d0\u30fc\u306e\u201cStart Listening for PHP Debug Connections\u201d\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
- \u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u3092\u8aad\u307f\u8fbc\u3080\u304b\u3001Drush\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
- \u521d\u56de\u5b9f\u884c\u6642\u306b\u306f\u3001PHPStorm\u304c\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u8868\u793a\u3057\u3001\u6b21\u306e\u64cd\u4f5c\u3092\u6c42\u3081\u307e\u3059\u3002
- \u30d1\u30b9\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
- \u30b5\u30fc\u30d0\u30fc\u4e0a\u3067\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u305f\u6b63\u3057\u3044\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#visual-studio-code","title":"Visual Studio Code\u306e\u8a2d\u5b9a","text":" - Felix Becker\u306b\u3088\u308bPHP Debug\u62e1\u5f35\u6a5f\u80fd\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
- \u8aac\u660e\u306b\u5f93\u3063\u3066PHP\u7528\u306e\u57fa\u672c\u7684\u306a
launch.json
\u4f5c\u6210\u3057\u307e\u3059\u3002 -
\u6b63\u3057\u3044\u30d1\u30b9\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u5178\u578b\u7684\u306aDrupal\u30b5\u30a4\u30c8\u306e\u4f8b\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002
launch.json\"pathMappings\": {\n\"/app\": \"${workspaceFolder}\",\n},\n
-
Visual Studio Code\u306eRun\u30bf\u30d6\u3067\u3001 \u201cListen for Xdebug\u201d\u306e\u96a3\u306b\u3042\u308b\u7dd1\u8272\u306e\u77e2\u5370\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
- Web\u30da\u30fc\u30b8\u3092\u30ed\u30fc\u30c9\u3059\u308b\u304b\u3001Drush\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#_1","title":"\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":" - Xdebug\u62e1\u5f35\u304c\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002Drupal \u30b5\u30a4\u30c8\u3067\u3053\u308c\u3092\u884c\u3046\u6700\u5584\u306e\u65b9\u6cd5\u306f\u3001PHP\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u30da\u30fc\u30b8\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3067\u3059\u3002Xdebug\u3068\u305d\u306e\u3059\u3079\u3066\u306e\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u304c\u898b\u3064\u304b\u308b\u306f\u305a\u3067\u3059\u3002
- \u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6 \u30ed\u30fc\u30ab\u30eb\u5024 xdebug.mode debug xdebug.client_host host.docker.internal
\u307e\u305f\u306f \u3042\u306a\u305f\u306eIP\u30a2\u30c9\u30ec\u30b9 xdebug.client_port 9003 - \u5b9f\u884c\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u5185\u3067Xdebug\u306e\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f
XDEBUG_LOG
\u3068\u3044\u3046\u540d\u524d\u306e\u74b0\u5883\u5909\u6570\u306b\u4f55\u3089\u304b\u306e\u5024\u3092\u8a2d\u5b9a\u3059\u308b\u3060\u3051\u3067\u3059\u3002 \u30ed\u30b0\u306f/tmp/xdebug.log
\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002\u3082\u3057lagoon-examples\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u306a\u3089\u3001\u3042\u306a\u305f\u306f \u3044\u304f\u3064\u304b\u306e\u65e2\u5b58\u306e\u884c\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u5916\u3057\u307e\u3059\u3002 - \u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u30af\u30c3\u30ad\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002Chrome\u307e\u305f\u306fFirefox\u306e\u30d6\u30e9\u30a6\u30b6\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001
XDEBUG_SESSION
\u30af\u30c3\u30ad\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002 - Xdebug\u304c\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3055\u308c\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u3068\u306e\u30c7\u30d0\u30c3\u30b0\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u958b\u59cb\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002
nc -l 9003
\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066Xdebug\u30dd\u30fc\u30c8\u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3059\u3079\u3066\u304cPHP\u3067\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308c\u3070\u3001\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u3092\u30ed\u30fc\u30c9\u3059\u308b\u304b\u3001Drush\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068Xdebug init
\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u5f97\u3089\u308c\u308b\u306f\u305a\u3067\u3059\u3002 xdebug.client_host
\u304c\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002Docker for Mac\u3067\u306e\u30ed\u30fc\u30ab\u30eb\u30c7\u30d0\u30c3\u30b0\u306e\u5834\u5408\u3001\u3053\u306e\u5024\u306fhost.docker.internal
\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002\u30ea\u30e2\u30fc\u30c8\u30c7\u30d0\u30c3\u30b0\u306e\u5834\u5408\u3001\u3053\u306e\u5024\u306f\u3042\u306a\u305f\u306eIP\u30a2\u30c9\u30ec\u30b9\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002\u3053\u306e\u5024\u304c\u6b63\u3057\u304f\u6c7a\u5b9a\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u306f\u3001DOCKERHOST
\u74b0\u5883\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u4e0a\u66f8\u304d\u3067\u304d\u307e\u3059\u3002 - Lando\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001CLI\u304b\u3089\u5b9f\u884c\u3055\u308c\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u30c7\u30d0\u30c3\u30b0\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u307e\u305a
lando ssh
\u3092\u4ecb\u3057\u3066CLI\u30b3\u30f3\u30c6\u30ca\u306bSSH\u3067\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002lando drush
\u307e\u305f\u306flando php
\u3092\u5b9f\u884c\u3057\u3066\u3082\u30c7\u30d0\u30c3\u30b0\u3067\u304d\u306a\u3044\u306e\u3067\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#mac","title":"Mac\u56fa\u6709\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":" -
Docker for Mac\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30ad\u30f3\u30b0\u304c\u58ca\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 \u30db\u30b9\u30c8\u30de\u30b7\u30f3\u3067 nc -l 9003
\u3092\u5b9f\u884c\u3057\u3001\u305d\u306e\u5f8c\u65b0\u3057\u3044\u30bf\u30fc\u30df\u30ca\u30eb\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u6b21\u306e\u3088\u3046\u306b\u5b9f\u884c\u3057\u307e\u3059\u3002
Mac\u306eDocker\u30cd\u30c3\u30c8\u30ef\u30fc\u30ad\u30f3\u30b0\u3092\u78ba\u8a8ddocker-compose run cli nc -zv host.docker.internal 9003\n
\u6b21\u306e\u3088\u3046\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 host.docker.internal (192.168.65.2:9003) open
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#linux","title":"Linux \u7279\u6709\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0","text":" -
\u30db\u30b9\u30c8host.docker.internal
\u306b\u63a5\u7d9a\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002docker
\u304c(Docker Desktop\u3092\u7d4c\u7531\u305b\u305a\u306b)\u624b\u52d5\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30db\u30b9\u30c8\u306f\u89e3\u6c7a\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u3092\u5f37\u5236\u7684\u306b\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u306f\u3001docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u306e\u30b9\u30cb\u30da\u30c3\u30c8\u3092\u633f\u5165\u3059\u308b\u3053\u3068\u3067\u3001\u3053\u306e\u30db\u30b9\u30c8\u3092\u5f37\u5236\u7684\u306b\u89e3\u6c7a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002(\u624b\u9806\u306f\u3053\u306e\u30d6\u30ed\u30b0\u6295\u7a3f\u304b\u3089\u5f15\u7528\u3057\u3066\u3044\u307e\u3059)
Linux\u5411\u3051\u306edocker-compose.yml\u306e\u4fee\u6b63 services:\ncli:\nextra_hosts:\nhost.docker.internal: host-gateway\nphp:\nextra_hosts:\nhost.docker.internal: host-gateway\n
"},{"location":"ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/#xdebug-2","title":"Xdebug 2","text":"\u53e4\u3044\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u307e\u3060Xdebug\u30d0\u30fc\u30b8\u30e7\u30f32\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u30da\u30fc\u30b8\u306e\u60c5\u5831\u306f\u3059\u3079\u3066\u305d\u306e\u307e\u307e\u9069\u7528\u3055\u308c\u307e\u3059\u304c\u3001\u8a2d\u5b9a\u540d\u3068\u5024\u306e\u4e00\u90e8\u306f\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u3059\u3002
v3 v2 xdebug.mode xdebug.remote_enabled On xdebug.client_host xdebug.remote_host host.docker.internal
\u307e\u305f\u306f\u3042\u306a\u305f\u306eIP\u30a2\u30c9\u30ec\u30b9 xdebug.client_port xdebug.remote_port 9000"},{"location":"ja/using-lagoon-advanced/simplesaml/#simplesamlphp","title":"SimpleSAMLphp","text":"\u3053\u308c\u306f\u3001SimpleSAMLphp\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3057\u3001\u305d\u308c\u3092NGINX\u7d4c\u7531\u3067\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\u65b9\u6cd5\u306e\u4f8b\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/simplesaml/#_1","title":"\u5fc5\u8981\u6761\u4ef6","text":"SimpleSAMLphp\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3057\u307e\u3059:
Composer\u3092\u4f7f\u7528\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306bSimpleSAMLphp\u3092\u8ffd\u52a0\u3059\u308bcomposer req simplesamlphp/simplesamlphp\n
"},{"location":"ja/using-lagoon-advanced/simplesaml/#simplesamlphp_1","title":"SimpleSAMLphp\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b","text":"vendor/simplesamlphp/simplesamlphp/config-templates
\u304b\u3089authsources.php
\u3068config.php
\u3092vendor
\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5916\u306econf/simplesamlphp
\u306e\u3088\u3046\u306a\u5834\u6240\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002\u307e\u305f\u3001vendor/simplesamlphp/simplesamlphp/metadata-templates
\u304b\u3089saml20-idp-remote.php
\u3082\u5fc5\u8981\u3067\u3059\u3002
config.php
\u3067Lagoon\u306b\u4ee5\u4e0b\u306e\u5024\u3092\u8a2d\u5b9a\u3057\u307e\u3059:
SimpleSAMLphp\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u57fa\u672cURL\u30d1\u30b9:
config.php 'baseurlpath' => 'https://YOUR_DOMAIN.TLD/simplesaml/',\n
\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002
config.php 'store.type' => 'sql',\n 'store.sql.dsn' => vsprintf('mysql:host=%s;port=%s;dbname=%s', [\n getenv('MARIADB_HOST'),\n getenv('MARIADB_PORT'),\n getenv('MARIADB_DATABASE'),\n ]),\n
\u4ed6\u306e\u8a2d\u5b9a\u306f\u304a\u597d\u307f\u3067\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
- \u30ed\u30b0\u3068\u8a3c\u660e\u66f8\u306e\u30d1\u30b9\u3092\u78ba\u8a8d\u3057\u307e\u3059
- SimpleSAMLphp\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3092\u4fdd\u8b77\u3057\u307e\u3059
- \u30ed\u30ae\u30f3\u30b0\u306e\u30ec\u30d9\u30eb\u3092\u8a2d\u5b9a\u3057\u307e\u3059
technicalcontact
\u3068timezone
\u3092\u8a2d\u5b9a\u3057\u307e\u3059
\u4f8b\u3092\u53c2\u8003\u306bauthsources.php
\u306bauthsources(IdPs)\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
authsources.php 'default-sp' => [\n 'saml:SP',\n // The entity ID of this SP.\n 'entityID' => 'https://YOUR_DOMAIN.TLD',\n // The entity ID of the IdP this should SP should contact.\n // Can be NULL/unset, in which case the user will be shown a list of available IdPs.\n 'idp' => 'https://YOUR_IDP_DOMAIN.TLD',\n // The URL to the discovery service.\n // Can be NULL/unset, in which case a builtin discovery service will be used.\n 'discoURL' => null,\n 'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',\n 'certificate' => '/app/conf/simplesamlphp/certs/saml.crt',\n 'privatekey' => '/app/conf/simplesamlphp/certs/saml.pem',\n 'redirect.sign' => TRUE,\n 'redirect.validate' => TRUE,\n 'authproc' => [\n 50 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6' => 'eduPersonPrincipalName',\n ],\n 51 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:2.5.4.42' => 'givenName',\n ],\n 52 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:2.5.4.4' => 'sn',\n ],\n 53 => [\n 'class' => 'core:AttributeCopy',\n 'urn:oid:0.9.2342.19200300.100.1.3' => 'mail',\n ],\n ],\n ],\n
\u4f8b\u3092\u53c2\u8003\u306bsaml20-idp-remote.php
\u306bIdP\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002
saml20-idp-remote.php<?php\n/**\n * SAML 2.0 remote IdP metadata for SimpleSAMLphp.\n *\n * Remember to remove the IdPs you don't use from this file.\n *\n * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-remote\n */\n/**\n * Some IdP.\n */\n$metadata['https://YOUR_IDP_DOMAIN.TLD'] = [\n'entityid' => 'https://YOUR_IDP_DOMAIN.TLD',\n'name' => [\n'en' => 'Some IdP',\n],\n'description' => 'Some IdP',\n...\n];\n
\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u3067\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092SimpleSAMLphp\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059
vendor/simplesamlphp/simplesamlphp/config/authsources.php
vendor/simplesamlphp/simplesamlphp/config/config.php
vendor/simplesamlphp/simplesamlphp/metadata/saml20-idp-remote.php
"},{"location":"ja/using-lagoon-advanced/simplesaml/#simplesamlphpnginx-conf","title":"SimpleSAMLphp\u306e\u305f\u3081\u306eNGINX conf\u3092\u4f5c\u6210\u3057\u307e\u3059","text":"lagoon/nginx/location_prepend_simplesamlphp.conf
\u3068\u3044\u3046\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059:
location_prepend_simplesamlphp.conflocation ^~ /simplesaml {\nalias /app/vendor/simplesamlphp/simplesaml php/www;\nlocation ~ ^(?<prefix>/simplesaml)(?<phpfile>.+?\\.php)(?<pathinfo>/.*)?$ {\ninclude fastcgi_params;\nfastcgi_pass ${NGINX_FASTCGI_PASS:-php}:9000;\nfastcgi_param SCRIPT_FILENAME $document_root$phpfile;\n# Must be prepended with the baseurlpath\nfastcgi_param SCRIPT_NAME /simplesaml$phpfile;\nfastcgi_param PATH_INFO $pathinfo if_not_empty;\n}\n}\n
\u3053\u308c\u306b\u3088\u308a\u3001/simplesaml
URL\u304cvendor
\u306eSimpleSAMLphp\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/simplesaml/#nginxnginx","title":"NGINX\u30a4\u30e1\u30fc\u30b8\u306b\u8ffd\u52a0\u306eNGINX\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3059\u308b","text":"nginx.dockerfile
\u3092\u4fee\u6b63\u3057\u3001location_prepend_simplesamlphp.conf
\u3092\u30a4\u30e1\u30fc\u30b8\u306b\u8ffd\u52a0\u3057\u307e\u3059:
nginx.dockerfileARG CLI_IMAGE\nFROM ${CLI_IMAGE} AS cli\n\nFROM uselagoon/nginx-drupal\n\nCOPY --from=cli /app /app\n\nCOPY lagoon/nginx/location_prepend_simplesamlphp.conf /etc/nginx/conf.d/drupal/location_prepend_simplesamlphp.conf\nRUN fix-permissions /etc/nginx/conf.d/drupal/location_prepend_simplesamlphp.conf\n\n# Define where the Drupal Root is located\nENV WEBROOT=public\n
"},{"location":"ja/using-lagoon-advanced/triggering-deployments/","title":"\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306e\u30c8\u30ea\u30ac\u30fc","text":""},{"location":"ja/using-lagoon-advanced/triggering-deployments/#azure-pipelines","title":"Azure Pipelines\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b","text":"Azure Pipelines\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u3092\u81ea\u52d5\u7684\u306b\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u3092\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002
- \u30c7\u30d7\u30ed\u30a4\u306eSSH\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ad\u30fc\u3092
id_rsa_lagoon
\u3068\u3057\u3066Azure\u306e\u30bb\u30ad\u30e5\u30a2\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002\u30bb\u30ad\u30e5\u30a2\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306fAzure\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002 - \u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092
azure-pipelines.yml
\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002
azure-pipelines.ymlpool:\nvmImage: 'ubuntu-latest'\nstages:\n# .. \u4ed6\u306e\u30b9\u30c6\u30fc\u30b8\n- stage: Deploy\ncondition: and(succeeded(), in(variables['Build.SourceBranch'], 'refs/heads/staging', 'refs/heads/develop'))\njobs:\n- job: DeployLagoon\nsteps:\n- task: DownloadSecureFile@1\nname: lagoonSshKey\ndisplayName: 'Download Lagoon SSH key'\ninputs:\nsecureFile: id_rsa_lagoon\n- script: |\ncurl -L \"https://github.com/uselagoon/lagoon-cli/releases/download/v0.21.3/lagoon-cli-v0.21.3-linux-amd64\" -o ./lagoon\nchmod +x ./lagoon\ndisplayName: 'Download lagoon-cli'\n- script: ./lagoon login -i $(lagoonSshKey.secureFilePath)\ndisplayName: 'Log into Lagoon'\n- script: ./lagoon deploy branch -e $(Build.SourceBranchName) -p my-awesome-project -b $(Build.SourceBranchName) --force\ndisplayName: 'Trigger deployment using lagoon-cli'\n
\u3053\u308c\u306b\u3088\u308a\u3001develop
\u30d6\u30e9\u30f3\u30c1\u307e\u305f\u306fstaging
\u30d6\u30e9\u30f3\u30c1\u3067\u5909\u66f4\u304c\u884c\u308f\u308c\u308b\u305f\u3073\u306b\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u5024\u3092\u9069\u5207\u306b\u8abf\u6574\u3057\u3066\u3001\u30c7\u30d7\u30ed\u30a4\u6226\u7565\u3068\u8a2d\u5b9a\u306b\u9069\u5408\u3055\u305b\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-advanced/triggering-deployments/#_2","title":"\u30c7\u30d7\u30ed\u30a4\u305b\u305a\u306b\u30d7\u30c3\u30b7\u30e5","text":"\u30c7\u30d7\u30ed\u30a4\u305b\u305a\u306b\u30d7\u30c3\u30b7\u30e5\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u30b3\u30df\u30c3\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u306b \"[skip deploy]
\" \u307e\u305f\u306f \"[deploy skip]
\" \u3092\u542b\u3093\u3067\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3059\u308b\u3068\u3001Lagoon\u306f\u305d\u306e\u30b3\u30df\u30c3\u30c8\u304b\u3089\u30c7\u30d7\u30ed\u30a4\u3092\u30c8\u30ea\u30ac\u30fc\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/","title":"\u30cf\u30fc\u30d0\u30fc","text":"Harbor\u306f\u3001Kubernetes\u30a4\u30f3\u30d5\u30e9\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u969b\u306eLagoon\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30ea\u30dd\u30b8\u30c8\u30ea\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Harbor\u306fDocker\u30ec\u30b8\u30b9\u30c8\u30ea\u3068\u3001Trivy\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u30b3\u30f3\u30c6\u30ca\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30cb\u30f3\u30b0\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002
\u6ce8\u610f:
Lagoon\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u3001Harbor\u306e\u8a2d\u5b9a\u306f\u3059\u3079\u3066\u81ea\u52d5\u7684\u306b\u51e6\u7406\u3055\u308c\u307e\u3059\u3002
\u3082\u3057Lagoon\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u305d\u306eUI\u306blocalhost:8084\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u30e6\u30fc\u30b6\u540d\u306f admin
\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u306f admin
\u3067\u3059\u3002
\u6ce8\u610f:
\u30b5\u30a4\u30c8\u3092\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc(amazee.io\u306a\u3069)\u3067\u30db\u30b9\u30c8\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u308c\u3089\u306e\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306f\u9867\u5ba2\u304cHarbor UI\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u306a\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u3068\u3001\u6700\u521d\u306e\u753b\u9762\u306b\u306f\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3059\u3079\u3066\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30ea\u30b9\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002Harbor\u5185\u306e\u5404\u300c\u30ea\u30dd\u30b8\u30c8\u30ea\u300d\u306fLagoon\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002
\u5404Harbor\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306b\u306f\u30011\u3064\u306eLagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u6301\u3064\u3059\u3079\u3066\u306e\u74b0\u5883\u306e\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u30ea\u30b9\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
\u3053\u3053\u304b\u3089\u3001\u500b\u3005\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u6df1\u304f\u6398\u308a\u4e0b\u3052\u3066\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30f3\u7d50\u679c\u306e\u6982\u8981\u3092\u542b\u3080\u8a73\u7d30\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/security-scanning/","title":"\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30f3","text":"Harbor\u306b\u306f\u3001Trivy\u30b5\u30fc\u30d3\u30b9\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u7d44\u307f\u8fbc\u307f\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30f3\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u304c\u642d\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u3092\u89e3\u6790\u3057\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u3092\u53ce\u96c6\u3057\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001Trivy\u30b5\u30fc\u30d3\u30b9\u306f\u56fd\u7acb\u8106\u5f31\u6027\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u691c\u7d22\u3057\u3001\u305d\u308c\u3089\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308bCVE(\u4e00\u822c\u7684\u306a\u8106\u5f31\u6027\u3068\u9732\u51fa)\u3092\u63a2\u3057\u307e\u3059\u3002Trivy\u306f\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u3082\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u305f\u3081\u3001Composer\u30d5\u30a1\u30a4\u30eb\u3084\u305d\u306e\u4ed6\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30e9\u30a4\u30d6\u30e9\u30ea\u5b9a\u7fa9\u30d5\u30a1\u30a4\u30eb\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u3001\u305d\u308c\u3089\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30d0\u30fc\u30b8\u30e7\u30f3\u5185\u306b\u898b\u3064\u304b\u3063\u305f\u8106\u5f31\u6027\u3092\u5831\u544a\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u8106\u5f31\u6027\u306f\u3001\u500b\u3005\u306e\u30b3\u30f3\u30c6\u30ca\u3054\u3068\u306bHarbor\u5185\u3067\u5831\u544a\u3055\u308c\u307e\u3059\u3002
Harbor\u3067\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30f3\u306e\u4f8b\u3001\u30b9\u30ad\u30e3\u30f3\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u306b\u9069\u7528\u53ef\u80fd\u306a\u8106\u5f31\u6027\u3092\u793a\u3057\u3066\u3044\u307e\u3059:
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/","title":"\u30ed\u30fc\u30ab\u30eb\u3067\u306eHarbor\u306e\u5b9f\u884c","text":"Lagoon\u306f\u3001Harbor\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001AWS S3\u3068\u4e92\u63db\u6027\u306e\u3042\u308b\u30ed\u30fc\u30ab\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3067\u3042\u308bMinIO\u3092\u30b9\u30c8\u30ec\u30fc\u30b8\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u3057\u3066\u5229\u7528\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/#_1","title":"\u8a2d\u5b9a","text":"Harbor\u306f\u8907\u6570\u306e\u30b3\u30f3\u30c6\u30ca\u3067\u69cb\u6210\u3055\u308c\u3066\u304a\u308a\u3001\u305d\u308c\u305e\u308c\u304c\u6210\u529f\u88cf\u306b\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u306f\u7570\u306a\u308b\u8a2d\u5b9a\u304c\u5fc5\u8981\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":"Harbor\u304c\u6b63\u3057\u304f\u958b\u59cb\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u74b0\u5883\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:
HARBOR_REGISTRY_STORAGE_AMAZON_BUCKET
- \u3053\u308c\u306f\u3001Harbor\u304c\u30a4\u30e1\u30fc\u30b8\u3092\u4fdd\u5b58\u3059\u308bAWS\u30d0\u30b1\u30c3\u30c8\u306e\u540d\u524d\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
- Lagoon\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u5834\u5408\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067
harbor-images
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
HARBOR_REGISTRY_STORAGE_AMAZON_REGION
- \u3053\u308c\u306f\u3001Harbor\u306e\u30d0\u30b1\u30c3\u30c8\u304c\u5b58\u5728\u3059\u308bAWS\u5730\u57df\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
- Lagoon\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u5834\u5408\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067
us-east-1
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
REGISTRY_STORAGE_S3_ACCESSKEY
- \u3053\u308c\u306f\u3001Harbor\u304cAWS\u30d0\u30b1\u30c3\u30c8\u306b\u8aad\u307f\u66f8\u304d\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308bAWS\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
- Lagoon\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u5834\u5408\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306f\u3001MinIO\u306f\u8a8d\u8a3c\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u305f\u3081\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u7a7a\u6587\u5b57\u5217\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
REGISTRY_STORAGE_S3_SECRETKEY
- \u3053\u308c\u306f\u3001Harbor\u304cAWS\u30d0\u30b1\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308bAWS\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 AWS\u30d0\u30b1\u30c3\u30c8\u3078\u306e\u8aad\u307f\u66f8\u304d\u3002
- Lagoon\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306e\u5834\u5408\u3001MinIO\u306f\u8a8d\u8a3c\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u305f\u3081\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u7a7a\u6587\u5b57\u5217\u306b\u306a\u308a\u307e\u3059\u3002
\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u6b21\u306e\u74b0\u5883\u5909\u6570\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059:
HARBOR_REGISTRY_STORAGE_AMAZON_ENDPOINT
- \u3053\u306e\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001Harbor\u30ec\u30b8\u30b9\u30c8\u30ea\u306f\u305d\u306e\u5024\u3092s3\u30a8\u30f3\u30c8\u30ea\u30dd\u30a4\u30f3\u30c8\u306e\u30a2\u30c9\u30ec\u30b9\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002
- \u3053\u306e\u5909\u6570\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306f
https://s3.amazonaws.com
\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/#_2","title":"\u30b3\u30f3\u30c6\u30ca\u56fa\u6709\u306e\u8a2d\u5b9a","text":"\u6b21\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059:
- HarborRegistry
- HarborRegistryCtl
- Harbor-Core
- Harbor-Database
- Harbor-Jobservice
- Harbor-Trivy
\u6b21\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u5fc5\u8981\u3068\u305b\u305a\u306b\u5b9f\u884c\u3067\u304d\u307e\u3059:
- Harbor-Nginx
- Harbor-Portal
- Harbor-Redis
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-core/","title":"\u30cf\u30fc\u30d0\u30fc\u30b3\u30a2","text":"Harbor-Core\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u5185\u306e/etc/core/app.conf
\u306b\u4f4d\u7f6e\u3059\u308b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u3067\u3001\u8d77\u52d5\u3057\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u884c\u308f\u308c\u308b\u4efb\u610f\u306e\u5909\u66f4\u306f\u4e00\u6642\u7684\u306a\u3082\u306e\u3067\u3001\u30dd\u30c3\u30c9\u304c\u518d\u8d77\u52d5\u3055\u308c\u308b\u3068\u6301\u7d9a\u3057\u307e\u305b\u3093\u3002
\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u751f\u6210\u3055\u308c\u308bConfigmap\u306f\u3001services/harbor-core/harbor-core.yml
\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u306eLagoon\u5185\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002\u3053\u306econfigmap\u306b\u884c\u308f\u308c\u308b\u4efb\u610f\u306e\u5909\u66f4\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u518d\u8d77\u52d5\u3092\u307e\u305f\u3044\u3067\u6301\u7d9a\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-core/#_2","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9","text":" _REDIS_URL
- Redis\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u63a5\u7d9a\u60c5\u5831\u3092harbor-core\u3068Chartmuseum\u30b5\u30fc\u30d3\u30b9\u306b\u4f1d\u3048\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
harbor-redis:6379,100,
\u3067\u3059\u3002
_REDIS_URL_REG
- harborregistry\u304cRedis\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u3079\u304dURL\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
redis://harbor-redis:6379/2
\u3067\u3059\u3002
ADMIRAL_URL
- admiral\u30b5\u30fc\u30d3\u30b9\u306e\u5834\u6240\u3092harbor-core\u306b\u4f1d\u3048\u307e\u3059\u3002
- \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306fLagoon\u306eHarbor\u5b9f\u88c5\u3067\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
NA
\u3067\u3059\u3002
CFG_EXPIRATION
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
5
\u3067\u3059\u3002
CHART_CACHE_DRIVER
- harbor-core\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30c1\u30e3\u30fc\u30c8\u3092\u3069\u3053\u306b\u4fdd\u5b58\u3059\u308b\u304b\u3092\u4f1d\u3048\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
redis
\u3067\u3059\u3002
CLAIR_ADAPTER_URL
- harbor-core\u304c\u4f7f\u7528\u3059\u3079\u304dURL\u3002 * Harbor-trivy\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
http://harbor-trivy:8080
\u3067\u3059\u3002
CLAIR_DB
- harborclair\u304c\u4f7f\u7528\u3059\u3079\u304d\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30bf\u30a4\u30d7\u3002
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u53e4\u3044\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
postgres
\u3067\u3059\u3002
CLAIR_DB_HOST
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u53e4\u3044\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- harbor-core\u306bharborclair\u30b5\u30fc\u30d3\u30b9\u306e\u5834\u6240\u3092\u4f1d\u3048\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
harbor-database
\u3067\u3059\u3002
CLAIR_DB_PASSWORD
- harborclair\u306epostgres\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30d1\u30b9\u30ef\u30fc\u30c9\u3002
- \u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306e\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
test123
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u53e4\u3044\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u521d\u3081\u3066\u7a3c\u50cd\u3059\u308bLagoon\u4e0a\u3067\u8a2d\u5b9a\u3055\u308c\u305f\u6642\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
CLAIR_DB_PORT
- harborclair\u304charborclair\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30dd\u30fc\u30c8\u3002
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u53e4\u3044\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
5432
\u3067\u3059\u3002
CLAIR_DB_SSLMODE
- harborclair\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306bSSL\u3092\u4f7f\u7528\u3059\u3079\u304d\u304b\u3069\u3046\u304b\u3002
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u53e4\u3044\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
disable
\u3067\u3059\u3002
CLAIR_DB *
USERNAME` - \u30e6\u30fc\u30b6\u30fc\u540dharborclair\u306f\u3001postgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u3079\u304d\u3067\u3059\u3002
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u305a\u3001\u30ec\u30ac\u30b7\u30fc\u30b5\u30dd\u30fc\u30c8\u306e\u305f\u3081\u3060\u3051\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
postgres
\u3067\u3059\u3002
CLAIR_HEALTH_CHECK_SERVER_URL
- \u3053\u306e\u5024\u306f\u3001harbor-core\u304charbor-trivy\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u3057\u3066\u5065\u5eb7\u30c1\u30a7\u30c3\u30af\u3092\u767a\u884c\u3059\u308b\u5834\u6240\u3092\u6307\u793a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-trivy:8080
\u3067\u3059\u3002
CLAIR_URL
- harbor-core\u304charbor-trivy\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304dURL\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-trivy:6060
\u3067\u3059\u3002
CONFIG_PATH
- harbor-core\u304c\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u63a2\u3059\u3079\u304d\u5834\u6240\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
/etc/core/app.conf
\u3067\u3059\u3002
CORE_SECRET
- \u3053\u306e\u5024\u306f\u3001harbor-core\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306b\u5b9f\u884c\u3055\u308c\u308b\u3068\u304d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u521d\u3081\u3066Lagoon\u3067\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
CORE_URL
- harbor-core\u304c\u4ed6\u306eHarbor\u30b5\u30fc\u30d3\u30b9\u306b\u516c\u958b\u3057\u3001\u305d\u308c\u3089\u304charbor-core\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306eURL\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-core:8080
\u3067\u3059\u3002
DATABASE_TYPE
- Harbor\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30bf\u30a4\u30d7 \u4f7f\u7528\u3059\u308b\u3079\u304d\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
postgresql
\u3067\u3059\u3002
HARBOR_ADMIN_PASSWORD
admin
\u30e6\u30fc\u30b6\u30fc\u3092\u4f7f\u7528\u3057\u3066harbor\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u3079\u304d\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u5834\u5408\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306f
admin
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u6700\u521d\u306b\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3055\u308c\u305f\u969b\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
HARBOR_NGINX_ENDPOINT
- \u3053\u306e\u74b0\u5883\u5909\u6570\u306f\u3001harborregistry\u306b\u3001\u305d\u306eNGINX\u30a4\u30f3\u30b0\u30ec\u30b9\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3001harbor-nginx\u304c\u3069\u3053\u3067\u7a3c\u50cd\u3057\u3066\u3044\u308b\u304b\u3092\u901a\u77e5\u3057\u3001UI\u5185\u306e\u9069\u5207\u306a\u30d7\u30c3\u30b7\u30e5\u3068\u30d7\u30eb\u306e\u6307\u793a\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306a\u3069\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3059\u308b\u5834\u5408\u3084CI\u30c6\u30b9\u30c8\u4e2d\u306f
http://harbor-nginx:8080
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 - Lagoon\u306f\u3001\u672c\u756a\u74b0\u5883\u3067\u5b9f\u884c\u3055\u308c\u308b\u3068\u304d\u306b\u3053\u306e\u5909\u6570\u3092\u81ea\u52d5\u7684\u306b\u53d6\u5f97\u3057\u8a2d\u5b9a\u3057\u3088\u3046\u3068\u8a66\u307f\u307e\u3059\u3002\u305d\u306e\u30d7\u30ed\u30bb\u30b9\u304c\u5931\u6557\u3059\u308b\u3068\u3001\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002
HTTP_PROXY
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u306e\u6587\u5b57\u5217\u3067\u3059\u3002
HTTPS_PROXY
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u306e\u6587\u5b57\u5217\u3067\u3059\u3002
JOBSERVICE_SECRET
- \u3053\u306e\u5024\u306f\u3001harbor-jobservice\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306e\u5834\u5408\u3001
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u6700\u521d\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u969b\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002 \u306f\u3001Lagoon\u304c\u52d5\u4f5c\u3057\u3066\u3044\u308b\u72b6\u614b\u3067\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002
JOBSERVICE_URL
- harbor-core\u304charbor-jobservice\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304dURL\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
http://harbor-jobservice:8080
\u3067\u3059\u3002
LOG_LEVEL
- harbor-core\u30b5\u30fc\u30d3\u30b9\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ed\u30b0\u30ec\u30d9\u30eb\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
error
\u3067\u3059\u3002
NO_PROXY
- \u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30d7\u30ed\u30ad\u30b7\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u306a\u3044\u30db\u30b9\u30c8\u306e\u30ea\u30b9\u30c8\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306f
harbor-core,harbor-jobservice,harbor-database,harbor-trivy,harborregistry,harbor-portal,127.0.0.1,localhost,.local,.internal
\u3067\u3059\u3002
PORTAL_URL
- \u3053\u306e\u5024\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u304charbor-portal\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u5834\u6240\u3092\u6307\u793a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
http://harbor-portal:8080
\u3067\u3059\u3002
POSTGRESQL_DATABASE
- harbor-core\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u969b\u306b\u4f7f\u7528\u3059\u3079\u304dpostgres\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
registry
\u3067\u3059\u3002
POSTGRESQL_HOST
- harbor-core\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u3079\u304d\u5834\u6240\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
harbor-database
\u3067\u3059\u3002
POSTGRESQL_MAX_IDLE_CONNS
- harbor-core\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u5bfe\u3057\u3066\u958b\u653e\u3057\u3066\u304a\u304f\u3079\u304d\u6700\u5927\u306e\u30a2\u30a4\u30c9\u30eb\u63a5\u7d9a\u6570\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f
50
\u3067\u3059\u3002
POSTGRESQL_MAX_OPEN_CONNS
- harbor-core\u304c\u958b\u304f\u3079\u304d\u6700\u5927\u306e\u63a5\u7d9a\u6570\u3002 -\u30b3\u30a2\u306fpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
100
\u3067\u3059\u3002
POSTGRESQL_PASSWORD
- Harbor\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30d1\u30b9\u30ef\u30fc\u30c9\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u30e9\u30f3\u30c0\u30e0\u306b\u751f\u6210\u3055\u308c\u305f\u5024\u3067\u3059\u3002
POSTGRESQL_PORT
- harbor-core\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30dd\u30fc\u30c8\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
5432
\u3067\u3059\u3002
POSTGRESQL_USERNAME
- harbor-core\u304cpostgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30e6\u30fc\u30b6\u30fc\u540d\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
postgres
\u3067\u3059\u3002
POSTGRESQL_SSLMODE
- harbor-core\u304cSSL\u3092\u4f7f\u7528\u3057\u3066postgresql\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u3079\u304d\u304b\u3069\u3046\u304b\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
disable
\u3067\u3059\u3002
REGISTRY_HTTP_SECRET
- \u3053\u306e\u5024\u306f\u3001harborregistry\u306b\u63a5\u7d9a\u3059\u308b\u5404\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u521d\u3081\u3066\u7a3c\u50cd\u3057\u3066\u3044\u308bLagoon\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u751f\u6210\u3055\u308c\u308b\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
REGISTRY_STORAGE_PROVIDER_NAME
- harborregistry\u304c\u4f7f\u7528\u3059\u3079\u304d\u30b9\u30c8\u30ec\u30fc\u30b8\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
s3
\u3067\u3059\u3002
REGISTRY_URL
- harbor-core\u304charborregistry\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304dURL\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f * \u5024\u306f
http://harborregistry:5000
\u3067\u3059\u3002
REGISTRYCTL_URL
- \u3053\u306e\u5024\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u304charborregistryctl\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u5834\u6240\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harborregistryctl:8080
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
ROBOT_TOKEN_DURATION
- \u3053\u306e\u5024\u306f\u3001\u5404\u554f\u984c\u306e\u30ed\u30dc\u30c3\u30c8\u30c8\u30fc\u30af\u30f3\u304c\u6709\u52b9\u3067\u3042\u308b\u3079\u304d\u65e5\u6570\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
999
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
SYNC_REGISTRY
- \u3053\u306e\u5024\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
false
\u3067\u3059\u3002
TOKEN_SERVICE_URL
- harbor-core\u30b5\u30fc\u30d3\u30b9\u304c\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u516c\u958b\u3059\u308bURL\u3067\u3001\u3053\u308c\u306b\u3088\u308aJWT\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-core:8080/service/token
\u3067\u3059\u3002
TRIVY_ADAPTER_URL
- harbor-core\u30b5\u30fc\u30d3\u30b9\u304charbor-trivy\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308bURL\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-trivy:8080
\u3067\u3059\u3002
WITH_CHARTMUSEUM
- Chartmuseum\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092harbor-core\u306b\u4f1d\u3048\u307e\u3059\u3002
- \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306fLagoon\u306eHarbor\u5b9f\u88c5\u3067\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
false
\u3067\u3059\u3002
WITH_CLAIR
- harborclair\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092harbor-core\u306b\u4f1d\u3048\u307e\u3059\u3002
- Lagoon\u306fHarbor\u306e\u5b9f\u88c5\u3067\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
true
\u3067\u3059\u3002
WITH_NOTARY
- harbor-core\u306b - \u30ce\u30fc\u30bf\u30ea\u30fc\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306ecore\u3002
- \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u3001Lagoon\u304c\u5b9f\u88c5\u3057\u305fHarbor\u3067\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
false
\u3067\u3059\u3002
WITH_TRIVY
- Trivy\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092harbor-core\u306b\u4f1d\u3048\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
true
\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-database/","title":"Harbor-\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9","text":"Harbor-\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u8d77\u52d5\u3059\u308b\u305f\u3081\u306b\u7279\u5b9a\u306e\u74b0\u5883\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u305d\u308c\u3089\u306fservices/harbor-database/harbor-core.yml
\u30d5\u30a1\u30a4\u30eb\u3067\u8aac\u660e\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u5185\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-database/#_1","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9","text":" POSTGRES_DB
- Postgres\u30b5\u30fc\u30d3\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u969b\u306b\u8a2d\u5b9a\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
postgres
\u3067\u3059\u3002
POSTGRES_PASSWORD
- Postgres\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30eb\u30fc\u30c8\u30d1\u30b9\u30ef\u30fc\u30c9\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
test123
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u52d5\u4f5c\u3057\u3066\u3044\u308bLagoon\u4e0a\u3067\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
POSTGRES_USER
- Postgres\u30b5\u30fc\u30d3\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\u969b\u306b\u8a2d\u5b9a\u3055\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30e6\u30fc\u30b6\u30fc\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
postgres
\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-jobservice/","title":"Harbor-Jobservice","text":"Harbor-Jobservice\u306f\u3001\u8d77\u52d5\u306b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u30b3\u30f3\u30c6\u30ca\u5185\u306e/etc/jobservice/config.yml
\u306b\u4f4d\u7f6e\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u5909\u66f4\u306f\u4e00\u6642\u7684\u306a\u3082\u306e\u3067\u3001\u30dd\u30c3\u30c9\u304c\u518d\u8d77\u52d5\u3055\u308c\u308b\u3068\u6301\u7d9a\u3057\u307e\u305b\u3093\u3002
\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u751f\u6210\u3055\u308c\u308b\u5143\u3068\u306a\u308bconfigmap\u306f\u3001Lagoon\u5185\u306eservices/harbor-jobservice/harbor-jobservice.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306econfigmap\u3078\u306e\u5909\u66f4\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u518d\u8d77\u52d5\u3092\u8d8a\u3048\u3066\u6301\u7d9a\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-jobservice/#_1","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9","text":" CORE_URL
- \u3053\u306e\u5024\u306f
harbor-jobservice
\u306bharbor-core
\u304c\u3069\u3053\u306b\u3042\u308b\u304b\u3092\u4f1d\u3048\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harbor-core:8080
\u3067\u3059\u3002
CORE_SECRET
- \u3053\u306e\u5024\u306f\u3001
harbor-core
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u307e\u305f\u306fCI\u30c6\u30b9\u30c8\u4e2d\u306b\u5b9f\u884c\u3055\u308c\u308b\u3068\u304d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u5b9f\u884c\u4e2d\u306eLagoon\u4e0a\u3067\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
HTTP_PROXY
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u306e\u6587\u5b57\u5217\u3067\u3059\u3002
HTTPS_PROXY
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u306e\u6587\u5b57\u5217\u3067\u3059\u3002
JOBSERVICE_SECRET
- \u3053\u306e\u5024\u306f\u3001\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002
harbor-jobservice
\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u304b\u3001CI\u30c6\u30b9\u30c8\u4e2d\u306e\u5834\u5408\u306f
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u5b9f\u884c\u4e2d\u306eLagoon\u306b\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
LOG_LEVEL
- \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3059\u308b\u30ed\u30b0\u30ec\u30d9\u30eb\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
error
\u3067\u3059\u3002 - \u975e\u5e38\u306b\u8a73\u7d30\u306a\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001
debug
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
NO_PROXY
- \u305d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30d7\u30ed\u30ad\u30b7\u5316\u3055\u308c\u308b\u3079\u304d\u3067\u306f\u306a\u3044\u30db\u30b9\u30c8\u306e\u30ea\u30b9\u30c8\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u306f
harbor-core,harbor-jobservice,harbor-database,harbor-trivy,harborregistry,harbor-portal,127.0.0.1,localhost,.local,.internal
\u3067\u3059\u3002
REGISTRY_CONTROLLER_URL
- \u3053\u306e\u5024\u306f\u3001\u30b5\u30fc\u30d3\u30b9\u304c
harborregistryctl
\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u5834\u6240\u3092\u6307\u793a\u3057\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
http://harborregistryctl:8080
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
SCANNER_LOG_LEVEL
- \u30b9\u30ad\u30e3\u30cb\u30f3\u30b0\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3059\u308b\u30ed\u30b0\u30ec\u30d9\u30eb\u3067\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
error
\u3067\u3059\u3002 - \u975e\u5e38\u306b\u8a73\u7d30\u306a\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001
debug
\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002
SCANNER_STORE_REDIS_URL
- \u3053\u306e\u5024\u306f\u3001
harbor-trivy
\u304cRedis\u30b9\u30c8\u30a2\u306b\u63a5\u7d9a\u3059\u308b\u65b9\u6cd5\u3092\u6307\u793a\u3057\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
redis://harbor-redis:6379/4
\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-trivy/","title":"Harbor-Trivy","text":"Harbor-Trivy\u306f\u7279\u5b9a\u306e\u74b0\u5883\u5909\u6570\u3092\u4ecb\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u4f7f\u7528\u3057\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-trivy/#environment-variables","title":"\u74b0\u5883\u5909\u6570","text":" SCANNER_LOG_LEVEL
- \u3053\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u4f7f\u7528\u3059\u308b\u30ed\u30b0\u30ec\u30d9\u30eb\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
error
\u3067\u3059\u3002 - \u975e\u5e38\u306b\u8a73\u7d30\u306a\u30ed\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001\u3053\u308c\u3092
debug
\u306b\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002
SCANNER_STORE_REDIS_URL
- \u3053\u306e\u5024\u306fharbor-trivy\u306b\u3001\u81ea\u8eab\u306eRedis\u30b9\u30c8\u30a2\u3078\u306e\u63a5\u7d9a\u65b9\u6cd5\u3092\u6307\u793a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
redis://harbor-redis:6379/4
\u3067\u3059\u3002
SCANNER_JOB_QUEUE_REDIS_URL
- \u3053\u306e\u5024\u306fharbor-trivy\u306b\u3001\u81ea\u8eab\u306eRedis\u30b9\u30c8\u30a2\u3078\u306e\u63a5\u7d9a\u65b9\u6cd5\u3092\u6307\u793a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
redis://harbor-redis:6379/4
\u3067\u3059\u3002
SCANNER_TRIVY_VULN_TYPE
- \u3053\u306e\u5024\u306fharbor-trivy\u306b\u3001\u4f55\u30bf\u30a4\u30d7\u306e\u8106\u5f31\u6027\u3092\u691c\u7d22\u3059\u3079\u304d\u304b\u3092\u6307\u793a\u3057\u307e\u3059\u3002
- \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f
os,library
\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harborregistry/","title":"HarborRegistry","text":"HarborRegistry\u306f\u3001\u8d77\u52d5\u306b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u5fc5\u8981\u3068\u3057\u3001\u305d\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u30b3\u30f3\u30c6\u30ca\u5185\u306e /etc/registry/config.yml
\u306b\u4f4d\u7f6e\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u5909\u66f4\u306f\u4e00\u6642\u7684\u306a\u3082\u306e\u3067\u3042\u308a\u3001\u30dd\u30c3\u30c9\u304c\u518d\u8d77\u52d5\u3055\u308c\u308b\u3068\u6301\u7d9a\u3057\u307e\u305b\u3093\u3002
\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f services/harborregistry/harborregistry.yml
\u30d5\u30a1\u30a4\u30eb\u5185\u306b\u4fdd\u5b58\u3055\u308c\u3001 /etc/registry/pre-config.yml
\u3068\u3057\u3066\u30b3\u30f3\u30c6\u30ca\u5185\u306b\u30ed\u30fc\u30c9\u3055\u308c\u307e\u3059\u3002
\u30ab\u30b9\u30bf\u30e0\u30b3\u30f3\u30c6\u30ca\u30a8\u30f3\u30c8\u30ea\u30fc\u30dd\u30a4\u30f3\u30c8 services/harborregistry/entrypoint.sh
\u306f\u3001\u63d0\u4f9b\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u3092\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u8ee2\u9001\u3057\u3001\u7d50\u679c\u3092 /etc/registry/config.yml
\u3068\u3057\u3066\u4fdd\u5b58\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harborregistry/#_1","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9","text":" CORE_SECRET
- \u3053\u306e\u5024\u306f\u3001
harbor-core
\u306b\u63a5\u7d9a\u3059\u308b\u69d8\u3005\u306a\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u305f\u308aCI\u30c6\u30b9\u30c8\u4e2d\u306b\u8a2d\u5b9a\u3055\u308c\u308b
secret123
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u5b9f\u884c\u4e2d\u306eLagoon\u306b\u521d\u3081\u3066\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u308b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
HARBOR_NGINX_ENDPOINT
- \u3053\u306e\u74b0\u5883\u5909\u6570\u306f\u3001
harborregistry
\u306b\u3001\u305d\u306eNGINX\u30a4\u30f3\u30b0\u30ec\u30b9\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc harbor-nginx
\u304c\u3069\u3053\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u304b\u3092\u901a\u77e5\u3057\u3001UI\u5185\u3067\u9069\u5207\u306a\u30d7\u30c3\u30b7\u30e5\u3068\u30d7\u30eb\u306e\u6307\u793a\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u3001\u305d\u306e\u4ed6\u306e\u4e8b\u9805\u3092\u901a\u77e5\u3057\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059 \u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3057\u305f\u308aCI\u30c6\u30b9\u30c8\u4e2d\u306b\u306f\u3001
http://harbor-nginx:8080
\u306b\u306a\u308a\u307e\u3059\u3002 - \u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u74b0\u5883\u3067Lagoon\u304c\u81ea\u52d5\u7684\u306b\u3053\u306e\u5909\u6570\u3092\u53d6\u5f97\u3057\u30bb\u30c3\u30c8\u3057\u3088\u3046\u3068\u3057\u307e\u3059\u3002\u305d\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u5931\u6557\u3059\u308b\u3068\u3001\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u5b9f\u884c\u306b\u5931\u6557\u3057\u307e\u3059\u3002
JOBSERVICE_SECRET
- \u3053\u306e\u5024\u306f\u3001
harbor-jobservice
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u6700\u521d\u306b\u7a3c\u50cd\u4e2d\u306eLagoon\u4e0a\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
REGISTRY_HTTP_SECRET
- \u3053\u306e\u5024\u306f\u3001
harborregistry
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u308b\u304bCI\u30c6\u30b9\u30c8\u4e2d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u6700\u521d\u306b\u7a3c\u50cd\u4e2d\u306eLagoon\u4e0a\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
REGISTRY_REDIS_PASSWORD
- \u3053\u306e\u74b0\u5883\u5909\u6570\u306f\u3001
harborregistryctl
\u304cRedis\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u6307\u793a\u3057\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u306e\u6587\u5b57\u5217\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harborregistryctl/","title":"HarborRegistryCtl","text":"HarborRegistryCtl\u306f\u8d77\u52d5\u3059\u308b\u305f\u3081\u306b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u5fc5\u8981\u3068\u3057\u3001\u305d\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u30b3\u30f3\u30c6\u30ca\u5185\u306e/etc/registryctl/config.yml
\u306b\u4f4d\u7f6e\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u5909\u66f4\u306f\u4e00\u6642\u7684\u306a\u3082\u306e\u3067\u3042\u308a\u3001\u30dd\u30c3\u30c9\u304c\u518d\u8d77\u52d5\u3055\u308c\u308b\u3068\u6301\u7d9a\u3057\u307e\u305b\u3093\u3002
\u3053\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u751f\u6210\u3055\u308c\u308b\u5143\u3068\u306a\u308bconfigmap\u306f\u3001Lagoon\u5185\u306eservices/harborregistryctl/harborregistry.yml
\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306econfigmap\u3078\u306e\u5909\u66f4\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u304c\u518d\u8d77\u52d5\u3055\u308c\u3066\u3082\u4fdd\u6301\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-advanced/using-harbor/harbor-settings/harborregistryctl/#_1","title":"\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9","text":" CORE_SECRET
- \u3053\u306e\u5024\u306f\u3001
harbor-core
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u305f\u308aCI\u30c6\u30b9\u30c8\u4e2d\u306b\u8a2d\u5b9a\u3055\u308c\u308b
secret123
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u7a3c\u50cd\u4e2d\u306eLagoon\u306b\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u969b\u306b\u4f5c\u6210\u3055\u308c\u308b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
JOBSERVICE_SECRET
- \u3053\u306e\u5024\u306f\u3001
harbor-jobservice
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3067\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3055\u308c\u305f\u308aCI\u30c6\u30b9\u30c8\u4e2d\u306b\u8a2d\u5b9a\u3055\u308c\u308b
secret123
\u3067\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u7a3c\u50cd\u4e2d\u306eLagoon\u306b\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u969b\u306b\u4f5c\u6210\u3055\u308c\u308b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
REGISTRY_HTTP_SECRET
- \u3053\u306e\u5024\u306f\u3001
harborregistry
\u306b\u63a5\u7d9a\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u9593\u3067\u4e00\u81f4\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u4e8b\u524d\u5171\u6709\u30ad\u30fc\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u3001Harbor\u304c\u30ed\u30fc\u30ab\u30eb\u307e\u305f\u306fCI\u30c6\u30b9\u30c8\u4e2d\u306b\u5b9f\u884c\u3055\u308c\u308b\u3068\u304d\u306b
secret123
\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 - \u3053\u306e\u5024\u306f\u3001Harbor\u304c\u52d5\u4f5c\u4e2d\u306eLagoon\u306b\u521d\u3081\u3066\u8a2d\u5b9a\u3055\u308c\u305f\u3068\u304d\u306b\u4f5c\u6210\u3055\u308c\u305f\u79d8\u5bc6\u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002
REGISTRY_REDIS_PASSWORD
- \u3053\u306e\u74b0\u5883\u5909\u6570\u306f\u3001
harborregistryctl
\u306bRedis\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u3079\u304d\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u4f1d\u3048\u307e\u3059\u3002 - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306f\u7a7a\u6587\u5b57\u5217\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/","title":"Lagoon\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9 - \u6982\u8981","text":"\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Lagoon\u306e\u57fa\u672c\u7684\u306a\u7279\u5fb4\u3068\u6a5f\u80fd\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306b\u6163\u308c\u3066\u3044\u308b\u65b9\u306f\u3001Lagoon\u306e\u9ad8\u5ea6\u306a\u4f7f\u3044\u65b9\u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002
\u30d8\u30eb\u30d7\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u304b\u3001\u79c1\u305f\u3061\u306eDiscord\u3067\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30e1\u30f3\u30d0\u30fc\u3068\u30e1\u30f3\u30c6\u30ca\u306b\u554f\u3044\u5408\u308f\u305b\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/#_1","title":"\u5fc5\u8981\u6761\u4ef6","text":""},{"location":"ja/using-lagoon-the-basics/#docker","title":"Docker","text":"Lagoon\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u304cDocker\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u8981\u4ef6\u3092\u6e80\u305f\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30ef\u30fc\u30af\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u306b\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306eDocker\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002Docker\u306f\u3053\u3061\u3089\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001Docker\u306b\u306f\u6700\u4f4e\u3067\u30824CPUs\u30684GB RAM\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/#_2","title":"\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883","text":"pygmy\u3001Lando\u3001DDEV\u304b\u3089\u9078\u3076\u3053\u3068\u304c\u3067\u304d\u307e\u3059 - \u9078\u629e\u306f\u3042\u306a\u305f\u6b21\u7b2c\u3067\u3059\uff01
Lagoon\u3068\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u306b\u3064\u3044\u3066\u3082\u3063\u3068\u5b66\u3073\u307e\u3057\u3087\u3046\u3002
"},{"location":"ja/using-lagoon-the-basics/#step-by-step-guides","title":"\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u306e\u30ac\u30a4\u30c9","text":" - \u4e00\u822c: Lagoon\u3067\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3059\u308b
- \u4e00\u822c: \u521d\u3081\u3066\u306e\u30c7\u30d7\u30ed\u30a4
- Drupal: Drupal\u3067\u306e\u521d\u3081\u3066\u306e\u30c7\u30d7\u30ed\u30a4
- Drupal: Drupal\u30b5\u30a4\u30c8\u3092Lagoon\u5bfe\u5fdc\u306b\u3059\u308b
- \u3059\u3079\u3066: Lagoon\u306e\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30d7\u30ed\u30bb\u30b9
"},{"location":"ja/using-lagoon-the-basics/#lagoon","title":"Lagoon\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u6982\u8981","text":""},{"location":"ja/using-lagoon-the-basics/#lagoonyml","title":".lagoon.yml
","text":"\u3053\u308c\u306fLagoon\u304c\u4f55\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3079\u304d\u304b\u3001\u307e\u305f\u591a\u304f\u306e\u4ed6\u306e\u4e8b\u67c4\u3092\u7406\u89e3\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u4e3b\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002.lagoon.yml
\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/#docker-composeyml","title":"docker-compose.yml
","text":"\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306fDocker Compose
\u306b\u3088\u3063\u3066\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3092\u958b\u59cb\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002Lagoon\u3082\u3053\u308c\u3092\u4f7f\u7528\u3057\u3066\u3001\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u3079\u304d\u304b\u3001\u3069\u306e\u30bf\u30a4\u30d7\u3067\u3001\u3069\u306e\u3088\u3046\u306b\u30d3\u30eb\u30c9\u3059\u308b\u304b\u3092\u7406\u89e3\u3057\u307e\u3059\u3002\u3053\u308c\u306flabels
\u3092\u901a\u3058\u3066\u884c\u308f\u308c\u307e\u3059\u3002docker-compose.yml\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/#dockerfiles","title":"Dockerfiles","text":"\u4e00\u90e8\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3068\u30b3\u30f3\u30c6\u30ca\u306f\u3001\u63d0\u4f9b\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u8ffd\u52a0\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u901a\u5e38\u30012\u3064\u306e\u7406\u7531\u304c\u3042\u308a\u307e\u3059:
- \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9: NGINX\u3001PHP\u3001Node.js\u306a\u3069\u306e\u30b3\u30f3\u30c6\u30ca\u306f\u3001\u305d\u306e\u30a4\u30e1\u30fc\u30b8\u5185\u306b\u5b9f\u969b\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b3\u30fc\u30c9\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306fDocker\u30d3\u30eb\u30c9\u30b9\u30c6\u30c3\u30d7\u4e2d\u306b\u884c\u308f\u308c\u3001Dockerfile\u3067\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002Lagoon\u306fDocker\u3092\u5b8c\u5168\u306b\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u305f\u3081Dockerfile\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306b\u3088\u3063\u3066\u51fa\u6765\u4e0a\u304c\u308b\u30a4\u30e1\u30fc\u30b8\u3092\u5b8c\u5168\u306b\u5236\u5fa1\u3067\u304d\u307e\u3059\u3002
- \u30a4\u30e1\u30fc\u30b8\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba: Lagoon\u3067\u306f\u3001\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u3042\u306a\u305f\u306e\u30cb\u30fc\u30ba\u306b\u5408\u308f\u305b\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u8ffd\u52a0\u306e\u74b0\u5883\u5909\u6570\u3092\u633f\u5165\u3057\u305f\u308a\u3001\u30b5\u30fc\u30d3\u30b9\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3057\u305f\u308a\u3001\u3055\u3089\u306b\u8ffd\u52a0\u306e\u30c4\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u3082\u542b\u307e\u308c\u307e\u3059\u3002Docker\u30a4\u30e1\u30fc\u30b8\u306b\u8ffd\u52a0\u306e\u30c4\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u969b\u306b\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002\u306a\u305c\u306a\u3089\u3001\u5c06\u6765\u7684\u306b\u4efb\u610f\u306e\u9069\u5fdc\u3092\u7dad\u6301\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3089\u3067\u3059\uff01
"},{"location":"ja/using-lagoon-the-basics/#lagoon_1","title":"Lagoon\u306b\u3088\u308b\u30b5\u30dd\u30fc\u30c8\u30b5\u30fc\u30d3\u30b9\u3068\u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8","text":"\u30bf\u30a4\u30d7 \u30d0\u30fc\u30b8\u30e7\u30f3 Dockerfile MariaDB 10.4, 10.5, 10.6, 10.11 mariadb/Dockerfile PostgreSQL 11, 12, 13, 14, 15 postgres/Dockerfile MongoDB 4 mongo/Dockerfile NGINX openresty/1.25 nginx/Dockerfile Node.js 18, 20, 22 node/Dockerfile PHP FPM 8.1, 8.2, 8.3 php/fpm/Dockerfile PHP CLI 8.1, 8.2, 8.3 php/cli/Dockerfile Python 3.8, 3.9, 3.10, 3.11, 3.12 python/Dockerfile Redis 6, 7 redis/Dockerfile Solr 8, 9 solr/Dockerfile Varnish 6, 7 varnish/Dockerfile Opensearch 2 opensearch/Dockerfiles RabbitMQ 3.10 rabbitmq/Dockerfile Ruby 3.1, 3.2, 3.3 ruby/Dockerfile \u3059\u3079\u3066\u306e\u30a4\u30e1\u30fc\u30b8\u306fhttps://hub.docker.com/u/uselagoon\u306b\u30d7\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002\u7279\u6027\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u89b3\u70b9\u304b\u3089\u5e38\u306b\u6700\u65b0\u306e\u30bf\u30b0(\u4f8b:uselagoon/nginx:latest
)\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002
\u7279\u5b9a\u306eLagoon\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30a4\u30e1\u30fc\u30b8\u3001\u4f8b\u3048\u3070uselagoon/nginx:20.10.0
\u3084uselagoon/node-10:20.10.0
\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u65b0\u3057\u3044Lagoon\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305f\u3089\u3059\u3050\u306b\u30a4\u30e1\u30fc\u30b8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u5404\u81ea\u306e\u8cac\u4efb\u3067\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\uff01
"},{"location":"ja/using-lagoon-the-basics/configure-webhooks/","title":"Webhooks\u306e\u8a2d\u5b9a","text":"Lagoon\u306e\u7ba1\u7406\u8005\u306f\u3001webhook-handler
\u3078\u306e\u30eb\u30fc\u30c8\u3082\u3042\u306a\u305f\u306b\u6559\u3048\u3066\u304f\u308c\u308b\u3067\u3057\u3087\u3046\u3002\u3053\u306e\u30eb\u30fc\u30c8\u3092\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30a2\u30a6\u30c8\u30b4\u30fc\u30a4\u30f3\u30b0webhook\u306b\u8ffd\u52a0\u3057\u3001Lagoon\u306b\u9001\u4fe1\u3059\u308b\u30a4\u30d9\u30f3\u30c8\u3092\u9078\u629e\u3057\u307e\u3059\u3002\u901a\u5e38\u306f\u5168\u3066\u306e\u30d7\u30c3\u30b7\u30e5\u3068\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002Lagoon\u3067\u306f\u3069\u306e\u30d6\u30e9\u30f3\u30c1\u3084\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5b9f\u969b\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306e\u6b63\u898f\u8868\u73fe\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001Lagoon\u306e\u7ba1\u7406\u8005\u304c\u305d\u308c\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001feature-
\u3067\u59cb\u307e\u308b\u5168\u3066\u306e\u30d6\u30e9\u30f3\u30c1\u3092Lagoon\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
amazee.io\u306e\u304a\u5ba2\u69d8\u3078\u306e\u60c5\u5831 amazee.io\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u3067\u5834\u5408\u3001webhook-handler\u3078\u306e\u30eb\u30fc\u30c8\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002https://hooks.lagoon.amazeeio.cloud
\u5371\u967a
\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u7ba1\u7406\u3059\u308b\u306b\u306f\u3001\u3053\u308c\u3089\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u9ad8\u3044\u30ec\u30d9\u30eb\u306e\u30a2\u30af\u30bb\u30b9\u304c\u5fc5\u8981\u3068\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3042\u306a\u305f\u306e\u7d44\u7e54\u306b\u3088\u3063\u3066\u7ba1\u7406\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u5834\u5408\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u7ba1\u7406\u8005\u307e\u305f\u306f\u3042\u306a\u305f\u306e\u7d44\u7e54\u5185\u306e\u9069\u5207\u306a\u8cac\u4efb\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/configure-webhooks/#github","title":"GitHub","text":" - GitHub\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u8a2d\u5b9a -> Webhooks ->
Add webhook
\u306b\u9032\u307f\u307e\u3059\u3002 Payload URL
\u306f\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u304b\u3089\u63d0\u4f9b\u3055\u308c\u308b\u3001\u3042\u306a\u305f\u306eLagoon\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306ewebhook-handler
\u3078\u306e\u30eb\u30fc\u30c8\u3067\u3059\u3002 Content type
\u3092application/json
\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002 - \"
Let me select individual events
\"\u3092\u9078\u629e\u3057\u307e\u3059\u3002 - \u3069\u306e\u30a4\u30d9\u30f3\u30c8\u304cwebhook\u3092\u30c8\u30ea\u30ac\u30fc\u3059\u308b\u304b\u3092\u9078\u629e\u3057\u307e\u3059\u3002
Push
\u3068Pull request
\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306eLagoon\u8a2d\u5b9a\u3067\u3055\u3089\u306b\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002 - webhook\u304c
Active
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 Add webhook
\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/configure-webhooks/#gitlab","title":"GitLab","text":" - GitLab\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u8a2d\u5b9a -> \u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
URL
\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u304b\u3089\u63d0\u4f9b\u3055\u308c\u308b\u3001Lagoon\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306ewebhook-handler
\u3078\u306e\u30eb\u30fc\u30c8\u3067\u3059\u3002 - Lagoon\u306b\u901a\u77e5\u3092\u9001\u4fe1\u3059\u308b
Trigger
\u30a4\u30d9\u30f3\u30c8\u3092\u9078\u629e\u3057\u307e\u3059\u3002Push events
\u3068Merge request events
\u3092\u9078\u629e\u3057\u3001\u305d\u306e\u5f8cLagoon\u306e\u8a2d\u5b9a\u3067\u3055\u3089\u306b\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002 Add webhook
\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/configure-webhooks/#bitbucket","title":"Bitbucket","text":" - \u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u8a2d\u5b9a -> \u30a6\u30a7\u30d6\u30d5\u30c3\u30af -> \u65b0\u3057\u3044\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u3092\u8ffd\u52a0\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002
Title
\u306f\u53c2\u7167\u7528\u3067\u3059\u3002 URL
\u306f\u3042\u306a\u305f\u306eLagoon\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306ewebhook-handler
\u3078\u306e\u30eb\u30fc\u30c8\u3067\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002 -
Choose from a full list of triggers
\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u4ee5\u4e0b\u3092\u9078\u629e\u3057\u307e\u3059:
- Repository
- PUsh
- Pull Request
- Created
- Updated
- Approved
- Approval removed
- Merged
- Declined
5. Save
\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066Bitbucket\u306e\u30a6\u30a7\u30d6\u30d5\u30c3\u30af\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/first-deployment/","title":"\u6700\u521d\u306e\u30c7\u30d7\u30ed\u30a4","text":"\u6ce8\u610f:
Drupal\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5834\u5408\u306f\u3001\u3053\u308c\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u3001Drupal\u306e\u521d\u56de\u30c7\u30d7\u30ed\u30a4\u3092\u304a\u8aad\u307f\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/first-deployment/#1","title":"1. \u6e96\u5099\u304c\u6574\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059","text":"\u6700\u521d\u306e\u30c7\u30d7\u30ed\u30a4\u3092\u6210\u529f\u3055\u305b\u308b\u305f\u3081\u306b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304cLagoon\u5316\u3055\u308c\u3066\u304a\u308a\u3001Lagoon\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3082\u3057\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u3001\u307e\u305f\u306f\u78ba\u4fe1\u304c\u6301\u3066\u306a\u3044\u5834\u5408\u3001\u307e\u305f\u306f\u99b4\u67d3\u307f\u304c\u306a\u3044\u5834\u5408\u306f\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u306e\u30ac\u30a4\u30c9\u306b\u623b\u3063\u3066\u3069\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3059\u308b\u304b\u898b\u3066\u304b\u3089\u3001\u518d\u5ea6\u3053\u306e\u30da\u30fc\u30b8\u306b\u6765\u3066\u304f\u3060\u3055\u3044\uff01
"},{"location":"ja/using-lagoon-the-basics/first-deployment/#2","title":"2. \u30d7\u30c3\u30b7\u30e5","text":"Lagoon\u3067\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u30d6\u30e9\u30f3\u30c1\u306b\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3053\u3068\u3067\u65b0\u3057\u3044\u30c7\u30d7\u30ed\u30a4\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
\u65b0\u3057\u3044\u30b3\u30fc\u30c9\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3082\u306e\u304c\u306a\u3044\u5834\u5408\u3067\u3082\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\uff01\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Git pushgit commit --allow-empty -m \"go, go! Lagoon!\"\ngit push\n
\u3053\u308c\u306b\u3088\u308a\u30d7\u30c3\u30b7\u30e5\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u3001Git\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u304c\u8a2d\u5b9a\u3055\u308c\u305fWebhook\u3092\u901a\u3058\u3066Lagoon\u306b\u3053\u306e\u30d7\u30c3\u30b7\u30e5\u3092\u901a\u77e5\u3057\u307e\u3059\u3002
\u3059\u3079\u3066\u6b63\u3057\u3051\u308c\u3070\u8a2d\u5b9a\u3055\u308c\u305f\u30c1\u30e3\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u306e\u901a\u77e5\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002(\u3053\u308c\u306f\u89aa\u5207\u306aLagoon\u306e\u7ba1\u7406\u8005\u304c\u8a2d\u5b9a\u3057\u305f\u3082\u306e\u3067\u3059)
\u3053\u308c\u306f\u3001Lagoon\u304c\u3042\u306a\u305f\u306e\u30b3\u30fc\u30c9\u306e\u30c7\u30d7\u30ed\u30a4\u3092\u958b\u59cb\u3057\u305f\u3053\u3068\u3092\u901a\u77e5\u3057\u307e\u3059\u3002\u30b3\u30fc\u30c9\u306e\u5927\u304d\u3055\u3084\u30b3\u30f3\u30c6\u30ca\u306e\u91cf\u306b\u3088\u308a\u307e\u3059\u304c\u3001\u3053\u308c\u306b\u306f\u6570\u79d2\u304b\u304b\u308a\u307e\u3059\u3002\u30ea\u30e9\u30c3\u30af\u30b9\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4eca\u4f55\u304c\u8d77\u3053\u3063\u3066\u3044\u308b\u306e\u304b\u77e5\u308a\u305f\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u30d7\u30ed\u30bb\u30b9\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
Lagoon UI \u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u5c55\u958b\u306e\u9032\u884c\u72b6\u6cc1\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059 (\u3053\u308c\u306b\u3064\u3044\u3066\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044)\u3002
"},{"location":"ja/using-lagoon-the-basics/first-deployment/#3","title":"3. \u5b8c\u4e86\u3057\u307e\u3057\u305f","text":"Lagoon\u304c\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u3092\u5b8c\u4e86\u3059\u308b\u3068\u3001\u30c1\u30e3\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u306b2\u3064\u76ee\u306e\u901a\u77e5\u3092\u9001\u308a\u307e\u3059\u3002\u3053\u3053\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002
\u3053\u308c\u306b\u306f\u4ee5\u4e0b\u306e\u60c5\u5831\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059:
- \u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8
- \u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30d6\u30e9\u30f3\u30c1\u3068Git SHA
- \u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u306e\u30ed\u30b0\u3078\u306e\u30ea\u30f3\u30af
- \u74b0\u5883\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c8(URL)\u3078\u306e\u30ea\u30f3\u30af
\u307e\u305f\u3001\u3069\u306e\u3088\u3046\u306a\u901a\u77e5\u306a\u306e\u304b\u3092\u3059\u3050\u306b\u5224\u65ad\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u305d\u308c\u3089\u306f\u7d75\u6587\u5b57\u306b\u3088\u3063\u3066\u59cb\u307e\u308a\u307e\u3059\u3002\u30d3\u30eb\u30c9\u304c\u958b\u59cb\u3057\u305f\u3060\u3051\u306e\u60c5\u5831\u3067\u3042\u308b\u304b\u3001\u6210\u529f\u3067\u3042\u308b\u304b\u3001\u307e\u305f\u306f\u5931\u6557\u3067\u3042\u308b\u304b\u3002
\u305d\u308c\u3060\u3051\u3067\u3059\uff01\u3042\u307e\u308a\u96e3\u3057\u304f\u306a\u304b\u3063\u305f\u3053\u3068\u3092\u9858\u3063\u3066\u3044\u307e\u3059\u3002devOps\u3092\u5229\u7528\u53ef\u80fd\u306b\u3059\u308b\u3053\u3068\u304c\u79c1\u305f\u3061\u306e\u76ee\u6a19\u3067\u3059\uff01
"},{"location":"ja/using-lagoon-the-basics/first-deployment/#_2","title":"\u4ed6\u306e\u30d6\u30e9\u30f3\u30c1\u3084\u672c\u756a\u74b0\u5883\u306b\u3064\u3044\u3066\u306f\u3069\u3046\u3067\u3057\u3087\u3046\u304b\uff1f","text":"\u3053\u308c\u304cLagoon\u306e\u826f\u3044\u3068\u3053\u308d\u3067\u3059\u3002\u305d\u308c\u3089\u306f\u307e\u3063\u305f\u304f\u540c\u3058\u65b9\u6cd5\u3067\u3059\uff01\u30d6\u30e9\u30f3\u30c1\u306e\u540d\u524d\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u3060\u3051\u3067\u3001\u305d\u306e\u30d6\u30e9\u30f3\u30c1\u304c\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/first-deployment/#_3","title":"\u5931\u6557\uff1f\u5fc3\u914d\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044","text":"\u30c7\u30d7\u30ed\u30a4\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u304b\uff1f\u79c1\u305f\u3061\u304c\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\u3002
- Drupal\u30b5\u30a4\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u5834\u5408\u3001Drupal\u306e\u521d\u56de\u30c7\u30d7\u30ed\u30a4\u3092\u8aad\u3080\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u306a\u305c\u3053\u308c\u304c\u8d77\u3053\u308b\u306e\u304b\u3092\u8aac\u660e\u3057\u307e\u3059\u3002
- \u30a8\u30e9\u30fc\u901a\u77e5\u306e
Logs
\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30d7\u30ed\u30bb\u30b9\u306e\u3069\u3053\u3067\u5931\u6557\u304c\u767a\u751f\u3057\u305f\u304b\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 - \u3082\u3057\u7406\u89e3\u3067\u304d\u306a\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u30b5\u30dd\u30fc\u30c8\u306b\u5c0b\u306d\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u79c1\u305f\u3061\u304c\u304a\u624b\u4f1d\u3044\u3057\u307e\u3059\uff01
- \u30b5\u30dd\u30fc\u30c8\u30c1\u30e3\u30f3\u30cd\u30eb\u307e\u305f\u306fDiscord\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u79c1\u305f\u3061\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/","title":"\u30e9\u30a4\u30d6\u914d\u4fe1\u958b\u59cb","text":"\u304a\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3001\u3042\u306a\u305f\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304cLagoon\u4e0a\u3067\u30e9\u30a4\u30d6\u914d\u4fe1\u3059\u308b\u4e00\u6b69\u624b\u524d\u306b\u6765\u307e\u3057\u305f\uff01\u3053\u308c\u3092\u3067\u304d\u308b\u3060\u3051\u30b9\u30e0\u30fc\u30ba\u306b\u9032\u3081\u308b\u305f\u3081\u306b\u3001\u6700\u5f8c\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\u3092\u3054\u7528\u610f\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u3001\u30b5\u30a4\u30c8\u3092\u30e9\u30a4\u30d6\u914d\u4fe1\u3059\u308b\u524d\u306b\u6700\u5f8c\u306b\u78ba\u8a8d\u3059\u3079\u304d\u3053\u3068\u3092\u30ac\u30a4\u30c9\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/#lagoonyml","title":".lagoon.yml
\u3092\u78ba\u8a8d\u3059\u308b","text":""},{"location":"ja/using-lagoon-the-basics/going-live/#ssl","title":"\u30eb\u30fc\u30c8 / SSL","text":"\u3042\u306a\u305f\u306e.lagoon.yml
\u306b\u3059\u3079\u3066\u306e\u30eb\u30fc\u30c8\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30c9\u30e1\u30a4\u30f3\u3092Lagoon\u306b\u5411\u3051\u306a\u3044\u5834\u5408\u3001Let's Encrypt(LE)\u306e\u8a3c\u660e\u66f8\u306e\u4f5c\u6210\u3092\u7121\u52b9\u306b\u3059\u3079\u304d\u3067\u3042\u308b\u3053\u3068\u3092\u8a8d\u8b58\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u307e\u307e\u3067\u306f\u554f\u984c\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002Lagoon\u306b\u5411\u3051\u3066\u3044\u306a\u3044\u30c9\u30e1\u30a4\u30f3\u306f\u3001Let's Encrypt\u306e\u5236\u9650\u3092\u8d85\u3048\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3057\u3070\u3089\u304f\u3059\u308b\u3068\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\u3002
\u8a3c\u660e\u6a5f\u95a2(CA)\u306b\u3088\u308b\u7f72\u540d\u4ed8\u304d\u8a3c\u660e\u66f8\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001tls-acme
\u3092false
\u306b\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u304c\u3001insecure
\u30d5\u30e9\u30b0\u306fAllow
\u307e\u305f\u306fRedirect
\u306b\u8a2d\u5b9a\u3057\u305f\u307e\u307e\u306b\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002CA\u8a3c\u660e\u66f8\u306e\u5834\u5408\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u30eb\u30fc\u30c8\u3068\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308bSSL\u8a3c\u660e\u66f8\u3092\u77e5\u3089\u305b\u3066\u304f\u3060\u3055\u3044\u3002
.lagoon.ymlenvironments:\nmain:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'false'\ninsecure: Allow\n- www.example.com:\ntls-acme: 'false'\ninsecure: Allow\n
\u6b21\u306b DNS\u30a8\u30f3\u30c8\u30ea\u304c\u3042\u306a\u305f\u306eLagoon\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u6307\u3059\u3088\u3046\u306b\u306a\u308b\u3068\u3001\u30d5\u30e9\u30b0\u3092\u5207\u308a\u66ff\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059:tls-acme
\u3092 true
\u306b\u3001insecure
\u3092 Redirect
\u306b\u3057\u307e\u3059\u3002
.lagoon.ymlenvironments:\nmain:\nroutes:\n- nginx:\n- example.com:\ntls-acme: 'true'\ninsecure: Redirect\n- www.example.com:\ntls-acme: 'true'\ninsecure: Redirect\n
\u6ce8\u610f
\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u3059\u3079\u3066\u306e\u30da\u30fc\u30b8\u3092\u78ba\u8a8d\u3059\u308b\u306e\u306f\u5c11\u3057\u624b\u9593\u304c\u304b\u304b\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u306e\u3067\u3001mixed-content-scan\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30b5\u30a4\u30c8\u5168\u4f53\u3092\u30af\u30ed\u30fc\u30eb\u3057\u3001\u975eHTTPS\u30b5\u30a4\u30c8\u304b\u3089\u306e\u30a2\u30bb\u30c3\u30c8\u3092\u542b\u3080\u30da\u30fc\u30b8\u3092\u8fd4\u3057\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/#_2","title":"\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306b\u3064\u3044\u3066","text":"\u975ewww\u304b\u3089www\u3078\u306e\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u305d\u308c\u3089\u304c redirects-map.conf
\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167
"},{"location":"ja/using-lagoon-the-basics/going-live/#cron-jobs","title":"Cron jobs","text":"production\u74b0\u5883\u7528\u306eCron jobs\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002.lagoon.yml\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8
\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/#dns","title":"DNS","text":"\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u304camazee.io\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u3067\u304d\u308b\u3060\u3051\u30b9\u30e0\u30fc\u30ba\u306b\u63a5\u7d9a\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u5c02\u7528\u306e\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u30fcDNS\u30ec\u30b3\u30fc\u30c9\u3092\u7528\u610f\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u6280\u8853\u7684\u306aDNS\u30ea\u30bd\u30fc\u30b9\u30ec\u30b3\u30fc\u30c9\u306f\u3001\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u3092amazee.io\u306e\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306b\u30ea\u30f3\u30af\u3055\u308c\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u4ed6\u306e\u76ee\u7684\u3067\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002CNAME\u30ec\u30b3\u30fc\u30c9\u306b\u7591\u554f\u304c\u3042\u308b\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u6b63\u78ba\u306aCNAME\u3092\u8a2d\u5b9a\u3057\u3066\u3082\u3089\u3063\u3066\u304f\u3060\u3055\u3044\u3002
amazee.io\u306e\u4f8b: <region-identifier>.amazee.io
\u30c9\u30e1\u30a4\u30f3\u3092Lagoon\u306b\u5207\u308a\u66ff\u3048\u308b\u524d\u306b\u3001\uff08\u30e9\u30a4\u30d6\u306b\u306a\u308b\u524d\u306b\uff09Time-to-Live (TTL)\u3092\u4e0b\u3052\u3066\u304a\u304f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u53e4\u3044\u30b5\u30fc\u30d0\u30fc\u304b\u3089\u65b0\u3057\u3044\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u5207\u308a\u66ff\u3048\u304c\u8fc5\u901f\u306b\u884c\u308f\u308c\u307e\u3059\u3002\u901a\u5e38\u3001DNS\u306e\u5207\u308a\u66ff\u3048\u524d\u306b\u306fTTL\u3092300-600\u79d2\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002TTL\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u60c5\u5831
\u60c5\u5831:
\u3053\u306e\u60c5\u5831\u306famazee.io\u304c\u30db\u30b9\u30c8\u3057\u3066\u3044\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u306e\u307f\u95a2\u9023\u3057\u3066\u304a\u308a\u3001\u307e\u3082\u306a\u304f\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u304b\u3089\u524a\u9664\u3055\u308c\u3001amazee.io\u56fa\u6709\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3059
"},{"location":"ja/using-lagoon-the-basics/going-live/#fastly","title":"Fastly\u306e\u63a8\u5968\u8a2d\u5b9a","text":"\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3 (CNAME)
\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3(\u4f8b: www.example.com.)\u306eDNS\u30ec\u30b3\u30fc\u30c9\u3092Lagoon\u306b\u5411\u3051\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306bCNAME\u30ec\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\uff1a
CNAME
: cdn.amazee.io
\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3(A/AAAA) \u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3(example.com.\u306a\u3069)\u306e\u8a2d\u5b9a\u306f\u3001DNS\u4ed5\u69d8\u3067\u306f\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3\u304cCNAME\u3092\u6307\u3059\u3053\u3068\u3092\u8a31\u53ef\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u5384\u4ecb\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u305d\u306e\u305f\u3081\u3001\u4ee5\u4e0b\u306eA\u30ec\u30b3\u30fc\u30c9\u3068AAAA\u30ec\u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u4e0b\u8a18\u306e\u5404IP\u306b\u500b\u5225\u306e\u30ec\u30b3\u30fc\u30c9\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\uff1a
A
: 151.101.2.191
A
: 151.101.66.191
A
: 151.101.130.191
A
: 151.101.194.191
AAAA
: 2a04:4e42::703
AAAA
: 2a04:4e42:200::703
AAAA
: 2a04:4e42:400::703
AAAA
: 2a04:4e42:600::703
\u6ce8\u610f:
\u9759\u7684IP\u306e\u8a2d\u5b9a\u306f\u63a8\u5968\u3057\u307e\u305b\u3093 DNS\u30be\u30fc\u30f3\u5185\u306eIP\u30a2\u30c9\u30ec\u30b9\u3002Lagoon\u306e\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u30a4\u30f3\u30d5\u30e9\u304c\u6642\u9593\u3068\u3068\u3082\u306b\u5909\u5316\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u3001\u9759\u7684IP\u30a2\u30c9\u30ec\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u3068\u30b5\u30a4\u30c8\u306e\u5229\u7528\u53ef\u80fd\u6027\u306b\u5f71\u97ff\u3092\u53ca\u307c\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/#_3","title":"\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3","text":"\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3(\u4f8b:example.com)\u306e\u8a2d\u5b9a\u306f\u3001DNS\u306e\u4ed5\u69d8\u304c\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3\u3092CNAME\u30a8\u30f3\u30c8\u30ea\u306b\u30dd\u30a4\u30f3\u30c8\u3059\u308b\u3053\u3068\u3092\u8a31\u53ef\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u5c11\u3005\u30c8\u30ea\u30c3\u30ad\u30fc\u306b\u306a\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002DNS\u30d7\u30ed\u30d0\u30a4\u30c0\u306b\u3088\u3063\u3066\u306f\u3001\u30ec\u30b3\u30fc\u30c9\u540d\u304c\u7570\u306a\u308a\u307e\u3059:
- ALIAS at DNSimple
- ANAME at DNS Made Easy
- ANAME at easyDNS
- ALIAS at PointDNS
- CNAME at CloudFlare
- CNAME at NS1
DNS\u30d7\u30ed\u30d0\u30a4\u30c0\u304c\u30eb\u30fc\u30c8\u30c9\u30e1\u30a4\u30f3\u7528\u306eIP\u30a2\u30c9\u30ec\u30b9\u3092\u5fc5\u8981\u3068\u3059\u308b\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u306eIP\u30a2\u30c9\u30ec\u30b9\u3092\u63d0\u4f9b\u3057\u3066\u3082\u3089\u3044\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/going-live/#_4","title":"\u672c\u756a\u74b0\u5883","text":"Lagoon\u306f\u958b\u767a\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u306e\u6982\u5ff5\u3092\u7406\u89e3\u3057\u3066\u3044\u307e\u3059\u3002\u958b\u767a\u74b0\u5883\u306f\u81ea\u52d5\u7684\u306bnoindex
\u3068nofollow
\u306e\u30d8\u30c3\u30c0\u30fc\u3092\u9001\u4fe1\u3057\u3001\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u306b\u3088\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3092\u7981\u6b62\u3057\u307e\u3059\u3002
X-Robots-Tag: noindex, nofollow
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a\u4e2d\u306b\u3001\u672c\u756a\u74b0\u5883\u306f\u3059\u3067\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u306f\u305a\u3067\u3059\u3002\u3082\u3057\u307e\u3060\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001 \u7701\u7565\u3055\u308c\u305f\u5834\u5408\u3001\u3042\u306a\u305f\u306e\u74b0\u5883\u306f\u958b\u767a\u30e2\u30fc\u30c9\u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002Lagoon\u306e\u30e6\u30fc\u30b6\u30fc\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3067\u74b0\u5883\u304c\u672c\u756a\u74b0\u5883\u3068\u3057\u3066\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u672c\u756a\u74b0\u5883\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u77e5\u3089\u305b\u3066\u3001\u30b7\u30b9\u30c6\u30e0\u3092\u9069\u5207\u306b\u8a2d\u5b9a\u3057\u3066\u3082\u3089\u3063\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/lagoon-build-errors-and-warnings/","title":"Lagoon\u30d3\u30eb\u30c9\u306e\u30a8\u30e9\u30fc\u3068\u8b66\u544a","text":"\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306eLagoon\u3067\u306f\u3001\u30d3\u30eb\u30c9\u306b\u6f5c\u5728\u7684\u306a\u554f\u984c\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u8b58\u5225\u3057\u3001\u5931\u6557\u305b\u305a\u306b\u305d\u308c\u3089\u3092\u8b66\u544a\u3068\u3057\u3066\u30cf\u30a4\u30e9\u30a4\u30c8\u3059\u308b\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u307e\u305fLagoon\u30c1\u30fc\u30e0\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u5bfe\u3057\u3066\u4e88\u5b9a\u3055\u308c\u3066\u3044\u308b\u975e\u63a8\u5968\u4e8b\u9805\u3084\u6a5f\u80fd\u306e\u5909\u66f4\u3092\u901a\u77e5\u3059\u308b\u65b9\u6cd5\u3067\u3082\u3042\u308a\u307e\u3059\u3002
\u4f8b\u3048\u3070\u3001Lagoon\u30c1\u30fc\u30e0\u304c .lagoon.yml
\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u5909\u66f4\u3059\u3079\u304d\u3053\u3068\u304c\u3042\u308b\u5834\u5408\u3001\u8b66\u544a\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306f\u3001\u305d\u308c\u3092\u7834\u58ca\u7684\u306a\u5909\u66f4\u306b\u306a\u308b\u524d\u306b\u4fee\u6b63\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u53ef\u80fd\u306a\u9650\u308a\u65e9\u671f\u306b\u89e3\u6c7a\u3059\u308b\u3079\u304d\u3067\u3042\u308a\u3001\u5c06\u6765\u306eLagoon\u306e\u30ea\u30ea\u30fc\u30b9\u3067\u306f\u30a8\u30e9\u30fc\u3092\u51e6\u7406\u3067\u304d\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u30d3\u30eb\u30c9\u3092\u505c\u6b62\u3059\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002
\u3053\u308c\u3089\u306e\u30a8\u30e9\u30fc\u306e\u89e3\u6c7a\u65b9\u6cd5\u304c\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u3001Lagoon\u306e\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u304b\u3001Lagoon\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u8cea\u554f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/lagoon-build-errors-and-warnings/#docker-compose-errors","title":"Docker Compose\u306e\u30a8\u30e9\u30fc","text":"\u3088\u304f\u3042\u308bDocker Compose\u306e\u554f\u984c\u306b\u3064\u3044\u3066\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3082\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u3089\u306e\u554f\u984c\u306e\u4e00\u90e8\u306f\u305d\u3053\u3067\u30ab\u30d0\u30fc\u3055\u308c\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
env_file \u30a8\u30e9\u30fc\u3092\u793a\u3059 Lagoon \u30d3\u30eb\u30c9\u51fa\u529b> an env_file is defined in your docker-compose file, but no matching file found\n
Docker Compose \u30d3\u30eb\u30c9\u6642\u306b\u53c2\u7167\u3055\u308c\u308benv\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3059\u308b\u3053\u3068\u3092\u671f\u5f85\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u305d\u306eenv\u30d5\u30a1\u30a4\u30eb\u306f\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3067\u306e\u307f\u5b58\u5728\u3059\u308b\u304b\u3001Dockerfile\u304b\u3089\u9664\u5916\u3055\u308c\u3066\u3044\u307e\u3059\u3002Lagoon\u30c1\u30fc\u30e0\u306f\u3001Docker Compose\u304c\u3053\u306e\u30a8\u30e9\u30fc\u3092\u7121\u8996\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3059\u308b\u305f\u3081\u306e\u4f5c\u696d\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u89e3\u6c7a\u7b56\u304c\u898b\u3064\u304b\u308b\u307e\u3067\u3053\u306e\u8b66\u544a\u306f\u7d9a\u304d\u307e\u3059\u3002
\u6587\u5b57\u5217\u30ad\u30fc\u30a8\u30e9\u30fc\u3092\u793a\u3059Lagoon\u30d3\u30eb\u30c9\u51fa\u529b> an invalid string key was detected in your docker-compose file\n
\u3042\u306a\u305f\u306eDocker Compose\u30d5\u30a1\u30a4\u30eb\u306b\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3059\u3001\u304a\u305d\u3089\u304f\u5f62\u5f0f\u304c\u4e0d\u6b63\u307e\u305f\u306f\u30a8\u30a4\u30ea\u30a2\u30b9\u3084\u30a2\u30f3\u30ab\u30fc\u306e\u4e0d\u5099\u306b\u95a2\u9023\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u898b\u308c\u3070\u305d\u306e\u5834\u6240\u304c\u308f\u304b\u308b\u306f\u305a\u3067\u3059\u3002
yaml\u691c\u8a3c\u30a8\u30e9\u30fc\u3092\u793a\u3059Lagoon\u30d3\u30eb\u30c9\u51fa\u529b> There are yaml validation errors in your docker-compose file that should be corrected\n
\u3042\u306a\u305f\u306eDocker Compose\u30d5\u30a1\u30a4\u30eb\u306b\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3059\u3001\u304a\u305d\u3089\u304f\u5f62\u5f0f\u304c\u4e0d\u6b63\u307e\u305f\u306f\u30a8\u30a4\u30ea\u30a2\u30b9\u3084\u30a2\u30f3\u30ab\u30fc\u306e\u4e0d\u5099\u306b\u95a2\u9023\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u898b\u308c\u3070\u305d\u306e\u5834\u6240\u304c\u308f\u304b\u308b\u306f\u305a\u3067\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/local-development-environments/","title":"\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883","text":"Lagoon\u306b\u306fDocker\u3068Docker Compose(\u307b\u3068\u3093\u3069\u304cDocker\u3068\u4e00\u7dd2\u306b\u51fa\u8377\u3055\u308c\u3066\u3044\u307e\u3059)\u306b\u3057\u304b\u4f9d\u5b58\u3057\u307e\u305b\u3093\u304c\u3001Docker\u306b\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u306b\u5f79\u7acb\u3064\u3082\u306e\u304c\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059:
- \u30ca\u30a4\u30b9\u306aURL\u3068HTTPS\u30aa\u30d5\u30ed\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u305f\u3081\u306eHTTP\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3002
- IP\u30a2\u30c9\u30ec\u30b9\u3092\u899a\u3048\u3066\u304a\u304f\u5fc5\u8981\u304c\u306a\u3044DNS\u30b7\u30b9\u30c6\u30e0\u3002
- \u30b3\u30f3\u30c6\u30ca\u5185\u3067SSH\u30ad\u30fc\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306eSSH\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3002
- \u30e1\u30fc\u30eb\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u53d7\u4fe1\u3057\u3066\u8868\u793a\u3059\u308b\u30b7\u30b9\u30c6\u30e0\u3002
Warning \u30ed\u30fc\u30ab\u30eb\u3067Lagoon\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\uff01\u3053\u308c\u306f\u6df7\u4e71\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002Lagoon\u306f\u3042\u306a\u305f\u306e\u30ed\u30fc\u30ab\u30eb\u958b\u767a\u74b0\u5883\u3092\u672c\u756a\u74b0\u5883\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u30b7\u30b9\u30c6\u30e0\u3067\u3042\u308a\u3001\u74b0\u5883\u305d\u306e\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-the-basics/local-development-environments/#pygmyddevlando-","title":"pygmy\u3001DDEV\u3001\u307e\u305f\u306fLando - \u9078\u629e\u306f\u3042\u306a\u305f\u6b21\u7b2c\u3067\u3059\u3002","text":""},{"location":"ja/using-lagoon-the-basics/local-development-environments/#pygmy","title":"pygmy","text":"Lagoon\u306f\u4f1d\u7d71\u7684\u306bpygmy
\u3068\u6700\u3082\u826f\u597d\u306b\u52d5\u4f5c\u3057\u3066\u304d\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u4e0a\u8a18\u306e\u30c4\u30fc\u30eb\u306eamazee.io\u30d5\u30ec\u30fc\u30d0\u30fc\u30b7\u30b9\u30c6\u30e0\u3067\u3042\u308a\u3001Lagoon\u3068\u305d\u306e\u307e\u307e\u52d5\u4f5c\u3057\u307e\u3059\u3002\u3053\u308c\u306fhttps://github.com/pygmystack/pygmy\u306b\u3042\u308a\u307e\u3059\u3002
pygmy
\u306fGolang\u3067\u66f8\u304b\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u306b\u306f\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059:
HomeBrew\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30ebbrew tap pygmystack/pygmy && brew install pygmy\n
pygmy\u306e\u8a73\u7d30\u306a\u4f7f\u7528\u65b9\u6cd5\u3084\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u60c5\u5831\u306b\u3064\u3044\u3066\u306f\u3001\u305d\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/local-development-environments/#lando","title":"Lando","text":"Lagoon\u306fLando\u3068\u975e\u5e38\u306b\u3088\u304f\u7d44\u307f\u5408\u308f\u3055\u308c\u3066\u3044\u307e\u3059\uff01\u8a73\u7d30\u306a\u60c5\u5831\u306f\u3001https://docs.lando.dev/config/lagoon.html\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002
Lando\u306eLagoon\u5411\u3051\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306fLando\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u3068\u3063\u3066\u306f\u99b4\u67d3\u307f\u6df1\u3044\u3082\u306e\u3067\u3042\u308a\u3001\u307e\u305fLagoon\u306e\u521d\u5fc3\u8005\u304c\u59cb\u3081\u308b\u306e\u306b\u3082\u6700\u3082\u7c21\u5358\u306a\u65b9\u6cd5\u306b\u306a\u308a\u307e\u3059\u3002\u4e00\u65b9\u3001Pygmy\u306fDocker\u3068\u3088\u308a\u5bc6\u63a5\u306b\u7d71\u5408\u3055\u308c\u3066\u304a\u308a\u3001\u3088\u308a\u8907\u96d1\u306a\u30b7\u30ca\u30ea\u30aa\u3084\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u304c\u3088\u308a\u6df1\u3044\u7406\u89e3\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/local-development-environments/#ddev","title":"DDEV","text":"Lagoon\u306fDDEV\u3067\u3082\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\uff01\u59cb\u3081\u308b\u305f\u3081\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002https://ddev.readthedocs.io/en/stable/users/providers/lagoon/\u3002
\u4ee5\u524d\u306b\u306f\u3001Docksal\u3084Docker4Drupal\u306a\u3069\u306e\u4ed6\u306e\u30b7\u30b9\u30c6\u30e0\u3078\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3092\u8a55\u4fa1\u3057\u305f\u3053\u3068\u304c\u3042\u308a\u307e\u3057\u305f\u3002\u5c06\u6765\u7684\u306b\u3053\u308c\u3089\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u53ef\u80fd\u6027\u306f\u3042\u308a\u307e\u3059\u304c\u3001\u73fe\u5728\u306e\u3068\u3053\u308d\u306f\u65e2\u5b58\u306e\u30c4\u30fc\u30eb\u3078\u306e\u30b5\u30dd\u30fc\u30c8\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u307e\u3059\u3002
"},{"location":"ja/using-lagoon-the-basics/setup-project/","title":"\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a","text":"\u6ce8\u610f:
\u6211\u3005\u306f\u5168\u3066\u306e\u4eba\u304cLagoon\u3092\u4f7f\u3063\u3066\u81ea\u5206\u81ea\u8eab\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8a2d\u5b9a\u3057\u3001\u69cb\u6210\u3059\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3059\u308b\u305f\u3081\u306eCLI\u3068GraphQL API\u306e\u8a2d\u5b9a\u306b\u71b1\u5fc3\u306b\u53d6\u308a\u7d44\u3093\u3067\u3044\u307e\u3059\u3002\u73fe\u5728\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u30ea\u30ea\u30fc\u30b9\u3067\u304d\u308b\u524d\u306b\u66f4\u306a\u308b\u30c6\u30b9\u30c8\u304c\u5fc5\u8981\u306a\u306e\u3067\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\uff01
\u305d\u308c\u307e\u3067\u306f\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a\u306fLagoon\u306e\u7ba1\u7406\u8005\u3068\u8a71\u3057\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u306b\u3064\u3044\u3066\u306f\u554f\u984c\u306a\u3044\u3067\u3059\u3001\u5f7c\u3089\u306fAPI\u3088\u308a\u3082\u305a\u3063\u3068\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u3067\u3059\u3002\ud83d\ude0a
\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u306e\u305f\u3081\u306b\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u6e96\u5099\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044:
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d
- \u3053\u306e\u540d\u524d\u306f\u5c0f\u6587\u5b57\u3001\u6570\u5b57\u3001\u30c0\u30c3\u30b7\u30e5\u306e\u307f\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059
- \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u5185\u306b\u30c0\u30d6\u30eb\u30c0\u30c3\u30b7\u30e5(
--
)\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093
- \u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u53d6\u308a\u7d44\u3080\u3059\u3079\u3066\u306e\u4eba\u306eSSH\u516c\u958b\u9375\u3001\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3001\u540d\u524d\u3002\u3053\u3053\u306b\u306f\u3001GitHub\u3001GitLab\u3001Bitbucket \u306eSSH\u30ad\u30fc\u306e\u751f\u6210\u3068\u30b3\u30d4\u30fc\u306b\u3064\u3044\u3066\u306e\u6307\u793a\u304c\u3042\u308a\u307e\u3059
- \u3042\u306a\u305f\u306e\u30b3\u30fc\u30c9\u304c\u30db\u30b9\u30c8\u3055\u308c\u3066\u3044\u308bGit\u30ea\u30dd\u30b8\u30c8\u30ea\u306eURL(
git@example.com:test/test.git
) - \u3042\u306a\u305f\u304c\u4f7f\u7528\u3059\u308bGit\u30d6\u30e9\u30f3\u30c1\u306e\u540d\u524d\u3042\u306a\u305f\u306e\u672c\u756a\u74b0\u5883\u3067\u4f7f\u7528\u3057\u305f\u3044\u74b0\u5883\u306b\u3064\u3044\u3066 (\u74b0\u5883\u306e\u7a2e\u985e \u3067\u74b0\u5883\u306e\u8a73\u7d30\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044)
- \u8ffd\u52a0\u306e\u74b0\u5883\u306b\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u3044\u30d6\u30e9\u30f3\u30c1\u3068\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3002Lagoon\u3067\u306f\u3001\u6b63\u898f\u8868\u73fe\u3067\u30d6\u30e9\u30f3\u30c1\u3068\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u540d\u524d\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3067\u304d\u3001\u3042\u306a\u305f\u306eLagoon\u7ba1\u7406\u8005\u304c\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002
\u7279\u5b9a\u306e\u91cd\u8981\u306a\u30d6\u30e9\u30f3\u30c1(\u4f8b\u3048\u3070develop
\u3084main
)\u3084\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u6700\u7d42\u7684\u306a\u5224\u65ad\u306f\u3042\u306a\u305f\u6b21\u7b2c\u3067\u3059\uff01(\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3067\u8a73\u7d30\u60c5\u5831\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044)
"},{"location":"ja/using-lagoon-the-basics/setup-project/#1-lagoon","title":"1. \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304cLagoon\u5316\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b","text":"\u3053\u308c\u306f\u3001.lagoon.yml
\u30d5\u30a1\u30a4\u30eb\u3068docker-compose.yml
\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u306a\u305f\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u5b58\u5728\u3057\u3001\u9069\u5207\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002
\u3082\u3057\u3053\u308c\u304c\u5b9f\u73fe\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u5148\u306b\u9032\u3080\u524d\u306b\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u30ac\u30a4\u30c9\u306e\u30ea\u30b9\u30c8\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"ja/using-lagoon-the-basics/setup-project/#2","title":"2. \u3042\u306a\u305f\u306e\u30b3\u30fc\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u63d0\u4f9b\u3059\u308b","text":"\u3042\u306a\u305f\u306e\u30b3\u30fc\u30c9\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306b\u3001Lagoon\u306f\u30b3\u30fc\u30c9\u3078\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u8a2d\u8a08\u4e0a\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u305f\u3081\u306bLagoon\u306f\u3042\u306a\u305f\u306eGit\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u3057\u304b\u5fc5\u8981\u3068\u3057\u307e\u305b\u3093
Lagoon\u306e\u7ba1\u7406\u8005\u304b\u3089\u3001\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u3092\u4e0e\u3048\u308b\u3079\u304dSSH\u516c\u958b\u9375\u3084Git\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6559\u3048\u3066\u3082\u3089\u3046\u5fc5\u7528\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
"},{"location":"ja/using-lagoon-the-basics/setup-project/#3-webhooks","title":"3. Webhooks\u306e\u8a2d\u5b9a","text":"Lagoon\u306f\u3001Git\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u8d77\u3053\u3063\u3066\u3044\u308b\u3044\u304f\u3064\u304b\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u77e5\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u73fe\u5728\u306f\u30d7\u30c3\u30b7\u30e5\u3068\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u3059\u304c\u3001\u5c06\u6765\u7684\u306b\u306f\u3082\u3063\u3068\u8ffd\u52a0\u3055\u308c\u308b\u4e88\u5b9a\u3067\u3059\u3002
Lagoon\u306f\u591a\u304f\u306e\u7570\u306a\u308bGit\u30db\u30b9\u30c8\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u308c\u3089\u306e\u6307\u793a\u3092\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u5206\u5272\u3057\u307e\u3057\u305f:Webhooks\u306e\u8a2d\u5b9a\u3002
"},{"location":"ja/using-lagoon-the-basics/setup-project/#4","title":"4. \u6b21\u306b:\u6700\u521d\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8","text":"\u304a\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3001\u3042\u306a\u305f\u306f\u4eca\u6700\u521d\u306e\u30c7\u30d7\u30ed\u30a4\u3092\u5b9f\u884c\u3059\u308b\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002
"}]}
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index 8d6be4a798..e2c2068a01 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,2162 +2,2162 @@
https://docs.lagoon.sh/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/code-of-conduct/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/contributing/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/laravel/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/node/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/options/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/other/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/php/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/python/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/ruby/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/wordpress/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/automatic-updates/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/drush-9/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/first-deployment-of-drupal/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/integrate-drupal-and-fastly/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/phpunit-and-phpstorm/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/subfolders/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/services/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/services/mariadb/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/services/nginx/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/services/php-cli/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/services/redis/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/services/solr/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/applications/drupal/services/varnish/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/community/discord/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/community/moderation/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/community/participation/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-advanced/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-advanced/backups/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-advanced/base-images/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-advanced/environment-idling/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-advanced/environment-types/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-advanced/environment-variables/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-advanced/feature-flags/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-advanced/service-types/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-advanced/workflows/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-basics/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-basics/build-and-deploy-process/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-basics/docker-compose-yml/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-basics/lagoon-yml/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-basics/building-blocks/deploy-targets/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-basics/building-blocks/groups/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-basics/building-blocks/notifications/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-basics/building-blocks/organizations/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-basics/building-blocks/projects/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-basics/building-blocks/roles/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/concepts-basics/building-blocks/users/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/contributing-to-lagoon/api-debugging/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/contributing-to-lagoon/developing-lagoon/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/contributing-to-lagoon/documentation/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/contributing-to-lagoon/releasing/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/contributing-to-lagoon/tests/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/commons/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/deprecated-images/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/mariadb/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/mongodb/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/mysql/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/nginx/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/nodejs/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/opensearch/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/php-cli/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/php-fpm/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/postgres/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/python/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/rabbitmq/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/redis/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/ruby/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/solr/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/docker-images/varnish/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/add-group/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/add-project/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/bulk-storage-provisioner/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/create-user/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/deploy-project/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/gitlab/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/install-harbor/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/install-lagoon-remote/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/lagoon-backups/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/lagoon-cli/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/lagoon-core/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/lagoon-files/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/lagoon-logging/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/logs-concentrator/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/opendistro/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/querying-graphql/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/requirements/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/installing-lagoon/update-lagoon/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/interacting/graphql-queries/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/interacting/graphql/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/interacting/lagoon-ui/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/interacting/organizations/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/interacting/rbac/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/interacting/ssh/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/lagoonizing/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/logging/kibana-examples/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/logging/logging/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/other-tools/client-libraries/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/other-tools/sail/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.10.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.11.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.12.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.13.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.14.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.14.1/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.14.2/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.15.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.15.1/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.15.2/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.15.3/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.15.4/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.16.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.17.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.18.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.18.1/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.18.2/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.19.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.20.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.20.1/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.21.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/2.22.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/releases/policy/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/resources/faq/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/resources/glossary/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/resources/tutorials-and-webinars/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/active-standby/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/blackfire/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/custom-tasks/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/deploytarget-configs/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/nodejs/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/private-repositories/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/project-default-users-keys/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/setting-up-xdebug-with-lagoon/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/simplesaml/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/triggering-deployments/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/using-harbor/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/using-harbor/security-scanning/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/using-harbor/harbor-settings/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/using-harbor/harbor-settings/harbor-core/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/using-harbor/harbor-settings/harbor-database/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/using-harbor/harbor-settings/harbor-jobservice/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/using-harbor/harbor-settings/harbor-trivy/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/using-harbor/harbor-settings/harborregistry/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-advanced/using-harbor/harbor-settings/harborregistryctl/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-the-basics/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-the-basics/configure-webhooks/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-the-basics/first-deployment/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-the-basics/going-live/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-the-basics/lagoon-build-errors-and-warnings/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-the-basics/local-development-environments/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/using-lagoon-the-basics/setup-project/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/code-of-conduct/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/contributing/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/laravel/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/node/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/options/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/other/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/php/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/python/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/ruby/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/wordpress/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/automatic-updates/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/drush-9/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/first-deployment-of-drupal/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/integrate-drupal-and-fastly/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/phpunit-and-phpstorm/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/step-by-step-getting-drupal-ready-to-run-on-lagoon/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/subfolders/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/services/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/services/mariadb/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/services/nginx/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/services/php-cli/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/services/redis/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/services/solr/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/applications/drupal/services/varnish/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/community/discord/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/community/moderation/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/community/participation/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-advanced/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-advanced/backups/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-advanced/base-images/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-advanced/environment-idling/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-advanced/environment-types/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-advanced/environment-variables/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-advanced/feature-flags/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-advanced/service-types/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-advanced/workflows/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-basics/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-basics/build-and-deploy-process/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-basics/docker-compose-yml/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-basics/lagoon-yml/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-basics/building-blocks/deploy-targets/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-basics/building-blocks/groups/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-basics/building-blocks/notifications/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-basics/building-blocks/organizations/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-basics/building-blocks/projects/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-basics/building-blocks/roles/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/concepts-basics/building-blocks/users/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/contributing-to-lagoon/api-debugging/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/contributing-to-lagoon/developing-lagoon/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/contributing-to-lagoon/documentation/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/contributing-to-lagoon/releasing/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/contributing-to-lagoon/tests/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/commons/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/deprecated-images/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/mariadb/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/mongodb/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/mysql/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/nginx/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/nodejs/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/opensearch/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/php-cli/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/php-fpm/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/postgres/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/python/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/rabbitmq/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/redis/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/ruby/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/solr/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/docker-images/varnish/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/add-group/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/add-project/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/bulk-storage-provisioner/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/create-user/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/deploy-project/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/gitlab/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/install-harbor/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/install-lagoon-remote/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/lagoon-backups/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/lagoon-cli/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/lagoon-core/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/lagoon-files/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/lagoon-logging/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/logs-concentrator/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/opendistro/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/querying-graphql/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/requirements/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/update-lagoon/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/interacting/graphql-queries/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/interacting/graphql/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/interacting/lagoon-ui/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/interacting/organizations/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/interacting/rbac/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/interacting/ssh/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/installing-lagoon/efs-provisioner/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/lagoonizing/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/logging/kibana-examples/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/logging/logging/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/other-tools/client-libraries/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/resources/faq/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/resources/glossary/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/resources/tutorials-and-webinars/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/active-standby/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/blackfire/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/custom-tasks/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/deploytarget-configs/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/nodejs/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/private-repositories/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/project-default-users-keys/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/setting-up-xdebug-with-lagoon/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/simplesaml/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/triggering-deployments/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/using-harbor/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/using-harbor/security-scanning/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/using-harbor/harbor-settings/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-core/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-database/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-jobservice/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/using-harbor/harbor-settings/harbor-trivy/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/using-harbor/harbor-settings/harborregistry/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-advanced/using-harbor/harbor-settings/harborregistryctl/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-the-basics/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-the-basics/configure-webhooks/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-the-basics/first-deployment/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-the-basics/going-live/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-the-basics/lagoon-build-errors-and-warnings/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-the-basics/local-development-environments/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/using-lagoon-the-basics/setup-project/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/other-tools/sail/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.10.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.11.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.12.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.13.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.14.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.14.1/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.14.2/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.15.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.15.1/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.15.2/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.15.3/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.15.4/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.16.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.17.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.18.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.18.1/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.18.2/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.19.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.20.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.20.1/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.21.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/2.22.0/
- 2024-12-05
+ 2024-12-16
daily
https://docs.lagoon.sh/ja/releases/policy/
- 2024-12-05
+ 2024-12-16
daily
diff --git a/sitemap.xml.gz b/sitemap.xml.gz
index d7d7d580a11b04eb48767d339004c22aa556ba44..a957bc57217408fa07b60d473a6d6c1b83ef93be 100644
GIT binary patch
literal 5446
zcmV-M6}jpkiwFqCieF~}|8r?{Wo=<_E_iKh0Og(CdYih|h0pg@^yxWCO_H`*PgnQZ
zcLm?R00A;qjS-cEQ?IMv2yo1gu!%i2?djc+$jJ?d?Ge!#AwZ
z4^pL%I$l-Z=*RZO$1e}BpPRq=>(9z;vff|5J=K4+czu0+tbh9X=f6Hx|EyN?zxumO
z#y{;}>FUoC8S96PrBdb(diD6@(f+XWt4y1XOn!!6!slQS28*xNZ?vx+ek)$FJmpKp
zfB#IF$aX&-JFgsmt+w=6Ci3+s#VhA5GhF4&@Xw!CiZ3%}1LAq}T~nCD;^)VYZt@p9
zvB_WTeXBnn-?N&ZS_PK}av8)jPs-R(NO5S{PpVTYXQrGRC8E+)ZzLKKcl`Rw*CBCM
zxU48L5i?VbS(-w)J->d!bxK?wZpIYb@{C-_d*29Q52Y>-J+B5La*5Zb5#sLYT%NTo
zXpSO#-w25hr2s-VE3W88Uc1H!yeD*d+{LOO7q<0`5Or4uAn2W0$(&x+jcts$`%0H5
zuF7afF7MhjLfSo@%d>uyDk&7#^gb*P&Jj`{i(MXlqRN8NI|^@YBZNLs0!y5gMsBK?
z;-D;&%A}^sU|a|um1%7-PSqE^3SOzw+1tlsGE@X3u@p+1AmK$OcN?A?dqs`*@O7jj
zJYF+QfFTsQ;i;;Ow+aEvlVDka$#zs39xDkC;v5%X6suF4G8d-SsQ#~wR2!=JoVDO_
zJ1P$bOdDPV(JrXJrrg-;^ZIt3NHRJr0Z!L}MdygL2S{dDP<`u+%eV%j
zzOn~GTYIrG%I<;Ep_FTo8mj}*T5@Je#e>ReN|aK+1S~pkRUj(unLOnYu3rKc6}Ku7
zl{cx@%S^rzC33KjMPsaZ8HwuPPsFs+Z!LRHe4ql7a#V^esprr%)7XMS$(YD=^4YcE
za5*Ut0<8M+nyVm|n?hD6NxMx(5tX9~97somLGUy`p^ByB9tVd*5N=qrbHt+RkJc6T
z<{fF6O1YssxJ_4tIK-Vc;RRu;B(-aq$1AxGvVpi4RJk-_NvRja#|pX*IJXBc{G>`*
zF8;Y6e*J>3!_V!(3%}~X^B0fr<8$u4mg`U($$J5&B(UHQ>2`Cx^p&b^~DO$j#mnykZrMR>08|Jq&vYBdAONxebFfL7r;=pu
zt#Opx2U-xh@AU7CVCuDPl+1fd0Ev@XTkNupkvPEW;lT!F!haF`cx`>7WZsto2wfID
z*PN+%MKAb{cZ~2IasU7bEs}Q|$A}(e8T@#Y%VI+_cWWFg_pTO1?oyjnQ9O-$caD<$
zPz)k^GF_ydzENTa=p)_VqGC}b%;q<}*x#LF1V0jkh@MJo6PIn2&@XRZGT0!IuIUcf
zD0yGpH@&|-D$QXWt})`iy!}gmdxZMExQ%0k4${#@)aG(NfOl4J}IPs%)TE6
za})tdv@^=+ve*}ZNn@x9#3L%RbznOOS8qS7u@&}_n=~GS^nq%yNS!nQge_Lw_UpD2
z$!L=57JvoEr3u92u-=XC$Tp|}i^_y75SUb$j72nowBE5m4CH_Sw66p!rXopnuo~2W
z1!O`N7)-kWQSps5oHn0+DcG3Y>Oi#GjT7o;cCrR6J`=LAV2Ip=JL(@9$i=thrnf8=
zr%l5afQ_T83Cm+Ch%D|pQ2{cMz9=k`Op;k5bg~9yEJIl+Ff!Fay>cu!iW#cM%HuN7
z@JuQL5wcTw5}}QfG|_bYV=-|^0>SuQa<#MHr-~IT8q-^6RDlI%QWywN6<;Z;Q=#g;
zNc5AxR{<6lrzjAT<|(&?mYkj{0Sk&-^-L<2D;C@3UXSfNFR*V#LFM>(+P*Iurxl?{
z5G8<@JY3@Kp>!#zWqvU3KlQQJ#krH~Ycy@%fBt~|in^Os5sRrsUwihScu(fypf!!z
zRzu7FW7e0>uxkD%{vmP&scY9yx-NzDl5H<8twqFg7Vtl8QxLg$I%VBc;wRKDN}tfx
z(V=C(X@gw*lxD?MV5H3SW1I>5+=om=icvWWI_lp~{<9=6hM}wIr~#-w`wzV*b5_tz
zlbs4z_^|l$@P$IoL(6_*o>I9ukST}sQVvm420W5`r8i={qKp`?fFnjo?_NoWa<3%(0-N%J
zUdjuUl;OtZklr1s5ao_k2zf^;q<2RuM7bjs!rhT7WG3PrsgzsGo>LyEoSCwgrHZSq
zE!l4x8Fvl)O4y}wVZLc5wPtEZE97_AzLOpaT^P41jZ}hVI$(JcyzxlnjKPuAcY
z#R=K7z?Ay1$SGjSmgO-|D9~^l_k-ZL7GUmnZuXW3+EjpP^ue7~2PTyXX+TI(#^Uu-
z&}c7mssv0lV^u&ZajA{m1cvFgrVFN51tuG(Fd&|$!=GU)<;FH>Sc;S|CTBI6xQ-eC
z#75_dN=N-;qJenAl6%XA5?i|nUGYL{VUGnlVKmNaFhLzP0E(^dY8oVb$;!;sy=Qf>
z<~!2xCTqe)c+v(SNXNtM8yKnwYiMNKn?+TZ?;;HSReBa#P
zi@Y)NBVX5HADird0>7>EM)!cOwaa$`v*JN@I3Z$sXJ{Sk2&f!tpy@X^P)o(_q^gya
zYtld*)!;HZVgMA|QYdXY7c(hC8`Xk~Y*HQ+SSst+#g)u{p(l0z62&;B84rO1+i
zDh(%i;<-+3u_EPILAvHf%NWkr#R_+}ooF(==iWe@o}w-1tU#uTeQaVh4!x9&Ud
zp$k?4!kD<68D=_NujtV`Pq3e?>qRh
z5=i=qDho#P=)86AJNJPMWaz9ka#Ot&2hC$_HDL_nT9Cj@3qzu+zUWo(N*K_-0wgR$
zIY=18yQ22m8~JhUNKr`0W;lSPXrFqSD!bCRd7-}1wyfA>JHi-`RfWWHjs-}N)mcxO
z3scKf|JO#U4Pk=La*)s+)rMrI4KIRd7t~+Vc71QVyC}|*U0`IO$~=(y?JT4|m*^SA
zBJsY!8R*_nMoXC`Tv0v(?G%AUZ>$JPrCHEGn#sNdEFwcaFFZC(36@0nz-37fcxui-KnKefM6|cS~I`i#O(l(YMsTedbi&fp0(ac_&2R
z;*MCnE(=XI_Pu|U_=jSU7&H&WhNYY`ibD-ZIL3l-NIL7D0+D2-mKmHb1qIL%T|b=6
zt|0sd8dri&sW0mX($-$qjIuicb*Kg%)>s-2*pf42yC76fQ@Wt~RiFTJOTvL^PxXlp
zb^R((z_=yhz`RMdUS{%*E|fzBC_u(?7sI%jjzk{DAQ3wL3BdSn@+U5>)$#e=pAmUI1
z9pCJ9v#9#JwQe6>6*SMTB0b7Y7lk#}op#`hVyYy;OPG-64t6UE1B
zx&k}50bdBEN?9)cxhsVIny!G*ZNL}8wz1T`(0ecE3gAZCzL+UV@FMHcTCPB=FYF6d
z{qVm#LDkf91yp@uh{j@eWl6iFgcTyFpX-;>Y&bSqiswdTCv|~2wXG`;O%iFd8kd8|
zYg!wcnT$(&M~l|vs~M#rvU2JIbE<4}rpb?ghcfW^j5UGT7_KQDollp5$E2@!E|2zt
za61plPL!l`lI!;FfxvMgnCKH;C>~eN5?V9qPF3L@$Fw927+Om~-QK-JfLiQ1*s9D^
zNj3V`yZ`71LO{{)^zV#j@U?UQvG-(PLZ`Hv+2!1O=rHS*2iueh|3&lDwzcj*_P!2G
z?y}&y=1j#alG%6cd(YpY1;c>W;(WJv@99G=zaMXPS!~EgZ@r^L-xUIiUTTvnqGwp|
z=KY61R02w$Qp0Pfb^po3w7l+bRIw-$X7ih5^6%!oXFpN`N}o`B6_<1Wxq~!N8ElhI
zn|FtC|B*v9dhc(NP>&jiaqo$PbfM{Ql2+Rpw|DQkLp7EWxi&1zI`@=Wk_7csQX&A3
zRp0@`964ARxAP#*^KqR249+uwKs|VKy!EKe)`4wuT)hvi%vNY2b286!`anS_uuiJO
zk&6|#4aV)XG_tU|HK6cu3Bn;ctgRzG#0|FN}!I3NlomFHfiok@@R|Kb$NlFWmPL_d5W~d3sMy5KbSE=Pj
zF+=zOdRz$(p-EXdNOmevBD7JGES*jXC|DeNa6EpOTzrv6x``wQbL#
z_cS1~)?{XF4PARqT6>wP#h3anCZG)KxHPHe8}SdF>v3Jj9(G07=Fbkdy;`>x5zAS?
z|FBI#=YsT7C0%aV<+_pQ^cJRM!0TJ$p#pEpU0nX(qL1YDX^TcjI2e9;sZOxG9ZPf@QjX=)fC~
zM9#?cpgdWIR~jcY&t+5U!$B&w2V%Otd!TS!2sV0qHnrtJb^eeiWY)pWDg_P9gf1+n
zC}Z(@DacG6I#mT4ov|b=n7GtNZUV#fT9aneD+CRXQx%p_GpoOO@`jyxu@ot7QqF?V
zh#ggjB}c03($Nyo=m2$La&Np)Vr%a!D_%$~>;WRDO~+Xf8mpt~(B$eRO+mt!tjtWk
z_DlzBzN5}>vMfZ3Cq2Nj)ZElve#;{GQ}>z=-h^4vnk92iWoSg_*#L$r>Py*-%meXG
zmVt+BtO?7;D3PXI*&j6rKa{2keyAigW+(Jv`8BVSTJJfd5Hwa!RgZ);k4q)YF3>T{
zb2|6q&MNIX6sLW7U5DwE3q+#r_k>nBURdO9kaju3r=BpwBBt-3
z{ClA{MStW9e-HR2qw3suE8_d#2RfzR)L!85g})zE2lw0E-R}ZTl{ZDdZwVc|;;CIh
zdH3kw>%1lSBU4wyADirdWe>2W-r`Qs^#!sYm=)hYl9nLaj(gv<98%B#ntQIL;&xir
zO3F2LCXRv-F&$BdCbtwyo6ZGK;@n2%AX1yuhGv$^`gO78#A$U3LFD96g(kFbq-GzL
z9&n|kYA3DQe%?ecG=8K!M4Gd`fHRgc%Yyc4-S+(+@O&$j%*o!0n_nCz-+4};=~hRv
zWkIZC@w{3P*|~)wR%+=gPlBtnYTKSyWc4)8U$9~yoX+)Q_^|l$@P*9!l)h^(%Te4C
z5J4|U2EFhf^a42OkYv!I|DZ$Qpr1$v{p3IBC*Yu;Ne2DwKj>%hpcf>AUic4s0UUHl
zGU(8M&>?8hFC>SK7ym=Y3-HkKLUQPM@jrCD01q86B!`X{|3k+M_|Wl0GUzA&K|cWp
z{Y*0GXa7Mzg9iPTFP#_eU)ZU$a6#
zN|iq8cv*d;pV}9no*&;Hn!ow$&(f^3-e11I)PFO3dwYATfBNwAUtg+!R;&46{aq&G
zpZ2eG^=FBU^<&0TDf36YeERWZf7tm|rp;O=Kf~wnHJF9L^St_v_O<i_e4+U7
zp9vG$_QzA_mHn^Pmj22_zWSng<(y@PtDG7B@MWp^B4aino;Tk$g*hxfJbiYPzu1vY
z{$d|n{qgjX)#<5KaCsmXK`is6j17ephnD@MI;C=E%DGV@Doyo9q7iY&udjR^5@&_W
ziXsy+Gu4=-DTLee>nB{N#O2{;OtB5m$c4P~jS%)w>hjR@Y9Jz)cx@UX?w-!&S<8av
zD6;d7koZsvAat|jieBWkYmC5qLYK!~EDLgBTh9nlcVz&A-kPP%>1Ey6#)!MGba~>c
zjJD+Ru1zDP-P5@|>vyS=LUB#+!*cH&A@#A?<eQypg{d{F|7#=FnkqhLEqL4x
z%7X#Zh8ID!4eGBcH}*RDZbwm^CELKrK$UqQ^Pt%hRh(y3iU<1wb8x#t87*X%a7Ffb
zvr_>gy0Iu660SBPrh5YL;U5vlP!b--nkm7Oh&+^C9an%el!k|try~DD9#K=p6#(^x
z;qg>QG(nsR@_=@ATmjKg8Xl73iJ<@4(^PQ~tokpJ;bmyr+uYj;9iXfu7O%=e)69Hl9xMBy
z9vB171F>c)C(B`903M66CJ+yvZ-kP0eY;L18J(2?$LqkNb3obyB(p83zIDcBTmw;G
z*#n`Cy;vD#_dsc1$~8!h)q!X&I5VZktRu%T<
z9ch?KxuH9_O;?0C#2q)`1!1ZrwQHG&E4dD`fw&h`xin%ysTaiO3c3zBw+Ao$q)J&X
z{<$B1{erH;&+Wkrzv{sA7mx4bbMB*->rflXdjX~-wX3HG3%L%ezP1-mr6w}_|FlA`
z!>O-*aU(Cg@}phy!3t5Gdq-uO5^V4_S%?3|Uq_`OAtijnGg;Ud=`5H!xfWDd)AFFe
zWL(l+h{)^zpYwH^&^S%^7=(6Cs
z=1j#)dck+RV}$RJ0{}p1k-XbDM)V-d;K!R>6lmYy^i*1#xNM_@etGkf!3K$RO?S9P
z$@}8I>HY0dX%6FXjS=_d?O*!aBh>H3Z5$(Xkd7`Q*M?)q&%Y=auGs7%NLfk}nQSVR*@>m3WkKn@5%`%186Dw0G8t3eG|
zKqh2?!L$ny6<#2R`1@^5ds2m?p+xJD|xFQq@
zq6F}ghfBOYlr9Ce%=gCqr#{xYICpY=ji$}}&mXW~QFpT{VllPoYtQ}@@5x*ow5BoJ
zYG~Pi%=*$9R?Yv!KSZt|b?y2|*QIb?vhBsCm55l*0{(}s3nCX!r>uKQ{D|5`=@Ys-
zI<)LJZIEl9(k!_OjFg#viZfxK`;du9F)C+42mSlW|0KzaVdyG4Y5;1_{zLD{oE3D_
zWT(OvKF*#WpDE-#wCpG5DV2*;p3zHrhLZ9OGUbq7${|Y1A!N!g^iqC7N%;jbE#vF3QnA00E<|re^9CE~%(;G47
zC?m!kcEot0m+}ir$}f;9ztT(j6(!|YxRk%r`}F&Y^6B>#^3(4dy_CP9r2Gvs|kkk=z@-5#tSI#CQW7F+zIxN^A36|-Air_8fF&E2$2_4x!)@FTg2P&Xx!bwf8y;v=0jALh_oO;7sZ2-%LW(jLuNHzv
zdy!)$V4@kT0#b=fZR9#IOs_OuFuf`;**Jv(@iZO&3{xpLwn4)}q=Yd!tHH!|&;TGd
zI!{zO=pPde#1od>TP~E?*hT1y7g7s*EXWC?aaMx~>YxEoY;{-DAmIyEW~S~vtAiEa
zl7=@~6E4D|HUL3tZt7?BmPPQVemZ>cF3gfpGmUe~!o+!+6G)<>UNFek8DV_;8cIU6Qskct_F0<2o}!vdnz4{FRbupFuP14BTtxN5z}{${iDiT
zLq9TxjQ^L6suSFei0^y{=+t>@yMV(Q@=j14$8Wax&A%z}*3kD|;Zj#TwH=i2oBKzR
zH%5Ns>pJXXll@QNw{_m=9?-RR`A%S#Jg5#QL`?4ttz#Vll|v0Q{pJR0skog~wUly2
z8i=DBTt){BfMQz+rA_BzCS_=&T5yp~%7X$+W&OI?aLTAURp3H$2!rC;JtVCZSrTxi
zq-tlH+6Qt|ypH&p+Hg^xYzG#wj9FH_%Qrleg?*a`Jl_Z1L33(l>57N<((`VdaZ;`0d~MSE#*u}pX%7j|A_Qr^Vgd`gf**B*kMk~lx;
z+$a&1<~Hv8o|baQvX_V*+dns7Ruq|tZ{|T8r{vqS>>*$0_CfN^m}1o@F2$U8)_vza
z)B(xe&UdC5dhOeH;yn?NxMe|hIN4eE9r{oQCU@Hio@DB^aqpS;R6r6hmIcMUt!>|F
zcQs(L-kRl2%whk0+>LYZiT7ndLRaNYtnvMHa3^C
zg{ft#|7#=FnlM3UIY{UZYC|&9h8ID!4eGCHyS}>@+`@HZU?!Wgf`s7LlQz7anV-1WTfO;IbSML{$AzI(6fyQMCe#T)a&=v!*ve&ST#fp0(ac_&2R
z;*MCnDho|E_MLx}_=jSU7&H&Wnx&jFihT`8IL3l-NIL7D0+D2-mKhu`1qILnT|b=6
zwjlfl8dri&sW0mX(#BrajIuicwXX&p)>s-2*n%@-yC76fQ@Wt~RiFTJOTvL^PxXlp
zb^R((z_=yhz`RSfT4eH_E|h%*C_u(?7sI%jjzpgVaCS4I(?f^oK;*F8^nkDvahe%%
zcKvxwXO{ZOx?KZMR=Rz3RnR=Uiu5QqT@=<>cie$5im8$WFL@p=<_gpX%D!mj(uf7IP86T3
z=?d)J27DouDrLF&=dKX;Yq|nLw*g-W+s0D&LhqxTD}Wnm`(maf!HcX1Yql_l+x5>|+yey(3iv*FleDV`gV9n}Tq)V8kNH%X+;YFrK;
zuW4;)W->1A9W7duuTCfhk(E;ym{Vn&GfjT{+n0gIXRHa##&AvP=zO{aJSKg;b9uBE
zgxh&YcA_MmlU%oV4+IVi!9<_%Lh-nAme86>cdQEUIHo0Gz|dL>>h|s(0@Py9!B%CS
zN~+Pf-u*{E5CV#RtAA%SgRhbN(P9BJ@0hLHs5FE)u&{;)xqzFtXeMN98nWVH3>1Y|4WQLl6Y-Fl~dX-vk
z6f=YmpvRTq5So;QgJh=yB|;k|$oh4OoO1cLEy&_P^I2GZjG*9xSwaE2Y6)0TXlIMe|T(Q_LEqiL;f`NTc3PK0X
z(-n9Da$F7&23-h9;e&?W9%7e*VC;MEo`W9?K}1in$*u$>q+Wgt!wpZ&`B4RlU
z_#d_|=vc4jrokjm}sS7ED}fBiDgpdZkIT=@o*8$EgZSsF~H@JbA;;yjX~oHYsO8
zXv7Yx!;&M_b?IOUXmo(OFu6BgD6z5kl@%|f7WM#<)28Dr2#wW2b!c++lBOWx3sz>P
zUVEm472i_lH(3@U#iJfzS!!TdnksLKe%}&0c*Rq@
zg7WUsf7E$P@JFVuhCeph|H>Xo@pX*r~z0W|kqOU3Q9
ztfiDI>P#F3A!0h94oz+$ls26Up2WG0%0Z+ysSV96mG$dl!->=C6oSafp$biC*GSDi
zDm~yzN!3nTwf($_UTFMGd5APm_5#jW#w-ikr*+%+d%*LJP%54?bKs$4PIBm&`yV>y;6uj?$)I2S2mJyZ
z^ef4rU;PLD3L5lRk{^a&{eKvK1^zJnMl$Gc{)7Go9Q1dRL4Wrj^mp)}XC#B3`44&q
z9CS!B=+J-Au!nbVB!`YS|3k+c?9dUCyu%Xuzrzwfg9kk$8T8D5(4b>Jw$
w2z)CmBzY?<^nWWW1ih72$V|jrYC*TIeFi;{XoIf5Xl{P~7eg~+my+WF0P3WJTL1t6