LoginSignup
10

More than 1 year has passed since last update.

DockerでPHP+Nginx+MySQLの環境構築

Last updated at Posted at 2021-06-17

PHPの環境構築地味に大変なので、Dockerで環境構築してみました。
dockerをインストールしていることが前提条件となります。

環境

  • php7.4系
  • mysql5.7

ディレクトリ、ファイル作成

workspace/test_php
           |-nginx
           │  └conf.d
           │    └default.conf       
           |-php
           │  ├Dockerfile
           │  └php.ini
           ├docker-compose.yml

このようなディレクトリ、ファイル構成になるように空ディレクトリ、空ファイルを作っておきます。

ファイルの中身の記述

docker-compose.yml

version: "3"
services:
  db:
    image: mysql:5.7
    environment:
        MYSQL_DATABASE: test_php
        MYSQL_USER: root
        MYSQL_PASSWORD: test
        MYSQL_ROOT_PASSWORD: test
    ports:
        - "4306:3306"
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./db/mysql:/var/lib/mysql

  php:
    build: ./php
    volumes:
      - ./nginx/html:/usr/share/nginx/html
      - ./php/php.ini:/usr/local/etc/php/conf.d/php.ini
    depends_on: ["db"]

  nginx:
    image: nginx:latest
    volumes:
      - ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
      - ./nginx/html:/usr/share/nginx/html
    restart: always
    ports: ["8080:80"]
    depends_on: ["php"]
  • こちらに関しては、「docker-compose.yml 解説」等でググれば色々な記事がヒットすると思います。
Dockerfile
FROM php:7.4.0-fpm

RUN apt-get update \
    && docker-php-ext-install pdo_mysql

ADD ./php.ini /usr/local/etc/php/php.ini
  • DockerでPHPの環境構築をすると、PDOがデフォルトでsqliteになっているので、環境構築時にpdo_mysqlをインストールします。
  • php.ini をコンテナの中の /usr/local/etc/php/php.ini にコピーします。
php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

  • タイムゾーンをAsia/Tokyoに変更しています。
default.conf
server {
    listen       80;
    server_name  localhost;
    root   /usr/share/nginx/html;
    index  index.php index.html;
    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;
    }
}
shell
// test_php/配下で実行
$ docker-compose up -d

nginx/配下にhtmlディレクトリが作られます。
html/ 配下にindex.phpを作成します。

index.php
<?php
  echo phpinfo();
?>

localhost:8080/にアクセスして、phpの画面が出てきたら成功です。

SQLクライアントに接続

image.png
Docker-compose.ymlに記載してあるDB情報を入力して接続する。

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
What you can do with signing up
10