Docker Compose&BuildKitDocker Meetup Tokyo #32 #DockerTokyo@orisano
View Slide
docker-compose͍ͬͯΔਓ
ศརͰ͢ΑͶ
ෳͷίϯςφΠϝʔδΛ؆୯ʹ͑Δ
ͳΜͳΒίϯςφҰͭͰdocker-compose͏
࣮ߦ࣌ͷύϥϝʔλΛϑΝΠϧʹهड़Ͱ͖Δ
up —buildͰbuildͱrun͕ಉ࣌ͰͰ͖Δ
࠷ߴ
ͱ͜ΖͰ
docker-compose build͍ͬͯΔਓ͍·͔͢ʁ
͍ͳ͍Ͱ͢ΑͶ…(ҙ֎ͱ͍Δͷ͔)
docker-compose up —buildͬͪΌ͍·͢ΑͶ
Ͱdocker-composeͷbuildॏ͘ͳ͍Ͱ͔͢?
docker build͕͍ͱΠϥΠϥ͠·ͤΜ͔?
BuildKit͍ͨ͘ͳ͍Ͱ͔͢?
docker-composeͰBuildKitΛ͑ΔΑ͏ʹͨ͠
“͑ΔΑ͏ʹͨ͠”ͳͷͰͱͱ͑ͳ͔ͬͨ
ͳͥͳͷ͔
ͦͦdocker-composeͷbuildԿΛ͍ͬͯΔͷ͔
docker-composeͷbuildγϯϓϧͰyamlͷ༰͔ΒparameterΛऔΓग़ͯ͠build͢Δ
͜͜ͰҰ୴
docker build ͷΈ
ؾʹͳͬͨํhttps://speakerdeck.com/orisano/container-build-talk
docker-composeࣗମdocker/cli͕ͳͯ͘ಈ͘
docker-compose docker-pyΛ͍ͬͯΔ
docker-pydockerdͷAPIΛୟ͘python client
docker-composeimage໊Λ࡞Δ͚ͩͷػߏʹ͍ۙ
imageʹ{project}_{service}Έ͍ͨͳ໊લΛ͚ͭͯAPIΛݺͿ
ͳͥBuildKit͕͑ͳ͍ͷ͔
BuildKitίϯςΩετΛࠩసૹ͢Δ
ࠩసૹ(fssync)grpc
docker-pyʹͦΕ͕࣮͞Ε͍ͯͳ͍
pythonͰ࣮͢Δͷ͕͔͔࣌ؒΓͦ͏…
Issue্͕͕ͬͯࢭ·͍ͬͯͨ
࠳
ͱ͍͑docker-compose build͕͍ͷࠔΔ
͘͢͝ࠔΔ
@AkihiroSuda͞ΜʹͱΓ͋͑ͣ૬ஊͯ͠ΈΔ
@AkihiroSuda͞Μ͔Βʮexec͢Δ͕ͭྑͦ͞͏ʯͱݴΘΕΔ
࣮ͯ͠PR (—exec)docker/compose#6584(2019/3/15)
4/4thaJeztah͔ΒίϝϯτΞϧϑΝϕοτॱʹ͠ͳ͍ͷʁͱͱͦ͏͡Όͳ͍
4/5ulyssessouza͔ΒίϝϯτΞϧϑΝϕοτॱʹ͠ͳ͍ͷʁͱͱͦ͏͡Όͳ͍
4/24ulyssessouza͔Βίϝϯτ—exec ͬͯඍົ͡Όͳ͍?ͳΜ໊͔͍͍લͳ͍?
5/16ulyssessouza͔Βίϝϯτ—cli͕ྑͦ͞͏
6/6ulyssessouzaٳΈʹೖΔ
6/13thaJeztah͔Βίϝϯτ̎ͭ͘Β͍ߟ͑Δ͜ͱ͕͋Γͦ͏
6/14thaJeztah͔Βίϝϯτ͜͏͍͏ਐΊํͲ͏?
7/19thaJeztah͔Βίϝϯτulyssessouzaͱٞͨ͠
8/13ulyssessouza͔Βίϝϯτ—cliΛΊͨCOMPOSE_NATIVE_BUILDER=1
8/20thaJeztah͔Βίϝϯτdocker-compose up —buildͰಉ͡ಈ͖Λͯ͠΄͍͠
8/22ରԠ
8/22PR close(!!!!!!!!)
8/22docker/compose#6865ulyssessouza ʹΑΓPR͕৽نʹ࡞ΒΕΔ
8/22~24ಈ͖ͳ͠
8/25~8/29@orisano՝Λશ෦ղܾ
8/30 ແࣄϚʔδ
࣍ͷrc͔ΒCOMPOSE_DOCKER_CLI_BUILD=1DOCKER_BUILDKIT=1Ͱ͑ΔΑ͏ʹͳΓ·͢
ޤ͏͝ظ
ֶͼ
ϑϥάΛՃ͢Δ͜ͱϝϯςφϯείετ͕ൃੜ͢Δ͜ͱΛҙࣝ͢Δ
ڥม͔Β࢝ΊͯΈΔ
͜΅Ε
docker build ͷ݁ՌstreamͰྲྀΕͯ͘Δͷ͕ͩ
docker-composeͦͷதͷSuccessfully Builtͱ͍͏จࣈྻ͔Β݁ՌΠϝʔδͷidΛऔಘ͍ͯ͠Δ
ϨϏϡʔ࣌ʹͳʹ͜ΕͱݴΘΕ͕ͨͳʹ͜Εͱࢥͬͨ
͜΅Ε2
࣮͜Εͱಉ࣌ظʹdocker-composeͷcache-fromͰࠔΔͱ͜Ζ͕͋ͬͨͷͰPR
ͦΕ͙͢ʹϚʔδ͞Εͨ
cache_fromʹڥมΛ͔ͨͬͨ͠
͢ͱಈ͍ͨCI͕շదʹͳͬͨ
ϩʔΧϧͰຖճϑϧϏϧυ͕͠ΔΑ͏ʹͳͬͨ
ࠈ
docker buildͷ༷Ͱ—cache-fromʹͳʹ͔͢ͱϩʔΧϧͷΩϟογϡ͕ޮ͔ͳ͘ͳΔ
ৄͪ͘͠ΌΜͱཧղ͢Δdocker build cachehttps://orisano.hatenablog.com/entry/2018/12/17/025931
ࢦఆ͞ΕͨΠϝʔδ͕ଘࡏ͠ͳ͍߹ແࢹ͢Δ
ڥมʹͳʹ͔༩͑ͳ͍ͱcache-fromʹۭจࣈྻ͕…
ࠓͰdocker-composeଆͰۭͷΠϝʔδແࢹ͢ΔΑ͏ʹͳΓ·ͨ͠
ΊͰͨ͠
͜΅Ε3
ࠓճͷPRϚʔδ·Ͱ5ϲ݄͔͔ͬͨ
5ϲ݄ؒ͑ΔͷແཧͩͬͨͷͰखݩͰࣗͷforkΛ͍ͬͯͨ(ͬͯ͘ΕΔϑΝϯͷํ͕͍ͨ)
ͦΕΛϓϩδΣΫτͷmakeʹՃ͢ΔΘ͚ʹ͍͔ͳ͔ͬͨ
Ͳ͏ʹ͔Ͱ͖ͳ͍ͩΖ͏͔
ࢥ͍ग़͢
ͭ·Γ
docker-composeͷ͏໊લͰdocker build͢Δ͜ͱʹͯ͠ճආͨ͠
࠷ߴͷମݧ(͏ෆཁͰ͕͢)