Docker Composeを用いてLAMP環境構築 -- php.iniの設定とmysqlへのアクセス
はじめに
前回の記事では、Docker Composeを使用してLAMP環境を構築してみました。しかし、実際にphpからmysqlを操作するためには、php.iniの設定や必要なパッケージのインストールを行わなくてはいけません。今回は、それらをDockerの機能を利用して行います。
ファイル準備
ディレクトリ構成
/ -- docker-compose.yml
web-php/ -- Dockerfile
php.ini
html/ -- index.php
sqlTest.php
docker-compose.yml
前回と同じ内容を使用します。
web-php / Dockerfile
FROM php:7.3-apache
# コマンドを連続して記述したい場合は \ && で区切る
RUN docker-php-ext-install pdo_mysql \
&& docker-php-ext-enable pdo_mysql
# COPY コピー元ファイル コピー先ディレクトリ
COPY ./php.ini /usr/local/etc/php/
web-php / php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = UTF-8
mbstring.language = Japanese
html / index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Test Page Welcome!</h1>
<div>----------------------------------------------------------------------------</div>
<?php phpinfo() ?>
</body>
</html>
html / sqlTest.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>SQL Test Page</h1>
<?php
$dsn = 'mysql:dbname=test_db;host=db';
$user = 'root';
$password = 'password';
try {
$dbh = new PDO($dsn, $user, $password);
print("接続成功<br>");
$dbh->query('SET NAMES sjis');
$sql = "select * from test_tb";
$dbData = $dbh->query($sql);
}catch (PDOException $e) {
print('接続不可:'.$e->getMessage());
die();
}
$dbh = null;
?>
<p>DB取得データ</p>
<ul>
<li>
<?php
foreach ($dbData as $item) {
print($item['id']);
print(" | ");
print($item['name'].'<br>');
}
?>
</li>
</ul>
</body>
</html>
ポイント
-
web-php / Dockerfile
RUNを使用してパッケージ「pdo_mysql」をインストールし、有効化しています。
COPYを使用してローカルに作成したphp.iniをコンテナ内にコピーする。 -
html / sqlTest.php
PDO関数に渡す引数でhostの設定に関して、hostネームはdockerのコンテナ名になります。今回は、mysqlのコンテナを「db」という名称で構築しているため、host=dbとします。
LAMP環境を構築する
コンテナを作成する
以下のコマンドでコンテナを作成しましょう。
docker-compose up -d
コンテナが起動した状態で、すでにphp.iniの設定ファイルとpdoメソッドを利用するためのパッケージのインストールなどは完了しています。
mysqlにテストデータを用意する
次にデータベースにテスト用にデータを用意しましょう。mysqlを直接操作したいので、mysqlを立ち上げているコンテナに入ります。
コンテナへの入り方については、こちらの記事がわかりやすく書いてくださっています。
コンテナに入れたらmysqlにデータを用意していきます。
-- データベースを作成
create database test_db
-- テーブルを作成
create table test_tb (id int, name varchar(15));
-- データを追加
insert into test_tb values (1, 'taro');
確認
以下にアクセスするとphpでmysqlのデータを取得できていることが確認できます。
http://localhost:8080/sqlTest.php
今後の課題
Docker-Composeを使用してLaravel環境を構築する
参考文献
Author And Source
この問題について(Docker Composeを用いてLAMP環境構築 -- php.iniの設定とmysqlへのアクセス), 我々は、より多くの情報をここで見つけました https://qiita.com/NNKK1234/items/d188171e0ac54e1692bc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .