Dockerでインストール
これは公式のインストールガイドです。Dockerが動くマシンから、最初のアカウントが作成された稼働中のKolleKインスタンスまでを案内します。全体でおよそ15分程度かかります。
リポジトリのdocker/README.mdには、運用者の視点から同じ手順が記載されており、コードと同期して保たれています。このページとそのファイルの内容が食い違う場合は、docker/README.mdを信頼してください。
始める前に
必要なもの:
- Docker Engine 24以降とComposeプラグイン(
docker compose)が動くマシン。 - クローンまたはダウンロードしたKolleKリポジトリ。
- 環境ファイルに集中する10分間。重要なミスが起きるのはここです。
それ以外は必要ありません。スタックには独自のMySQLデータベースが含まれており、セッション、キャッシュ、キューはすべてデータベースに保存されるため、Redisをインストールする必要はありません。
インストール
リポジトリのルートから、Docker用の環境設定テンプレートをコピーします。
cp .env.docker.example .env
このファイルがスタック全体を制御します。次の2つの手順で編集していきます。
キーを生成し、出力された値をコピーします。
docker compose run --rm app php artisan key:generate --show
表示された値を.envのAPP_KEYとして貼り付けます。このキーは、保存されているデータを暗号化します。今設定し、後から絶対に変更しないでください。 キーを変更すると、暗号化されたすべてのフィールドとすべてのセッションが恒久的に読み取れなくなります。まだ読んでいない場合は、先に進む前にアプリケーションキーと暗号化を読んでください。
.env内のDB_PASSWORDとDB_ROOT_PASSWORDをプレースホルダーの値から変更し、APP_URLにユーザーがアクセスするアドレスを設定します。デフォルトはhttp://localhost:8000で、自分のマシンで最初に試す分にはこれで問題ありません。
すべてをビルドして起動します。
docker compose up -d --build
最初のビルドには数分かかります。完了すると、webコンテナが自動的にデータベースマイグレーションを適用し、インスタンスがAPP_URLで起動します。
ブラウザでそのURLを開き、登録ページからサインアップします。これにより、アカウントを作成するで説明されている通り、あなた個人のユーザーと最初のアカウントが作成されます。
::screenshot{label="インストール直後のインスタンスの登録ページ"}
サーバー全体の管理パネルを使いたい場合は、自分のユーザーにフラグを付与します。
docker compose exec app php artisan kollek:make-instance-administrator you@example.com
これによって何ができて何ができないかについては、インスタンス管理者権限を付与するを参照してください。
実際に動いているもの
Composeスタックは4つのコンテナを起動します。そのうち3つは同じKolleKイメージを、CONTAINER_ROLE環境変数で選択された異なる役割で実行します。
- appは、nginxとPHPを通じてWebアプリケーションを提供します。データベースマイグレーションを実行するのはこのコンテナだけで、起動時に実行します。
- queueは、
high、default、lowの各キューからバックグラウンドジョブ(メール送信、配信、ログ記録)を処理します。 - schedulerは、夜間メンテナンスジョブで説明されている日次メンテナンスジョブを実行します。
4つ目のコンテナはmysqlで、MySQL 8.4を実行します。
データは、コンテナとは独立した2つの名前付きDockerボリュームに保存されます。データベース用のdb-dataと、アップロードされた写真や書類用のstorage-dataです。コンテナは自由に再ビルド・置き換えできますが、ボリュームは維持されます。
3つのアプリケーションコンテナはすべて同じ.envを、とりわけ同じAPP_KEYを共有する必要があります。Composeファイルはすでにこれを実現するように構成されています。セットアップをカスタマイズする場合も、この構成は維持してください。
マイグレーションを自分で実行したい場合
デフォルトでは、webコンテナは起動するたびにデータベースをマイグレーションするため、アップグレード時に手を加える必要がありません。手動で制御したい場合は、.envでRUN_MIGRATIONS=falseを設定し、必要なときに自分でマイグレーションを実行してください。
docker compose exec app php artisan migrate --force
次に読むべきもの
- インスタンスを設定するを読んで、
.envが他に何を制御しているかを理解しましょう。 - メール配信を設定するでメールを機能させましょう。設定するまでは、招待やサインインリンクは受信箱ではなくログファイルに送られます。
- 実際のデータを投入する前に、バックアップを設定しましょう。