Docker ãµãŒãã¹ ã³ã³ãããŒãšã®éä¿¡
ãµãŒãã¹ã³ã³ããã¯ãã¯ãŒã¯ãããŒäžã§ã¢ããªã±ãŒã·ã§ã³ããã¹ããããã¯éçšããã®ã«å¿ èŠã«ãªããããããªããµãŒãã¹ããã¹ãããããã®ãã·ã³ãã«ã§ããŒã¿ãã«ãªæ¹æ³ãæäŸããDockerã³ã³ããã§ãã ããšãã°ãã¯ãŒã¯ãããŒã§ããŒã¿ããŒã¹ãã¡ã¢ãªãã£ãã·ã¥ãžã®ã¢ã¯ã»ã¹ãå¿ èŠãšããçµåãã¹ããå®è¡ããå¿ èŠããããããããŸããã
ãµãŒãã¹ã³ã³ããã¯ãã¯ãŒã¯ãããŒäžã®ããããã®ãžã§ãã«å¯ŸããŠèšå®ã§ããŸãã GitHubã¯æ°ããDockerã³ã³ãããã¯ãŒã¯ãããŒäžã§èšå®ãããåãµãŒãã¹ã«å¯ŸããŠäœæãããžã§ããå®äºãããšãã«ãã®ãµãŒãã¹ã³ã³ãããç Žæ£ããŸãã ãžã§ãäžã®ã¹ãããã¯ãåããžã§ãã®äžéšã§ãããã¹ãŠã®ãµãŒãã¹ã³ã³ãããšéä¿¡ã§ããŸãã ãã ããè€åã¢ã¯ã·ã§ã³å ã§ãµãŒãã¹ã³ã³ãããŒãäœæããŠäœ¿çšããããšã¯ã§ããŸããã
ã¡ã¢
ã¯ãŒã¯ãããŒã§ Docker ã³ã³ãã㌠ã¢ã¯ã·ã§ã³ããžã§ã ã³ã³ãããŒããŸãã¯ãµãŒãã¹ ã³ã³ãããŒã䜿ãããå Žåã¯ãLinux ã©ã³ããŒã䜿ãå¿ èŠããããŸãã
- GitHubãã¹ãã©ã³ããŒã䜿ããªããUbuntuã©ã³ããŒã䜿ããªããã°ãªããŸããã
- ã»ã«ããã¹ãã©ã³ããŒã䜿ã£ãŠãããªããã©ã³ããŒãšããŠLinuxãã·ã³ã䜿ããDockerãã€ã³ã¹ããŒã«ããŠãããªããã°ãªããŸããã
ã¯ãŒã¯ãããŒäžã®ãžã§ãã¯ãçŽæ¥ã©ã³ããŒãã·ã³äžã§å®è¡ããããã«ããDockerã³ã³ããäžã§å®è¡ããããã«ãèšå®ã§ããŸãã ãžã§ããšããžã§ãã®ãµãŒãã¹ã³ã³ãããšã®éä¿¡ã¯ããžã§ããã©ã³ããŒãã·ã³äžã§çŽæ¥å®è¡ãããŠããããã³ã³ããå ã§å®è¡ãããŠãããã«ãã£ãŠç°ãªããŸãã
ã³ã³ããå ã§ã®ãžã§ãã®å®è¡
ã³ã³ããå ã§ãžã§ããå®è¡ããå ŽåãGitHubã¯Dockerã®ãŠãŒã¶ãŒå®çŸ©ããªããžãããã¯ãŒã¯ã䜿ã£ãŠãµãŒãã¹ã³ã³ããããžã§ãã«æ¥ç¶ããŸãã 詳ããã¯ãDocker ããã¥ã¡ã³ãã®ãããªããž ãããã¯ãŒã¯ ãã©ã€ããŒããåç §ããŠãã ããã
ã³ã³ããå
ã§ãžã§ããšãµãŒãã¹ãå®è¡ããã°ããããã¯ãŒã¯ã¢ã¯ã»ã¹ã¯ã·ã³ãã«ã«ãªããŸãã ãµãŒãã¹ã³ã³ãããžã¯ãã¯ãŒã¯ãããŒäžã§èšå®ããã©ãã«ã䜿ã£ãŠã¢ã¯ã»ã¹ã§ããŸãã ãµãŒãã¹ã³ã³ããã®ãã¹ãåã¯ãèªåçã«ã©ãã«åã«ããããããŸãã ããšãã°ãredis ãšããã©ãã«ã§ãµãŒãã¹ã³ã³ãããäœæãããªãããã®ãµãŒãã¹ã³ã³ããã®ãã¹ãå㯠redis ã«ãªããŸãã
ãµãŒãã¹ã³ã³ããã§ããŒããèšå®ããå¿ èŠã¯ãããŸããã ããã©ã«ãã§ããã¹ãŠã®ã³ã³ããã¯åãDockerãããã¯ãŒã¯ã®äžéšãšãªã£ãŠãäºãã«ãã¹ãŠã®ããŒããå ¬éãåããDockerãããã¯ãŒã¯ã®å€éšãžã¯ããŒãã¯å ¬éãããŸããã
ã©ã³ããŒãã·ã³äžã§ã®ãžã§ãã®å®è¡
ã©ã³ããŒãã·ã³äžã§ãžã§ããçŽæ¥å®è¡ããå Žåãlocalhost:<port> ã 127.0.0.1:<port> ã䜿ã£ãŠãµãŒãã¹ã³ã³ããã«ã¢ã¯ã»ã¹ã§ããŸãã GitHubã¯ããµãŒãã¹ã³ã³ããããDockerãã¹ããžã®éä¿¡ãå¯èœã«ãããããã³ã³ãããããã¯ãŒã¯ãèšå®ããŸãã
ãžã§ããã©ã³ããŒãã·ã³äžã§çŽæ¥å®è¡ãããŠããå ŽåãDockerã³ã³ããå ã§å®è¡ãããŠãããµãŒãã¹ã¯ãã©ã³ããŒäžã§å®è¡ããŠãããžã§ãã«å¯ŸããŠããã©ã«ãã§ã¯ããŒããå ¬éããŸããã ãµãŒãã¹ã³ã³ããäžã®ããŒãã¯ãDockerãã¹ãã«å¯ŸããŠãããããå¿ èŠããããŸãã 詳ããã¯ããDocker ãµãŒãã¹ ã³ã³ãããŒãšã®éä¿¡ããã芧ãã ããã
ãµãŒãã¹ã³ã³ããã®äœæ
services ããŒã¯ãŒãã䜿ã£ãŠãã¯ãŒã¯ãããŒå
ã®ãžã§ãã®äžéšã§ãããµãŒãã¹ã³ã³ãããäœæã§ããŸãã 詳现ã«ã€ããŠã¯ããjobs.<job_id>.servicesããåç
§ããŠãã ããã
ãã®äŸã§ã¯ãcontainer-job ãšããååã®ãžã§ãã§ redis ãšããååã®ãµãŒãã¹ãäœæãããŸãã ãã®äŸã® Docker ãã¹ã㯠node:16-bullseye ã³ã³ããã§ãã
name: Redis container example
on: push
jobs:
# Label of the container job
container-job:
# Containers must run in Linux based operating systems
runs-on: ubuntu-latest
# Docker Hub image that `container-job` executes in
container: node:16-bullseye
# Service containers to run with `container-job`
services:
# Label used to access the service container
redis:
# Docker Hub image
image: redis
name: Redis container example
on: push
jobs:
# Label of the container job
container-job:
# Containers must run in Linux based operating systems
runs-on: ubuntu-latest
# Docker Hub image that `container-job` executes in
container: node:16-bullseye
# Service containers to run with `container-job`
services:
# Label used to access the service container
redis:
# Docker Hub image
image: redis
Dockerãã¹ããšãµãŒãã¹ã³ã³ããã®ããŒãã®ãããã³ã°
ãžã§ããDockerã³ã³ããå ã§å®è¡ããããªããããŒãããã¹ããããã¯ãµãŒãã¹ã³ã³ããã«ãããããå¿ èŠã¯ãããŸããã ãžã§ããã©ã³ããŒãã·ã³äžã§çŽæ¥å®è¡ããããªããå¿ èŠãªãµãŒãã¹ã³ã³ããã®ããŒãã¯ãã¹ãã©ã³ããŒãã·ã³ã®ããŒãã«ãããããªããã°ãªããŸããã
ãµãŒãã¹ã³ã³ããã®ããŒãã¯ãports ããŒã¯ãŒãã䜿ã£ãŠ Docker ãã¹ãã«ãããã§ããŸãã 詳现ã«ã€ããŠã¯ããjobs.<job_id>.servicesããåç
§ããŠãã ããã
ports ã®å€ | 説æ |
|---|---|
8080:80 | ã³ã³ããã®TCPã®ããŒã80ãDockerãã¹ãã®ããŒã8080ã«ãããããŸãã |
8080:80/udp | ã³ã³ããã®UDPããŒã80ãDockerãã¹ãã®ããŒã8080ã«ãããããŸãã |
8080/udp | Docker ãã¹ãã§ã©ã³ãã ã«éžæããããŒããã³ã³ãããŒã® UDP ããŒã 8080 ã«ãããããŸãã |
ports ããŒã¯ãŒãã䜿ã£ãŠããŒãããããããå ŽåãGitHub 㯠--publish ã³ãã³ãã䜿ã£ãŠã³ã³ããã®ããŒãã Docker ãã¹ãã«å
¬éããŸãã 詳ããã¯ãDocker ããã¥ã¡ã³ãã® Docker ã³ã³ãã㌠ãããã¯ãŒã¯ã«é¢ããããŒãžãåç
§ããŠãã ããã
ã³ã³ãã㌠ããŒããæå®ããã Docker ãã¹ã ããŒããæå®ããªãã£ãå Žåãã³ã³ãã㌠ããŒãã¯ç©ºãããŒãã«ã©ã³ãã ã«å²ãåœãŠãããŸãã GitHubã¯å²ãåœãŠãããã³ã³ããã®ããŒãããµãŒãã¹ã³ã³ããã®ã³ã³ããã¹ãã«èšå®ããŸãã ããšãã° redis ãµãŒãã¹ã³ã³ããã«å¯ŸããDocker ãã¹ãã®ããŒã 5432 ãèšå®ãããªãã察å¿ããã³ã³ããã®ããŒãã«ã¯ job.services.redis.ports[5432] ã³ã³ããã¹ãã䜿ã£ãŠã¢ã¯ã»ã¹ã§ããŸãã 詳ããã¯ããã³ã³ããã¹ã ãªãã¡ã¬ã³ã¹ããã芧ãã ããã
Redisã®ããŒãã®ãããã³ã°ã®äŸ
以äžã®äŸã¯ããµãŒãã¹ã³ã³ãã redis ã®ããŒã 6379 ããDocker ãã¹ãã®ããŒã 6379 ã«ãããããŸãã
name: Redis Service Example
on: push
jobs:
# Label of the container job
runner-job:
# You must use a Linux environment when using service containers or container jobs
runs-on: ubuntu-latest
# Service containers to run with `runner-job`
services:
# Label used to access the service container
redis:
# Docker Hub image
image: redis
#
ports:
# Opens tcp port 6379 on the host and service container
- 6379:6379
name: Redis Service Example
on: push
jobs:
# Label of the container job
runner-job:
# You must use a Linux environment when using service containers or container jobs
runs-on: ubuntu-latest
# Service containers to run with `runner-job`
services:
# Label used to access the service container
redis:
# Docker Hub image
image: redis
#
ports:
# Opens tcp port 6379 on the host and service container
- 6379:6379
ã€ã¡ãŒãžã¬ãžã¹ããªã«ããèªèšŒ
ã€ã¡ãŒãž ã¬ãžã¹ããªã§èªèšŒããå¿ èŠãããå Žåã¯ããµãŒãã¹ ã³ã³ãããŒã®è³æ Œæ å ±ãæå®ã§ããŸãã ããã«ããããã©ã€ããŒã ã¬ãžã¹ããªã®ã€ã¡ãŒãžã䜿çšããããDockerHub ã®ã¬ãŒãå¶éãåŒãäžãããããããšãã§ããŸãã
Docker Hub ãš GitHub Container registry ã䜿çšããèªèšŒã®äŸã次ã«ç€ºããŸãã
jobs:
build:
services:
redis:
# Docker Hub image
image: redis
ports:
- 6379:6379
credentials:
username: ${{ secrets.dockerhub_username }}
password: ${{ secrets.dockerhub_password }}
db:
# Private registry image
image: ghcr.io/octocat/testdb:latest
credentials:
username: ${{ github.repository_owner }}
password: ${{ secrets.ghcr_password }}
jobs:
build:
services:
redis:
# Docker Hub image
image: redis
ports:
- 6379:6379
credentials:
username: ${{ secrets.dockerhub_username }}
password: ${{ secrets.dockerhub_password }}
db:
# Private registry image
image: ghcr.io/octocat/testdb:latest
credentials:
username: ${{ github.repository_owner }}
password: ${{ secrets.ghcr_password }}