koolを使いCodeIgniter4の開発環境を構築する
CodeIgniter Advent Calendar 2021
koolを使うと、DockerでCodeIgniter4の開発環境を簡単に構築できます。
動作確認環境
- CodeIgniter 4.1.5
- PHP 8.0.10
- MySQL 8.0.27
- kool 1.14.0
- Docker Desktop 4.2.0
- macOS 10.15.7
koolの動作には、Docker EngineとDocker Composeが必要です。
Dockerを起動した状態で以下の作業を行って下さい。
1. kool CLIのインストール
以下のコマンドを実行し、koolコマンドをインストールします。
$ curl -fsSL https://kool.dev/install | bash
Hello, we are gonna install the latest stable version of Kool!
Downloading latest binary (kool-darwin-amd64)...
Moving kool binary to /usr/local/bin/kool...
Downloading base images...
kool version 1.14.0 installed successfully.
Windowsユーザーの方は、https://github.com/kool-dev/kool/releases からインストーラーをダウンロードしてインストールしてください。
2. CodeIgniter4プロジェクトの作成
フォルダ名(ci4app
)を指定してCodeIgniter4のプロジェクトを作成します。
$ kool create codeigniter ci4app
途中、PHP、データベース、キャッシュサーバを選択します。
Creating a "codeigniter4/appstarter" project at "./ci4app"
Installing codeigniter4/appstarter (v4.1.5)
- Downloading codeigniter4/appstarter (v4.1.5)
- Installing codeigniter4/appstarter (v4.1.5): Extracting archive
Created project in /app/ci4app
Preset codeigniter is initializing!
? Which app service do you want to use PHP 8.0
? Which database service do you want to use MySQL 8.0
? Which cache service do you want to use Redis 6.0
Preset codeigniter initialized!
4. 設定
env
を変更します。
データベースへのアクセス情報などを設定します。
--- a/env
+++ b/env
@@ -15,12 +15,13 @@
#--------------------------------------------------------------------
# CI_ENVIRONMENT = production
+CI_ENVIRONMENT = development
#--------------------------------------------------------------------
# APP
#--------------------------------------------------------------------
-# app.baseURL = ''
+app.baseURL = 'http://localhost/'
# app.forceGlobalSecureRequests = false
# app.sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler'
@@ -37,19 +38,23 @@
# DATABASE
#--------------------------------------------------------------------
-# database.default.hostname = localhost
-# database.default.database = ci4
-# database.default.username = root
-# database.default.password = root
-# database.default.DBDriver = MySQLi
-# database.default.DBPrefix =
+DB_DATABASE = ci4app
+DB_USERNAME = dbuser
+DB_PASSWORD = dbpassword
-# database.tests.hostname = localhost
-# database.tests.database = ci4
-# database.tests.username = root
-# database.tests.password = root
-# database.tests.DBDriver = MySQLi
-# database.tests.DBPrefix =
+database.default.hostname = database
+database.default.database = "${DB_DATABASE}"
+database.default.username = "${DB_USERNAME}"
+database.default.password = "${DB_PASSWORD}"
+database.default.DBDriver = MySQLi
+database.default.DBPrefix =
+
+database.tests.hostname = database
+database.tests.database = "${DB_DATABASE}_test"
+database.tests.username = "${DB_USERNAME}"
+database.tests.password = "${DB_PASSWORD}"
+database.tests.DBDriver = MySQLi
+database.tests.DBPrefix =
#--------------------------------------------------------------------
# CONTENT SECURITY POLICY
@@ -123,7 +128,7 @@
# LOGGER
#--------------------------------------------------------------------
-# logger.threshold = 4
+logger.threshold = 9
#--------------------------------------------------------------------
# CURLRequest
app/Config/Cache.php
を変更します。
--- a/app/Config/Cache.php
+++ b/app/Config/Cache.php
@@ -153,7 +153,7 @@ class Cache extends BaseConfig
* @var array<string, int|string|null>
*/
public $redis = [
- 'host' => '127.0.0.1',
+ 'host' => 'cache',
'password' => null,
'port' => 6379,
'timeout' => 0,
その他の詳しい設定方法は、CodeIgniter 4.1のインストール方法【2021年最新版】を参照してください。
3. 初回のセットアップ
初回のみ kool run setup
を実行します。
$ cd ci4app/
$ kool run setup
これは、kool.yml
に設定されている setup
を実行します。
env
を .env
にコピーし、composer install
を実行し、encryption.key
を生成し .env
に追加します。
これで、コンテナも起動されます。
Welcomeページの確認
ブラウザで http://localhost/ にアクセスします。
Welcomeページが表示されました。
コンテナの起動
次回以降のコンテナの起動は、以下のコマンドを実行します。
$ kool start
コンテナの停止
コンテナの停止は、以下のコマンドです。
$ kool stop
その他のkoolコマンド
コンテナの状態確認
$ kool status
+----------+---------+------------------------------------------------------+----------------------+
| SERVICE | RUNNING | PORTS | STATE |
+----------+---------+------------------------------------------------------+----------------------+
| app | Running | 0.0.0.0:80->80/tcp, :::80->80/tcp, 9000/tcp | Up 2 hours |
| cache | Running | 6379/tcp | Up 2 hours (healthy) |
| database | Running | 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp | Up 2 hours (healthy) |
+----------+---------+------------------------------------------------------+----------------------+
[done] Fetching services status
ログの確認
$ kool logs app
$ kool logs -f app
コンテナのシェルを起動
$ kool exec app bash
kool CLIのアップデート
koolコマンドをアップデートする場合は、以下を実行します。
$ kool self-update
コンテナの再構築
$ kool restart --rebuild
「koolで構築したCodeIgniter4開発環境にphpMyAdminを追加する」へ続く。
Discussion