Share
Embed
PaaS DX by Cloud Native Buildpacks
Cloud Native Buildpacksによって何が変わるのかの話 #shinjukult
disc99
June 20, 2020
Transcript
77 slides
-
લఏ w %PDLFSͷجૅࣝ w %PDLFSJNBHFͷϨΠϠߏ w 0$*Πϝʔδʹ͍ͭͯ w ࢿྉதͰ0$*Πϝʔδ 㲈%PDLFSΠϝʔδ
ɺ͋Δ͍୯ʹΠϝʔδ w $MPVE/BUJWF#VJMEQBDLT$/# -
ࠓճͷςʔϚ %PDLFSΛͬͯ ͍Δ ΞϓϦέʔγϣϯ͕ ෳ͋Δ 1BB4 ߹ʹΑͬͯ 'BB4ͷ΄͏͕Ϛο
ν͢Δ͔ ࠓճͷςʔϚ :FT /P /P :FT -
ࠓճͷςʔϚ %PDLFSΛͬͯ ͍Δ ΞϓϦέʔγϣϯ͕ ෳ͋Δ 1BB4 ߹ʹΑͬͯ 'BB4ͷ΄͏͕Ϛο
ν͢Δ͔ ࠓճͷςʔϚ ୯ମͰ%PDLFSΛ͏ ߹ͪΖΜ0, :FT /P /P :FT -
$/#Ͱ͖Δ͜ͱ w ιʔείʔυ͔Βɺ0$*Πϝʔδͷ࡞ w 1BB4ϓϩόΠμʔ͕։ൃ͍ͯ͠Δ࠷దԽ͞Εͨ0$*ΠϝʔδϏϧ υɺઃఆͷར༻ w 0$*ΠϝʔδΧελϚΠζͷͨΊͷػೳ ࣗ৫ʹඞཁͳػೳՃ
w %PDLFSϨδετϦͷొ FH+BWBΞϓϦέʔγϣϯ %PDLFSͷϕετϓϥΫςΟεͷద༻ 4QSJOH#PPUͷϕετϓϥΫςΟεʹԊͬͨઃఆ +7.@0154ͷࣗಈઃఆ 00.࣌ͷࣗಈ,JMM Ճͨ͠$"ͷLFZTUPSFՃ ڥมʹΑΔ+.9ͷ༗ޮԽ -
Πϝʔδͷ࡞ QBDL $/#ͷ$-*πʔϧ ΠϯετʔϧࡁΈ # PROJECT_DIRʹDockerfileͳͲΠϝʔδ࡞༻ϑΝΠϧෆཁ $ cd
${PROJECT_DIR} $ pack build my/image-name --builder gcr.io/paketo-buildpacks/builder:base $ docker run -p 8080:8080 my/image-name -
σϑΥϧτϏϧμʔͷࢦఆ # PROJECT_DIRʹDockerfileͳͲΠϝʔδ࡞༻ϑΝΠϧෆཁ $ cd ${PROJECT_DIR} $ pack
build my/image-name --builder gcr.io/paketo-buildpacks/builder:base $ docker run -p 8080:8080 my/image-name QBDL $/#ͷ$-*πʔϧ ΠϯετʔϧࡁΈ ಉ͡ϏϧμʔΛ͏͜ͱ͕ଟ͍ͷͰσϑΥϧτʹͰ͖Δ QBDLTFUEFGBVMUCVJMEFS\#6*-%&3^ FHQBDLTFUEFGBVMUCVJMEFSHDSJPQBLFUPCVJMEQBDLTCVJMEFSCBTF -
+BWBϓϩδΣΫτͷΠϝʔδԽ $ cd ${PROJECT_DIR} $ pack build my/image-name
$ docker run -p 8080:8080 my/image-name -
(PMBOHϓϩδΣΫτͷΠϝʔδԽ $ cd ${PROJECT_DIR} $ pack build my/image-name
$ docker run -p 8080:8080 my/image-name -
/PEFKTϓϩδΣΫτͷΠϝʔδԽ $ cd ${PROJECT_DIR} $ pack build my/image-name
$ docker run -p 8080:8080 my/image-name -
ͦͦʮϏϧυύοΫʯͱ w )FSPLV͕։ൃɺ1BB4ج൫ͱͯ͠ར༻͖ͯͨ͠ɺιʔείʔ υ͔Β࣮ߦΞϓϦέʔγϣϯΛߏங͢ΔΈ ࣮ߦΞϓϦέʔγϣϯίϯςφΞϓϦέʔγϣϯ w WͰ1JWPUBMͱ࣮͕ผΕ͍͕ͯͨɺW͔Β༷͕ඪ४Խ͞ Ε౷߹
w W$MPVE/BUJWF#VJMEQBDLT w $/$'4BOECPYϓϩδΣΫτ -
Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w CVJMEFSCVJMEQBDLͷू߹
ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔใΛ·ͱΊͨΠ ϝʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ w CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ BQQJNBHF $MPVE/BUJWF#VJMEQBDLT TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔใΛ·ͱΊͨΠ ϝʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ w CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ QBDL BQQJNBHF TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔใΛ·ͱΊͨΠ ϝʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ w CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ QBDL BQQJNBHF ڧྗͳϏϧυεΫϦϓτɺ πʔϧͷू߹ମ TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ QBDL BQQJNBHF CVJMEJNBHF SVOJNBHF TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEQBDL+BWB CVJMEQBDL/PEF CVJMEQBDL(P QBDL CVJMEQBDL(SBEMF BQQJNBHF CVJMEJNBHF SVOJNBHF TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEQBDL+BWB CVJMEQBDL/PEF CVJMEQBDL(P QBDL CVJMEQBDL(SBEMF BQQJNBHF CVJMEJNBHF CVJMEQBDLຖʹUBSΠϝʔδͳͲͰ εΫϦϓτπʔϧΛύοέʔδϯά SVOJNBHF TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEJNBHF CVJMEQBDL" CVJMEQBDL% CVJMEQBDL$ QBDL CVJMEQBDL# BQQJNBHF SVOJNBHF TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEJNBHF CVJMEQBDL" CVJMEQBDL% CVJMEQBDL$ QBDL CVJMEQBDL# BQQJNBHF SVOJNBHF EFQFOEFODZ TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEJNBHF CVJMEQBDL" CVJMEQBDL% CVJMEQBDL$ QBDL CVJMEQBDL# BQQJNBHF SVOJNBHF EFQFOEFODZ TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEJNBHF CVJMEQBDL" CVJMEQBDL% CVJMEQBDL$ QBDL CVJMEQBDL# BQQJNBHF SVOJNBHF EFQFOEFODZ EFQFOEFODZ TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEJNBHF CVJMEQBDL" CVJMEQBDL% CVJMEQBDL$ QBDL CVJMEQBDL# BQQJNBHF SVOJNBHF EFQFOEFODZ EFQFOEFODZ TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEJNBHF CVJMEQBDL" CVJMEQBDL% CVJMEQBDL$ QBDL CVJMEQBDL# BQQJNBHF SVOJNBHF EFQFOEFODZ EFQFOEFODZ CVJMEQBDLͷରͰͳ͍߹ ෦ͷॲཧ࣮ߦ͞Εͳ͍ FH+BWBͷΞϓϦέʔγϣϯͷ(Pͷ CVJMEQBDL࣮ߦ͞Εͳ͍ TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEJNBHF CVJMEQBDL" CVJMEQBDL% CVJMEQBDL$ QBDL CVJMEQBDL# BQQJNBHF SVOJNBHF EFQFOEFODZ EFQFOEFODZ TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEJNBHF CVJMEQBDL" CVJMEQBDL% CVJMEQBDL$ QBDL CVJMEQBDL# BQQJNBHF SVOJNBHF EFQFOEFODZ EFQFOEFODZ TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEJNBHF CVJMEQBDL" CVJMEQBDL% CVJMEQBDL$ QBDL CVJMEQBDL# BQQJNBHF SVOJNBHF EFQFOEFODZ EFQFOEFODZ ʜ TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEJNBHF CVJMEQBDL" CVJMEQBDL% CVJMEQBDL$ QBDL CVJMEQBDL# BQQJNBHF SVOJNBHF EFQFOEFODZ EFQFOEFODZ ʜ BQQ TPVSDF -
CVJMEFSJNBHF Έ w ιʔεͳͲ͔Β࣮ߦՄೳͳΞϓϦέʔγϣϯΛ࡞ w QMBUGPSN QBDL ͔ΒCVJMEFSΛར༻࣮͠ߦՄೳΞϓϦ έʔγϣϯΠϝʔδΛੜ w
CVJMEJNBHF Ϗϧυڥ ͱSVOJNBHF ࣮ߦڥ ΛTUBDL ͱͯ͠ఆٛ w CVJMEFSCVJMEQBDLͷू߹ ͦͷͨΊCVJMEQBDLT ͱϏϧυ ༻ΠϝʔδͳͲɺϏϧυʹඞཁͱͳΔॲཧΛ·ͱΊͨύο έʔδ w CVJMEQBDLΞϓϦέʔγϣϯ͔Βॲཧର͔Λఆ͠ɺ ରͰ͋ΕඞཁϑΝΠϧͷΠϯετʔϧϏϧυΛ࣮ߦ ͦͷͨΊCVJMEQBDLΛՃ͢Δ͜ͱͰCVJMEFSͷػೳΛ֦ு Ͱ͖Δ w CVJMDQBDLͰՃ͞ΕͨϑΝΠϧΠϝʔδͷϨΠϠͱ͠ ͯՃ ʜ CVJMEJNBHF CVJMEQBDL" CVJMEQBDL% CVJMEQBDL$ QBDL CVJMEQBDL# BQQJNBHF SVOJNBHF EFQFOEFODZ EFQFOEFODZ ʜ BQQ TPVSDF ֤ϨΠϠʔ EFQFOEFODZ Ωϟογϡ ͕ޮͨ͘ΊճҎ߱ߴʹͳΔ -
CVJMEQBDLͷ࡞ w ܾΊΒΕͨϑΝΠϧߏ w CJO$/#ͷ-JGFDZDMFͰݺͼग़͢ϑΝΠϧ܈ w EFUFDUΞϓϦέʔγϣϯ͕͜ͷCVJMEQBDLͷରͳͷ͔ͷఆॲཧ FHCVJMEHSBEMFɺQBDLBHFKTPOͷଘࡏνΣοΫͳͲ w CVJMEΞϓϦέʔγϣϯ࣮ߦʹඞཁͳϏϧυඞཁͳϑΝΠϧͷՃɺΩϟο
γϡͷॲཧ FHKSFͷɺCVJMEQBDL༻ͷϨΠϠʔ࡞ɺHSBEMFCVJMEͷ࣮ߦͳͲ w CVJMEQBDLϏϧυύοΫʹඞཁͳઃఆใ JEWFSTJPOɺTUBDLͳͲ w UBSΠϝʔδͳͲʹύοέʔδϯά͕ͯ͠Մೳ FHQBDLQBDLBHFCVJMENZCVJMEQBDLQBDLBHFDPOpHQBDLBHFUPNM NZCVJMEQBDL EFUFDU CVJME @ CVJMEQBDLUPNM CJO @ -
CVJMEQBDLͷ࡞ w ܾΊΒΕͨϑΝΠϧߏ w CJO$/#ͷ-JGFDZDMFͰݺͼग़͢ϑΝΠϧ܈ w EFUFDUΞϓϦέʔγϣϯ͕͜ͷCVJMEQBDLͷରͳͷ͔ͷఆॲཧ FHCVJMEHSBEMFɺQBDLBHFKTPOͷଘࡏνΣοΫͳͲ w CVJMEΞϓϦέʔγϣϯ࣮ߦʹඞཁͳϏϧυඞཁͳϑΝΠϧͷՃɺΩϟο
γϡͷॲཧ FHKSFͷΠϯετʔϧɺCVJMEQBDL༻ϨΠϠʔ࡞ɺHSBEMFCVJMEͷ࣮ߦͳͲ w CVJMEQBDLUPNMύοΫʹඞཁͳઃఆใ JEWFSTJPOɺTUBDLͳͲ w UBSΠϝʔδͳͲʹύοέʔδϯά͕ͯ͠Մೳ FHQBDLQBDLBHFCVJMENZCVJMEQBDLQBDLBHFDPOpHQBDLBHFUPNM NZCVJMEQBDL EFUFDU CVJME @ CVJMEQBDLUPNM CJO @ -
CVJMEQBDLͷ࡞ w ܾΊΒΕͨϑΝΠϧߏ w CJO$/#ͷ-JGFDZDMFͰݺͼग़͢ϑΝΠϧ܈ w EFUFDUΞϓϦέʔγϣϯ͕͜ͷCVJMEQBDLͷରͳͷ͔ͷఆॲཧ FHCVJMEHSBEMFɺQBDLBHFKTPOɺ(FNpMFͷଘࡏνΣοΫͳͲ w CVJME࣮ߦʹඞཁͳϏϧυඞཁͳϑΝΠϧͷՃɺΩϟογϡͷॲཧ
FHKSFͷΠϯετʔϧɺCVJMEQBDL༻ͷϨΠϠʔ࡞ɺHSBEMFCVJMEͷ࣮ߦͳ Ͳ w CVJMEQBDLUPNMϏϧυύοΫʹඞཁͳઃఆใ JEWFSTJPOɺTUBDLͳͲ w UBSΠϝʔδͳͲʹύοέʔδϯά͕ͯ͠Մೳ FHQBDLQBDLBHFCVJMENZCVJMEQBDLQBDLBHFDPOpHQBDLBHFUPNM NZCVJMEQBDL EFUFDU CVJME @ CVJMEQBDLUPNM CJO @ -
CVJMEQBDLͷ࡞ w ܾΊΒΕͨϑΝΠϧߏ w CJO$/#ͷ-JGFDZDMFͰݺͼग़͢ϑΝΠϧ܈ w EFUFDUΞϓϦέʔγϣϯ͕͜ͷCVJMEQBDLͷରͳͷ͔ͷఆॲཧ FHCVJMEHSBEMFɺQBDLBHFKTPOɺ(FNpMFͷଘࡏνΣοΫͳͲ w CVJMEΞϓϦέʔγϣϯ࣮ߦʹඞཁͳϏϧυඞཁͳϑΝΠϧͷՃɺΩϟο
γϡͷॲཧ FHKSFͷɺCVJMEQBDL༻ͷϨΠϠʔ࡞ɺHSBEMFCVJMEͷ࣮ߦͳͲ w CVJMEQBDLUPNMϏϧυύοΫʹඞཁͳઃఆใ JEWFSTJPOɺTUBDLͳͲ w UBSΠϝʔδͳͲʹύοέʔδϯά͕ͯ͠Մೳ FHQBDLQBDLBHFCVJMENZCVJMEQBDLQBDLBHFDPOpHQBDLBHFUPNM NZCVJMEQBDL EFUFDU CVJME @ CVJMEQBDLUPNM CJO @ #!/usr/bin/env bash set -eo pipefail if [[ ! -f Gemfile ]]; then exit 100 fi -
CVJMEQBDLͷ࡞ w ܾΊΒΕͨϑΝΠϧߏ w CJO$/#ͷ-JGFDZDMFͰݺͼग़͢ϑΝΠϧ܈ w EFUFDUΞϓϦέʔγϣϯ͕͜ͷCVJMEQBDLͷରͳͷ͔ͷఆॲཧ FHCVJMEHSBEMFɺQBDLBHFKTPOɺ(FNpMFͷଘࡏνΣοΫͳͲ w CVJMEΞϓϦέʔγϣϯ࣮ߦʹඞཁͳϏϧυඞཁͳϑΝΠϧͷՃɺΩϟο
γϡͷॲཧ FHCVJMEͷ࣮ߦɺKSFͷΠϯετʔϧɺCVJMEQBDL༻ͷϨΠϠʔ࡞ͳͲ w CVJMEQBDLUPNMϏϧυύοΫʹඞཁͳઃఆใ JEWFSTJPOɺTUBDLͳͲ w UBSΠϝʔδͳͲʹύοέʔδϯά͕ͯ͠Մೳ FHQBDLQBDLBHFCVJMENZCVJMEQBDLQBDLBHFDPOpHQBDLBHFUPNM NZCVJMEQBDL EFUFDU CVJME @ CVJMEQBDLUPNM CJO @ -
CVJMEQBDLͷ࡞ w ܾΊΒΕͨϑΝΠϧߏ w CJO$/#ͷ-JGFDZDMFͰݺͼग़͢ϑΝΠϧ܈ w EFUFDUΞϓϦέʔγϣϯ͕͜ͷCVJMEQBDLͷରͳͷ͔ͷఆॲཧ FHCVJMEHSBEMFɺQBDLBHFKTPOɺ(FNpMFͷଘࡏνΣοΫͳͲ w CVJMEΞϓϦέʔγϣϯ࣮ߦʹඞཁͳϏϧυඞཁͳϑΝΠϧͷՃɺΩϟο
γϡͷॲཧ FHCVJMEͷ࣮ߦɺKSFͷΠϯετʔϧɺCVJMEQBDL༻ͷϨΠϠʔ࡞ͳͲ w CVJMEQBDLUPNMϏϧυύοΫʹඞཁͳઃఆใ JEWFSTJPOɺTUBDLͳͲ w UBSΠϝʔδͳͲʹύοέʔδϯά͕ͯ͠Մೳ FHQBDLQBDLBHFCVJMENZCVJMEQBDLQBDLBHFDPOpHQBDLBHFUPNM NZCVJMEQBDL EFUFDU CVJME @ CVJMEQBDLUPNM CJO @ #!/usr/bin/env bash set -eo pipefail # 1. GET ARGS layersdir=$1 # 2. DOWNLOAD RUBY rubylayer="$layersdir"/ruby mkdir -p "$rubylayer" ruby_url=https://.../heroku-18/ruby-2.5.1.tgz wget -q -O - "$ruby_url" | tar -xzf - -C "$rubylayer" # 3. MAKE RUBY AVAILABLE DURING LAUNCH echo -e 'launch = true' > "$rubylayer.toml" # 4. MAKE RUBY AVAILABLE TO THIS SCRIPT export PATH=“$rubylayer"/bin:$PATH ... # 5. INSTALL BUNDLER gem install bundler --no-ri --no-rdoc # 6. INSTALL GEMS bundle install -
CVJMEQBDLͷ࡞ w ܾΊΒΕͨϑΝΠϧߏ w CJO$/#ͷ-JGFDZDMFͰݺͼग़͢ϑΝΠϧ܈ w EFUFDUΞϓϦέʔγϣϯ͕͜ͷCVJMEQBDLͷରͳͷ͔ͷఆॲཧ FHCVJMEHSBEMFɺQBDLBHFKTPOɺ(FNpMFͷଘࡏνΣοΫͳͲ w CVJMEΞϓϦέʔγϣϯ࣮ߦʹඞཁͳϏϧυඞཁͳϑΝΠϧͷՃɺΩϟο
γϡͷॲཧ FHCVJMEͷ࣮ߦɺKSFͷΠϯετʔϧɺCVJMEQBDL༻ͷϨΠϠʔ࡞ͳͲ w CVJMEQBDLUPNMϏϧυύοΫʹඞཁͳઃఆใ JEWFSTJPOɺTUBDLͳͲ w UBSΠϝʔδͳͲʹύοέʔδϯά͕ͯ͠Մೳ FHQBDLQBDLBHFCVJMENZCVJMEQBDLQBDLBHFDPOpHQBDLBHFUPNM NZCVJMEQBDL EFUFDU CVJME @ CVJMEQBDLUPNM CJO @ -
CVJMEQBDLͷ࡞ w ܾΊΒΕͨϑΝΠϧߏ w CJO$/#ͷ-JGFDZDMFͰݺͼग़͢ϑΝΠϧ܈ w EFUFDUΞϓϦέʔγϣϯ͕͜ͷCVJMEQBDLͷରͳͷ͔ͷఆॲཧ FHCVJMEHSBEMFɺQBDLBHFKTPOɺ(FNpMFͷଘࡏνΣοΫͳͲ w CVJMEΞϓϦέʔγϣϯ࣮ߦʹඞཁͳϏϧυඞཁͳϑΝΠϧͷՃɺΩϟο
γϡͷॲཧ FHCVJMEͷ࣮ߦɺKSFͷΠϯετʔϧɺCVJMEQBDL༻ͷϨΠϠʔ࡞ͳͲ w CVJMEQBDLUPNMϏϧυύοΫʹඞཁͳઃఆใ JEWFSTJPOɺTUBDLͳͲ w UBSΠϝʔδͳͲʹύοέʔδϯά͕ͯ͠Մೳ FHQBDLQBDLBHFCVJMENZCVJMEQBDLQBDLBHFDPOpHQBDLBHFUPNM NZCVJMEQBDL EFUFDU CVJME @ CVJMEQBDLUPNM CJO @ api = "0.2" [buildpack] id = "samples/ruby-bundler" version = "0.0.1" name = "Sample Ruby Buildpack" [[stacks]] id = "io.buildpacks.samples.stacks.bionic" -
CVJMEQBDLͷ࡞ w ܾΊΒΕͨϑΝΠϧߏ w CJO$/#ͷ-JGFDZDMFͰݺͼग़͢ϑΝΠϧ܈ w EFUFDUΞϓϦέʔγϣϯ͕͜ͷCVJMEQBDLͷରͳͷ͔ͷఆॲཧ FHCVJMEHSBEMFɺQBDLBHFKTPOɺ(FNpMFͷଘࡏνΣοΫͳͲ w CVJMEΞϓϦέʔγϣϯ࣮ߦʹඞཁͳϏϧυඞཁͳϑΝΠϧͷՃɺΩϟο
γϡͷॲཧ FHCVJMEͷ࣮ߦɺKSFͷΠϯετʔϧɺCVJMEQBDL༻ͷϨΠϠʔ࡞ͳͲ w CVJMEQBDLUPNMϏϧυύοΫʹඞཁͳઃఆใ JEWFSTJPOɺTUBDLͳͲ w UBSΠϝʔδͳͲʹύοέʔδϯά͕ͯ͠Մೳ FHQBDLQBDLBHFCVJMENZCVJMEQBDLQBDLBHFDPOpHQBDLBHFUPNM NZCVJMEQBDL EFUFDU CVJME @ CVJMEQBDLUPNM CJO @ -
CVJMEFSͷ࡞ w CVJMEFSΛ࡞͢ΔͨΊʹඞཁͳઃఆΛཧ w Πϝʔδͱͯ͠ύοέʔδϯάͯ͠Մೳ FHQBDLDSFBUFCVJMEFSNZCVJMEFSCJPOJD CVJMEFSDPOpHCVJMEFSUPNM [[buildpacks]]
uri = "samples/buildpacks/hello-processes" [[buildpacks]] image = "cnbs/sample-package:hello-universe" [[order]] [[order.group]] id = "samples/hello-world" version = "0.0.1" [[order.group]] id = "samples/hello-moon" version = "0.0.1" [[order.group]] id = "samples/hello-processes" version = "0.0.1" [stack] id = "io.buildpacks.samples.stacks.bionic" run-image = "cnbs/sample-stack-run:bionic" build-image = "cnbs/sample-stack-build:bionic" CVJMEFSUPNM -
ΧελϜCVJMEFSʹΑΔΠϝʔδͷ࡞ $ cd ${PROJECT_DIR} $ pack build my/image-name
--builder my-builder:bionic $ docker run -p 8080:8080 my/image-name -
ࢀߟ w #VJMEQBDLTJP IUUQTCVJMEQBDLTJP w 1BLFUP#VJMEQBDLT IUUQTQBLFUPJP w 1BDLUPUIF'VUVSF IUUQTEPDTHPPHMFDPNQSFTFOUBUJPOES[BY3F28B8*W(T5XKU-$.R:B'45MU4&K1Y2NPCJMFQSFTFOU
w %FFQEJWFJOUP4QSJOH#PPU IUUQTEPDTHPPHMFDPNQSFTFOUBUJPOES1.'QU+N6)/SE5Y;1S#PFDC8DB(VKG7J#1FEJUTMJEFJEQ