LoginSignup
1
2

More than 3 years have passed since last update.

PHPの入門書1周するために、サクッとDockerでApache + MySQL + PHP + phpmyadminの環境つくる

Last updated at Posted at 2020-12-08

PHP入門書を1周したいので、LAMP環境がほしい

PHP力を上げたいので、入門書からやろうと思い立ちました。
そのためにサクッと用意できて、使いまわせるローカル環境が欲しかったので、そのメモです。

今回はdocker-composeを使って環境構築します。

現在の環境

  • OS:MacOS Big Sur
  • Docker:19.03.13
  • DockerCompose:1.27.4

ディレクトリ構成&ファイル

ディレクトリ構成

.
├── docker-compose.yml
├── html
│   └── index.php
├── mysql
├── php
│   ├── dockerfile
│   └── php.ini
└── phpmyadmin

docker-comopse.yml

version: '3'

services:
  php:
    build:
      context: ./php
      dockerfile: dockerfile
    volumes:
      - ./php/php.ini:/usr/local/etc/php/php.ini
      - ./html:/var/www/html
    ports:
      - 8080:80
  mysql:
    image: mysql:5.7
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_USER=root
      - MYSQL_PASSWORD=root
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
#      - PMA_USER=test
#      - PMA_PASSWORD=test
    links:
      - mysql
    ports:
      - 4040:80
    volumes:
      - ./phpmyadmin/sessions:/sessions

dockerfile

FROM php:7.2-apache
RUN apt-get update && \
  docker-php-ext-install pdo_mysql mysqli mbstring

index.php

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>php7.2-apache</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<?php phpinfo(); ?>
</body>
</html>

php.ini

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

エラーすべて表示させたいときは、以下を追加する

error_reporting = E_ALL

実行コマンド

docker-compose.ymlがあるディレクトリに移動して、以下を実行

$ docker-compose up -d

もし、dockerfileを変更した場合は

$ docker-compose up -d --build

php.iniなどの変更を反映させたい時は

$ docker-compose restart

動作確認

phpinfoを表示
http://localhost:8080/
image.png

phpmyadminを表示
http://localhost:4040/
image.png
ログイン画面でdocker-compose.ymlのmysqlコンテナの情報を記載してログインできればOK
image.png

つまづいたところ

  • 当初はdocker-compose.ymlimage: php:7.2-apacheと記載していたが、MySQLのドライバががなくてMySQL動かせなかったので、dockerflieを作成した
  • docker-compose.ymlのphpmyadminコンテナのPMA_USERPMA_PASSWORDを記載すると、phpmyadminにうまくログインできず、データベースが作成できなかったので、コメントアウト

今回やった、やる予定のPHP入門書

PHP入門 確認画面付きのお問い合わせフォームをつくりながらPHPを学ぶ(第2版)
https://amzn.to/2Irz7Fr
※上記環境で動作確認済み

よくわかるPHPの教科書 【PHP7対応版】
https://amzn.to/2LhQ4mW
※まだ未着手

参考記事

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2