CodeIgniterとDockerでMySQLを連携!初心者向け環境構築完全ガイド
生徒
PHPのフレームワークであるCodeIgniterを使って開発を始めたいのですが、Dockerを使うと何が嬉しいのですか?
先生
Dockerを使うと、パソコンの中に仮想的な専用の部屋を作って、そこでCodeIgniterやMySQLなどの環境を安全に動かせるようになります。
生徒
なるほど。でも、CodeIgniterとMySQLをどうやって繋げればいいのでしょうか?
先生
Dockerの設定ファイルであるdocker-compose.ymlを使うことで、簡単に二つを連携させることができます。一緒に設定の流れを見ていきましょう!
1. DockerとCodeIgniterの基本を理解しよう
まず、Docker(ドッカー)という言葉を聞いたことはありますか?これは、パソコンの中に「コンテナ」と呼ばれる小さな箱を作り、その中で必要なプログラムだけを動かす技術です。この仕組みを使うと、あなたのパソコンの設定が汚れることなく、いつでも綺麗な状態でCodeIgniterというPHPフレームワークを動かせます。
PHPフレームワークとは、家を建てるときに使う「便利な骨組み」のようなものです。CodeIgniterは、その骨組みの中でも非常にシンプルで、初心者でも学びやすいことが特徴です。MySQLは、データを保存するための「データベース」という倉庫です。この倉庫とPHPを繋ぐことが、Webアプリケーション開発の第一歩になります。
2. Docker環境構築に必要な準備とファイル構成
Dockerで環境を作るには、いくつかの設定ファイルが必要です。まずは、あなたのパソコンの中にフォルダを作り、その中に以下のファイルを用意しましょう。
- docker-compose.yml(Dockerの設定をまとめた司令塔のようなファイル)
- Dockerfile(PHP環境を作るための設計図)
この2つのファイルを用意することで、CodeIgniterが動くWebサーバーと、MySQLというデータ倉庫を同時に立ち上げることができます。フォルダ分けをしっかり行うことで、後からプログラムを修正するときも迷子にならずに済みます。
3. docker-compose.ymlの設定例
次に、司令塔となるdocker-compose.ymlの中身を見てみましょう。このファイルには、「どんなサーバーを、どうやって動かすか」という指示を書きます。
version: '3'
services:
app:
build: .
volumes:
- .:/var/www/html
db:
image: mysql:8.0
environment:
MYSQL_DATABASE: my_database
MYSQL_ROOT_PASSWORD: password
このコードの中のservicesという部分で、アプリケーション本体とデータベースを定義しています。environmentという項目では、データベースに接続するためのパスワードなどの設定を記述します。これにより、プログラムとデータベースが安全に通信できるようになるのです。
4. CodeIgniterとMySQLの接続設定
Dockerの設定ができたら、次はCodeIgniterの中からMySQLにアクセスするための設定を行います。CodeIgniterには、データベースに接続するための設定ファイルが最初から用意されています。
public $default = [
'DSN' => '',
'hostname' => 'db',
'username' => 'root',
'password' => 'password',
'database' => 'my_database',
'DBDriver' => 'MySQLi',
];
ここで重要なのがhostnameです。通常はlocalhostと書くことが多いのですが、Docker環境では、先ほど作成したdocker-compose.ymlで指定したサービス名(この例ではdb)を指定します。これでCodeIgniterが正しくデータベースを見つけられるようになります。
5. コンテナを立ち上げて確認しよう
設定ファイルが完成したら、いよいよコマンドを使ってシステムを起動します。ターミナル(黒い画面)を開いて、プロジェクトのフォルダに移動し、以下のコマンドを入力してください。
docker-compose up -d
-dというオプションをつけることで、バックグラウンドで静かにプログラムを動かすことができます。起動に成功したら、ブラウザを開いてhttp://localhost:8080などにアクセスしてみましょう。CodeIgniterのようこそ画面が表示されれば、環境構築の成功です。
6. データベース接続をテストするコード
最後に、本当にCodeIgniterからMySQLにデータが送れているか確認してみましょう。簡単な確認用プログラムを作成します。
$db = \Config\Database::connect();
if ($db->connID) {
echo "データベース接続に成功しました!";
} else {
echo "接続に失敗しました。";
}
このように、接続情報を管理するクラスを使って、成功したかどうかを表示させるのが一般的です。もしエラーが出る場合は、パスワードやデータベース名がdocker-compose.ymlと一致しているか、もう一度見直してみましょう。一つずつ丁寧に確認することが、プログラミング習得への最短ルートです。