開発用のシンプルなサーバを早く用意します。複数のサイトを参考にさせてもらったので他サイトと同じようなコードが入っています。先人の皆さんには感謝です。
ここで掲載しているコードはgithubで公開しています。
GitHub - hrksn/docker_php7.3
Contribute to hrksn/docker_php7.3 development by creating an account on GitHub.
ディレクトリ構成
/php/
/conf/php.ini
/html/
index.php
phpinfo.php
Dockerfile
/mysql/sql/test.sql
docker-compose.yml
phpのコードは/php/htmlに設置します。
各ファイルについて
/docker-compose.php
mysql8は認証方式がcaching_sha2_passwordに変わっているようなので
–default-authentication-plugin=mysql_native_password の指定をつけます。
version: '3'
services:
php:
build: ./php
ports:
- '80:80'
volumes:
- ./php/html:/var/www/html
links:
- mysql
mysql:
image: mysql:8
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=app
- MYSQL_USER=docker
- MYSQL_PASSWORD=docker
volumes:
- ./mysql/conf:/etc/mysql/conf.d/
- ./mysql/lib:/var/lib/mysql
- ./mysql/sql:/docker-entrypoint-initdb.d
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mysql
- PMA_USER=root
- PMA_PASSWORD=password
ports:
- 8080:80
links:
- mysql
volumes:
- ./phpmyadmin/sessions:/sessions
/php/Dockerfile
a2enmod rewriteでmod_rewriteを有効にしています。
FROM php:7.3-apache
COPY conf/php.ini /usr/local/etc/php/conf.d/
RUN apt-get update \
&& apt-get install -y libicu-dev libzip-dev zlib1g-dev unzip vim \
&& docker-php-ext-install mysqli intl zip
RUN a2enmod rewrite
index.php
DBの接続を確認するコードです。
<?php
echo 'Hello World<br>';
// hostname, user, password, db name
$mysqli = new mysqli('mysql', 'docker', 'docker', 'app');
if ($mysqli->connect_error) {
echo $mysqli->connect_error;
exit();
} else {
$mysqli->set_charset("utf8");
}
$sql = "SELECT id, name FROM test";
if ($result = $mysqli->query($sql)) {
while ($row = $result->fetch_assoc()) {
echo "ID:" . $row["id"] . " NAME:" . $row["name"] . "<br>";
}
$result->close();
}
$mysqli->close();
phpinfo.php
<?php
phpinfo();
?>
php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
memory_limit = 256M
post_max_size = 64M
upload_max_filesize = 64M
test.sql
create table test(
id int,
name text
);
insert into test (id, name) values (1, 'Hello World');
実行
以下のコマンドで実行します。
docker-compose up -d
http://localhostで画面が表示されたら成功です。
http://localhost:8080でphpMyAdminが表示されます。
番外編:/host_mnt/Users/〜というエラーが出た場合
ここで掲載しているコードを試している時に/host_mnt/Users/〜がというエラーが出た時には以下のページを参考にして対応しました。
コンテナ起動時、error while creating mount source path '/host_mnt/Users/~': mkdir /host_mnt/Users/~: file exists になったときの対処法 - Qiita
現象volumesを設定しているコンテナ(MySQL用)を停止 → 起動したところ docker-compos…
コメント