よっしー
こんにちは。よっしーです(^^)
今日は、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にあります。
よっしー
また明日お会いしましょう!
コメント