ブログの同一記事
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
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 ls
やdocker 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、コンテナに追加していく予定です。
参考にさせていただいた記事
今後とも個人での学習を継続していこうと思います!