CI/CD ã§ã® Docker ã®äœ¿çš
CI/CD ã§ã³ã³ããããã«ãããŠäœ¿çšããããšã§ãéçºãã£ãŒãããã¯ã®æéãççž®ããããä¿¡é Œæ§ã®é«ããã¹ããäœæããæ¹æ³ã«ã€ããŠèª¬æããŸãã
Â
åã
ããã«ã¡ã¯ãDocker ãš CI/CD ã®äœ¿çšã«é¢ãããã®æè¡ããŒã¯ ã»ãã·ã§ã³ãžããããã DockerãšCI/CDã«ã€ããŠç°¡åã«ç޹ä»ãããšãDockerã¯ãäžè²«ããç°å¢ã§ã¢ããªã±ãŒã·ã§ã³ãéçºãåºè·ãå®è¡ããããã®ãã©ãããã©ãŒã ã§ãã ã€ãŸããã©ãããããããµãŒããŒãã¯ã©ãŠããªã©ãããããå Žæã§ãããžã§ã¯ããå®è¡ã§ããŸãã CI/CD ã¯ãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãšç¶ç¶çããªããªãŒãšãããã€ã§ãã ããã¯ããã¹ãŠãèªååããããã®äžé£ã®ãã©ã¯ãã£ã¹ã§ãã ããšãã°ãã³ãŒããæŽæ°ããã³ãããããŠããã·ã¥ãããšããã«ããšãã¹ãã¯ãããã€ã§ãèªåçã«è¡ãããŸãã
Â
ç®æ¬¡
- CI/CDã§Dockerã䜿çšããçç± (0:41) (0:21)
- éçºã¯ãŒã¯ãããŒ&CI/CD (1:08)
- ãã€ãã©ã€ã³ã®æ¹å (3:55)
- Docker Composeã«ããDXã®æ¹å (7:14)
- ææç©ãå¹çåãã (8:32)
- CI/CD ããã®ã€ã¡ãŒãžã®æ§ç¯ (10:52)
- CIãæ¯æŽãã (11:12)
- ããã«è©³ãã
Â
CI/CDã§Dockerã䜿çšããçç± (0:41)
ç§ã¯ããããžã§ã¯ãã¯ã©ãã§ãå®è¡ã§ãããšèšããŸããã ããã忢ããäžå ·åã§åèµ·åããããã1æ¥ã«100åè¡ãããšãã§ããŸãã ãããã£ãŠãCI/CDã·ã¹ãã ã§ãåãããšãã§ããŸãã ããã«ãCI/CD ãã€ãã©ã€ã³ã®åã¹ãããã§å®è¡äžã®ç°å¢ãç°¡åã«åçŸã§ããä¿èšŒã远å ããŸãã ãŸããèªååã«ããããã¹ããå詊è¡ãåãã¹ããåãã¹ããåãã¹ããããã³åãã¹ãã®ãªã¿ã€ã¢ãç°¡åã«è¡ãããšãã§ããŸãã ãããããã®åã«ãéçºã¯ãŒã¯ãããŒãèŠãŠã¿ãŸãããã
Â
éçºã¯ãŒã¯ãããŒ&CI/CD (1:08)
ããã¯ãéçºã¯ãŒã¯ãããŒã®äžäŸã§ãã ç§ã¯ãããæ©èœãããŒãšåŒã³ãä»ã®äººã¯ãããGitLabãããŒãšåŒãã§ããŸãã GitLabãGitLabãBitbucketãªã©ã§åäœããŸãã ã¡ã€ã³ãã©ã³ãã¯ãããã¯ã·ã§ã³ãã©ã³ãã§ãã éçºè ã¯ãæ©èœãä¿®æ£ãè¡ããšãã«ãã¡ã€ã³ ãã©ã³ãããæ©èœãã©ã³ããäœæããŸãã ãã«ãªã¯ãšã¹ãã®ãã¹ãŠã®ã³ããããšæŽæ°ã远å ããããGitHubã䜿çšããŠããå Žåã¯ãªã¯ãšã¹ããããŒãžããŸãã CIã¯ãé«å質ã®çµã¿èŸŒã¿ã»ãã¥ãªãã£ãããã®ãããã§ããªã¬ãŒãããŸãã ãããŠæåŸã«ãã¡ã€ã³ãã©ã³ãã«ããŠã³ããããšãCIãå床ããªã¬ãŒãããŸããããšãã°ãã¢ããªã±ãŒã·ã§ã³ãããã±ãŒãžåããŠãããã€ããŸãã ã³ããããããšãCI ãã€ãã©ã€ã³ã¯ãã¹ãŠã®ã¹ãããã§ç°å¢ãããŒãã¹ãã©ããããå¿ èŠããããŸãã ããŒãžããå ŽåãCI ã¯éçšåç°å¢ãšéçšç°å¢ãããŒãã¹ãã©ããããå¿ èŠããããŸãã ãããŠãããããã¹ãŠã®ç°å¢ã§ã®éããé¿ããå¿ èŠããããŸãã ãŸããå€ãã®å ŽåãCI/CD ãã©ãããã©ãŒã ããœãŒã¹ ã·ã¹ãã ã«ãã£ãŠã¯ãè€éã§éåžžã«é·ããªããŸãã ãã¹ãŠãåæãããã®ã¯å€§å€ãªããšã§ãã ãã£ãŒãããã¯ã«ãŒãã¯éåžžã«é£ãããéåžžã«è€éã§ãéçºè ã®ãšã¯ã¹ããªãšã³ã¹ã¯ã²ã©ããã®ã«ãªãå¯èœæ§ããããŸãã
ããã¯ãGitLab CIã®ç°¡åãªãªãã€ã³ããŒã§ãã GitLab CIã¯ãGitLabã®CI/CDæ©èœã®ååã§ãJenkinsãGitHub Actionã®ãããªãã®ã§ãã GitLabã©ã³ããŒã¯ãã¯ãŒã¯ãããŒãå®è¡ãããµãŒããŒã§ãã ã©ã³ããŒã¯ãããŒã«ã«ããµãŒããŒãKubernetes ãªã©ãã©ãã«ã§ãã€ã³ã¹ããŒã«ã§ããŸãã æäœã¯ãšãŠãç°¡åã§ãã éçºè ã¯ã倿Žãã³ãããããŠGitLabã€ã³ã¹ã¿ã³ã¹ã«ããã·ã¥ããŸãã ã©ã³ããŒã¯ GitLab ã€ã³ã¹ã¿ã³ã¹ãããŒãªã³ã°ããŠããŸãã ã©ã³ããŒã¯ãäœãããã¹ãããšãæ€åºãããšããããžã§ã¯ãã Git ã¯ããŒã³ããŸãã æ¬¡ã«ãã©ã³ããŒã¯.gitlab-ci.ymlãã¡ã€ã«ã«èšè¿°ãããŠããã³ãã³ããå®è¡ããŸãããã®ãã¡ã€ã«ã¯ãªããžããªã«ãããŸãã ãããŠãã©ã³ããŒã¯ãã£ãŒãããã¯ãGitLabã€ã³ã¹ã¿ã³ã¹ã«éä¿¡ããŸãã
ãã€ãã©ã€ã³ã®ãã¹ãŠã®ãžã§ãã¯ããšã°ãŒãã¥ãŒã¿ãŒã«ãã£ãŠå®è¡ãããŸãã ããã¯ãã©ã³ããŒã«ã€ã³ã¹ããŒã«ãããŠããgolangããã°ã©ã ã§ãã ãšã°ãŒãã¥ãŒã¿ãŒã¯ããã¢ã¡ã¿ã«ãã©ãããã©ãŒã ãVMãããã³ã³ã³ããäžã§ãžã§ãã®ã³ãã³ããå®è¡ã§ããŸãã ãã®ãªã¹ãã«ã¯ãåãã¹ããŒãžã«å±ãã 2 ã€ã®ãžã§ãããããŸãã ããã 2 ã€ã®ãžã§ãã®äž¡æ¹ã«ã€ããŠãUbuntu ã€ã¡ãŒãžã䜿çšãããã¹ãŠã®ã³ãã³ãã Ubuntu ã³ã³ãããŒã§å®è¡ããããšããšã°ãŒãã¥ãŒã¿ãŒã«äŒããŠããŸãã ãããŠãå¿ èŠãªãã®ãã€ã³ã¹ããŒã«ã§ããŸãã
ã§ã¯ãèŠããŠããã¹ãéèŠãªããšã¯äœã§ãã? ãã€ãã©ã€ã³ ãžã§ãã¯ã³ã³ããã§å®è¡ã§ããŸãã åãžã§ãã§ã¯ãç°ãªãã€ã¡ãŒãžã䜿çšã§ããŸãã ãããŠããã¹ãŠã®ãžã§ãã«ãã¹ãŠã®äŸåé¢ä¿ãåãããããã«äœ¿çšã§ããç°å¢ãç°¡åã«æäŸã§ããŸãã ãããŠãã¡ããããã¹ãã容æã«ããŸãã
Â
ãã€ãã©ã€ã³ã®æ¹å (3:55)
ããã§ã¯ãDockerãCIã®æ¹åã«ã©ã®ããã«åœ¹ç«ã€ããèŠãŠã¿ãŸãããã ãä»äºã«å¿ èŠãªç»åããéžã³ããã ããŸãã ãŸãããã¹ãŠã®ãžã§ãã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãå®å šã«å¶åŸ¡ã§ããŸãã ææ°ã®ã¿ã°ã䜿çšããã®ã¯è¯ããªãããšãå¿ããªãã§ãã ããã ãã®äŸã§ã¯ãåºæ¬ã€ã¡ãŒãžããéå§ããŸãã ããšãã°ãUbuntuã§ãã ããããæã«ã¯ãå¿ èŠãªãã¹ãŠã®ããŒã«ãç»åã«æäŸããŠã¿ãã®ãé¢çœããããããŸããã ãã®äŸã§ã¯ãgoãšnode jsããã§ã«ã€ã³ã¹ããŒã«ãããŠããå人çšã€ã¡ãŒãžã®1ã€ã䜿çšããŠããŸãã ãã®åŸããããã®ããŒã«ãã€ã³ã¹ããŒã«ããå¿ èŠã¯ãããŸããã ãããã¯ãã§ã«ã€ã¡ãŒãžã«ã€ã³ã¹ããŒã«ãããŠããŸãã ãããŠããã€ãã©ã€ã³ãåçåããã¹ã ãŒãºã«ããå éããŸãã ãŸããå šå¡ãåãããŒã«ã䜿çšããŠããããšãä¿èšŒãããŸãã åãããŒãžã§ã³ã§ãåãåäœãããŸãã ãã¹ãŠã®ããŒã«ãããªã€ã³ã¹ããŒã«ãããããã«äœ¿çšã§ããã€ã¡ãŒãžã䜿çšããŠããã€ãã©ã€ã³ãé«éåããŸãã
ç§ã®äŸã§ã¯ãããŒã«ã€ã¡ãŒãžã䜿çšããåã¯ãæèŠæéã¯çŽ 2 å 30 ç§ã§ããã ããŠãç§ã®ããŒã«ã®ã€ã¡ãŒãžã§ãç§ã¯ã¡ããã©1åã«ç§»ããŸããã ããããç»åãäœæããŠãããšãã¯ãç§ãããè³¢ããªãããšãã§ããŸãã ãŸãããã¹ãŠãå®è¡ã§ããå·šå€§ãªæ±çšã€ã¡ãŒãžã¯äœ¿çšããªãã§ãã ããã ãã¹ãŠã®ãžã§ãã«é¢é£ããããŒã¹ã®ç»åãéžæããå°ããç»åãéžæããŸãã ãã®äŸã§ã¯ããã¹ãŠã®ãžã§ãã«å¯ŸããŠãç¹å®ã®ã³ã³ããã¹ãå°çšã®ç»åãéžæããŸããã ãããã®ã€ã¡ãŒãžã«ã¯ãå¿ èŠãªãã€ããªãšäŸåé¢ä¿ã®ã¿ãåã蟌ãŸããŠããããšãç§ã¯ç¥ã£ãŠããŸãã ãããã£ãŠããããã®ç»åã¯æé©åããããã軜éã«ãªããŸãã ãããã£ãŠããã€ãã©ã€ã³ãå éããŸãã ãŸãããžã§ããç»åãä»ã®ãã€ãã©ã€ã³ã«åå©çšãããããªããŸãã ä»åã¯ãé©åœãªç»åã§ã 40 ç§ã«ç§»ããŸããã ãžã§ããé »ç¹ã«å®è¡ãããšãéããçããŸãã
ãã£ãšããŸãããããããå°ããªgolangã€ã¡ãŒãžãéžæãããšãã€ã¡ãŒãžã®ããŒã«ãé«éã«ãªããŸããããã§ä»å㯠30 ç§ã«ç§»ããŸããããŸããç»åãå°ããããããšã§æ»æå¯Ÿè±¡é åãæžããããšã§ãç»åã®ã»ãã¥ãªãã£ãåäžãããŸããããããã£ãŠããããã®ãã¹ã ãã©ã¯ãã£ã¹ã念é ã«çœ®ãããšã¯ã¹ããªãšã³ã¹ã䜿çšããŠç¬èªã®ãã¹ã ãã©ã¯ãã£ã¹ãäœæããŠãã ãããå°ããªã€ã¡ãŒãžã䜿çšãŸãã¯æ§ç¯ããŸããããã«ãããèªã¿èŸŒã¿æéãççž®ãããŸããããã¯ã Image Deep Dive ãã㯠ããŒã¯ ãã¬ãŒã³ããŒã·ã§ã³ã®ãããã¯ã§ãã倿®µéãã«ãææ³ã䜿çšãããšãããå°ããªã€ã¡ãŒãžãçæããããããã€ã容æã«ãªããŸããã€ã¡ãŒãžã®ããŒãžã§ã³ç®¡çãšããŒãžã§ã³ç®¡çãããã€ã¡ãŒãžã䜿çšããŠãäžæ§ãç¶æããäºæãã¬äºæ ãé¿ããããšãå¿ããªãã§ãã ããã
CI/CD ã§ Docker ã䜿çšãããšãããã€ãã®ã¡ãªãããåŸãããŸãã ç§»æ€æ§ãæ°ããç°å¢ã§CIãç§»åããå¿ èŠãããå ŽåããŸãã¯CIã·ã¹ãã ã倿Žããå¿ èŠãããå Žåã§ããçã¿ã¯å°ãªããªããŸãã å€ç«ãããšãå¯äœçšãåé¿ã§ããŸãã å¹çãããªãã¯ããå°ãªããšãã«ã®ãŒã§åãã¿ã¹ã¯ãå®è¡ããŸãã ã¹ã±ãŒã©ããªãã£ããã§ãŒã³ã«ã³ã³ããŒãã³ãã远å ããå¿ èŠãããå Žåãããã¯ããç°¡åã§ç®¡çãããããªããŸãã ãããŠãã¡ãããã»ãã¥ãªãã£ãã
Â
Docker Composeã«ããDXã®æ¹å (7:14)
ãããŠããããããã«æ¯æŽããããã«ãåªããDockeræ©èœã§ããDockerComposeããããŸãã ããšãã°ãç§ã¯Composeãããžã§ã¯ãã«åãçµãã§ãããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšããŠNodeJSã䜿çšããããŒã¿ããŒã¹ãšããŠPOSTGRESQLã䜿çšããŠããŸãã Docker Composeã䜿çšãããšããªã³ããã³ãã§ããŒãã¹ãã©ãããè¡ãããããã®çš®ã®ãããžã§ã¯ãã¯éåžžã«ç°¡åã§ãã å¿ èŠãªã®ã¯ã1 ã€ã®ã·ã³ãã«ãª Compose ãã¡ã€ã«ã ãã§ãã ãŸããGitLab CIããã®ä»ã®CI/CDã·ã¹ãã ãšã®äœµçšãéåžžã«ç°¡åã§ãã ãžã§ãã® Docker ããŒã«ã§ Docker ã€ã¡ãŒãžã䜿çšã§ããŸãã ãã¡ãããäºææ§ã®åé¡ãåé¿ããããã«ãç»åã®ç¹å®ã®ããŒãžã§ã³ããã³çãããŸãã ãžã§ã ã¹ã¯ãªããã§ Docker ã䜿çšããã«ã¯ãDocker DND ãµãŒãã¹ Docker ã Docker ã«å«ããå¿ èŠããããŸãã ãããŠä»ãããªãã¯ãã€ãã©ã€ã³ã®è€éãªé 管ãå¿ããããšãã§ããŸãã ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãè€æ°ã®ã³ã³ããã®ç®¡çãšãããã®çžäºäœçšãGitLab CIãã€ãã©ã€ã³ã«å¹çåããŸãã ãã®äŸã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®åäœãã¹ããå®è¡ããŸãã ãŸããé©åãªã¢ãŒãã£ãã¡ã¯ããçæããå Žåã¯ãã©ã³ããŒã®åºåãGitLabã®ãã¹ãã¬ããŒãã䜿çšããŠãã¹ãçµæã远跡ã§ããŸãã
Â
ææç©ãå¹çåãã (8:32)
ã§ã¯ãããã€ãã®ãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠã話ãããŸãããã ãŸããã·ãŒã¯ã¬ãããã€ã¡ãŒãžã«å«ããªãã§ãã·ãŒã¯ã¬ãããããªã¥ãŒã ãšããŠããŠã³ãããç°å¢å€æ°ã䜿çšããããããŒã«ãã䜿çšããŸãã Docker ããã³çµç¹ããã®ä¿¡é Œã§ããã³ã³ãã³ãã®ã¿ã䜿çšããŠãã ããã ããšãã°ãDockerã«ã¯3çš®é¡ã®ä¿¡é Œã§ããã³ã³ãã³ãããããŸãã Dockerã®å ¬åŒã€ã¡ãŒãžãçºè¡è ã®ç¢ºèªãããã³ã¹ãã³ãµãŒä»ãã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã ç»åã䜿çšãããšãã¯ãææ°ã®ã¿ã°ã䜿çšããªãã§ãã ããã å±éºãããŸãã
Docker ã€ã¡ãŒãžãã¹ãªã ã§å¹ççã«ä¿ã¡ãŸãã ã¢ããªã±ãŒã·ã§ã³ã«çµ¶å¯Ÿã«å¿ èŠãªãã®ã®ã¿ãå«ããç»åã¬ã€ã€ãŒãè³¢ãæŽçããŠåå©çšã§ããããã«ããŸãã ããã«ãããç»åãµã€ãºãçž®å°ãããã ãã§ãªãããã«ããŒãé«éã«ãªããŸãã ããã«ããã«ãã¹ããŒãžãã«ããæ¡çšããŠããããããã¹ãŠãåçåããã³ã·ã³ãã«ã«ä¿ã€ããã®åªããããŒã«ã§ãã
ããã§ã¯ããã«ãã¹ããŒãžãã«ãã«ã€ããŠããå°ãã話ãããŸãããã ããã¯Dockerã®2çªç®ã«å¥œããªæ©èœã§ã1ã€ç®ã¯Composeã§ãã ãã«ãã¹ããŒãž ãã«ãã®äœ¿çšã¯ããã€ãã©ã€ã³ã Dockerfile ã«å®çŸ©ããã®ãšäŒŒãŠããŸãã ãã®ã¹ã©ã€ãã® Dockerfile 㯠2 ã€ã®ã¹ãããã«åãããŠããŸãã æåã®ã¹ãããã§ã¯ãå ¬åŒã®golangã€ã¡ãŒãžã䜿çšããŠgolangã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŸãã ãã®ã€ã¡ãŒãžã®ãµã€ãºã¯çŽ 800 MB ã§ãã æ¬¡ã«ãã¢ããªã±ãŒã·ã§ã³ããã«ããããããæå°éã®ã¹ã¯ã©ããã€ã¡ãŒãžã䜿çšããŠãæåã®ã¹ããŒãžã®ãã€ããªãæçµã€ã¡ãŒãžã«ã³ããŒããŸãã æçµçã«ãç»åã®ãµã€ãºã¯ãããçŽ 20 MB ã§ãã ãã¡ããããµã€ãºã¯ã¢ããªã±ãŒã·ã§ã³ãè€éãã«ãã£ãŠå€ããå¯èœæ§ããããŸãã ããã«ãããã¡ãªãããåŸãããŸãã ç»åãµã€ãºãçž®å°ããŸããã ãã®ãããããŒãæéãšã¹ãã¬ãŒãžå¹çãåäžããŸãã åæ§ç¯ãéããªããŸãã ãŸããã€ã¡ãŒãžãå°ããã»ã©æ»æå¯Ÿè±¡é åãæå°éã«æãããããããã»ãã¥ãªãã£ãåäžããŸãã ãŸããCI/CDã§ã¯ã»ãã¥ãªãã£ãéèŠãªãã€ã³ãã§ãã ã€ã¡ãŒãžã«è匱æ§ããªãããšã確èªããå¿ èŠããããŸãã
Â
CI/CD ããã®ã€ã¡ãŒãžã®æ§ç¯ (10:52)
CI/CDããã®Dockerã€ã¡ãŒãžã®ãã«ããšå ¬éã«é¢ããŠã¯ãä»äºã¯éåžžã«ç°¡åã§ãã GitLabã¯ãGitLab CIããDockerã€ã¡ãŒãžããã«ãããããŸããŸãªæ¹æ³ã説æããåªããããã¥ã¡ã³ããæäŸããŠããããããã®éšåã«ã¯æéãè²»ãããŸããã
Â
CIãæ¯æŽãã (11:12)
CI ã«ã€ããŠããã«å°ã説æããŸãã ã§ã¯ããã£ãã·ã¥ç®¡çã«ã€ããŠã§ãã ãã«ããããã¯ãçµæããã£ãã·ã¥ããããšã§ãã«ããé«éåããŸãã ãã«ã ãããã¯ãDocker ã€ã¡ãŒãžã®æ¢å®ã®ãã«ã ãšã³ãžã³ã§ãã ããã«ãããåã®äœæ¥ãä¿åããããããç¹°ãè¿ããåé¿ãããŸãã ãã®åŸãåŸã§äœ¿çšããããã«ãã£ãã·ã¥ãå€éšã«ä¿åã§ããŸãã ããã¯ããã«ããæ¯åãŒãããéå§ãããããé«éæ§ãç¶æããå¿ èŠãããCI/CDç°å¢ã§ç¹ã«äŸ¿å©ã§ãã
ããã§ã¯ããã£ãã·ã¥ã®äŸãããã€ãã玹ä»ããŸãã ãã®ãããã€ã¡ãŒãžããã«ãããŠããã·ã¥ãããã£ãã·ã¥ãã¬ãžã¹ããªã«æ ŒçŽã§ããŸãã ãã®ããããã«ãã®äžéšãã¬ãžã¹ããªã«ä¿åããæ¬¡ã®ãã«ãã§ãã®éšåãåå©çšã§ããŸãã 2 çªç®ã®äŸã¯ããªããžã§ã¯ã ã¹ãã¬ãŒãžãããšãã° S3 ãã±ãã (Docker ãã«ãã§ã®äœ¿çš) ã§ãã
以äžã§ããæž èŽããããšãããããŸãã
Â
ããã«è©³ãã
- Docker Buildãš Docker Compose ã®ããã¥ã¡ã³ãã確èªããŠãã ãããÂ
- ããã«ãŒã¯åããŠã§ãã? å§ããŸãããã
- ç¡æã®ã©ãŒãã³ã°ãã¹ã§Docker補åãæ·±ãæãäžããŸãã
- Docker Newsletter ã賌èªããŠãã ããã
- Docker ãã¹ã¯ãããã®ææ°ãªãªãŒã¹ãå ¥æããŸãã
- 質åããããŸãã? Docker ã³ãã¥ããã£ããæäŒãããŸãã