Dockerã§PHPã®ç°å¢æ§ç¯ãããæ¹æ³ã解説
Dockerã䜿çšããããšã§ãèªèº«ã®PCäžã«èªç±ã«äœ¿çšã§ãã軜éãªä»®æ³ç°å¢ãæ§ç¯ãããã®äžã«æå®ããã¢ããªã±ãŒã·ã§ã³ã®å®è¡ç°å¢ãç«ã¡äžããããšãå¯èœã§ãã 軜éã§ã©ãã§ãç°¡åã«ããã°ã©ã ã®å®è¡ç°å¢ãæ§ç¯ã§ããDockerã¯ãéçºæ¡ä»¶ã«ãããå€ãã®åé¡ã解決ããŸãã ä»åã¯Dockerãå©çšããPHPã®éçºç°å¢ã®æ§ç¯ã«ã€ããŠãå®éã®ã³ãã³ããšå ±ã«è§£èª¬ããŠãããŸããããã°ã©ãã³ã°ã®åŠç¿ãå®éã®éçºæ¡ä»¶ã«ãããŠãé¢åãªå£ã«ãªããã¡ãªãããã°ã©ã ã®å®è¡ç°å¢ã®æ§ç¯ãããããã£ãç°å¢æ§ç¯ã®å Žé¢ã§æ°ããç»æçãªæè¡ãšããŠããç»å Žããããã«ãªã£ãã®ãDockerã§ãã
軜éã§ã©ãã§ãç°¡åã«ããã°ã©ã ã®å®è¡ç°å¢ãæ§ç¯ã§ããDockerã¯ãéçºæ¡ä»¶ã«ãããå€ãã®åé¡ã解決ããŸãã
ä»åã¯Dockerãå©çšããPHPã®éçºç°å¢ã®æ§ç¯ã«ã€ããŠå®éã®ã³ãã³ããšå
±ã«è§£èª¬ããŠãããŸãã
Dockerã§PHPã®ç°å¢æ§ç¯ãè¡ãã
PHPãã¯ãããå€ãã®ããã°ã©ãã³ã°èšèªã«ã¯ãããå®è¡ããç°å¢ã®æ§ç¯ãå¿
èŠã§ãã
ããã°ã©ãã³ã°èšèªã¯ãããå®è¡ããç°å¢ãæ§ç¯ããŠåããŠå®è¡ã§ããããã«ãªããã®ã§ãããå Žåã«ãã£ãŠã¯ãã®ç°å¢æ§ç¯ãé¢åã§ãããšãããããã¯é¢åã§ã¯ãªããèªèº«ã®PCã®ç°å¢ãããŸãæ±ããããªããšããçç±ã§ãããã°ã©ãã³ã°èšèªã®ç°å¢æ§ç¯ãåå«ã«ãªã£ãŠããŸããšããããšãããã§ãããã
ãŸããå®éã®éçºæ¡ä»¶ã«ãããŠããã®æ¡ä»¶ã®éçºãè¡ãããã®ç°å¢æ§ç¯ãè€éã§ãããããã«ãç°å¢æ§ç¯ã«ãããå人ããšã®ãã¹ãçºçããçµæçã«èª°ã ã®PCäžã§ã¯ãŸãšãã«åãã®ã«ã誰ã ã®PCã§ã¯äžæãå®è¡ã§ããªããªã©ãšãã£ãããšãããããšæããŸãããããã£ãåé¡ã«å¯Ÿããè¿å¹Žã®éçºã§ã¯Dockerãšãããã©ãããã©ãŒã ãçšããç°å¢æ§ç¯ãè¡ãããããã«ãªã£ãŠããŸãã
Dockerãšã¯
Dockerãšã¯ç«¯çã«èšãã°ä»®æ³ç°å¢ã§ãã
èªèº«ã®PCäžã«èªç±ã«äœ¿çšã§ããä»®æ³ç°å¢ãæ§ç¯ãããã®äžã§æå®ããããã°ã©ãã³ã°èšèªãããŒã¿ããŒã¹çã®å®è¡ç°å¢ãäœæããããšãããã®ã§ãã
ãã ãåŸæ¥ã®ä»®æ³ç°å¢ãšç°ãªããDockerãæ§ç¯ããä»®æ³ç°å¢ã¯æ¥µããŠè»œéã«åäœãããšããç¹åŸŽããããŸãã
éåžžãä»®æ³ç°å¢ã®æ§ç¯ã»çšŒåã¯PCã®ã¡ã¢ãªãå€ãå¿
èŠãšãããã®ã§ãããããDockerã®ç»å Žä»¥åã¯ä»®æ³ç°å¢äžã®ã¢ããªã±ãŒã·ã§ã³ã®å®è¡ã¯PCã«å€ãã®è² è·ãããããã®ã§ããã
ãããå°ãªããªãœãŒã¹ã§çŽ æ©ãåäœããããšãã§ããDockerã®ç»å Žã«ãããä»®æ³ç°å¢äžã§ã®ç°å¢æ§ç¯ã»ã¢ããªã±ãŒã·ã§ã³å®è¡ãå¯èœãšãªã£ãã®ã§ãã
Dockerã®å©ç¹
åè¿°ã®éããDockerã¯å°ãªããªãœãŒã¹ã§è»œå¿«ã«åäœããä»®æ³ç°å¢ãæ§ç¯ããŸãã
ããããã®ä»ã«ãDockerã®äœ¿çšã«ã¯ä»¥äžã®å©ç¹ããããŸãã
- ã©ãã§ãåã
Dockerãã€ã³ã¹ããŒã«ããã°ãããããç°å¢ã§åäœããŸãããã¹ã¯ãããäžãç©çãµãŒãäžãä»®æ³ãã·ã³äžãªã©ãåäœããå Žæãéžã³ãŸããã - ç§»åãç°¡å
äžè¿°ã®éãDockerã¯ã©ãã§ãåããããå¿ èŠã«å¿ããŠé 眮ããç°å¢ãç°¡åã«ç§»åãããããšãã§ããŸãã
ãã¹ãç°å¢äžã®Dockerã®å®è¡ã³ã³ãããç°¡åã«ä»ã®ç°å¢ã«ç§»åããããšãã§ããŸãã - éçºç°å¢ã®å
±æã容æ
Dockerã§ã©ã®ãããªç°å¢ãæ§ç¯ãããã«ã€ããŠã®å ±æã容æã§ãã
åŸæ¥ã®éçºæ¡ä»¶ã§ããã°ãç°å¢æ§ç¯ã®ããã®é·ã ãšããæé æžãéçºã¡ã³ããŒåã ãçèªãããã®éãã«æ§ç¯ãè¡ããšãããã¹ã®èµ·ãããããæéã®ãããæ¹æ³ãæ¡ãã®ãæäŸã§ããããDockerã¯ãã©ã®ãããªç°å¢ãæ§ç¯ããããã«ã€ããŠãã³ãŒãã§ç°¡åã«èšãããšãã§ããŸãã
éçºæ¡ä»¶ã«ãããŠãåãç°å¢ã倧å¢ã®PCã«å°å ¥ããããã«å¿ èŠãªæéããé·ã ãšããæé æžã®å ±æã§ã¯ãªãã人éãééãã«ãããã³ãŒãã®é åžãšã³ãã³ãã®æç€ºãã®ã¿ã§æžãããã«ãªããããç¡é§ãªæéãåæžãããã€åã ã®ç°å¢æ§ç¯ã®å€±æãé²ãããšãã§ããŸãã
Dockerã§PHPã®ç°å¢æ§ç¯ãè¡ãæé ã解説
æ¬é ã§ã¯Dockerã§PHPã®ç°å¢æ§ç¯ãè¡ãæ¹æ³ã«ã€ããŠãApache + PHP ã®ç°å¢æ§ç¯ãè¡ããã¿ãŒã³ãšãNginx + PHP ã®ç°å¢æ§ç¯ãè¡ããã¿ãŒã³ã«ã€ããŠç޹ä»ããŠãããŸãã
ãŸãåæãšããŠDockerã®å°å
¥ãè¡ããŸãã
Dockerã®å°å
¥ã«ã¯ããã€ãã®æ¹æ³ããããŸãããMac, Windowså
±ã«Dockerããã¥ã¡ã³ãæ¥æ¬èªçããŒãžã§è§£èª¬ãããŠãã Docker Toolbox ãçšããæ¹æ³ã§Docker ComposeïŒåŸè¿°ïŒãå«ããDockerã®å°å
¥ãå¯èœã§ãã
äžèšå°å ¥ããŒãžã®æé ã«åŸãDocker Toolboxã®ã€ã³ã¹ããŒã«ãé²ããŠãã ãããã€ã³ã¹ããŒã«ãçµãããšãDockerãšDocker Composeã®å°å ¥ã¯å®äºã§ãã
Apache + PHP ã®å®è¡ç°å¢ãæ§ç¯ãã
ãŸããPHPã®å®è¡ç°å¢ãšããŠã¯ãã£ãšãåºæ¬ç㪠Apache + PHP ã®ç°å¢ãDockerã§æ§ç¯ããæ¹æ³ã«ã€ããŠè§£èª¬ããŸãã
ããã¯æ¥µããŠç°¡æœã«è¡ãããšãã§ããŸãã
æ¢ã«Dockerãå°å
¥ãããŠããç°å¢ã§ããã°ã次ã®ã³ãŒããå®è¡ããã ãã§ç°å¢æ§ç¯ãå®äºããæ§ç¯ãããä»®æ³ç°å¢ïŒDockerã³ã³ããïŒãèµ·åããŸãã
docker run -d -p 80:80 --name php -v "$PWD":/var/www/html php:7.2-apache
ãã®ããã«ãã³ãã³ãã²ãšã€ã®ã¿ã§ Apache + PHP ã®ç°å¢æ§ç¯ãšãã®ç°å¢ã®ç«ã¡äžããå®äºããŸãã
ãã®ã³ãã³ãã®è©³çŽ°ã¯æ¬¡ã®éãã§ãã
- docker runã³ãã³ã
æå®ããDocker imageããã³ã³ãããç«ã¡äžããã
Docker imageãšã¯ãã³ã³ããïŒä»®æ³ç°å¢ïŒã®åå°ã§ããããã§ã¯php:7.2-apacheãæå®ããŠããã
ãã®php:7.2-apacheãšããååã®Docker imageã¯DockerHubïŒDocker imageçã®å ±æãå¯èœãªã¯ã©ãŠããµãŒãã¹ïŒã«PHPå ¬åŒãå ¬éããŠãããã®ã§ãããdocker runã³ãã³ãã«ããããã®imageãDockerHubäžããèªåçã«ååŸ* å±éãããã - -dãªãã·ã§ã³
ããã¯ã°ã©ãŠã³ãã§ã®å®è¡ãè¡ãã - -pãªãã·ã§ã³
ããã§ã¯ãã¹ãIPã®portçªå·80ãããDockerã³ã³ããã®portçªå·80ã«ã¢ã¯ã»ã¹ã§ããããã«ããŠããïŒ-p å€éšããã¢ã¯ã»ã¹ãããšãã®portçªå·:ã³ã³ããåŽã®portçªå·ïŒã - --nameãªãã·ã§ã³
Docker imageãå±éããã³ã³ããã®ååããã®ãªãã·ã§ã³ã§æå®ããã
ããã§ã¯phpãšããååãæå®ããŠããã - -vãªãã·ã§ã³
ãã¹ããšã³ã³ããã®ãã£ã¬ã¯ããªã®ãããã³ã°ãè¡ãã
ããã§ã¯ãã¹ãã®ç°å¢å€æ°$PWDã§æå®ããããã£ã¬ã¯ããªãšã³ã³ããå ã®/var/www/htmlããããã³ã°ããŠããã
Nginx + PHP ã®å®è¡ç°å¢ãæ§ç¯ãã
åé
ã§ã¯ã³ãã³ãã®ã¿ã§ Apache + PHP ã®ç°å¢ãæ§ç¯ããæ¹æ³ã解説ããŸããã
ä»åºŠã¯ Nginx + PHP ã®ç°å¢ããDocker Composeããå©çšããŠæ§ç¯ããæ¹æ³ã«ã€ããŠè§£èª¬ããŸãã
Docker Composeãšã¯ãè€æ°ã®Dockerã³ã³ããã®ç®¡çãè¡ãããã®ãã®ã§ãymlãã¡ã€ã«ã«èšè¿°ããæ§æã®éãã«è€æ°ã®Dockerã³ã³ãããç«ã¡äžãããšãããã®ã§ãã
ãã®Docker Composeã®å°å
¥ã«ã€ããŠã¯ãDocker Toolboxã§Dockerãã€ã³ã¹ããŒã«ããéã«åæã«å°å
¥ãããŠãããããããã§ã¯æ¢ã«ç°å¢æ§ç¯ã¯äžèŠã§ãã
ymlãã¡ã€ã«ãšã¯JSONã®ããã«æ§é åããŒã¿ãããã¹ã圢åŒã§æžããããã¡ã€ã«ã§ãã
ãdocker-compose.ymlããšããååã§ããã¹ããä¿åããŠã次ã®ããã«Dockerã³ã³ããã®æ§æãèšèŒããŸãã
version: '3' # docker-composeã®ããŒãžã§ã³ãæå®
services:
nginx: # ãµãŒãã¹å
container_name: "nginx" # ã³ã³ããå
image: nginx:1.14 # imageåãæå®ãããã§ã¯DockerHubäžã®nginxã€ã¡ãŒãžãæå®ããŠããã
links: # ããã§æå®ãããµãŒãã¹åãšã®ãªã³ã¯ãäœæãã
- php # ãµãŒãã¹åâphpâãšânginxâãé¢é£ä»ãã
php:
container_name: "php"
image: php:7.2-apache
ports:
- '80:80'
volumes:
- ./html:/var/www/html
ãã®ããã«docker-compose.ymlãäœæããåŸããã®ymlãã¡ã€ã«ãé 眮ãããã£ã¬ã¯ããªãã以äžã®ã³ãã³ããå®è¡ããããšã§ãè€æ°ã³ã³ãããåæã«ç«ã¡äžããããšãå¯èœã§ãã
docker-compose up -d
ãŸãšã
ãããã§ããã§ãããããä»åã玹ä»ããéããDockerãçšããããšã§è»œéãªä»®æ³éçºç°å¢ãç°¡åã«æ§ç¯ããããšãåºæ¥ãŸãããŸããDocker Composeãå©çšããããšã§ãè€æ°ã®Dockerã³ã³ããã®ç®¡çã»é£æºã容æã«è¡ãããšãåºæ¥ãŸããDockerãç©æ¥µçã«å©çšããæè»œã«ä»®æ³éçºç°å¢ãæ§ç¯ã§ããããã«ãªããŸãããã













