[Docker]php+phpMyAdmin+Mysqlのサーバを構築する

開発用のシンプルなサーバを早く用意します。複数のサイトを参考にさせてもらったので他サイトと同じようなコードが入っています。先人の皆さんには感謝です。

ここで掲載しているコードは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…

コメント