è°è«ãããããš
ããã§ã¯ãäœæè
ãdockerã䜿çšããã¢ãããŒããå
±æããŠããæçš¿ãå®æçã«è¡šç€ºãããŸãã ããŠãããã«ããªãã®ããã®å¥ã®ãã®ããããŸãã 以äžã«ãDockerç°å¢ã§ã®çµéšãééããäžäŸ¿ããããããšã®éããããã³ãã®çµæã«ã€ããŠèª¬æããŸãã ãŸããå°ãããªãããéåžžã«äŸ¿å©ãªããŒã«ãå
±æããŸãã

以åã®ç掻
ãŸããå°ãæŽå²ã ãã®ãããç§ãã¡ã¯å€åäžã«ãããçšåºŠãåæã«è€æ°ã®ãããžã§ã¯ããéçºããã³ãµããŒãããŠããŸãã ãããã¯ãã¹ãŠã幎霢ãèŠä»¶ãç°ãªããããç°ãªãç°å¢ã§åäœããŸãã ãã®ç¹ã§ãããŒã«ã«ã³ããŒãå±éãããšãã«äžäŸ¿ããããŸããã 以åã«äœæ¥ããããšããªããããžã§ã¯ãã«åãæ¿ãããšãã¯ãäœæ¥ç°å¢ãèšå®ããã ãã§ãªãããããèšå®ããå¿
èŠããããŸãã ããŒã å
ã§ãããéåžžã«è¿
éã«è§£æ±ºã§ããå Žåãå®æçã«æ¥ç¶ãããŠããããªãŒã©ã³ã¹ã®éçºè
ã§ã¯ãŸããŸãè€éã«ãªããŸãã éçºãdockerç°å¢ã«ç§»è¡ããããšã決å®ãããŸããã ããã§ã¯äœãçºæããŸããã§ããããäžè¬ã«åãå
¥ããããéãé²ã¿ãŸããã åãµãŒãã¹ã¯å¥ã
ã®ã³ã³ããã«å
¥ããããŸããã ãã³ãã«ã«ã¯ãdocker-composeã䜿çšããŸããã
è€æ°ã®ãããžã§ã¯ãã®äžŠè¡äœæ¥ãè¡ãã«ã¯ãåãããžã§ã¯ãã«å¿
èŠãªãã¹ãŠã®ãµãŒãã¹ã®ã€ã³ã¹ããŒã«ãå¿
èŠã§ãã ãŸããDocker-composeã®æ§æãã¡ã€ã«ã眮ãããŠãããªããžããªãŒãšãæäœã«å¿
èŠãªã€ã¡ãŒãžã®æ§æãäœæããŸããã ãã¹ãŠãéåžžã«è¿
éã«æ©èœãããã°ããã®éç§ãã¡ã«é©ããŠããŸããã å€æããããã«ãå°æ¥ããã®ã¢ãããŒãã¯åé¡ãéšåçã«è§£æ±ºããŸããã æ°ãããšã³ã·ã¹ãã ã«ãããžã§ã¯ããè¿œå ããããšããã®ãªããžããªã«ã¯æ§æãã¡ã€ã«ãšããŸããŸãªãµããŒãã¹ã¯ãªããããã£ã±ãã«ãªããŸããã ããã«ããã1ã€ã®ãããžã§ã¯ãã§äœæ¥ããå Žåãéçºè
ã¯ãã¹ãŠã®ãããžã§ã¯ãã®äŸåé¢ä¿ããã©ãã°ããããdocker-compose.ymlãç·šéããŠäžèŠãªãµãŒãã¹ãç¡å¹ã«ããå¿
èŠããããŸããã æåã®ã±ãŒã¹ã§ã¯ãäœåãªã³ã³ãããé
眮ããå¿
èŠããããŸããããããã¯æåã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãªããšæãããŸãããã2çªç®ã®ã±ãŒã¹ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ãæ©èœããããã«å¿
èŠãªã³ã³ãããç¥ãå¿
èŠããããŸããã å¿
èŠãªã³ã³ããŒãã³ãã®ã¿ãã€ã³ã¹ããŒã«ã§ããé€å€ããªãå Žåã¯æäœæ¥ãæå°éã«æããããšãã§ãããããæè»ãªãœãªã¥ãŒã·ã§ã³ãå¿
èŠã§ããã ãããŠãããã¯ç§ãã¡ãæ¥ããã®ã§ã...
ddk
ddkïŒDocker Development KitïŒã¯ãç°å¢ã®ã»ããã¢ãããç°¡çŽ åããDockerç°å¢ã§å®è¡ããããããžã§ã¯ãã®éçºç°å¢ã®å±éãèªååããããã«èšèšãããããŒã«ã§ãã ããããããããèãããŸãã å®éãddkã¯gitãšdockerã®äžçš®ã®ã©ãããŒã§ãããããã±ãŒãžãæ§æãã¡ã€ã«ããããžã§ã¯ãã䟿å©ã«ç®¡çããããã®è¿œå ã®ã³ãã³ããå€æ°æäŸããŸãã ããæå³ã§ã¯ãããã¯ãããžã§ã¯ãããã³ãµãŒãã¹çšã®docker-composeç°å¢äŸåé¢ä¿ãããŒãžã£ãŒã§ãã
æåãddkã¯pythonã¹ã¯ãªããã®ã»ããã§ããããšã³ããŠãŒã¶ãŒã¯ã䜿çšããå®è¡å¯èœãã¡ã€ã«ã®ã¿ãåãåããŸãã ããã§ãdockerèªäœãšdocker-composeã®ã€ã³ã¹ããŒã«ã«å ããŠãéçºè
ã¯æ§æãã¡ã€ã«ãäœæããŠddkãåæåããå¿
èŠããããŸãã ãã®ã¿ã¹ã¯ã¯ãinitã³ãã³ããåŒã³åºãããšã§å®è¡ãããŸãã
cd /var/projects/ddk ddk init
ãã®åŸãæ°ãããããžã§ã¯ããžã®æ¥ç¶ã¯æ¬¡ã®ãšããã§ãã
ddk project get my.project.ru ddk compose --up
ãŸããå¿
èŠã«å¿ããŠãæ°ãããã¡ã€ã³ãããŒã«ã«ãã¹ãã«ãªãã€ã¬ã¯ãããŸãã
echo 127.0.0.1 my.project.ddk >> /etc/hosts
æåã®ã³ãã³ãã¯ãããžã§ã¯ããè€è£œããåæåããŸãã 2çªç®ã¯ãdocker-composeã®æ§æãçæããå¿
èŠãªãµãŒãã¹ãéå§ããŸãã å®è¡äžã«ãäžè¶³ããŠãããã¹ãŠã®ã³ã³ããŒãã³ããããŒããããŸãã ã¢ã»ã³ããªãå®äºãããšãéçºè
ã¯ãããžã§ã¯ãã®å®å
šã«æ©èœããããŒã«ã«ã³ããŒãåãåããŸããããã¯my.project.ddkã§å
¥æã§ããŸãã
ä»çµã¿ã«ã€ããŠå°ã説æããŸãã
ddkã䜿çšããå Žåãäœæ¥ãã£ã¬ã¯ããªã¯ãinitã³ãã³ãã«ãã£ãŠçæãããæ§æãã¡ã€ã«ã眮ãããŠãããã£ã¬ã¯ããªã§ãã å®è¡å¯èœãã¡ã€ã«èªäœã¯ã䟿å©ãªå Žæã«é
眮ã§ããŸãã æ§æã¯çŸåšã®ãã£ã¬ã¯ããªããæ€çŽ¢ãããddkã¯æ€çŽ¢å¯Ÿè±¡ã®ãã¡ã€ã«ãèŠã€ãããããã¡ã€ã«ã·ã¹ãã ã®ã«ãŒãã«å°éãããŸã§ãã£ã¬ã¯ããªããªãŒãäžã«ç§»åããŸãã Gitãšdocker-composeã¯åæ§ã«æ©èœããŸãã æ§æãã¡ã€ã«ãèŠã€ãããšãddkã¯ãããžã§ã¯ãã®ããã±ãŒãžãšãœãŒã¹ã³ãŒããä¿åããããã®ãã£ã¬ã¯ããªãäœæããäŸåé¢ä¿ã解決ããŠã€ã³ã¹ããŒã«ããŸãã ã³ã³ããŒãã³ãã¯ãgitãªããžããªã®ã¯ããŒã³ãäœæããã ãã§ã€ã³ã¹ããŒã«ãããŸããgitãªããžããªã®ã¢ãã¬ã¹ã¯ãæ§æãã¡ã€ã«ã®ã³ã³ããŒãã³ãåãšãã¬ãã£ãã¯ã¹ãé£çµããããšã§æ±ºå®ãããŸãã
# "project-repo-prefix": ["git@github.com/vendor-name/"] ddk project get my.project.ru git clone git@github.com/vendor-name/my.project.ru.git
ãã¡ãããddkã¯git cloneã®åçŽãªã·ã§ãŒãã«ããã§ã¯ãªããè¿œå æ©èœããããŸãã æ¹æ³ãçç±ãçç±ã«ã€ããŠ-å°ãäœããããã§ã¯ãçµæãšããŠãã¹ãŠã®ãããžã§ã¯ããåéããããã£ã¬ã¯ããªãšããã®äœæ¥ã«å¿
èŠãªæ§æãã¡ã€ã«ã®ã¿ãè¿œå ãããããšãè¿œå ããŸãã ãã®ãã£ã¬ã¯ããªã¯ãå¥ã®ãã£ã¬ã¯ããªãŸãã¯å¥ã®ãã·ã³ã«ç°¡åã«ç§»åã§ããŸãã
ddkããã±ãŒãž
ç§ãæåã«éæãããã£ãã®ã¯ãç°å¢å
šäœãå¯èœãªéãã¢ãžã¥ãŒã«åããããšã§ããã åå¥ã®æ§æãã¡ã€ã«ã§åãµãŒãã¹ã®èª¬æã匷調ããããããç¬ç«ãããªããžããªã«ç§»åããŸããã ååã¯ããããããã±ãŒãžãšåŒã³ãŸããã ãããã®ãŸãã«ããã±ãŒãžãç§ãã¡ã®ããŒã«ã®åºç€ã圢æããŸããã docker-compose.ymlããã«ããããšãddkã¯å¿
èŠãªãã¹ãŠã®ããã±ãŒãžãå埩åŠçãããããã«åºã¥ããŠæçµçãªæ§æãã¡ã€ã«ãçæããŸãã
ååãšããŠãã¢ã»ã³ããªäžã«äžè¶³ããŠããã³ã³ããŒãã³ãããã¹ãŠèªåçã«ããŒãããããããåã
ã®ããã±ãŒãžãèªåã§ã€ã³ã¹ããŒã«ããå¿
èŠã¯ãããŸããã ããã§ããããããã€ã³ã¹ããŒã«ããã³æŽæ°ããããšã¯å¯èœã§ãã
ddk package install package-name ddk package update
次ã«ã³ã³ãã³ãã«ã€ããŠã ã«ãŒãã¯åžžã«ddk.jsonèšå®ãã¡ã€ã«ã§ãããã³ã³ããã®ååãšäœ¿çšãããŠããdockerã€ã¡ãŒãžã瀺ããŸãã 以äžã¯ãæå°æ§æã®ããã±ãŒãžã®äŸã§ãã
{ "container_name": "memcached.ddk", "image": "memcached:latest" }
ãæ°ã¥ããããããŸããããå®éãããã¯ãJSON圢åŒã§è¡šç€ºãããdocker-compose.ymlã®æ§æã®äžéšã§ãã ãã®ã¢ãããŒãã«ãããdocker-composeããµããŒããããã©ã¡ãŒã¿ãŒãèšå®ã§ããŸãã åå¥ã®Dockerfileã䜿çšããŠãã£ã¬ã¯ããªãããŠã³ããããããè€éãªããã±ãŒãžã®äŸã次ã«ç€ºããŸãã
{ "build": "${PACKAGE_PATH}", "container_name": "nginx.ddk", "volumes": [ "${SHARE_PATH}/var/www:/var/www", "${PACKAGE_PATH}/storage/etc/nginx/conf.d:/etc/nginx/conf.d:ro", "${PACKAGE_PATH}/storage/etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro", "${PACKAGE_PATH}/storage/var/log/nginx:/var/log/nginx" ] }
ããã±ãŒãžãã£ã¬ã¯ããªã®ãªã¹ãïŒ
storage/ etc/ nginx/ conf.d/ site.ddk.sample nginx.conf ddk.json Dockerfile
ãddk-ãã§å§ãŸãããŒã¯ãç¹å¥ãªãã£ã¬ã¯ãã£ããæå®ããããã«äœ¿çšãããŸãã çŸæç¹ã§ãµããŒããããŠããå¯äžã®ããŒã¯ãddk-post-installãã§ãããã±ãŒãžã®ã€ã³ã¹ããŒã«ããã³æŽæ°åŸã«å®è¡ãããã³ãã³ãã®ãªã¹ããä¿åãããŸãã
{ "ddk-post-install": [ "echo 'Done'" ] }
ãã®ãªãã·ã§ã³ã䜿çšããããã®ãªãã·ã§ã³ã®1ã€ã¯ããå¥çŽãã»ã¯ã·ã§ã³ã«èšèŒãããŠããŸãã
ãããžã§ã¯ã
次ã«ãç¹å®ã®ãããžã§ã¯ãã®äŸã§ddkã䜿çšããæ¹æ³ãæ€èšããŸãã æ¢åã®ãããžã§ã¯ãããããã€ããã«ã¯ã get
ã³ãã³ããåŒã³åºãã ãã§ãã
ddk project get project-id
ãã®ã³ãã³ãã¯ããããžã§ã¯ããshare / var / wwwãã£ã¬ã¯ããªãŒã«è€è£œãããã®åŸãæ§æãã¡ã€ã«ãæ€çŽ¢ããïŒããã©ã«ãã§ã¯ãããžã§ã¯ãã®ã«ãŒãã§ïŒãon-initã»ã¯ã·ã§ã³ããå¿
èŠãªãã¹ãŠã®ã³ãã³ããèµ·åãããŸãã ãã®æ®µéã§ãåã
ã®ãããžã§ã¯ããã©ã¡ãŒã¿ãŒãæ§æãããŸãïŒ.envã®çæããã¡ã€ã«ã®ã¢ã¯ã»ã¹èš±å¯ã®èšå®ãããŒã¿ããŒã¹ã®æ§æãªã©ïŒã
åæåã³ãã³ãã«å ããŠãddk.jsonãã¡ã€ã«ã«ã¯ããããžã§ã¯ãã®æäœãäŸåããããã±ãŒãžã®ãªã¹ããå«ãŸããŠããŸãã ããã±ãŒãžã®1ã€ãæ¬ èœããŠããå Žåãèªåçã«ã€ã³ã¹ããŒã«ãããŸãã 以äžã¯ãããžã§ã¯ãæ§æã®äŸã§ãã
{ "packages": [ "mysql5.5", "memcached", "apache-php5.5" ], "on-init": [ "${PROJECT_PATH}/init.sh ${PACKAGES_PATH} ${PROJECT_DIR}" ] }
on-initã»ã¯ã·ã§ã³ã§ã¯è€æ°ã®ã³ãã³ãã転éã§ããŸãããéåžžã¯1ã€ã ããæå®ããŸãã äžèšã®äŸã§ã¯ããããžã§ã¯ããåæåããããšãã¡ã€ã³ã®æ§æãå®è¡ããå±éã¹ã¯ãªãããèµ·åãããããšãããããŸãã ãã®ã¢ãããŒãã¯ãæè»æ§ãé«ãããããžã§ã¯ãã®åæåããã»ã¹ã«å¯Ÿè©±æ§ãè¿œå ã§ããããããã䟿å©ã§ããããšãå€æããŸããã
ããã±ãŒãžã®æ§æãæ¡åŒµããå¿
èŠãããå Žåã¯ãããã±ãŒãžããªããžã§ã¯ããšããŠæå®ããããšã§ãããè¡ãããšãã§ããŸãã ãã®ãªããžã§ã¯ãã«ã¯ãããã±ãŒãžã®ååãå«ãååå±æ§ãå¿
èŠã§ãã ä»ã®ãã¹ãŠã®å±æ§ã¯æ§æãšããŠèªèãããŸãã
{ "packages": [ { "name": "nginx", "depends_on": [ "php-fpm7.1" ], "environment": [ "SOME_VAR=Hello" ] } ] }
ãããã£ãŠãããã±ãŒãžã®å
ã®æ§æãå€æŽããããšãªãããµãŒãã¹ã®åäœã«åœ±é¿ãäžããããšãã§ããŸãã
åæ
Dockerç°å¢ã§ã®äœæ¥ã®éçšã§ãç§ãã¡ã¯ããã€ãã®èŠçŽãäœæããŸããã
ãŸããããã±ãŒãžãŸãã¯ãããžã§ã¯ãã®ãã¡ã€ã«ãšãã£ã¬ã¯ããªãããŠã³ããããšãããããã®æ§é ã¯ã³ã³ããå
ã®æ§é ãšäžèŽããå¿
èŠããããŸãã ã€ãŸã package-name / storageã¯ãpackage-nameã³ã³ããã®ã«ãŒããã£ã¬ã¯ããªãšäžèŽããŸãã å
±æãã£ã¬ã¯ããªã¯ãã³ã³ããã®ã«ãŒããã£ã¬ã¯ããªãšãäžèŽããŸãã ãããããã¹ãŠã®ãããžã§ã¯ããshare / var / wwwã«ããçç±ã§ãã ãã®ã«ãŒã«ã¯ãäžèšã®äŸã§ã远跡ãããŠããŸãã
次ã®é
ç®ã¯ããã¡ã€ã«ã·ã¹ãã ãå€æŽãããããšã«ãªã£ãŠããã³ã³ããã«ããã±ãŒãžãã€ã³ã¹ããŒã«ãããšãã«ãç¹å¥ãªãŠãŒã¶ãŒãäœæããããã®è³æ Œæ
å ±ããã¹ãã·ã¹ãã ãŠãŒã¶ãŒã®ããŒã¿ã«å¯Ÿå¿ããããšã§ãã ã€ãŸãããã¹ãã·ã¹ãã ããã³ã³ããã«ãã°ã€ã³ããŠãŒã¶ãŒIDãããã³ã°ã«ãŒãIDããããã³ã°ããŸãã å°æ¥ããã®ããŒã¿ã䜿çšããŠã³ã³ããå
ã®ãã¹ãŠã®ã³ãã³ããå®è¡ããããšããå§ãããŸãã ãã®ã¢ãããŒãã«ãããã³ã³ããå€éšã®ãã¡ã€ã«ã«ã¢ã¯ã»ã¹ããéã®ã¢ã¯ã»ã¹æš©ã®åé¡ãåé¿ã§ããŸãã å°ãªããšã1ã€ã®ãããžã§ã¯ãããã®ããã«æ§æãããŠããå Žåãshare / home / <user-dir>ãã£ã¬ã¯ããªãäœæãããã³ã³ããã«ããŠã³ããããŠããŒã ãã£ã¬ã¯ããªãšããŠäœ¿çšãããŸãã 以äžã¯ããããã©ã®ããã«å®è£
ãããã®äŸã§ãã
{ "container_name": "php71-fpm.ddk", "command": "map-user.sh", "env_file": [ "${PACKAGE_PATH}/env/user.env" ], "ddk-post-install": [ "mkdir -p ${PACKAGE_PATH}/env", "echo USER_NAME=`whoami` > ${PACKAGE_PATH}/env/user.env", "echo USER_ID=`id -u` >> ${PACKAGE_PATH}/env/user.env", "echo GROUP_ID=`id -g` >> ${PACKAGE_PATH}/env/user.env" ] }
ã芧ã®ãšãããããã±ãŒãžãã€ã³ã¹ããŒã«ãããšããŠãŒã¶ãŒããŒã¿ãå«ããã¡ã€ã«ãçæãããŸãã ã³ã³ãããèµ·åãããšãmap-user.shã¹ã¯ãªããããã§ãã¯ããå¿
èŠã«å¿ããŠãåä¿¡ããããŒã¿ã䜿çšããŠã¢ã«ãŠã³ããäœæããŸãã
éæ³ã®ãã³ã
æåŸã«è¡ãå¿
èŠãããã®ã¯ãéåžžã®docker-composeã䜿çšããŠå¿
èŠãªãã¹ãŠã®ãµãŒãã¹ãéå§ããããšã§ãã èµ·åãã©ã¡ãŒã¿ãŒãçæããã«ã¯ãcomposeã³ãã³ãã䜿çšããŸãã åŒã³åºããããšãddkã¯ãã¹ãŠã®ã¢ã¯ãã£ããªãããžã§ã¯ããééããããã±ãŒãžãšãã®ãã©ã¡ãŒã¿ãŒã«é¢ããããŒã¿ãåéããåãåã£ããã¹ãŠã®æ
å ±ãããã±ãŒãžèªäœã®æ§æãšçµã¿åããããããã®ããŒã¿ã«åºã¥ããŠæçµçãªdocker-compose.ymlãçæããŸãã ãã®ãã¡ã€ã«ã¯èµ·åæã«äœ¿çšãããŸãã
ddk compose docker-compose up -d
æ§æã®æ§ææã«é©åãªãªãã·ã§ã³ãæå®ãããšã1ã€ã®ã³ãã³ãã§å®è¡ã§ããŸãã
ddk compose --up
ãããŒã¯ãŒã«ã
ddkã®åäœã確èªããã人ã¯ããã¢ãããžã§ã¯ããå±éã§ããŸãã
ææ°ã®ãã«ããããŠã³ããŒãããŸãã
wget https://github.com/simbigo/ddk/raw/master/dist/ddk chmod +x ddk
å°æ¥ã®ãã¡ã€ã³ãæ§æããŸãã
echo 127.0.0.1 hello.ddk >> /etc/hosts
ãããžã§ã¯ããå±éããŸãã
./ddk init ./ddk project get hello ./ddk compose --up
ãã¹ãŠã®ç»åãæ£åžžã«çµã¿ç«ãŠãåŸããããžã§ã¯ãã¯httpïŒ//hello.ddkã§å©çšã§ããŸãã
ãããã«
éæããããšïŒ
- ã¢ãžã¥ã©ãŒç°å¢ã
- 1ã€ã®ã³ãã³ãã«ããæ§æã®åœ¢æã
- åå©çšå¯èœãªæäœãã®æ¬ åŠã
- ãããžã§ã¯ãã«éçºè
ãå«ããæå°æéã
åãçµã䟡å€ã®ãããã®ïŒ
- ddkã«ã¯ãšã©ãŒåŠçã¯ã»ãšãã©ãããŸããã
- 圌ãã¯MacOSã§æ£ããæäœãå®è£
ããããšãèšç»ããŠããŸããããçŸæç¹ã§ã¯ãããŒã ã«ã¯ãã¯ããã©ã€ãããªããããŒã«ã¯ãã®ã·ã¹ãã ã§ãã¹ããããŠããŸããã ã»ãšãã©ã®å Žåãããã€ãã®æ©èœãç»å Žããä¿®æ£ãå¿
èŠã«ãªããŸãã
- ããã±ãŒãžããã³ãããžã§ã¯ãã®ãªããžããªã¢ãã¬ã¹ã¯é
åãšããŠè»¢éãããŸãããå®éã«ã¯ãäœæ¥ã¯æåã®èŠçŽ ã§ã®ã¿å®è¡ãããŸãã ãªããžããªã®ååšã®æ£ããæ€èšŒãå®è£
ããè€æ°ã®ã¢ãã¬ã¹ãæ€çŽ¢ããå¿
èŠããããŸãã
- äœåãªå®¹åšã®é€å»ã
- åæåã¹ã¯ãªããã«ã¯å€ãã®å埩ã³ãŒãããããŸãã ãã¶ããddkã§äžè¬çãªæ©èœã䜿çšããã®ãçã«ããªã£ãŠããŸãã
ã³ãŒãã衚瀺ãæ¹åããŸãã¯åã«æ¹å€ãããã ãã®ãŠãŒã¶ãŒã®ããã«ãgithubãžã®ãªã³ã¯ãæ·»ä»ããŠããŸãã ãã®ããŒã«ãç§ãã¡ä»¥å€ã®èª°ãã«ãšã£ãŠæçšã§ããã°ãç§ãã¡ã¯åãã§ããŸãã
githubã«ã¢ã¯ã»ã¹