æ©èœããŠãããµãŒããŒãå±éããŠã¹ãã³ã¢ããããããšã¯ãWeb ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã«é åžããããã®éµã§ãã Apache HTTP Server Project ã¯é·ãéãããå¯èœã«ããŠããŸããããã ããApache Serverã®äººæ°ã«ããããããããŠãŒã¶ãŒã¯æ§æãšå±éã«é¢ããŠããã€ãã®ããŒãã«ã«çŽé¢ããå¯èœæ§ããããŸãã
ãããããããšã«ãApacheã³ã³ãããšDockerã³ã³ããã¯é£æºããŠãã®ããã»ã¹ãåçåã§ãããããè€éãã軜æžããªããæéãç¯çŽã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒããšæ§æã 1 ã€ã®ã¯ãã¹ãã©ãããã©ãŒã åäœã«ãŸãšããŠããã±ãŒãžåã§ããŸãã Apache httpd Docker Official Image ã¯ããã©ãŠã¶ãOSãCPU ã¢ãŒããã¯ãã£ã§åäœãããŠã§ããµãŒããŒã¢ããªã±ãŒã·ã§ã³ãã³ã³ããåããã®ã«åœ¹ç«ã¡ãŸãã
ãã®ã¬ã€ãã§ã¯ãApache HTTP Server (httpd)ãhttpd Docker Official Imageãããã³ããããã®äœ¿ç𿹿³ã«ã€ããŠèª¬æããŸãã ãŸããããã€ãã®ç°¡åãªãã³ããšãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠãåŠã³ãŸãã æ £ã芪ããã§ããå Žåã¯ãApacheã®ç޹ä»ãã¹ãããããŠãããŸããŸãããããã©ããŒããããšã§äœãæ°ããããšãåŠã¶ããšãé¡ã£ãŠããŸãã é£ã³èŸŒã¿ãŸãããã
ãã®ãã¥ãŒããªã¢ã«ã®å 容:
- ã¢ããããµãŒããŒãšã¯äœã§ãã?
- httpd Docker å ¬åŒã€ã¡ãŒãžã®äœ¿ãæ¹
- ã€ã¡ãŒãžã§ Dockerfile ã䜿çšããæ¹æ³
- ããã«ãŒãã¡ã€ã«ãªãã§ã€ã¡ãŒãžã䜿çšããæ¹æ³
- æ§æãšåœ¹ç«ã€ãã³ã
- SSLãä»ããŠããŒã¿æå·åã®ããã¯ãè§£é€ããæ¹æ³
- æåã®httpdããã«ãŒã®å ¬åŒã€ã¡ãŒãžããã«ãã
ã¢ããããµãŒããŒãšã¯äœã§ãã?
Apache HTTP Server ã¯ããåçšã°ã¬ãŒãã§ãæ©èœè±å¯ã§ãèªç±ã«å©çšã§ãã HTTP (Web) ãµãŒããŒã®ãœãŒã¹ã³ãŒãå®è£ ã ãšããŠäœæãããŸãã ã åºæ¬çãªã¢ããªã±ãŒã·ã§ã³ã«ããå ç¢ãªãšã³ã¿ãŒãã©ã€ãºã®ä»£æ¿ææ®µã«ãåæ§ã«é©ããŠããŸãã
ä»ã®ãµãŒããŒãšåæ§ã«ãApacheã䜿çšãããšãéçºè ã¯ããã¯ãšã³ããªãœãŒã¹ãä¿åããã³ã¢ã¯ã»ã¹ããŠãæçµçã«ãŠãŒã¶ãŒåãã®ã³ã³ãã³ããæäŸã§ããŸãã HTTP Web èŠæ±ã¯ããã®åæ¹åéä¿¡ã®äžå¿ã§ãã ãhttpdãã®é åèªã®ãdãéšåã¯ãããŒã¢ã³ãã衚ããŸãã ãã®ããŒã¢ã³ã¯ãçä¿¡æ¥ç¶èŠæ±ãåŠçãããµãŒããŒã«ã«ãŒãã£ã³ã°ããŸãã
éçºè ã¯ãŸããèªèšŒããã£ãã·ã¥ãSSL ãªã©ã远å ã§ããApacheã®ã¢ãžã¥ãŒã«æ§ã掻çšããŸãã Apache HTTP Server ã«å¯Ÿãããã®åæã®æ¡åŒµæ§ã®æŽæ°ã¯ããã®ç¶ç¶çãªæé·ã®ãã£ãããšãªããŸããã Apache HTTP Server ã¯äžé£ã® NCSA ããããšããŠå§ãŸã£ãã®ã§ããã®ååã¯ããããã®ãã Web ãµãŒããŒããšããŠã®åæã®ååšããµãããŠåãå ¥ããŠããŸãã
ããã€ãã®Apache HTTPãµãŒããŒã®æ¥œããäºå®:
- Apacheã¯1995幎ã«ããã¥ãŒããçŸåšãåºã䜿çšãããŠããŸãã
- ãã㯠NCSA httpd v1.3 ãã¢ãã«ã«ããŠããŸãã
- Apacheã¯çŸåšãæ¢ç¥ã®WebãµãŒããŒãæã€ ãã¹ãŠã®ãµã€ãã®çŽ47% ã«ãµãŒãã¹ãæäŸããŠããŸã
Httpd 察 ãã®ä»ã®ãµãŒã㌠ãã¯ãããž
Apache HTTP Server ã®äœ¿çšçµéšããããã¢ããªã±ãŒã·ã§ã³ãã³ã³ããåããããšããŠããå Žåã¯ã Apache httpd Docker Official Image ãåºçºç¹ãšããŠé©ããŠããŸãã ãŠãŒã¹ã±ãŒã¹ã«å¿ããŠã NGINX Serverã PHPããŸã㯠Apache Tomcat ã確èªããããšãã§ããŸãã
泚æç¹ãšããŠãHTTP Server 㯠Apache Tomcat (Apache Server ã®å¥ã®æè¡) ãšã¯ç°ãªããŸãã Apache HTTP Server 㯠C ã§æžãããŠããŸãããTomcat 㯠Java ããŒã¹ã§ãã Tomcat ã¯ãJava ã³ãŒãã®å®è¡å°çšã® Java ãµãŒãã¬ããã§ãã ãŸããéçºè ãJavaServerããŒãžãä»ããŠã¢ããªã±ãŒã·ã§ã³ããŒãžãäœæããã®ã«ã圹ç«ã¡ãŸãã
httpd Docker Official Image ãšã¯äœã§ãã?
ç§ãã¡ã¯ httpd Docker Official Image ã Docker ã³ãã¥ããã£ãšäžŠè¡ããŠç¶æããŠããŸãã éçºè ã¯httpdã䜿çšããŠãã³ã³ããåãããApache WebãµãŒããŒã¢ããªã±ãŒã·ã§ã³ããã°ããç°¡åã«èµ·åã§ããŸãã httpd ã«ã¯ Apache HTTP Server ã®ããã©ã«ãèšå®ãå«ãŸããŠããŸãã
ãªãApache httpd Docker Official Imageã䜿ãã®ã§ãã? äž»ãªäœ¿çšäŸãããã€ã玹ä»ããŸãã
- åè¿°ã®ããã«ãéçãªWebããŒãžããŠãŒã¶ãŒã«æäŸããããã®HTMLãµãŒããŒã®äœæ
- Apacheã®ã¢ãžã¥ãŒã«ã䜿çšããŠãSSLãä»ããŠå®å šãªãµãŒããŒHTTPSæ¥ç¶ã圢æãã
- æ¢åã®è€éãªæ§æãã¡ã€ã«ã®äœ¿çš
- ãã® GitHub ãããžã§ã¯ã ã®æŠèŠã瀺ã ã®ãããªé«åºŠãªã¢ãžã¥ãŒã«ã®
mod_perl 掻çš
ãããã®ãŠãŒã¹ã±ãŒã¹ã¯ httpd å ¬åŒã€ã¡ãŒãžèªäœã«åºæã®ãã®ã§ã¯ãããŸãããããããã®å€éšèšå®ãã€ã¡ãŒãžèªäœã«å«ããã®ã¯ç°¡åã§ãã ãã®ããã»ã¹ã調ã¹ãŠãæåã®Apacheã³ã³ããã€ã¡ãŒãžã䜿çšããæ¹æ³ã®æŠèŠã説æããŸãã
ãªã©ã® mod_phpãŠãŒã¹ã±ãŒã¹ã§ã¯ã PHP Dockerå
¬åŒ ã€ã¡ãŒãžãªã©ã®å°çšã€ã¡ãŒãžãããããããé©ããŠããŸãã
httpd Docker å ¬åŒã€ã¡ãŒãžã®äœ¿ãæ¹
å ã«é²ãåã«ã Dockerãã¹ã¯ããããããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã ãã®ãã¥ãŒããªã¢ã«ã§ã¯åŒãç¶ã CLI ã䜿çšããŸãããçµã¿èŸŒã¿ã® Docker ããã·ã¥ããŒãã«ã¯ãã€ã¡ãŒãžãšã³ã³ãããŒã管çããããã®äœ¿ãããã UI ãçšæãããŠããŸãã ãã¿ã³ãã¯ãªãã¯ããã ãã§ãå®è¡äžã®ã³ã³ãããŒãç°¡åã«éå§ãäžæåæ¢ãåé€ãããã³æ€æ»ã§ããŸãã å ã«é²ãåã«ããã¹ã¯ããããå®è¡ããŠéããŠãã ããã
httpd å
¬åŒã€ã¡ãŒãžã掻çšããæãç°¡åãªæ¹æ³ã¯ã Docker Hub ã«ã¢ã¯ã»ã¹ããã³ãã³ãã docker pull httpd ã¿ãŒããã«ã«ã³ããŒããŠå®è¡ããããšã§ãã ããã«ãããã€ã¡ãŒãžå
ã®åããã±ãŒãžãšäŸåé¢ä¿ãããŠã³ããŒããããŠãããDocker Desktop ã«èªåçã«è¿œå ãããŸãã
Â
Â
ãã®ãããªã§httpdãæ£ããæ©èœããŠããããšã確èªããŠããéã«ãããã€ãã®éèŠãªããšãèµ·ãããŸããã
- ãã®
docker pull httpdã³ãã³ãã䜿çšããŠhttpdã€ã¡ãŒãžããã«ããŸããã - Docker Desktop ã® [ã€ã¡ãŒãž] ãã€ã³ã§ã€ã¡ãŒãžãèŠã€ãã[å®è¡] ãéžæããŠã[ãªãã·ã§ã³èšå®] ãã€ã³ãå±éããŸããã èŠã€ããããããã«ã€ã¡ãŒãžã«ååãä»ãããã¹ãããŒããšããŠ8080ãå ¥åããŠãããããäžåºŠ[å®è¡]ãã¯ãªãã¯ããŸãã
- ãã¹ã¯ãããã§ã¯ãååä»ãã³ã³ãããŒãæåŸ
ã©ããã«å®è¡ãããŠãã [ã³ã³ãããŒ
TestApache] ãŠã£ã³ããŠã«çŽæ¥ç§»åããŸããã - ãã©ãŠã¶ã®ãhttp://localhost:8080ãã«ã¢ã¯ã»ã¹ããŠãåºæ¬çãªã»ããã¢ããããã¹ãããŸããã
ãã®äŸã§ã¯ã :latest httpd ã®ããŒãžã§ã³ãèªåçã«ååŸããŸãã çªå·ä»ãããŒãžã§ã³ãŸãã¯ããå
·äœçãªã¿ã°ãæå®ããããšããå§ãããŸã (ãããã® :latest ããŒãžã§ã³ã§ã¯ç Žå£ç倿Žãå°å
¥ãããå¯èœæ§ããããã)ã æ¬çªç°å¢ã«ç§»è¡ããåã«ããããã®å€æŽãç£èŠãã广çã«ãã¹ãããã®ã¯é£ããå ŽåããããŸãã
ããã¯çŽ æŽããããã¹ãã±ãŒã¹ã§ãããããå°ãã«ã¹ã¿ãã€ãºããããã®ãæ§ç¯ãããå Žåã¯ã©ãã§ããããã ããã¯a Dockerfile ã䟿å©ãªãšããã§ãã
ã€ã¡ãŒãžã§ Dockerfile ã䜿çšããæ¹æ³
ä»ã®ã¯ãŒã¯ãããŒã»ã©äžè¬çã§ã¯ãããŸããããhttpd Docker å
¬åŒã€ã¡ãŒãžã§ ã䜿çšãããš Dockerfile ãã«ã¹ã¿ã æ§æãå®çŸ©ããã®ã«åœ¹ç«ã¡ãŸãã
Your Dockerfile ã¯ãã€ã¡ãŒãžã®ãã«ãæ¹æ³ã Docker ã«æç€ºãããã¬ãŒã³ ããã¹ã ãã¡ã€ã«ã§ãã ã€ã¡ãŒãžãæåã§ãã«ãããéã«ããã®ãã¡ã€ã«ã䜿çšãããšãããã©ã«ãã®httpdã€ã¡ãŒãžã«å«ãŸãããã®ãè¶
ããŠã æ§æãšæçšãªç»åã¬ã€ã€ãŒãäœæã§ããŸã ã
HTML ãµãŒããŒã®å®è¡ã¯ãhttpd Docker Official Image ãšã®äžè¬çãªã¯ãŒã¯ãããŒã§ãã ãããžã§ã¯ãã®å®å
šãªHTMLãå«ããã£ã¬ã¯ããªã«è¿œå Dockerfile ããå¿
èŠããããŸãã ãã®äŸã§ã¯ãããã public-html åŒã³åºããŸãã
FROM httpd:2.4 COPY ./public-html/ /usr/local/apache2/htdocs/
Â
ãã®åœä»€ã¯ FROM ãããŒã¹ã€ã¡ãŒãžãšããŠhttpd:2.4ã䜿çšããããã«ãã«ããŒã«æç€ºããŸãã åœä»€ã¯ COPY ãæå®ããããœãŒã¹ããæ°ãããã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªãã³ããŒãããããããã¡ã€ã«ã·ã¹ãã ã®ç¹å®ã®å Žæã«è¿œå ããŸãã ãã®èšå®ã¯ããªãå¿
èŠæäœéã®ãã®ã§ãããããã§ãæ©èœçãªApache HTTPãµãŒããŒã€ã¡ãŒãžãäœæããããšãã§ããŸã!
次ã«ããã®æ°ããç»åã®äž¡æ¹ã䜿çšã㊠build run ãå®éã®åäœã確èªããå¿
èŠããããŸããæ¬¡ã® 2 ã€ã®ã³ãã³ããé çªã«å®è¡ããŸãã
$ docker build -t my-apache2 . $ docker run -d --name my-running-app -p 8080:80 my-apache2
Â
ãŸãã docker build 以åã® Dockerfile. ãã®ã³ãã³ã㯠docker run ããã®ã€ã¡ãŒãžãååŸããããããã³ã³ãããŒãéå§ããŸãã ãã®ã³ã³ãããŒã¯ããã¿ãã ã¢ãŒããŸãã¯ããã¯ã°ã©ãŠã³ãã§å®è¡ãããŠããŸãã ããã«äžæ©é²ãã§ãå®è¡äžã®ã³ã³ãããŒå
ã®ã·ã§ã«ãéãå Žåã¯ã3 çªç®ã®ã³ãã³ããå
¥åããŸãã docker exec -ti my-running-app shãã ãããã®äŸã§ã¯ããã¯å¿
èŠãããŸããã
æåŸã«ããã©ãŠã¶ã«ã¢ã¯ã»ã¹ã㊠http://localhost:8080 ããã¹ãŠãæ£ããå®è¡ãããŠããããšã確èªããŸãã
ããã«ãŒãã¡ã€ã«ãªãã§ã€ã¡ãŒãžã䜿çšããæ¹æ³
å Žåã«ãã£ãŠã¯ãã€ã¡ãŒãžãã«ãã«å¿
èŠãªãããŸãã¯å¿
èŠ Dockerfile ãªãå ŽåããããŸãã ããã¯ãã»ãšãã©ã®éçºè
ãæ¡çš Dockerfileããããäžè¬çãªã¢ãããŒãã§ããã. ãŸããããã€ãã®ã³ãã³ããå¿
èŠã§ãã
ããã¯èšã£ãŠããæ¬¡ã®ã³ãã³ããå ¥åããŠApache HTTPãµãŒããŒã³ã³ãããå®è¡ããŸãã
Mac:
$ docker run -d --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
Â
ãªããã¯ã¹:
$ docker run -d --name my-apache-app -p 8080:80 -v $(pwd):/usr/local/apache2/htdocs/ httpd:2.4
Â
WindowsïŒ
$ docker run -d --name my-apache-app -p 8080:80 -v "$pwd":/usr/local/apache2/htdocs/ httpd:2.4
Â
æèšïŒ ã»ãšãã©ã®LinuxãŠãŒã¶ãŒã«ãšã£ãŠããã®ã³ãã³ãã®MacããŒãžã§ã³ã¯æ©èœããŸãããäºææ§ã®ããã·ã§ã«ãå®è¡ããŠãããŠãŒã¶ãŒã«ãšã£ãŠã¯LinuxããŒãžã§ã³ãæãå®å
šã§ãã Docker Desktop bash ãå®è¡ããŠãã Windows ãŠãŒã¶ãŒã¯äœ¿çšã§ããŸããã â$pwdâ PowerShell ã«ã¯å¿
èŠã§ãã
ãã€ã³ãã䜿çšãããš -v ããããžã§ã¯ããã£ã¬ã¯ããªã ããŠã³ã ãã $PWD ãmacOSãŸãã¯Linuxãå®è¡ããŠããå Žåã¯ã(ãŸãã¯ãã®OSåºæã®ããªãšãŒã·ã§ã³)çŸåšã®äœæ¥ãã£ã¬ã¯ããªã«å¹æçã«æ¡åŒµãããŸãã ããã«ãããã³ã³ããã¯ãã¡ã€ã«ã·ã¹ãã ã«å¹æçã«ã¢ã¯ã»ã¹ããå®è¡ã«å¿
èŠãªãã®ãååŸã§ããŸãã Docker Desktopå
ã§ä»¥åã«è¡ã£ãããã«ããã¹ã port 8080 ãã³ã³ããã«æ¥ç¶ããApacheã³ã³ãã port 80/tcp ãããã¯ã°ã©ãŠã³ãã§å®è¡ããŠããŸãã
æ§æãšåœ¹ç«ã€ãã³ã
Apache HTTP ãµãŒããŒæ§æã®ã«ã¹ã¿ãã€ãºã¯ã2 ã€ã®ç°¡åãªæé ã§å¯èœã§ãã ãŸããæ¬¡ã®ã³ãã³ããå ¥åããŠãã¢ããã¹ããªãŒã ã®ããã©ã«ãèšå®ãååŸããŸãã
<code>docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > my-httpd.conf</code>
次ã«ãå¿
èŠãªãã£ã¬ã¯ããªããã«ã¹ã¿ã æ§æã® COPY ã«æ»ããŸã Dockerfile ã
FROM httpd:2.4 COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf
ããã§ãïŒ ããã§ãApache HTTP Server ã®èšå®ãæå®ã®äœçœ®ã«ãããããããŸããã ããã«ã¯ãã¢ãžã¥ãŒã«ã®å€æŽãããµãŒããŒã®å®è¡ã«åœ¹ç«ã€æ©èœã®è¿œå ãå«ãŸããå ŽåããããŸãã
SSLãä»ããŠããŒã¿æå·åã®ããã¯ãè§£é€ããæ¹æ³
Apache ã¯ããã©ã«ãã§ HTTP çµç±ã§æ¥ç¶ã圢æããŸãã ããã¯ãã»ãã¥ãªãã£ãéèŠã§ã¯ãªãå°èŠæš¡ãªãããžã§ã¯ãããã¹ãã±ãŒã¹ãããã³ãµãŒããŒã®ã»ããã¢ããã«é©ããŠããŸãã ãã ããå€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãç¹ã«æ©å¯ããŒã¿ã転éããã¢ããªã±ãŒã·ã§ã³ (ãšã³ã¿ãŒãã©ã€ãº ã¢ããªãªã©) ã§ã¯ãæå·åãå¿ èŠã«ãªãå ŽåããããŸãã HTTPSã¯ãããã©ã«ãã®æå·åãèæ ®ããŠããã¹ãŠã®Webãã©ãã£ãã¯ã䜿çšããå¿ èŠãããæšæºã§ãã
ããã¯ã æå·åã¢ãžã¥ãŒã« ã䜿çšã㊠mod_ssl Apacheãä»ããŠãã€ãã£ãã«å¯èœã§ãã Docker ã®ã³ã³ããã¹ãã§ã¯ãSSL çµç±ã§ Web ãã©ãã£ãã¯ãå®è¡ãããšããããšã¯ãåœä»€ã䜿çšã㊠COPY ãã£ã¬ã¯ããªã« /usr/local/apache2/conf/ and server.key ã远å ãã server.crt ããšãæå³ããŸãã
ããã¯ãã®ããã»ã¹ã®èŠçŽããŒãžã§ã³ã§ãããSSLãèµ·åããŠå®è¡ããã«ã¯ããã«å€ãã®æé ãå¿ èŠã§ãã 芪ãã¿ãããæé ã®å®å šãªãªã¹ãã«ã€ããŠã¯ããSSL/HTTPSãã»ã¯ã·ã§ã³ã«ãã Docker Hub ã®ããã¥ã¡ã³ã ã確èªããŠãã ããã éèŠãªã®ã¯ãSSLã¯ããŒã80ã®ä»£ããã«ããŒã443ã䜿çšãããšããããšã§ãâåŸè ã¯éåžžæå·åãããŠããªãããŒã¿çšã«äºçŽãããŠããŸã)ã
æåã®httpdããã«ãŒã®å ¬åŒã€ã¡ãŒãžããã«ãã
httpd Docker Official Image ãããŸã䜿ã£ãŠ Apache HTTP Server ãã³ã³ããåããŠå®è¡ããæ¹æ³ããã¢ããŸããã ããã¯ãWebããŒãžãæäŸããããŸããŸãªWebã¢ããªã±ãŒã·ã§ã³(å®å šãã©ããã«ããããã)ã匷åããã®ã«æé©ã§ãã ãã®ã€ã¡ãŒãžã䜿çšãããšãåé¡ã«ééããããšãªããã¯ãã¹ãã©ãããã©ãŒã ããã³ã¯ãã¹ãã©ãŠã¶ãŒããããã€ã§ããŸãã
Apache ãš Docker ãçµã¿åãããããšã§ãéçºè ã Apache HTTP Server ã«æåŸ ããã«ã¹ã¿ãã€ãºæ§ãšæ©èœã®å€ããç¶æãããŸãã ããã«å®éšãéå§ããã«ã¯ã Docker Hub ã«ã¢ã¯ã»ã¹ã㊠ãæåã® httpd ã³ã³ãã㌠ã€ã¡ãŒãžããã«ããŸãã
â
åèæç®:
- httpd GitHub ãªããžããª
- çŽ æŽãããäœæ²: Apache2ã䜿çšãããµã³ãã«PHPã¢ããªã±ãŒã·ã§ã³