以å ãCaddy 2 å ¬åŒã€ã¡ãŒãžã䜿çšã㊠Web ã¢ããªã±ãŒã·ã§ã³ãããè¿ éã«ãããã€ããæ¹æ³ã«åãçµã¿ãŸããã ä»åã¯ãRustã¢ããªã±ãŒã·ã§ã³ã«æ³šç®ããŸãã
Rust Foundationã¯ã2010幎ã«éçºè ã« Rust ããã°ã©ãã³ã°èšèªã玹ä»ããŸããã ãã以æ¥ãéçºè ã¯CLIããã°ã©ã ããããã¯ãŒã¯ãµãŒãã¹ãçµã¿èŸŒã¿ã¢ããªã±ãŒã·ã§ã³ãããã³WebAssemblyã¢ããªãæ§ç¯ããéã«ããã«äŸåããŠããŸããã
Rustã¯ã Stack Overflowã®2021幎ã®éçºè 調æ»ã«ãããšæãæãããŠããããã°ã©ãã³ã°èšèªã§ããã Git Towerã®2022幎ã®èª¿æ»ã«ãããšMacéçºè ãæãæ±ããŠããèšèªã§ããããŸãã 85,000以äžã®å°çšã©ã€ãã©ãªãããã Rustå ¬åŒç»å ã®ããŠã³ããŒãæ°ã¯1,000äžãè¶ ããŠããŸããRustã«ã¯æ ç±çãªãŠãŒã¶ãŒããŒã¹ããããŸãã ãã®äººæ°ã¯ã 2018幎ã®çç£æ§ã®æŽæ° ãš 2021幎ã®èšèªäžè²«æ§ã®åŒ·åã«ç¶ããŠã®ã¿æé·ããŸããã
ãšã¯ãããRustã¢ããªã±ãŒã·ã§ã³ã®å±éã¯å¿ ãããç°¡åã§ã¯ãããŸããã ããã¯ãªãã§ãã?
å°å ¥ã®èª²é¡
éçºè ã«ã¯ãRustã¢ããªã±ãŒã·ã§ã³ããããã€ããããã®å€ãã®ææ®µããããŸãã æè»æ§ã¯åªããŠããŸãããããŸããŸãªãªãã·ã§ã³ãå§åãããå¯èœæ§ããããŸãã ãããã£ãŠãå±éæŠç¥ã¯ãã¢ããªã±ãŒã·ã§ã³ã®çš®é¡ãšãã®ãŠãŒã¶ãŒã«ãã£ãŠç°ãªããŸãã
ãã« ãããŒãžãã® IaaS ãœãªã¥ãŒã·ã§ã³ãPaaS ãœãªã¥ãŒã·ã§ã³ããŸãã¯ãã£ãšã·ã³ãã«ãªãã®ãå¿ èŠã§ãã? ã¹ã±ãŒã©ããªãã£ã¯ã©ã®çšåºŠéèŠã§ãã? ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãå人çšãããžã§ã¯ããšããŠã§ããããããšããšã³ã¿ãŒãã©ã€ãºå±éã®äžéšãšããŠã§ããã ãããã«å¯Ÿããçãã¯ãç¹ã«ãã®ã¢ããªã±ãŒã·ã§ã³ãé·æéãµããŒãããå Žåã«ãå±éã¢ãããŒãã«åœ±é¿ãäžããŸãã
Herokuã®ãããªãã®ãèããŠã¿ãŸãããã ãã®ãã©ãããã©ãŒã ã¯ãPHPãPythonãå²ç¢ãããŒã.jsãªã©ã®äž»èŠèšèªã®å ¬åŒãµããŒããæäŸããŸãã JavaãRubyããã®ä»ã ãã ãããããã®èšèªã®ã¿ããHeroku ãããã¡ãŒã¹ãã¯ã©ã¹ããµããŒããšåŒã¶ãã®ãåãåããŸãã
ãããã£ãŠãRust ã®å ŽåãHeroku ã®ããŒã 㯠Rust ãã¬ãŒã ã¯ãŒã¯ãèšèªæ©èœããŸãã¯æŽæ°ãããããŒãžã§ã³ç®¡çãç©æ¥µçã«ç¶æããŠããŸããã ããªãã¯ãããã®ã¿ã¹ã¯ã«åãçµã責任ããããŸãã Heroku ã广çã«æ¡åŒµããã«ã¯ãã³ãã¥ããã£ã§äœæãããããŸããŸãªéå ¬åŒã®ãã«ãããã¯ãããŸãªã調ã¹ãå¿ èŠããããŸãã è峿·±ãããšã«ãäžéšã®ããã¯ã«ã¯Dockerã䜿çšãããã¹ãã«é¢ããã¡ã¢ãå«ãŸããŠããŸããã仲ä»è ãåãåã£ãŠã¿ãŸããã?
ã¬ã³ããªã³ã°ãVercelãªã©ã®ãªãã·ã§ã³ããããããŸããŸãªã¬ãã«ã®çç£æºåãåããŠããŸãã
ãã®ãããRustã®å ¬åŒç»åã¯ãšãŠã䟿å©ã§ãã ããã»ã¹ãç°¡çŽ åããããšã§å±éãå éããŸãã æ¬¡ã®Rustãããžã§ã¯ãã«åãçµãã§ããŸãã? äžè¬çãªãŠãŒã¹ã±ãŒã¹ã«ã€ããŠèª¬æããRustå ¬åŒã€ã¡ãŒãžãä»ããŠãããã€ãåçåããããã€ãã®éèŠãªãã³ããå ±æããŸãã
ãªãéã³ãã®ã§ãã?
Rustã®ã¡ã³ãããšã³ãã¥ããã£ã¯ãã·ã¹ãã ããã°ã©ãã³ã°ããããã¯ãŒãã³ã°ãã³ãã³ãã©ã€ã³ã¢ããªã±ãŒã·ã§ã³ãããã³WebAssembly(å¥åãWasmã)ãäžå¿ãšããŠããŸãã å€ãã®å ŽåãRustã¯è€æ°ã®ãŠãŒã¹ã±ãŒã¹ãå ±æããŠãããããC ++ã®ä»£æ¿ãšããŠæç€ºãããŸãã ãããã£ãŠãRustã¯ã¡ã¢ãªã®å®å šæ§ã匷åãªã¿ã€ãã®å®å šæ§ãããã³ã¢ãžã¥ãŒã«æ§ãèªã£ãŠããŸãã
ãŸããRustã®ã¢ããªã±ãŒã·ã§ã³ãã€ããªã€ã³ã¿ãŒãã§ã€ã¹(ABI)ãšCã®äºææ§ãå©çšããŠãRustã¢ããªãCã©ã€ãã©ãªå ã®äœã¬ãã«ã®ãã€ããªããŒã¿ã«ã¢ã¯ã»ã¹ããã®ã«åœ¹ç«ãŠãããšãã§ããŸãã ããã«ãwasm-packãwasm-bindgen ã Neon ã Helix ã rust-cpython ã cbindge n ãªã©ã®ãã«ããŒã䜿çšãããšãä»ã®èšèªã§èšè¿°ãããã³ãŒãããŒã¹ã Rust ã³ã³ããŒãã³ãã§æ¡åŒµã§ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®éšåãã·ãŒã ã¬ã¹ã«é£æºã§ããŸãã
æåŸã«ã32ããããŸãã¯64ãããã®éçx86ãã€ããª(ãŸãã¯Armãªã©ã®éx86ãã€ããª)ã«ç°¡åã«ã¯ãã¹ã³ã³ãã€ã«ã§ããŸãã Rustã¯ãã©ãããã©ãŒã ã«äŸåããŸããã ãã®çµã¿èŸŒã¿ã¡ã«ããºã ã¯ãããä¿¡é Œæ§ã®é«ãé·æéå®è¡ããããµãŒãã¹ããµããŒãããŸãã
ãšã¯èšããã®ã®ãRustã¯éåžžããšã³ããªãŒã¬ãã«ãã®èšèªãšã¯èŠãªãããŸããã çµéšè±å¯ãªéçºè (ç¹ã«CãŸãã¯C ++ã«ç²ŸéããŠããéçºè )ã¯ãRustãå°ãç°¡åã«ç¿åŸããåŸåããããŸãã 幞ããªããšã«ãäžè¬çãªãã«ãã®è€éãã軜æžããããšã§ãã¢ã¯ã»ã·ããªãã£ãåäžãããããšãã§ããŸãã ããã¯ãã³ã³ãã㌠ã€ã¡ãŒãžãèŒãå Žæã§ãã æ¬¡ã«ãRustã€ã¡ãŒãžã®æŽ»çšã®èåŸã«ããåºæ¬ã«ã€ããŠç°¡åã«èª¬æããŸãã
Rustã®å©ç¹ã®è©³çްã«ã€ããŠã¯ã ãã®æçãªå èš³ããèªã¿ãã ããã
åææ¡ä»¶ãšæè¡çåºç€
Rustå ¬åŒã€ã¡ãŒãžã¯ãå±éãå éãããã¹ãŠã®äŸåé¢ä¿ã1ã€ã®ããã±ãŒãžã«ã°ã«ãŒãåããã®ã«åœ¹ç«ã¡ãŸãã
éå§ããããã«å¿ èŠãªãã®ã¯æ¬¡ã®ãšããã§ãã
- ããªãã®Rustã¢ããªã±ãŒã·ã§ã³ã³ãŒã
- Docker Desktopã®ææ°ããŒãžã§ã³
- éžæããIDE(VSCode ããå§ãããŸãããå¿ é ã§ã¯ãããŸãã)
ãã®ã¬ã€ãã§ã¯ã宿ããã¢ããªã±ãŒã·ã§ã³ ã³ãŒããæã¡èŸŒãããšãåæãšããŠããŸãã ãããé©åãªå Žæã«ããããšã確èªããŠãä»åŸã®ãã«ãå ã§æ€åºããã³äœ¿çšã§ããããã«ããŸãã
Rustãã«ãã¯ãæ¢åã®Rustã¯ã¬ãŒããå©çšããããšãã§ããŸã(ããã±ãŒãžãšã¯ ã¬ãŒã ã®è©³çްã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã)ã ããã±ãŒãžã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã³ã¢æ©èœãæäŸãã 1 ã€ä»¥äžã®ã¯ã¬ãŒã (ãŸãã¯ã³ã³ãã€ã«ãããå®è¡å¯èœãã¡ã€ã«ãšãã€ããªããã°ã©ã ã®ã°ã«ãŒã) ãå«ãŸããŠããŸãã ãŸããäŸåé¢ä¿ãå ±æããã¢ããªã±ãŒã·ã§ã³ã«ã©ã€ãã©ãª ã¯ã¬ãŒããå©çšããããšãã§ããŸãã
äžéšã®ã¯ã¬ãŒãã«ã¯ãéåžžã¯ã¹ã¿ã³ãã¢ãã³ããŒã«ã®åœ¢åŒã§éèŠãªå®è¡å¯èœãã¡ã€ã«ãå«ãŸããŠããŸãã æ¬¡ã«ãèæ
®ãã¹ãæ§æããããŸãã ãšããæãã§ .yaml ãã¡ã€ã«ããã¡ã€ã« (ããã±ãŒãž ãããã§ã¹ã ãšãåŒã°ããŸã) ã¯ãCargo.toml ã¢ããªã®åºç€ã圢æããŸããåãããã§ã¹ãã«ã¯ã»ã¯ã·ã§ã³ãå«ãŸããŠããŸãã ããšãã°ãã»ã¯ã·ã§ã³ã¯æ¬¡ã®ããã«ãªããŸã [package] ã
[package] name = "hello_world" # the name of the package version = "0.1.0" # the current version, obeying semver authors = ["Alice <a@example.com>", "Bob <b@example.com>"]ãããã§ã¹ãå ã§å€ãã®æ§æãå®çŸ©ã§ããŸãã Rustã¯ãããã±ãŒãžã®äœææã«ã次ã®
$ cargo newã¹ã¯ãªããã䜿çšããŠãããã®ã»ã¯ã·ã§ã³åããããã¡ã€ã«ãçæããŸãã$ cargo new my-project Created binary (application) `my-project` package $ ls my-project Cargo.toml src $ ls my-project/src main.rsRustã¯èªåçã«ãã€ããªã¯ã¬ãŒãã«ãŒããã£ã¬ã¯ããªãšããŠäœ¿çšããŸã
src/main.rsãsrc/lib.rsãã©ã€ãã©ãªã¯ã¬ãŒããæã€ããã±ãŒãžãåç §ããŸãã Rustã®å ¬åŒããã¥ã¡ã³ãã®äžèšã®äŸã§ã¯ããã«ãå ã«åçŽãªãã€ããªã¯ã¬ãŒããçµã¿èŸŒãŸããŠããŸããå ã«é²ãåã«ãã³ã³ãããŒãšã€ã¡ãŒãžã®ç®¡çãã¯ããã«ç°¡åã«ãªã Docker Desktop ãã€ã³ã¹ããŒã«ããããšããå§ãããŸãã ã³ã³ããã衚瀺ãå®è¡ã忢ãããã³æ§æããã«ã¯ãCLI ã®ä»£ããã«ããã·ã¥ããŒãã䜿çšããŸãã ãã ããCLIã¯VSCodeå ã§åŒãç¶ã䜿çšã§ããDockerãã¹ã¯ãããã®ã³ã³ããã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠã³ã³ããã«çŽæ¥SSHã§æ¥ç¶ã§ããŸãã
ããã§ã¯ãç»åã調ã¹ãŠãããã€ãã®ãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠèª¬æããŸãããã äœæ¥ãå°ãç°¡åã«ããã«ã¯ãç¶è¡ããåã«Dockerãã¹ã¯ããããèµ·åããŸãã
éã®å ¬åŒç»åã䜿çšãã
Rustã€ã¡ãŒãžã䜿çšããæãç°¡åãªæ¹æ³ã¯ãRustã³ã³ãããšããŠå®è¡ããããšã§ãã ãŸããã€ã¡ãŒãž ããŒãžã§ã³ãèªåçã«ååŸ
latestããã³ãã³ããå ¥åããŸãdocker pull rustãããã«ã¯ãVSCodeå ã§çŽ45ç§ããããŸãã
Docker Desktop ãã€ã¡ãŒãžãæ£åžžã«ãã«ããããšã確èªããã«ã¯ããµã€ãããŒã® [ã€ã¡ãŒãž] ã¿ãã«ã¢ã¯ã»ã¹ãããªã¹ãã§ ã€ã¡ãŒãž ãèŠã€ããŸã
rustã
ãã®ç»åãã³ã³ãããšããŠå®è¡ããã«ã¯ããã®äžã«ã«ãŒãœã«ã眮ãã衚瀺ãããéã[å®è¡]ãã¿ã³ãã¯ãªãã¯ããŸãã ãããã¢ããã¢ãŒãã«å ã§ããäžåºŠ[å®è¡]ãã¯ãªãã¯ããŠç¢ºèªããŸãã [ãªãã·ã§ã³èšå®] ãã©ãŒã ãå±éããŠã³ã³ãããŒãã«ã¹ã¿ãã€ãºã§ããŸãããçŸåšã¯å¿ èŠãããŸããã
ã³ã³ãããŒãå®è¡ãããŠããããš
rustã確èªããã«ã¯ã[ ã³ã³ãããŒ] ã¿ãã«ã¢ã¯ã»ã¹ããäžèЧå ã§ã³ã³ãããŒãèŠã€ããŸãã ãªãã·ã§ã³èšå®ããã€ãã¹ãããããDockerãã¹ã¯ãããã¯ã³ã³ããã«ã©ã³ãã ãªååãä»ããŸãã åã³ã³ãããŒåã®æšªã«ããéãã©ãã«ã«æ³šæããŠãã ããã Docker ãã¹ã¯ãããã«ã¯name:tagãåã³ã³ãããŒã®åºæ¬ã€ã¡ãŒãžã®æ å ±ã衚瀺ãããŸãã
æèšïŒ ãŸãã¯ãã¿ã°
:<version>ã䜿çšããŠç¹å®ã®ããŒãžã§ã³ã®Rustããã«ããããšãã§ããŸãã ããã¯ãäºæž¬å¯èœæ§ãšå±éåã®ãã¹ããéèŠãªéçšç°å¢ã§ã¯æãŸããå ŽåããããŸãã ã€ã¡ãŒãžã¯æ°ããä¿®æ£ãæ©èœãããããå¯èœæ§ããããŸãã:latestãã¢ããªã±ãŒã·ã§ã³ã«æªç¥ã®è匱æ§ãããããå¯èœæ§ããããŸããã³ã³ããã«ã«ãŒãœã«ãåãããŠåè§ãã忢ããã¿ã³ãã¯ãªãã¯ãããšãã³ã³ããã忢ã§ããŸãã ãã®ããã»ã¹ã¯å®äºãããŸã§ã«10ç§ããããŸãã 忢ãããšãDocker ãã¹ã¯ãããã¯ã³ã³ãããŒã«çµäºæžã¿ãšããã©ãã«ãä»ããŸãã ãã®æé ã¯ãæ§æã倿Žããåã«éèŠã§ãã
åæ§ã«ãå ã«é²ãåã«ã³ã³ãããåé€ããããšãã§ããŸã(ãããŠåé€ããå¿ èŠããããŸã)ã
ããã«ãŒãã¡ã€ã«ã®ã«ã¹ã¿ãã€ãº
äžèšã®äŸã¯ãç»åãšã³ã³ããããã¹ã¯ãããå ã§ã©ã®ããã«ååšãããã瀺ããŠããŸãã ãã ããRustã¢ããªã±ãŒã·ã§ã³ã³ãŒãã䜿çšããŠããªãã£ããããããã¢ãã³ã³ããã䜿çšããŠããããšã«æ°ä»ãããããããŸããã
ãããžã§ã¯ã ã³ãŒãã«ãã£ãŠã¢ããªã±ãŒã·ã§ã³ã«åœãå¹ã蟌ãŸããã€ã¡ãŒãž ãã«ãã«è¿œå ããå¿ èŠããããŸãã ãã
DockerfileãéæããŸãã ããã¯ãã·ãŒã±ã³ã·ã£ã«åœä»€ã䜿çšããŠã¬ã€ã€ãŒåãããã€ã¡ãŒãžãæ§ç¯ããã®ã«åœ¹ç«ã¡ãŸããåºæ¬çãªRust
Dockerfileã¯æ¬¡ã®ããã«ãªããŸããFROM rust:1.61.0 WORKDIR /usr/src/myapp COPY . . RUN cargo install --path . CMD ["myapp"]Docker ããããžã§ã¯ã ã³ãŒãã«ã¢ã¯ã»ã¹ã§ããããšãããããŸãã ããã«ã
cargo installRUN ã³ãã³ãã¯ããã±ãŒãžãååŸããŸããããã±ãŒãžåããã Rust ããŒã«ã®å®å šãªã»ããã䜿çšããŠã€ã¡ãŒãžããã«ãããŠå®è¡ããã«ã¯ã次ã®ã³ãã³ããå ¥åããŸãã
$ docker build -t my-rust-app . $ docker run -it --rm --name my-running-app my-rust-appãã®ç»åã¯1.8GBã§ãããªã倧ããã§ãã 代ããã«ãå¯èœãªéãã¹ãªã ãªã€ã¡ãŒãžãã«ããå¿ èŠã«ãªãå ŽåããããŸãã ããã€ãã®ãã³ããšãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠèª¬æããŸãããã
ç»åã®ãã³ããšãã¹ããã©ã¯ãã£ã¹
ããŒã«ãªãã§ã³ã³ãã€ã«ããããšã§ã¹ããŒã¹ãç¯çŽ
RustããŒã«ã¯äŸ¿å©ã§ãããã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠå¿ ãããå¿ é ã§ã¯ãããŸããã ã³ã³ãã€ã«ãããã¢ããªã±ãŒã·ã§ã³ã ããå¿ èŠãªã·ããªãªããããŸãã æ¡åŒµã
Dockerfileããã説æããæ¹æ³ã¯æ¬¡ã®ãšããã§ããFROM rust:1.61.0 as builder WORKDIR /usr/src/myapp COPY . . RUN cargo install --path . FROM debian:buster-slim RUN apt-get update &amp;amp; apt-get install -y extra-runtime-dependencies &amp;amp; rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local/cargo/bin/myapp /usr/local/bin/myapp CMD ["myapp"]Rustãããžã§ã¯ãã®éçºè ã«ãããšããã®ã€ã¡ãŒãžã¯ããã200MBã§ãã ããã¯ãåã®ç»åãšæ¯èŒããŠå°ããã§ãã ããã«ããããã£ã¹ã¯é åãç¯çŽãããã¢ããªã±ãŒã·ã§ã³ã®è¥å€§åã軜æžãããã¬ã€ã€ãŒããšã®å€æŽã®è¿œè·¡ã容æã«ãªããŸãã ãã«ãã¯ å€æ®µé (ã¬ã€ã€ãŒã®è¿œå )ã§ãããå€§å¹ ã«çž®å°ãããããçµæã¯é説çã«èŠããŸãã
ããã«ãã¹ããŒãžã«ååãä»ãããããã
COPYã§ãããã®ååã䜿çšãããšãæç€ºãäžŠã¹æ¿ããŠãã¹ããŒãžCOPYãå£ããªãããã«ããŸãããã®ãœãªã¥ãŒã·ã§ã³ã䜿çšãããšãã¹ããŒãžéã§äž»èŠãªã¢ãŒãã£ãã¡ã¯ããã³ããŒããäžèŠãªã¢ãŒãã£ãã¡ã¯ããç Žæ£ã§ããŸãã äžèŠãªã³ã³ããŒãã³ããæçµçãªã€ã¡ãŒãžã«æã¡èŸŒãããšã¯ãããŸããã ããŒãã¹ãšããŠãRustã¢ããªã±ãŒã·ã§ã³ãåäžã®
Dockerfile.æèšïŒ äžèšã§äœ¿çšãããŠãã
&&æŒç®åãåç §ããŠãã ããã ããã¯è€æ°ã®RUNã³ãã³ãããŸãšããŠå§çž®ããã®ã«åœ¹ç«ã¡ãŸãããå¿ ãããããããã¹ããã©ã¯ãã£ã¹ã§ãããšã¯èããŠããŸããã ãããã®çµ±åã³ãã³ãã¯ãé·æã«ããã£ãŠç¶æããã®ãé£ããå ŽåããããŸãã ãããã®æååã倧ãããªãã«ã€ããŠãè¡ç¶ç¶æ§æ(\)ã远å ããã®ãå¿ããã¡ã§ããæåŸã«ãRustã¯éçã«ã³ã³ãã€ã«ãããŸãã åœä»€ã䜿çšããŠ
FROM scratchäœæDockerfileãããã€ããªã®ã¿ãã€ã¡ãŒãžã«è¿œå ã§ããŸããDockerã¯scratchããŒãªãã¬ãŒã·ã§ã³ãšããŠæ±ããäœåãªã¬ã€ã€ãŒãäœæããŸããã ãããã£ãŠã Scratch ã¯ããããæ°MBã®ããããããªãã«ããäœæããã®ã«åœ¹ç«ã¡ãŸããå
Dockerfileæé ãããããçè§£ããã«ã¯ã ãªãã¡ã¬ã³ã¹ããã¥ã¡ã³ãã確èªããŠãã ãããã¿ã°ã掻çšãã
ããã«å€ãã®ã¹ããŒã¹ãç¯çŽããå¿ èŠããããŸãã? Rust
alpineã€ã¡ãŒãžã䜿çšãããšãããã«60MBç¯çŽã§ããŸãã 代ããã«ã次ã®ãããªFROM rust:1.61.0-alpine as builderåœä»€ãæå®ããŸãã ãã ããããã«ã¯èŠåããªãããã§ã¯ãããŸããã ã¢ã«ãã€ã³ã€ã¡ãŒãžã¯ ã®ä»£ããã«glibc and friendså©çšmusl libcããããããéèŠãªäŸåé¢ä¿ãé€å€ããããšããœãããŠã§ã¢ã§åé¡ãçºçããå¯èœæ§ããããŸããããã§ åã©ã€ãã©ãªã æ¯èŒããŠå®å šã確ä¿ã§ããŸããããå°ããªRustã€ã¡ãŒãžãæ§ç¯ããæ¹æ³ã¯ä»ã«ãããã€ããããŸãã
- ã¿ã°ã¯
rust:<version>-slimãRustãå®è¡ããããã«å¿ èŠãªæå°éã®ããã±ãŒãžã®ã¿ãå«ãã€ã¡ãŒãžããã«ããŸãã ããã«ãããå€ãã®ã¹ããŒã¹ãç¯çŽã§ããŸãããã€ã¡ãŒãžä»¥å€ã®rustå±éãå¿ èŠãªç°å¢ã§ã¯å€±æããŸã - ãã®ã¿ã°ã¯
rust:<version>-slim-bullseyeãçŸåšã®å®å®ãããã£ã¹ããªãã¥ãŒã·ã§ã³ã§ããDebian11ãã©ã³ãäžã«æ§ç¯ãããã€ã¡ãŒãžããã«ããŸã - ãã®
rust:<version>slim-busterã¿ã°ã¯ãåŸç¶è ãããbullseyeãããã«å°ããDebian10ãã©ã³ãäžã«æ§ç¯ãããã€ã¡ãŒãžããã«ããŸã
Docker Hub ã«ã¯ãRust å ¬åŒã€ã¡ãŒãžã®å€æ°ã®ã€ã¡ãŒãžã¿ã°ããªã¹ããããŠããŸã ãåããŒãžã§ã³ã®ãµã€ãºã¯ãå OS ã¢ãŒããã¯ãã£ã«åŸã£ãŠäžèŠ§è¡šç€ºãããŸãã
å¯èœãªéãã¹ãªã ãªã¢ããªã±ãŒã·ã§ã³ãäœæããããšã¯ãç«æŽŸãªç®æšã§ãã ãã ãããã®ããã»ã¹ã«ã¯ç®æšãŸãã¯å©ç¹ã念é ã«çœ®ãå¿ èŠããããŸãã ããšãã°ã(äŸåé¢ä¿ãåãé€ãããšã«ãã£ãŠ) ã€ã¡ãŒãž ãµã€ãºãçž®å°ããŠããã¢ããªã±ãŒã·ã§ã³ã§å¿ èŠãªãå Žåã¯åé¡ãããŸããã æ°ã¡ã¬ãã€ããç¯çŽããããã«ã³ã¢æ©èœãç ç²ã«ããªãã§ãã ããã
æåŸã«ããµãã³ãã³ãã« cargo-chef é Œã£ãŠãRustDockerãã«ããåçã«é«éåã§ããŸãã ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãDockerã®ãã€ãã£ããã£ãã·ã¥ãå®å
šã«æŽ»çšããææãªããã©ãŒãã³ã¹ã®åäžãæäŸããŸãã 詳现ã«ã€ããŠã¯ã ãã¡ããã芧ãã ããã
çµè«
ã¯ãã¹ãã©ãããã©ãŒã ã®Rustéçºã¯è€éã§ããå¿ èŠã¯ãããŸããã ããã€ãã®ç°¡åãªæé ã«åŸããããã€ãã®èŠªãã¿ãããæé©åãè¡ã£ãŠããã«ããæ¹åã§ããŸãã ããã«ãããè€éããã¢ããªã±ãŒã·ã§ã³ã®ãµã€ãºãããã³ãã«ãæéãå€§å¹ ã«ççž®ãããŸãã ããã«ããã¹ããã©ã¯ãã£ã¹ãæ¡çšããããšã§ãçæŽ»ã楜ã«ããããšãã§ããŸãã
次ã®Rustãããžã§ã¯ããããã«å§ãããã§ãã? ç§ãã¡ã® awesome-compose ã©ã€ãã©ãªã«ã¯ãRustããã¯ãšã³ãã䜿ãå§ããããã®ã·ã§ãŒãã«ããããããŸãã ãã®äŸã«åŸã£ãŠ ãPostgresããŒã¿ããŒã¹ã§Rustããã¯ãšã³ããæŽ»çšããReactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŸãã ãŸãã Docker Compose ãããã»ã¹ã®åçåã«ã©ã®ããã«åœ¹ç«ã€ãã«ã€ããŠã説æããŸãã


