ååãŸã§ã§ãã¢ããªã±ãŒã·ã§ã³ã®å質ãä¿èšŒããããã®ãã¹ãææ³ãç¿åŸããŸãããããã§ãå ç¢ãªSpring Bootã¢ããªã±ãŒã·ã§ã³ã宿ãããšèšããŸãã
次ã«éèŠãªã®ã¯ãéçºããã¢ããªã±ãŒã·ã§ã³ã**æ¬çªç°å¢ã«ãããã€ïŒé 眮ïŒ**ããå®å®çšŒåãããããšã§ãããã®ãããã€ã«ãããŠãçŸä»£ã®ITã€ã³ãã©ã§ããã¡ã¯ãã¹ã¿ã³ããŒãã«ãªã£ãŠããã®ããã³ã³ããæè¡ãç¹ã« Docker ã§ãã
ä»åã¯ãDockerãšã¯äœãããããŠSpring Bootã¢ããªã±ãŒã·ã§ã³ãã³ã³ããåããããã«å¿ èŠãªDockerfileã®åºæ¬çãªæžãæ¹ãåŠã³ãŸãã
1. Dockerãšã³ã³ããã®æŠå¿µ
ã¢ããªã±ãŒã·ã§ã³ããããã€ããéããéçºç°å¢ã§ã¯åããã®ã«ãæ¬çªç°å¢ã§ã¯åããªãããšããåé¡ãããçºçããŸããããã¯ãOSã®ããŒãžã§ã³ãã©ã€ãã©ãªãJavaã®ããŒãžã§ã³ãªã©ãå®è¡ç°å¢ã®éããåå ã§ãã
DockerïŒããã«ãŒïŒã¯ããã®å®è¡ç°å¢ãã³ã³ãããšãã圢ã§ããã±ãŒãžã³ã°ããã©ãã§ãåãããã«åäœãããããšãå¯èœã«ããŸãã
1-1. ä»®æ³ãã·ã³ãšã®éã
åŸæ¥ã®**ä»®æ³ãã·ã³ïŒVMïŒ**ã¯ãOSå šäœãä»®æ³åãããããèµ·åãé ãããªãœãŒã¹æ¶è²»ã倧ãããšããæ¬ ç¹ããããŸããã
äžæ¹ãã³ã³ããã¯ããã¹ãOSã®ã«ãŒãã«ãå ±æããã¢ããªã±ãŒã·ã§ã³ãšãã®å®è¡ã«å¿ èŠãªæå°éã®ãã¡ã€ã«ã ããéé¢ããŠåäœãããŸãã
- ã³ã³ããã®å©ç¹: 軜éã§é«éã«èµ·åãããªãœãŒã¹æ¶è²»ãå°ãªãããããããã€ãã¹ã±ãŒãªã³ã°ïŒæ¡åŒµïŒãéåžžã«å®¹æã§ãã
2. Dockerfileã®åœ¹å²ãšåºæ¬ã³ãã³ã
**DockerfileïŒããã«ãŒãã¡ã€ã«ïŒ**ã¯ãã³ã³ããã€ã¡ãŒãžãäœæããããã®èšèšå³ãšãªãããã¹ããã¡ã€ã«ã§ããã³ã³ããã®äžã§å®è¡ããç°å¢ããã¡ã€ã«ãèšå®ãªã©ãèšè¿°ããŸãã
2-1. Dockerfileã®åºæ¬çãªæžãæ¹
Spring Bootã¢ããªã±ãŒã·ã§ã³ïŒJARãã¡ã€ã«ïŒãã³ã³ããåããDockerfileã®åºæ¬æ§æãèŠãŠã¿ãŸãããã
| ã³ãã³ã | åœ¹å² | 説æ |
| FROM | ããŒã¹ã€ã¡ãŒãžã®æå® | ã³ã³ããã®åå°ãšãªãOSãå®è¡ç°å¢ïŒäŸïŒJavaã©ã³ã¿ã€ã ïŒãæå®ããŸãã |
| ARG | ãã«ãåŒæ°ã®å®çŸ© | ãã«ãæã«å€éšããæž¡ã倿°ïŒäŸïŒJARãã¡ã€ã«ã®ããŒãžã§ã³ïŒãå®çŸ©ããŸãã |
| COPY | ãã¡ã€ã«ã®ã³ã㌠| ãã¹ãOSïŒããŒã«ã«ïŒã®ãã¡ã€ã«ãã³ã³ããå ã«ã³ããŒããŸãã |
| WORKDIR | äœæ¥ãã£ã¬ã¯ããªã®èšå® | ã³ã³ããå ã§ã³ãã³ããå®è¡ããéã®åºæºãã£ã¬ã¯ããªãèšå®ããŸãã |
| ENTRYPOINT | ã³ã³ããèµ·åæã®ã³ãã³ã | ã³ã³ãããèµ·åãããšãã«åžžã«å®è¡ãããã¡ã€ã³ã³ãã³ããæå®ããŸãã |
2-2. Spring Bootã¢ããªã±ãŒã·ã§ã³åãDockerfileã®äŸ
Dockerfile
# 1. ããŒã¹ã€ã¡ãŒãžã®æå® (FROM)
# Javaå®è¡ç°å¢ã®ã¿ãå«ã軜éãªOpen JREã€ã¡ãŒãžã䜿çš
FROM eclipse-temurin:17-jre-focal
# 2. ãã«ãåŒæ°ã®å®çŸ©
ARG JAR_FILE=target/demo-0.0.1-SNAPSHOT.jar
# 3. ã³ã³ããå
ã®äœæ¥ãã£ã¬ã¯ããªãèšå® (WORKDIR)
WORKDIR /app
# 4. JARãã¡ã€ã«ãã³ã³ããå
ã«ã³ã㌠(COPY)
# ãã¹ãåŽã®JAR_FILEã倿°åapp.jarãšããŠã³ã³ããã®/appãã£ã¬ã¯ããªã«ã³ããŒ
COPY ${JAR_FILE} app.jar
# 5. ã¢ããªã±ãŒã·ã§ã³ã®ããŒããå
¬éïŒæ
å ±ãšããŠïŒ
EXPOSE 8080
# 6. ã³ã³ããèµ·åæã®å®è¡ã³ãã³ã (ENTRYPOINT)
# app.jarãå®è¡ããJavaã³ãã³ããæå®ãã³ã³ãããèµ·åãããšãããå®è¡ããã
ENTRYPOINT ["java", "-jar", "app.jar"]
3. Dockerã€ã¡ãŒãžã®ãã«ããšå®è¡
3-1. ã€ã¡ãŒãžã®ãã«ãïŒdocker buildïŒ
Dockerfileãé 眮ãããŠãããã£ã¬ã¯ããªã§ã以äžã®ã³ãã³ããå®è¡ããã³ã³ããã€ã¡ãŒãžãäœæããŸãã
Bash
# ã€ã¡ãŒãžå: spring-appãã¿ã°: latest ãä»ããŠãã«ã
docker build -t spring-app:latest .
ãã®ã³ãã³ããå®è¡ãããšãDockerfileã«æžãããæé ãäžããé ã«å®è¡ãããåå©çšå¯èœãª spring-app:latest ãšããã€ã¡ãŒãžãããŒã«ã«ã«äœæãããŸãã
3-2. ã³ã³ããã®å®è¡ïŒdocker runïŒ
äœæããã€ã¡ãŒãžã䜿ã£ãŠãå®éã«ã³ã³ãããèµ·åããŸãã
Bash
# -d: ããã¯ã°ã©ãŠã³ãã§å®è¡
# -p 8080:8080: ãã¹ãOSã®8080ããŒããã³ã³ããã®8080ããŒãã«ãããã³ã°
docker run -d -p 8080:8080 spring-app:latest
ããã§ãSpring Bootã¢ããªã±ãŒã·ã§ã³ãã³ã³ããå ã§èµ·åãããã¹ãOSã®ãã©ãŠã¶ãã http://localhost:8080 ã«ã¢ã¯ã»ã¹ããŠãã¢ããªã±ãŒã·ã§ã³ã«æ¥ç¶ã§ããããã«ãªããŸãã
4. ãŸãšãïŒç°å¢å·®ç°ã®è§£æ¶
Dockerãå©çšããããšã§ãéçºããã¹ããæ¬çªã®ã©ã®ç°å¢ã§ãã£ãŠããåžžã«**åãç°å¢ïŒåãã³ã³ããã€ã¡ãŒãžïŒ**ã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ã§ããŸããããã«ããããç°å¢ã®éãã«ããäžå ·åãã®åé¡ãæ ¹æ¬çã«è§£æ¶ãããããã€ãšéçšã®å¹çãåçã«åäžãããŸãã
â æ¬æ¥ã®ãŸãšã
- Dockerã¯ãã¢ããªã±ãŒã·ã§ã³ãšãã®å®è¡ç°å¢ãã³ã³ãããšãã圢ã§ããã±ãŒãžåããç°å¢å·®ç°ã®åé¡ãè§£æ¶ããã
- ã³ã³ããã¯VMãšç°ãªãã軜éã§é«éã«èµ·åããã
- Dockerfileã¯ãã³ã³ããã€ã¡ãŒãžãäœæããããã®èšèšå³ã§ãããFROMãCOPYãENTRYPOINTãªã©ã®ã³ãã³ãã§æ§æãããã
- Spring Bootã¢ããªã±ãŒã·ã§ã³ã¯ã
java -jar app.jarã ENTRYPOINT ã«èšå®ããããšã§ã³ã³ããå ã§å®è¡ãããã docker buildã§ã€ã¡ãŒãžãäœæããdocker runã§ã³ã³ãããèµ·åããã
ð æ¬¡åäºå
Dockerã§ã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ã¯ãåç¬ã§ãããã€ãããããšã¯çšã§ããéåžžãããŒã¿ããŒã¹ãå€éšãã£ãã·ã¥ãä»ã®ãã€ã¯ããµãŒãã¹ãªã©ãè€æ°ã®ã³ã³ãããšé£æºããŠåäœããŸãã
次åã¯ãè€æ°ã®ã³ã³ãããäžæ¬ã§å®çŸ©ã»ç®¡çããããã®ããŒã« Docker Compose ã®äœ¿ãæ¹ãåŠã³ãŸãã
次åïŒã第42åãè€æ°ã³ã³ããã®çµ±å管çïŒãDocker Composeã®æŽ»çšã ã«ãæåŸ ãã ããïŒ


ã³ã¡ã³ã