開発用のシンプルなサーバを早く用意します。複数のサイトを参考にさせてもらったので他サイトと同じようなコードが入っています。先人の皆さんには感謝です。
ここで掲載しているコードは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.sqldocker-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-apacheCOPY 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 zipRUN a2enmod rewrite
index.php
DBの接続を確認するコードです。
<?phpecho '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 = 256Mpost_max_size = 64Mupload_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…
コメント