koolを使いCodeIgniter4の開発環境を構築する

(最終更新:2021-12-04)

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を追加する」へ続く。

参考

関連

Date: 2021/09/17

Tags: codeigniter, codeigniter4, docker