LoginSignup
5
2

More than 3 years have passed since last update.

DockerでPHP開発環境を作ってみました

Posted at

ブログの同一記事
https://guldra-cranch.hatenablog.com/entry/2019/09/03/225213

リポジトリ

目的

  • 業務でDockerを使わないため、Dockerを使った開発を個人で経験する
  • Data Volumeの理解を進める
  • 今後、個人で開発&運用するための基盤にする

構成コンテナ

  • PHP-FPM
  • nginx
  • MariaDB

ディレクトリ構成

.
├── app
├── docker
|    ├── mysql
|    |    └── my.cnf
|    ├── nginx
|    |    ├── Dockerfile
|    |    └── fpm.conf
|    └── php
|         ├── Dockerfile
|         └── php.ini
├── logs
|    ├── mysql
|    ├── nginx
|    └── php
├── .env
└── docker-compose.yml

docker-compose.yml

docker-compose.yml
version: "3"

services:
  php-fpm:
    build:
      context: ./docker/php
      args:
        - TZ=${TZ}
    ports:
      - 9000:9000
    volumes:
      - ./app:/var/www/html
      - ./logs/php:/var/log/php
    working_dir: /var/www/html
    environment:
      - TZ=${TZ}

  nginx:
    build: ./docker/nginx
    depends_on:
      - php-fpm
    ports:
      - 80:80
    volumes:
      - ./app:/var/www/html
      - ./logs/nginx:/var/log/nginx
    working_dir: /var/www/html

  db-mariadb:
    build: ./docker/mysql
    volumes:
      - db-store:/var/lib/mysql
      - ./logs/mysql:/var/log/mysql
    environment:
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PASS}
      - MYSQL_ROOT_PASSWORD=${DB_PASS}
      - TZ=${TZ}

volumes:
  db-store:

こだわった点

  • Data Volumeを使う
  • MariaDBを使う
  • TimeZoneをJSTにする

Data Volumeを使う

目的にも書きましたが、Data Volumeの理解を進める目的で今回このdocker-composeとDockerfileを書きました。docker volume lsdocker volume rmなどのコマンド、Data Volumeの性質などの理解が深まりました。

MariaDBを使う

正直なところMariaDBとMySQLのどちらが優れているという判断は筆者は出来ません。しかし、MySQLのオリジナルのソースコードの作者がMariaDBの作者である事実と、MariaDBがOSSであることの2つの理由からMariaDBを扱っておくことにはOSSを扱うことに慣れるという意味を含んでいると判断し、今回の構成にしました。

TimzoneをJSTにする

コンテナ技術をより深く理解するために、JSTに設定するタスクは最適でした。筆者の開発環境がWindowsホストのためパーミッションの問題にぶち当たり、Linuxとの差を実感しつつWindows機で開発する時の注意点を実感できました。

今後の目標

今回のdocker-composeを更に開発し、個人的に開発するWebアプリケーションの基盤としたいという思惑があります。そのため、今後Laravelやredisなどをcompose、コンテナに追加していく予定です。

参考にさせていただいた記事

今後とも個人での学習を継続していこうと思います!

5
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
5
2