LoginSignup
42
38

More than 1 year has passed since last update.

DockerでPHP環境を作る(mac)

Last updated at Posted at 2021-01-24

はじめに

勤め先でもPHPを使っており自宅でPHPを勉強するために、ローカルでPHP開発環境を整えることにしました。
MAMP(マンプ)でも良いかなと思いましたが、せっかくなのでDockerで作ってみます。
(開発中に色々詰まってしまったところがあるので、備忘録がわりのメモです。)

手順

  1. Dockerによる環境構築
  2. ファイル・ディレクトリの準備
  3. 各ファイルの作成
  4. コンテナを起動
  5. サイトにアクセス

1. Dockerによる環境構築

Dockerを使うには、「Docker for Mac」のインストールが必要です。
Qitaに素敵な記事がたくさんあるので、ここでの説明は省略します。

今回はDockerで以下のコンテナを使います。

  • nginx
  • PHP
  • MySQL
  • PHPMyAdmin

使用するコンテナが複数あるので、今回は「Docker Compose」を使って環境を作っていきます。

2. ディレクトリ・ファイルの準備

Dockerを起動する場所を作成しましょう。
まずはフォルダを1つ用意し、次のようなファイル構造となるようにしてください。
用意するフォルダは何でも良いのですが、今回は「php-test」という名前で作成します。

php-test/
├── docker-compose.yml
├── mysql/
│   └── data/
├── nginx/
│   └── nginx.conf
├── php/
│   ├── Dockerfile
│   └── php.ini
└── www/
   └── html/
       └── index.php

3. 各ファイルの作成

用意したファイルの中身を作成していきます。
中身を作成するファイルは、docker-compose.ymlnginx.confDockerfilephp.iniindex.phpの5つです。

docker-compose.yml

version: '3'
services:
  nginx:
    image: nginx:latest
    ports:
      - 8080:80
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      - ./www/html:/var/www/html
    depends_on:
      - php

  php:
    build: ./php
    volumes:
      - ./www/html:/var/www/html
    depends_on:
      - db

  db:
    image: mysql:5.7
    ports:
      - 13306:3306
    volumes:
      - ./mysql/data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    ports:
      - 8888:80
    depends_on:
      - db

nginx.conf

server {
  listen 80;
  server_name _;

  root  /var/www/html;
  index index.php index.html;

  access_log /var/log/nginx/access.log;
  error_log  /var/log/nginx/error.log;

  location / {
      try_files $uri $uri/ /index.php$is_args$args;
  }

  location ~ \.php$ {
      fastcgi_pass php:9000;
      fastcgi_index index.php;    
      fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      include       fastcgi_params;
  }
}

Dockerfile

FROM php:7.2-fpm
COPY php.ini /usr/local/etc/php/
RUN docker-php-ext-install pdo_mysql

php.ini

date.timezone = "Asia/Tokyo"

index.php

設定情報を確認するためにphpinfo();としていますが、なんでもいいです。

<?php
phpinfo();
?>

4. コンテナを起動

いよいよコンテナ起動です。
ターミナルを開き、docker-compose.ymlがあるフォルダ(今回はphp-test)に移動します。

下記コマンドで、php-testフォルダに移動。

cd php-test

下記コマンドで、コンテナを起動。

docker-compose up -d

以下のような記述がターミナル内に表示されたら、起動は成功です。

Creating php_01_db_1 ... done
Creating php_01_phpmyadmin_1 ... done
Creating php_01_php_1        ... done
Creating php_01_nginx_1      ... done

なお下記コマンドで、コンテナを停止できます。

docker-compose stop

5. サイトにアクセス

最後にサイトにアクセスします。
それぞれ下記画像のような画面が表示されたら、成功です。
お疲れ様でした。

Webサイト:http://localhost:8080/
localhost_8080_config.php.png

管理画面:http://localhost:8888/
localhost_8888_ (1).png

ユーザー名:root
パスワード:secret

以上です。
最後までお読みいただき、ありがとうございました。


お世話になったサイト

【補足】Qitaに投稿されているDockerインストール記事

下記の中から自分に合いそうなものを1つ選んで、進めてみると良いと思います。

42
38
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
42
38