【PHP】Dockerの用語とDockerを使ったPHP, MySQL, phpMyAdminの構築

1 min read読了の目安(約1600字

今更ながらDockerについて学ぶ

Dockerのメリット、目的

メリット:環境構築を楽にする、開発環境と本番環境の差異をなくす、スケールしやすくする

Dockerの用語

Dockerコンテナ:PHP, MySQLなどをインストールする仮想環境。コンテナがあるおかげでコンテナごと削除したりすることができるので環境の立ち上げ、再構成などが簡単にできる。

Dockerイメージ:PHP、MySQLなどの各種ソフトウェアのこと。

Dockerfile:ディレクトリの移動など構築するときに付随する作業をスクリプトにまとめた物

docker-compose.yml:環境構築するための情報(バージョンやホスト名、ポート番号など)を書くファイル。

Dockerのコマンド

dockerの起動、停止など:こちらが詳しい https://qiita.com/okyk/items/a374ddb3f853d1688820

  • 各コンテナの起動、停止などは
    • $ docker hogehoge
  • コンテナを構成に関することは
    • $ docker-compose hogehoge
  • 各コンテナでのコマンド(例、MySQLでのログイン)
    • docker exec -it CONTAINER_NAME mysql -u USER_NAME -p

Dockerを使ったPHP, MySQL, phpMyAdminの構築

https://qiita.com/A-Kira/items/f401aea261693c395966#1-docker-composeyml-作成

https://php-archive.net/php/docker-php-environment/

↑2つの事例を参考にして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.22
  ports:
    - 13306:3306
  volumes:
    - ./mysql:/var/lib/mysql
  environment:
    MYSQL_ROOT_PASSWORD: secret
phpmyadmin:
  image: phpmyadmin/phpmyadmin:latest
  ports:
    - 8888:80
  depends_on:
    - db

Dockerでのトラブル

docker-compose up -dでエラーになった。

コンテナをstopさせないまま削除しようとしたためだったのでstopさせて対応。

またPHPだとPDOがあらかじめ入っていなくてDBにつながらないといったこともあった。参考:https://note.com/koushikagawa/n/na42e0634f09d

DBにつながったことも確認できたのでヨシ!