CodeIgniterの環境構築方法:MySQLの導入

スポンサーリンク
CodeIgniterの環境構築方法:MySQLの導入 ノウハウ
CodeIgniterの環境構築方法:MySQLの導入
この記事は約6分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、docker で環境構築した CodeIgniter に mysql を追加する方法についてご紹介します。

スポンサーリンク

前提条件

この記事では、Dockerでの環境構築が完了していることを前提にしています。環境構築の方法については、下記の記事を参考にお願いします。

修正内容

ディレクトリ構造

ディレクトリ構造を下記のように修正しています。

app
├── .env
├── .tool-versions
├── docker-compose.yml
├── flyway
│   ├── Dockerfile
│   ├── conf
│   └── sql
├── mysql
│   ├── Dockerfile
│   └── my.cnf
└── web
    ├── .htaccess
    ├── CodeIgniter-3.1.13
    ├── Dockerfile
    ├── httpd.conf
    ├── index.php
    ├── info.php
    ├── xdebug.ini
    └── xhprof-html.conf

今まで、app 直下にあったファイル(docker-compose.yml以外)やフォルダを web ディレクトリに移動させました。

flyway & mysql ディレクトリ

flywayディレクトリとmysqlディレクトリは、下記の記事でご紹介したディレクトリをそのまま使用しています。

web/Dockerfile

23行目に下記のコマンドを追加します。

RUN yum install -y php74-php-mysqli

web/CodeIgniter-3.1.13/application/config/database.php

78行目にある下記のパラメータに値を設定します。

	'hostname' => 'mysql:3306',
	'username' => 'root',
	'password' => 'P@ssw0rd',
	'database' => 'sample',
	'dbdriver' => 'mysqli',

web/CodeIgniter-3.1.13/application/controllers/Sample.php

下記の内容でファイルを新規作成します。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Sample extends CI_Controller {

	public function index()
	{
		$this->load->database();
		$query = $this->db->query('SELECT name FROM sample');
		foreach ($query->result() as $row)
		{
			echo $row->name . '<br />';
		}
		echo 'Total Results: ' . $query->num_rows();
	}
}

docker-compose.yml

下記の内容になります。赤字が修正箇所になります。

version: '3'

x-template: &flyway-cmd
  build: ./flyway
  volumes:
    - ./flyway/sql:/flyway/sql
    - ./flyway/conf:/flyway/conf
  depends_on:
    - mysql
  profiles:
    - flyway
  networks:
    - net

services:

  web:
    build: ./web
    container_name: web
    platform: linux/x86_64
    privileged: true
    volumes:
      - ./web/CodeIgniter-3.1.13/application:/var/www/application
      - ./web/CodeIgniter-3.1.13/system:/var/www/system
      - ./web/index.php:/var/www/html/index.php
      - ./web/info.php:/var/www/html/info.php
      - ./web/.htaccess:/var/www/html/.htaccess
      - ./web/httpd.conf:/etc/httpd/conf/httpd.conf
      - ./web/xhprof-html.conf:/etc/httpd/conf.modules.d/xhprof-html.conf
      - ./web/xdebug.ini:/etc/opt/remi/php74/php.d/xdebug.ini
    ports:
      - 8080:80
    networks:
      - net

  mysql:
    build: ./mysql
    container_name: mysql
    platform: linux/x86_64
    ports:
      - 127.0.0.1:3306:3306
    environment:
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      TZ: ${TZ}
    volumes:
      - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    networks:
      - net

  flyway-baseline:
    <<: *flyway-cmd
    command: baseline

  flyway-migrate:
    <<: *flyway-cmd
    command: migrate

  flyway-info:
    <<: *flyway-cmd
    command: info

networks:
  net:

ビルド&起動

docker compose build

docker compose up -d

docker compose run --rm flyway-baseline

docker compose run --rm flyway-migrate

動作確認

ブラウザで「http://localhost:8080/Sample」にアクセスすると、下図のように表示されていれば、mysqlの接続に成功しています。

おわりに

今日は、docker で環境構築した CodeIgniter に mysql を追加する方法についてご紹介しました。これで、DBを扱ったアプリの開発が可能になりました。

なお、ここに記載のDocker関連のファイルは、下記のGitHubにあります。

よっしー
よっしー

また明日お会いしましょう!

コメント

タイトルとURLをコピーしました