Devilboxを使いCodeIgniter4の開発環境を構築する
この記事は CodeIgniter Advent Calendar 2022 - Qiita の1日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。
Devilboxを使うと、DockerでCodeIgniter4(3でもOK)の開発環境を簡単に構築できます。
Devilboxのメリット
Dockerでの開発環境の構築方法はいろいろなツールなどがありますが、Devilboxは基本的に docker-composer そのままです。 独自コマンドなどは必要ありません。
以下のようないろいろなサーバが一発で構築でき、phpMyAdminなどの管理ツールも含まれています。
- MariaDB 10.6.7
- PostgreSQL 14.2
- Redis 6.2.7
- Memcached 1.6.17
- MongoDB 5.0.13
また、独自証明書のSSLサーバも含まれています。
それから、英語ですがドキュメントが充実しています。
動作確認環境
- CodeIgniter 4.2.10
- Devilbox v2.2.0 (2022-04-14)
- Docker Desktop 4.14.1
- macOS 10.15.7
Devilboxの動作には、Docker EngineとDocker Composeが必要です。 Dockerを起動した状態で以下の作業を行って下さい。
1. Devilboxのインストール
以下のコマンドを実行し、Devilboxをインストールします。
$ git clone https://github.com/cytopia/devilbox --depth=1
2. .envファイルの設定
.envファイルを作成します。
$ cd devilbox/
$ cp env-example .env
自分のユーザーIDとグループIDを調べます。
$ id -u
$ id -g
.envファイルに自分のIDを設定します。
--- env-example 2022-11-30 12:13:08.000000000 +0900
+++ .env 2022-11-30 12:16:03.000000000 +0900
@@ -132,8 +132,8 @@
###
### Type `id` on the terminal to find out your values
###
-NEW_UID=1000
-NEW_GID=1000
+NEW_UID=501
+NEW_GID=20
###
macOSなので、MOUNT_OPTIONSを設定します。
@@ -448,7 +448,7 @@
###
### MOUNT_OPTIONS=,z
###
-MOUNT_OPTIONS=
+MOUNT_OPTIONS=,cached
###
3. コンテナの起動
$ docker-compose up
4. Devilbox intranet
ブラウザで http://127.0.0.1/ にアクセスします。
以下のコンテナが動作していることが、わかります。
- BIND 9.16.29
- PHP 8.1.6
- Nginx 1.20.2
- MariaDB 10.6.7
- PostgreSQL 14.2
- Redis 6.2.7
- Memcached 1.6.17
- MongoDB 5.0.13
4. PHPコンテナに入る
付属のシェルスクリプトを起動して、コンテナに入ります。
$ ./shell.sh
------------------------------------------------------------------------------------------
_ _ _ _
| | (_) | |
__| | _____ ___| | |__ _____ __
/ _` |/ _ \ \ / / | | '_ \ / _ \ \/ /
| (_| | __/\ V /| | | |_) | (_) > <
\__,_|\___| \_/ |_|_|_.__/ \___/_/\_\
http://devilbox.org
https://devilbox.readthedocs.io
Available Tools
https://devilbox.readthedocs.io/en/latest/readings/available-tools.html
How to work inside this PHP container
https://devilbox.readthedocs.io/en/latest/intermediate/work-inside-the-php-container.html
| Available Dirs | Description |
|------------------|------------------------------|
| /shared/httpd | Project base directory |
| /shared/backups | Backup directory |
| /var/mail | Email directory |
| /var/log | Log file directory |
------------------------------------------------------------------------------------------
devilbox@php-8.1.6 in /shared/httpd $
5. CodeIgniter4プロジェクトの作成
まず、バーチャルホスト用のディレクトリ(my-ci
)を作成します。
devilbox@php-8.1.6 in /shared/httpd $ mkdir my-ci
プロジェクト名(ci4app
)を指定してCodeIgniter4のプロジェクトを作成します。
$ cd my-ci/
devilbox@php-8.1.6 in /shared/httpd/my-ci $ composer create-project codeigniter4/appstarter ci4app
ホストOS上では、devilbox/data/www/my-ci/ci4app/
にインストールされました。
ドキュメントルートにシンボリックリンクを張ります。
devilbox@php-8.1.6 in /shared/httpd/my-ci $ ln -s ci4app/public htdocs
5. DNSの設定
/etc/hosts
に以下を追加します。
# devilbox
127.0.0.1 my-ci.loc
6. CodeIgniter4の設定
env
をコピーして .env
を作成し、変更します。
データベースへのアクセス情報などを設定します。
--- env 2022-10-31 09:26:15.000000000 +0900
+++ .env 2022-11-30 15:16:20.000000000 +0900
@@ -14,13 +14,13 @@
# ENVIRONMENT
#--------------------------------------------------------------------
-# CI_ENVIRONMENT = production
+CI_ENVIRONMENT = development
#--------------------------------------------------------------------
# APP
#--------------------------------------------------------------------
-# app.baseURL = ''
+app.baseURL = 'http://my-ci.loc/'
# If you have trouble with `.`, you could also use `_`.
# app_baseURL = ''
# app.forceGlobalSecureRequests = false
@@ -39,13 +39,13 @@
# DATABASE
#--------------------------------------------------------------------
-# database.default.hostname = localhost
-# database.default.database = ci4
-# database.default.username = root
-# database.default.password = root
-# database.default.DBDriver = MySQLi
-# database.default.DBPrefix =
-# database.default.port = 3306
+database.default.hostname = 127.0.0.1
+database.default.database = my_ci
+database.default.username = root
+database.default.password =
+database.default.DBDriver = MySQLi
+database.default.DBPrefix =
+database.default.port = 3306
# database.tests.hostname = localhost
# database.tests.database = ci4_test
その他の詳しい設定方法は、CodeIgniter 4.2のインストール方法【2022年最新版】を参照してください。
Welcomeページの確認
ブラウザで http://my-ci.loc/ にアクセスします。
Welcomeページが表示されました。
コンテナの起動
次回以降のコンテナの起動は、以下のコマンドを実行します。
$ docker-compose up -d
必要なコンテナだけを起動することもできます。
$ docker-compose up -d httpd php mysql
コンテナの停止
コンテナの停止は、以下のコマンドです。
$ docker-compose stop
$ docker-compose rm -f
この記事は CodeIgniter Advent Calendar 2022 - Qiita の1日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。
参考
- Devilbox documentation — Devilbox 1.0 documentation
- Install the Devilbox — Devilbox 1.0 documentation
- Start the Devilbox — Devilbox 1.0 documentation
- Setup CodeIgniter4 — Devilbox 1.0 documentation
関連
Date: 2022/12/01