Slide 1

Slide 1 text

1 ࣗݾ঺հ Α͜ͳ "ZBOB:PLPUB • +'SPHͷ%FWFMPQFS"EWPDBUF • લ৬·Ͱ͸ओʹόοΫΤϯυͷ։ൃ ʢ4*FS ޿ࠂձࣾ ূ݊ελʔτΞοϓʣ • ܹ௧ͱ໊ߴ͍੔ମʹߦͬͨ !"#$$%&' (#)*+,%-.

Slide 2

Slide 2 text

ࠓ೔΍Δ͜ͱ • %PDLFSΠϝʔδΛϏϧυɾ࣮ߦ͢Δ • $*$%Λ࢖ͬͯΠϝʔδΛϦϙδτϦ؅ཧ͢Δʢ+'SPH "SUJGBDUPSZʣ • Πϝʔδʹର͠੬ऑੑεΩϟϯΛ࣮ߦ͢Δʢ+'SPH 9SBZʣ

Slide 3

Slide 3 text

εςοϓ %PDLFSΠϝʔδΛ࡞੒࣮ͯ͠ߦ͢Δ

Slide 4

Slide 4 text

%PDLFSGJMFͷॻ͖ํ FROM nginx:latest COPY ./index.html /usr/share/nginx/html/index.html ඞͣϑΝΠϧ໊͸%PDLFSGJMFͱ͢Δ %PDLFS͕Ϗϧυ༻ϑΝΠϧΛ໊લͰ൑ผ ͢ΔͨΊ %PDLFSGJMFͰ࢖͑Δ ίϚϯυ Ϗϧυͯ͠ΠϝʔδΛ࡞੒͢Δ docker build

Slide 5

Slide 5 text

• FROM ϕʔεͱͳΔΠϝʔδΛࢦఆ͢Δ • RUN Ϗϧυ࣌ʹίϯςφ಺ͰίϚϯυΛ࣮ߦ͢Δ • ENV ,FZ7BMVFܗࣜͰ؀ڥม਺Λࢦఆ͢Δ • ADD, COPY Πϝʔδ಺΁ϑΝΠϧΛίϐʔ͢Δ ˠ<ϦϯΫ>"%%ͱ$01:جຊ͸$01:Λ࢖͏ • CMD, ENTRYPOINT ίϯςφىಈ࣌ʹ࣮ߦ͢ΔίϚϯυ΍Ҿ਺Λ ͋ ࢦఆ͢Δ ˠ<ϦϯΫ>$.%ͱ&/53:10*/5ͷ૊Έ߹Θͤ جຊతͳ%PDLFSGJMFͷίϚϯυ

Slide 6

Slide 6 text

ΞϓϦέʔγϣϯͷίϯςφԽ • ݴޠ΍ϑϨʔϜϫʔΫʹΑͬͯ΍Γํ͸ͦΕͧΕ͕ͩɺࢿྉ͸ ͨ͘͞Μ͋ΔͷͰ ࠷ۙ͸ެࣜυΩϡϝϯτ΋๛෋ ࢀߟʹͯ͠ ࣮ݱͰ͖Δ • جຊతʹ͸࣍ͷ͍ͣΕ͔ͷํ਑Ͱ%PDLFSGJMFΛॻ͍͍ͯ͘ • ιʔείʔυΛίϯςφʹίϐʔ͠ɺΠϝʔδͷϏϧυ࣌ʹΞϓϦ έʔγϣϯ΋Ϗϧυ͢Δ • Ϗϧυͨ͠ΞϓϦέʔγϣϯͷ࣮ߦϑΝΠϧΛίϯςφʹίϐʔ͢Δ

Slide 7

Slide 7 text

αϯϓϧΞϓϦέʔγϣϯ ࣮ߦ ϑΝΠϧ ιʔε ίʔυ /012345 6789:2 :;32<= Ϗϧυ͢Δ HSBEMFX CPPU+BS ࣮ߦ͢Δ KBWBKBSBQQIBOETPOKBS

Slide 8

Slide 8 text

αϯϓϧΞϓϦέʔγϣϯ ࣮ߦ ϑΝΠϧ ΞϓϦ༻ ίϯςφ ᶃίϐʔ ᶄίϯςφ಺Ͱ࣮ߦ ࣮ߦ ϑΝΠϧ

Slide 9

Slide 9 text

ϋϯζΦϯλΠϜ • ιʔείʔυϦϙδτϦΛϑΥʔΫɺΫϩʔϯ͠Α͏ • IUUQTHJUIVCDPNJIDPNFHB4$"BOE%PDLFS)BOET0O • IBOETPOϒϥϯνΛ࢖͍ͬͯ͘ • %PDLFSGJMFΛ׬੒ͤ͞Α͏ # TODO: アプリケーションの実⾏ファイルをコンテナ内にコピーする . COPY build/libs/*.jar work/app.jar . # TODO: アプリケーションを起動してコンテナを実⾏する . ENTRYPOINT ["java","-jar","/work/app.jar"] .

Slide 10

Slide 10 text

Α͘࢖͏ίϯςφͷૢ࡞ ίϯςφΛҰཡදࣔ͢Δ docker ps ࣮ߦ த ఀࢭ த ίϯςφΛఀࢭ͢Δ docker stop ίϯςφΛىಈ͢Δ docker start ࣮ߦதͷίϯςφ಺ͰίϚϯυΛ࣮ߦ͢Δ docker exec ίϯ ςφ ࣮ߦதͷίϯςφ಺ͷϩάΛग़ྗ͢Δ docker logs ίϯςφΛ࡟আ͢Δ docker rm ର৅͸ఀࢭதͷίϯςφɻ ಈ͍͍ͯΔ΋ͷΛࢭΊΔ࣌͸ GΦϓγϣϯΛ͚ͭΔ ͪΐͬͱ͓ͨ͠ࢼ͠΍ ௐࠪʹ࢖͏͜ͱ͕ଟ͍ ର৅͸࣮ߦதͷίϯςφɻ ࢭ·͍ͬͯΔ΋ͷ΋ݟΔ࣌͸ BΦϓγϣϯΛ͚ͭΔ

Slide 11

Slide 11 text

ҎԼͷ͍ͣΕ͔ͰΠϝʔδΛಛఆ͢Δ • *% • Πϝʔδ໊<λά໊> • Πϝʔδ໊ %PDLFSΠϝʔδͷಛఆɾ࣮ߦ ίϯςφΛ࡞੒ɾ࣮ߦ͢Δ docker run σϑΥϧτ͸ϑΥΞάϥ΢ϯυ ࣮ߦɻόοΫάϥ΢ϯυʹ͢Δ ʹ͸EΦϓγϣϯΛ͚ͭΔ ίϯςφΛ࡞੒͢Δ docker create ίϯςφΛ࣮ߦ͢Δ docker start

Slide 12

Slide 12 text

ϋϯζΦϯλΠϜ • ΞϓϦέʔγϣϯΛϏϧυ͠Α͏ ./gradlew bootJar • %PDLFSGJMFΛϏϧυ͠Α͏ docker build -t ihcomegaws.jfrog.io/handson-docker/sample-app:latest . • ໊લͱλάΛ෇͚Δ <αʔόʔ><ϦϙδτϦ><໊લ><λά> • %PDLFSGJMFͷύεΛࢦఆʢ࣮͸࠷ޙʹυοτ͕͋Δͷʹ஫໨ʣ

Slide 13

Slide 13 text

ϋϯζΦϯλΠϜ • ίϯςφΛ࣮ߦ͠Α͏ docker run --name my-container ‒p 8888:8080 ihcomegaws.jfrog.io/handson-docker/sample-app:latest • ίϯςφʹNZDPOUBJOFSͱ໊લΛ͚ͭͯىಈʢࢦఆ͠ͳ͍৔߹ɺࣗಈ Ͱ໊લ͕ͭ͘ʣ • ίϯςφͷϙʔτΛͱͯ͠ϗετଆʹެ։ • IUUQMPDBMIPTUʹΞΫηε͠Α͏ • มߋΛ(JUʹϓογϡ͠Α͏

Slide 14

Slide 14 text

खݩͷ੔ཧ • ஈʑϩʔΧϧʹΠϝʔδ͕ͨ·͍ͬͯ͘ͷͰ࣌ʑ֬ೝ͠Α͏ • ͍Βͳ͍΋ͷ͸࡟আ͠Α͏ %PDLFSΠϝʔδҰཡΛදࣔ͢Δ docker images %PDLFSΠϝʔδΛ࡟আ͢Δ docker rmi >391 ?@ABC:D EFGHIJ=

Slide 15

Slide 15 text

εςοϓ $*$%ͰΠϝʔδΛ ϦϙδτϦʹอ؅͢Δ

Slide 16

Slide 16 text

ϩʔΧϧϦϙδτϦʹอ؅ • ࡞੒ͨ͠Πϝʔδ͸ʮόΠφϦɾϦϙδτϦϚωʔδϟʔʯʹ อ؅͠ɺ͔ͦ͜ΒγΣΞ΍࠶ར༻Λ͢Δ • ಉ͡%PDLFSGJMFΛԿ౓΋Ϗϧυ͢ΔͷΛආ͚ ࣌ؒΛઅ໿Ͱ͖Δ • ඼࣭͕୲อ͞ΕͨΠϝʔδΛ࢖͍ճͤΔ औಘ͢Δ อ؅͢Δ

Slide 17

Slide 17 text

ϦϞʔτϦϙδτϦΛհͯ͠औಘ • औಘͨ͠Πϝʔδ΋ʮόΠφϦɾϦϙδτϦ Ϛωʔδϟʔʯʹอ؅͓ͯ͘͠ • Ωϟογϡͷ໾ׂΛՌͨ͢ • ߴ଎ʹऔಘͰ͖Δ • ֎෦ϦϙδτϦʹΞΫηε Ͱ͖ͳͯ͘΋औಘͰ͖Δ औಘͭͭ͠ อ؅͢Δ

Slide 18

Slide 18 text

ϦϙδτϦͰΠϝʔδΛ؅ཧ %PDLFSΠϝʔδΛμ΢ϯϩʔυ͢Δ docker pull %PDLFSϨδετϦʹϩάΠϯ͢Δ docker login %PDLFSΠϝʔδΛݕࡧ͢Δ docker search %PDLFSΠϝʔδΛΞοϓϩʔυ͢Δ docker push

Slide 19

Slide 19 text

όʔνϟϧϦϙδτϦ • ϩʔΧϧϦϙδτϦɾόʔνϟϧϦϙδτϦΛଋͶΔ • อ؅΋औಘ΋όʔνϟϧϦϙδτϦʹରͯ͠ૢ࡞͢Ε͹ྑ͍ ϩʔΧϧ ϦϞʔτ όʔνϟϧ KGLM>BC NOHPN1QR S5TUV7W

Slide 20

Slide 20 text

ϋϯζΦϯλΠϜ • ίϯςφΠϝʔδ༻ͷϦϙδτϦΛ࡞੒͠Α͏

Slide 21

Slide 21 text

(JU)VC"DUJPOT • HJUIVCXPSLGMPXTҎԼʹઃఆϑΝΠϧΛ഑ஔ͢Δͱ࢖͑Δ • ·ͣ͸τϦΨʔΛࢦఆ͢Δ • QVTI΍13ͳͲιʔείʔυϦϙδτϦʹର͢Δૢ࡞ • εέδϡʔϧ • खಈ • XFCIPPL • ࣮ߦ͕࢝ΊΒΕΕ͹ɺ͋ͱ͸΍Γ͍ͨ͜ͱΛܨ͍͛ͯ͘

Slide 22

Slide 22 text

ϫʔΫϑϩʔͷߏ੒

Slide 23

Slide 23 text

$*$%ͷجຊ • ΰʔϧͱաఔΛࢥ͍ඳ͍ͯ࡞ۀ͢Δ • ໋໊΍ίϝϯτͰ࣮ݱ͍ͨ͠ॲཧΛදݱ͢Δ • ઃఆϑΝΠϧ͸7$4Ͱ؅ཧ͢Δ • ύεϫʔυͷΑ͏ͳൿಗ৘ใ͸ઃఆϑΝΠϧʹॻ͔ͳ͍ • ႈ౳ੑͷ͋Δॲཧʹ͢Δ

Slide 24

Slide 24 text

ϋϯζΦϯλΠϜ • ΠϝʔδͷϏϧυɾϓογϡʹඞཁͳίϚϯυΛ׬੒ͤ͞Α͏ docker build -t ${{ secrets.JFROG_URL }}/handson-docker/sample- app:latest . • ઌ΄Ͳͱಉ͕ͩ͡ɺ63-͸γʔΫϨοτม਺ʹ͢Δ jfrog c add my-jfrog-server --url=https://${{ secrets.JFROG_URL }} --user=${{ secrets.JFROG_USER }} --password=${{ secrets.JFROG_API_KEY }} • ʢݟ΍͢͞ͷͨΊվߦ͍ͯ͠·͕࣮͢ࡍ͸ෆཁͰ͢ʣ • +'SPH$-*ͷઃఆͱͯ͠ɺ+'SPHͷαʔόʔͷొ࿥ͱೝূઃఆΛߦ͏ • Ϣʔβʔ໊ͱ"1*Ωʔ͸γʔΫϨοτม਺ʹ͢Δ

Slide 25

Slide 25 text

ϋϯζΦϯλΠϜ jfrog rt dp ${{ secrets.JFROG_URL }}/handson-docker/sample-app:latest handson-docker --build-name=handson-build --build-number=${{ env.JFROG_CLI_BUILD_NUMBER }} --server-id=my-jfrog-server • ʢݟ΍͢͞ͷͨΊվߦ͍ͯ͠·͕࣮͢ࡍ͸ෆཁͰ͢ʣ • ΠϝʔδΛࢦఆͯ͠EPDLFS QVTI͢Δ • ͜͜Ͱ͸ϓογϡઌͱͯ͠όʔνϟϧϦϙδτϦΛࢦఆ͢Δ • +'SPHͰ͸Ϗϧυ୯ҐͰૢ࡞Λߦ͏ͨΊɺϏϧυΛಛఆ͢Δ໊લͱ൪߸ Λ෇༩͢Δ • ͜͜Ͱ͸Ϗϧυͷ൪߸ʹ$-*͕ఏڙͯ͘͠ΕΔ஋Λ࠾༻͢Δ • αʔόʔ*%͸ઃఆͰ௥Ճͨ͠΋ͷΛࢦఆ͢Δ

Slide 26

Slide 26 text

ϋϯζΦϯλΠϜ jfrog rt bce handson-build ${{ env.JFROG_CLI_BUILD_NUMBER }} • CVJMEJOGPʢϏϧυʹؚ·ΕΔ΋ͷ΍ґଘɺϏϧυΛߦͬͨ؀ڥͳͲ ͷ༷ʑͳ৘ใʣΛऩू͢Δ jfrog rt bp handson-build ${{ env.JFROG_CLI_BUILD_NUMBER }} • CVJME JOGPΛϦϙδτϦʹ൓өͤ͞Δ

Slide 27

Slide 27 text

ϋϯζΦϯλΠϜ • 4FDSFUTΛઃఆ͠Α͏ • +'30(@63- • +'30(@64&3 • +'30(@"1*@,&: • $*$%ͷτϦΨʔΛࢦఆ͠Α͏ • มߋͨ͠ઃఆϑΝΠϧΛϓογϡ͠Α͏

Slide 28

Slide 28 text

εςοϓ Πϝʔδͷ੬ऑੑεΩϟϯΛߦ͏

Slide 29

Slide 29 text

ϙϦγʔɺϧʔϧɺ΢Υον ϙϦγʔ ϧʔϧ ϧʔϧ ϧʔϧ ϧʔϧ ΢Υον

Slide 30

Slide 30 text

ϙϦγʔɺϧʔϧɺ΢Υον • ϧʔϧݕ஌͢Δ੬ऑੑͷϨϕϧɺ੬ऑੑ͕ݟ͔ͭͬͨͱ͖ͷ ΞΫγϣϯʢ௨஌ํ๏΍$*$%΁ͷӨڹͳͲʣΛఆٛ͢Δ • ϙϦγʔϧʔϧΛଋͶͨ΋ͷ • ΢ΥονϙϦγʔͱεΩϟϯର৅ʢϦϙδτϦ΍ϏϧυʣΛ ඥ෇͚Δ

Slide 31

Slide 31 text

ϋϯζΦϯλΠϜ • ੬ऑੑεΩϟϯͷઃఆΛ͠Α͏ • 9SBZΛ༗ޮʹ͢Δ • ϏϧυΛΠϯσοΫε͢Δ • ϙϦγʔɺϧʔϧɺ΢ΥονΛ࡞੒͢Δ • ΠϝʔδΛεΩϟϯ͠Α͏ jfrog rt bs handson-build ${{ env.JFROG_CLI_BUILD_NUMBER }} • εΩϟϯ݁ՌΛ֬ೝ͠Α͏

Slide 32

Slide 32 text

ϋϯζΦϯλΠϜ • ϥΠϒϥϦͷόʔδϣϯΛ্͛ͯ࠶౓ϏϧυΛ࣮ߦ͠ɺ݁ՌΛ ֬ೝ͠Α͏ • 4#0.ΛݟͯΈΑ͏ʢແྉͩͱ࢖͑ͳ͍ͨΊΑ͜ͳ͕͓ݟͤ͠·͢ʣ