DockerでPHP開発環境を作ってみました
リポジトリ
目的
- 業務でDockerを使わないため、Dockerを使った開発を個人で経験する
- Data Volumeの理解を進める
- 今後、個人で開発&運用するための基盤にする
単純にDockerを使いたかった
構成コンテナ
ディレクトリ構成
. ├── 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を使う
目的にも書きましたが、Data Volumeの理解を進める目的で今回このdocker-composeとDockerfileを書きました。docker volume ls
やdocker volume rm
などのコマンド、Data Volumeの性質などの理解が深まりました。
MariaDBを使う
正直なところMariaDBとMySQLのどちらが優れているという判断は筆者は出来ません。しかし、MySQLのオリジナルのソースコードの作者がMariaDBの作者である事実と、MariaDBがOSSであることの2つの理由からMariaDBを扱っておくことにはOSSを扱うことに慣れるという意味を含んでいると判断し、今回の構成にしました。
コンテナ技術をより深く理解するために、JSTに設定するタスクは最適でした。筆者の開発環境がWindowsホストのためパーミッションの問題にぶち当たり、Linuxとの差を実感しつつWindows機で開発する時の注意点を実感できました。
今後の目標
今回のdocker-composeを更に開発し、個人的に開発するWebアプリケーションの基盤としたいという思惑があります。そのため、今後Laravelやredisなどをcompose、コンテナに追加していく予定です。
参考にさせていただいた記事
今後とも個人での学習を継続していこうと思います!