ãDockerfile ã®ãã¹ã ãã©ã¯ãã£ã¹ããæ€çŽ¢ãããšãDocker ã€ã¡ãŒãžã«ãã¡ã€ã«ã远å ãããšãã«ãåžžã« ADD åœä»€ã§ã¯ãªã COPY åœä»€ã䜿çšããããšãææ¡ã® 1 ã€ã«èŠã€ãããŸãã
ãã®ããã°èšäºã§ã¯ããã® 2 ã€ã®æé ã®æ©èœã«ã€ããŠããã«è©³ãã説æãããã®ææ¡ãååšããçç±ãæ¢ããŸãã ãããã®æŠå¿µãçè§£ãããšãææ¡ãç¡èŠã㊠COPY ã³ãã³ãã®ä»£ããã« ADD ã³ãã³ãã䜿çšããããšã§ã¡ãªãããåŸãããã·ããªãªãèŠã€ããå ŽåããããŸãã

ãã¡ã€ã«ã»ã·ã¹ãã ã®ãã«ãã»ã³ã³ããã¹ãã®çè§£
ADD ãš COPY ã®éãã詳ãã説æããåã«ããã«ã ã³ã³ããã¹ãã®æŠå¿µãçè§£ããããšãéèŠã§ãããã«ãã³ã³ããã¹ãã¯ãã€ã¡ãŒãžã®ãã«ãæã«Dockerãšã³ãžã³ããã¢ã¯ã»ã¹ã§ãããã¡ã€ã«ãšãã£ã¬ã¯ããªã®ã»ããã§ãã docker buildã³ãã³ããå®è¡ãããšãDockerã¯æå®ãããã³ã³ããã¹ããã£ã¬ã¯ããª(ããã³ãã®ãµããã£ã¬ã¯ããª)ã®å
容ãDockerããŒã¢ã³ã«éä¿¡ããŸãããã®ã³ã³ããã¹ãã¯ã COPY åœä»€ãš ADD åœä»€ãåäœããã¹ã³ãŒãã圢æããŸãã
COPYåœä»€
COPYåœä»€ã¯åçŽã§ããã®ååã瀺ããšããããã«ãã³ã³ããã¹ãå
ã®ãœãŒã¹ããDockerã€ã¡ãŒãžã®å®å
ã¬ã€ã€ãŒã«ãã¡ã€ã«ãšãã£ã¬ã¯ããªãã³ããŒããŸãããã®åœä»€ã¯ããã¡ã€ã«ãšãã£ã¬ã¯ããªã®äž¡æ¹ãã³ããŒããããã«äœ¿çšã§ãããã¹ãäžã®ãã¹ãŠã®ãã¹ã¯ãã«ãã³ã³ããã¹ãã®ã«ãŒãã«å¯ŸããŠçžå¯Ÿçã§ãã
æ§æïŒ
COPY <src>... <dest>
<src>: ãã¹ãäžã®ãœãŒã¹ãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªã<dest>: Docker ã€ã¡ãŒãžå ã®å®å ãã¹ã
ããŒãã€ã³ã
- åºæ¬æ©èœ:
COPYã¯ããã¹ããã¡ã€ã«ã·ã¹ãã ããã®ãã¡ã€ã«ãšãã£ã¬ã¯ããªã®ã³ããŒã®ã¿ããµããŒãããŸãã URL ãå§çž®ãã¡ã€ã«ã®èªåè§£åã¯ãµããŒãããŠããŸããã - ã»ãã¥ãªãã£:
COPYã¯ããŒã«ã« ãã¡ã€ã«ã®ã¿ãåŠçãããããADDãã¡ã€ã«ãããäºæž¬å¯èœã§å®å šã§ããåŸåããããå€éšãœãŒã¹ãããã¡ã€ã«ãæå³ããã«å°å ¥ãããªã¹ã¯ã軜æžãããŸãã - ãŠãŒã¹ã±ãŒã¹: 远å ã®åŠçãè¡ããã«ãããŒã«ã«ã®ãã«ãã³ã³ããã¹ããã Docker ã€ã¡ãŒãžã«ãã¡ã€ã«ãå«ããå¿ èŠãããå Žåã«æé©ã§ãã
äŸïŒ
COPY ./app /usr/src/app
COPY requirements.txt /usr/src/app/
ãã®äŸã§ã¯ãããŒã«ã« app ãã£ã¬ã¯ããªã®ã³ã³ããã¹ããããã«ãäžã® Docker ã€ã¡ãŒãžå
ã® /usr/src/app ãã£ã¬ã¯ããªã«ã³ããŒãããŸãã 2 çªç®ã®ã³ãã³ãã¯ã requirements.txt ãã¡ã€ã«ã /usr/src/app ãã£ã¬ã¯ããªã«ã³ããŒããŸãã
ADDåœä»€
ADD åœä»€ã¯ãCOPY åœä»€ãšåãæ©èœãæäŸããŸããã誀解ããããšè€éããšæœåšçãªã»ãã¥ãªã㣠ãªã¹ã¯ãããããå¯èœæ§ã®ãã远å ã®æ©èœããããŸãã
æ§æïŒ
ADD <src>... <dest>
<src>: ãœãŒã¹ãã¡ã€ã« (ãã£ã¬ã¯ããªãŸã㯠URL)ã<dest>: Docker ã€ã¡ãŒãžå ã®å®å ãã¹ã
ããŒãã€ã³ã
- æ¡åŒµæ©èœ: ãã«ã ã³ã³ããã¹ãããããŒã«ã« ãã¡ã€ã«ãšãã£ã¬ã¯ããªãã³ããŒããã ãã§ãªãã
ADDã«ã¯æ¬¡ã®é«åºŠãªæ©èœãçšæãããŠããŸãã- URL ã®åŠç: ãœãŒã¹ãšããŠæå®ãããšãURL ã§åç §ããããã¡ã€ã«ã¯ãæå®ãããå®å ãã¹ã®çŸåšã® Docker ã€ã¡ãŒãžã¬ã€ã€ãŒã«ããŠã³ããŒããããŸãã
- ã¢ãŒã«ã€ãã®æœåº: ãœãŒã¹ãšããŠæå®ãããšã
ADDã¯èªåçã«ã¢ãŒã«ã€ããè§£åããæå®ãããå®å ãã¹ã®çŸåšã® Docker ã€ã¡ãŒãžã¬ã€ã€ãŒã«å±éããŸãã
- æè»æ§ãšã»ãã¥ãªãã£:
ADDã¯ããæè»ã§ããããªã¹ã¯ã䌎ããŸãã ãã«ãããã»ã¹ã«å€éšURLãããŠã³ããŒããããšãæªæã®ããã³ãŒããã³ã³ãã³ããããã»ã¹ã«åã蟌ãŸããå¯èœæ§ããããŸãã ã¢ãŒã«ã€ãã§ADDã䜿çšãããšãã¢ãŒã«ã€ãã®åŠçæ¹æ³ãçè§£ããŠããªããšãæå³ããªãçµæãçããå¯èœæ§ããããŸãã - ãŠãŒã¹ã±ãŒã¹:
ADDã¯ãæäŸããç¹å®ã®æ©èœãå¿ èŠã§ããã®äœ¿çšããçããæœåšçãªã»ãã¥ãªãã£åé¡ã管çããææãããå Žåã«ã®ã¿äœ¿çšããŠãã ããã
äŸïŒ
ADD https://example.com/file.tar.gz /usr/src/app/
ADD my-archive.tar.gz /usr/src/app/
ãã®äŸã§ã¯ããã«ã ããã»ã¹ã¯æåã« https://example.com/file.tar.gz ãããŠã³ããŒããããã®å
容ã Docker ã€ã¡ãŒãž ã¬ã€ã€ãŒã® /usr/src/app ã«æœåºããŸãã æ¬¡ã®æé ã§ã¯ãããŒã«ã« ãã¡ã€ã«ã my-archive.tar.gz ååŸãã /usr/src/app ã®äžã® Docker ã€ã¡ãŒãž ã¬ã€ã€ãŒã«æœåºããŸãã
COPY ãš ADD ã®ã©ã¡ãã䜿çšããã
- ã»ãšãã©ã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ã
COPYã¯ãã®ã·ã³ãã«ããšã»ãã¥ãªãã£ã®ããã«ããè¯ãéžæã§ãã ãã®æé ã䜿çšãããšãããŒã«ã«ã³ã³ããã¹ããããã«ãããŠããDockerã€ã¡ãŒãžã«ãã¡ã€ã«ãšãã£ã¬ã¯ããªã転éã§ããŸãã ADDã¯ãæäŸãããè¿œå æ©èœãå¿ èŠãªå Žåã«ã®ã¿äœ¿çšããŸãããã»ãã¥ãªãã£ãžã®åœ±é¿ã®å¯èœæ§ã«æ³šæããŠãã ããã
ãªã¢ãŒãã³ã³ããã¹ã
åŸæ¥ã®ãã¡ã€ã«ã·ã¹ãã ã³ã³ããã¹ãã«å ããŠãDocker㯠ãªã¢ãŒãã³ã³ããã¹ãããµããŒãããŠãããã¯ã©ãŠãç°å¢ãã³ãŒããªããžããªããçŽæ¥ã€ã¡ãŒãžãæ§ç¯ããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã ããã«ã¯ã次ã®ãã®ãå«ãŸããŸãã
- Git ãªããžããª: Git ãªããžããªã® URL ããã«ã ã³ã³ããã¹ããšããŠæå®ãããšãDocker ã¯ãªããžããªãã¯ããŒã³ãããã®ã³ã³ãã³ããã³ã³ããã¹ããšããŠäœ¿çšã§ããŸãã
docker build https://github.com/username/repository.git#branch
- ãªã¢ãŒã URL: Docker ã¯ããã«ã ã³ã³ããã¹ãã«ãªã¢ãŒã URL ã䜿çšã§ããŸãã ããã¯ããªã³ã©ã€ã³ã§å ¥æã§ããã¢ãŒã«ã€ãããçŽæ¥ã€ã¡ãŒãžãäœæããå Žåã«äŸ¿å©ã§ãã
docker build http://example.com/context.tar.gz
- OCIã€ã¡ãŒãž: OCIã€ã¡ãŒãžããã«ãã»ã³ã³ããã¹ããšããŠäœ¿çšã§ãããããæ°ãããã«ãã®éå§ç¹ãšããŠäºåæ§ç¯æžã€ã¡ãŒãžã䜿çšããå Žåã«äŸ¿å©ã§ãã
docker build oci://registry.example.com/image:tag
ADD ãš COPY ããªã¢ãŒãã»ã³ã³ããã¹ãã§ã©ã®ããã«åäœããã
ADD ãš COPY ã¯ã©ã¡ããããªã¢ãŒã ã³ã³ããã¹ãã§äœ¿çšãããšåäœãè¥å¹²ç°ãªãããšã«æ³šæããŠãã ããã
ãªã¢ãŒãã»ã³ã³ããã¹ãã§ã® COPY ã®äœ¿çš
COPY ã¯ããã«ãã³ã³ããã¹ãã®ã¹ã³ãŒãå
ã§åäœããã¯ããŒã³ããããªããžããªãã Docker ã€ã¡ãŒãžã«ãã¡ã€ã«ãšãã£ã¬ã¯ããªãã³ããŒã§ããŸãã ããšãã°ãGit ãªããžããªããã«ã ã³ã³ããã¹ããšããŠäœ¿çšããå Žåã COPY ã¯ããŒã³ããããªããžããªãã Docker ã€ã¡ãŒãžã«ãã¡ã€ã«ãšãã£ã¬ã¯ããªãã³ããŒã§ããŸãã URL ããã®ä»ã®ãªã¢ãŒããœãŒã¹ããã®ãã¡ã€ã«ãçŽæ¥ã³ããŒããããšã¯ã§ããŸããã
Git ãªããžããªããã«ãã³ã³ããã¹ããšããŠäœ¿çšããäŸ:
# Using a Git repository as build context
COPY ./src /app/src
ãã®å Žåã COPY 㯠Git ãªããžã㪠(ãã«ã ã³ã³ããã¹ã) ãã src ãã£ã¬ã¯ããªã Docker ã€ã¡ãŒãžã® /app/src ã«ã³ããŒããŸãã
URL ãã«ãã³ã³ããã¹ãã®äŸ:
# Using an archive from a URL
COPY ./src /app/src
ãã®å Žåã COPY ã¯æœåºãããã¢ãŒã«ã€ã (ãã«ã ã³ã³ããã¹ã) ãã src ãã£ã¬ã¯ããªã Docker ã€ã¡ãŒãžã® /app/src ã«ã³ããŒããŸãã
OCIã€ã¡ãŒãžããã«ãã³ã³ããã¹ããšããŠäœ¿çšããäŸ:
# Using an OCI image as build context
COPY /path/in/oci/image /app/path
ãã®å Žåã COPY 㯠OCI ã€ã¡ãŒãžå
ã®æå®ããããã¹ãã Docker ã€ã¡ãŒãžå
ã®æå®ãããå®å
ãã¹ã«å
容ãã³ããŒããŸãã
ãªã¢ãŒãã»ã³ã³ããã¹ãã§ã® ADD ã®äœ¿çš
ADD åœä»€ã¯ããã¡ã€ã«ã®ããŠã³ããŒããã¢ãŒã«ã€ãã®æœåºãããã³ãã«ã ã³ã³ããã¹ãããã®ãã¡ã€ã«ã®ã³ããŒã«åŒãç¶ã䜿çšã§ããŸããäžèšã® ADD ã®æç€ºã«ã€ããŠæäŸããããã¹ãŠã®æ³šæç¹ãããã§ãé©çšãããããšã«æ³šæããŠãã ããã
Git ãªããžããªããã«ãã³ã³ããã¹ããšããŠäœ¿çšããäŸ:
# Using a Git repository as build context
ADD https://example.com/data.tar.gz /data
ADD ./src /app/src
ãã®äŸã§ã¯ãADD 㯠URL ãã Docker ã€ã¡ãŒãžã® /data ãã£ã¬ã¯ããªã« data.tar.gz ãããŠã³ããŒãããŠæœåºããŸãããŸããGit ãªããžã㪠(ãã«ã ã³ã³ããã¹ã) ãã Docker ã€ã¡ãŒãžã® /app/src ã« src ãã£ã¬ã¯ããªãã³ããŒããŸãã
URL ãã«ãã³ã³ããã¹ãã®äŸ:
# Using an archive from a URL
ADD https://example.com/data.tar.gz /data
ADD ./src /app/src
ãã®äŸã§ã¯ãADD 㯠URL ãã Docker ã€ã¡ãŒãžã® /data ãã£ã¬ã¯ããªã« data.tar.gz ãããŠã³ããŒãããŠæœåºããŸãããŸããããŠã³ããŒã/è§£åãããURL(ãã«ãã³ã³ããã¹ã)ãã src ãã£ã¬ã¯ããªãDockerã€ã¡ãŒãžã® /app/src ã«ã³ããŒããŸãã
OCIã€ã¡ãŒãžããã«ãã³ã³ããã¹ããšããŠäœ¿çšããäŸ:
# Using an OCI image as build context
ADD https://example.com/data.tar.gz /data
ADD /path/in/oci/image /app/path
ãã®ã·ããªãªã§ã¯ãADD 㯠URL ãã Docker ã€ã¡ãŒãžã® /data ãã£ã¬ã¯ããªã« data.tar.gz ãããŠã³ããŒãããŠæœåºããŸãããŸããOCIã€ã¡ãŒãžå
ã®æå®ããããã¹ããDockerã€ã¡ãŒãžå
ã®æå®ãããå®å
ãã¹ã«å
容ãã³ããŒãããŸãã
COPY ãš ADD tl;å士ïŒ
COPYãåªå ãã: ã»ãšãã©ã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ããã®ã·ã³ãã«ããšã»ãã¥ãªãã£ã®ããã«ãCOPYã®æ¹ãé©ããŠããŸããããã䜿çšããŠãããŒã«ã«ã³ã³ããã¹ããŸãã¯Gitãªããžããªãªã©ã®ãªã¢ãŒãã³ã³ããã¹ãããDockerã€ã¡ãŒãžã«ãã¡ã€ã«ãšãã£ã¬ã¯ããªã転éããŸããADDã¯æ³šæããŠäœ¿çšããŠãã ãã:ADDã¯ãURL ããã®ãã¡ã€ã«ã®ããŠã³ããŒããã¢ãŒã«ã€ãã®èªåæœåºãªã©ãè¿œå æ©èœãå¿ èŠãªå Žåã«ã®ã¿éžæããŠãã ãã (å³ 1)ãADDã䜿çšãããšãã¯ãã»ãã¥ãªãã£ã«åœ±é¿ããå¯èœæ§ãããããšã«åžžã«æ³šæããŠãã ããã

çµè«
Dockerfile ã® ADD åœä»€ãš COPY åœä»€ã®éããšããã«ã ã³ã³ããã¹ãã«ãã£ãŠããããã©ã®ããã«åœ±é¿ãåããããçè§£ããããšã¯ãããå¹ççã§å®å
šãª Docker ã€ã¡ãŒãžãæ§ç¯ããã®ã«åœ¹ç«ã¡ãŸãã COPY ã§ã¯ãããŒã«ã« ãã¡ã€ã«ãç°¡åã«å«ããæ¹æ³ãæäŸããŠããŸãããADDè€éãã®å¢å€§ãšæœåšçãªã»ãã¥ãªã㣠ãªã¹ã¯ã®ã³ã¹ãã«å¯ŸããŠãæè»æ§ãé«ããããšãã§ããŸãã
ããã«è©³ãã
- Dockerfile ãªãã¡ã¬ã³ã¹ ããã¥ã¡ã³ãããèªã¿ãã ããã
- Docker Newsletter ã賌èªããŠãã ãããÂ
- Docker ãã¹ã¯ãããã®ææ°ãªãªãŒã¹ãå ¥æããŸãã
- 次ã®ãã®ã«æç¥šããŠãã ãã! å ¬éããŒãããããã芧ãã ããã
- 質åããããŸãã? Docker ã³ãã¥ããã£ããæäŒãããŸãã
- ããã«ãŒã¯åããŠã§ãã? å§ããŸãããã