Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Docker in CI - Cacoo與Backlog導入Docker的經驗分享
Search
株式会社ヌーラボ
PRO
December 10, 2015
Technology
470
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Docker in CI - Cacoo與Backlog導入Docker的經驗分享
Presentation slides at
http://containersummit.ithome.com.tw/
株式会社ヌーラボ
PRO
December 10, 2015
More Decks by 株式会社ヌーラボ
See All by 株式会社ヌーラボ
配布資料_ヌーラボの情シスがおすすめする_問い合わせ対応を削減するBacklog活用術.pdf
nulabinc
PRO
0
66
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
2.3k
Getting Started with Bits Agent Builder: Real-World Use Cases
nulabinc
PRO
0
76
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
370
進化するBits AI SREと私と組織
nulabinc
PRO
4
1.1k
実践 Datadog MCP Server
nulabinc
PRO
4
930
全社横断PjM⽀援チーム “PEaS”の取り組みと プロジェクトマネジメント でのAI活⽤について
nulabinc
PRO
0
230
Datadog の RBAC のすべて
nulabinc
PRO
4
930
Datadog Live Tokyo 2025登壇資料
nulabinc
PRO
0
220
Other Decks in Technology
See All in Technology
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
1
200
GoCon2026 - Open Source, Open World
sanposhiho
1
240
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
2
150
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
400
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
260
AIエージェントの開発・提供におけるセキュリティリスクの論点と対策
flatt_security
2
610
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
170
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
160
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
150
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
0
120
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
270
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
1.2k
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
55
10k
Scaling GitHub
holman
464
140k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Agile that works and the tools we love
rasmusluckow
331
22k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
RailsConf 2023
tenderlove
30
1.5k
ラッコキーワード サービス紹介資料
rakko
1
4.8M
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
560
YesSQL, Process and Tooling at Scale
rocio
174
15k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
Visualization
eitanlees
152
17k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Transcript
None
https://www.flickr.com/photos/dahlstroms/3144199355 %PDLFSJO$* $BDPPᢛ#BDLMPHಋೖ%PDLFSతៃᱛڗ
છాوࢤ 40.&%"5BLBTIJ (SPXUI)BDLFS!/VMBC*OD
$PMMBCPSBUJWF"QQ.BLFS IUUQTOVMBCJODDPN
֨ᒜ #BDLMPH 1SPKFDUNBOBHFNFOUUPPMPWFS DPNQBOJFTVTF IUUQCBDLMPHUPPMDPNUX
-PPLJOHGPS5BJXBOFTF&OHJOFFS IUUQTOVMBCJODDPNDBSFFSTPGUXBSFFOHJOFFSCBDLMPH
$BDPP .VTFSTBSPVOEUIFXPSME ,VTFSTJO5BJXBO ESBXEJBHSBNTPO$BDPP IUUQTDBDPPDPNMBOH[I@UX
5ZQFUBML $PMMBCPSBUJWFEJTDVTTJPOUPPM IUUQTXXXUZQFUBMLJO
2VFTUJPO
6TFDBTFPG%PDLFSJO$* • 6TJOH%PDLFSGPS+PC&YFDVUJPO • 6TJOH%PDLFSGPS$*$MVTUFS
'PDVTJOUIJTUBML • 6TJOH%PDLFSGPS+PC&YFDVUJPO • 6TJOH%PDLFSGPS$*$MVTUFS
"HFOEB /VMBC%FWFMPQNFOU0WFSWJFX 6TF$BTFJO$* 4VNNBSZ
/VMBC%FWFMPQNFOU0WFSWJFX
5FDIOPMPHZ.BUSJY
%FMJWFSZ0WFSWJFX
%FMJWFSZ0WFSWJFX
+FOLJOT+PCT • 3VOUFTU • #VJMEBSUJGBDU • 6QMPBEBSUJGBDUUP4 • 6QMPBETUBUJDpMFUP4 •
$SFBUF".* • %FQMPZBSUJGBDU
/VNCFSPG+PCT • $POpHVSFE+PCT • +PCTSVOOJOHFWFSZEBZ NBJOMZSVOOJOHJOEBZUJNF
l1VMM3FRVFTUz#BTFE%FWFMPQNFOU
#SBODIJOH.PEFMJO/VMBC
%FWFMPQNFOU'MPX • #SBODIDSFBUFEGPSCPUICVHpYBOE OFXGFBUVSF • $SFBUF1VMM3FRVFTU 13 BGUFSXPSL JTEPOF •
3FMFBTFlUBHHFEzSFWJTJPOJONBTUFS CSBODI
l5BHz5SJHHFSFE"SDIJWJOH
$IBU0QTGPS%FMJWFSZ
+FOLJOT5ZQFUBML1MVHJO IUUQTXJLJKFOLJOTDJPSHEJTQMBZ+&/,*/45ZQFUBML 1MVHJO
%FQMPZNFOU'MPX • "EEUBHUPTUPSFBQQMJDBUJPOUP4 • 4BZlEFQMPZDPNNBOEzJO5ZQFUBML • +FOLJOT5ZQFUBML1MVHJOEJSFDUMZLJDLT +FOLJOT+PCUPEFQMPZ
6TF$BTFJO$*
$*&OWJSPONFOU0WFSWJFX
+FOLJOT#BDLMPH1MVHJO IUUQTXJLJKFOLJOTDJPSHEJTQMBZ+&/,*/4#BDLMPH 1MVHJO
*TTVFTJO$* • 5PPNBOZCSBODIFTUPUFTU • 13SFRVJSFTUFTUQBTTFECFGPSFSFWJFX • .PSFEFWFMPQFST NPSFCSBODIFT • 7BSJPVTUFTUFOWJSPONFOUSFRVJSFE
• %J⒎FSFOUWFSTJPOTPGNJEEMFXBSFBOEUPPMT • 4IPVMECFJOEFQFOEFOUCBTJDBMMZ
*TTVFTJO$* • 4MPXUFTU • 5FTUIBTUPXBJUGPSSVOVOUJMUFTU FOWJSPONFOUPDDVQJFEXJUIPUIFSUFTU CFDPNFTBWBJMBCMF • )BSEUPNBOBHFTMBWFT •
.FTTZDPOpHVSBUJPOEJTBCMFTVTUP CPPUTUSBQOFXTMBWFRVJDLMZBOEHJWFVQ UFTUJOHGPSTPNFCSBODIFT
)FSF`T%PDLFS
)PX%PDLFSTPMWFTJTTVFT • 5PPNBOZCSBODIFTUPUFTU • 3VOOJOHUFTUGPSCSBODIJOJUTPXO%PDLFS DPOUBJOFSBMMPXTUPSVOUFTUTJOQBSBMMFM • 7BSJPVTUFTUFOWJSPONFOUSFRVJSFE • /FFEUPJOTUBMMPOMZ%PDLFSJOUPTMBWFT
XIFOZPVOFFENPSFSFTPVSDFTGPSUFTUJOH
,FZ1PJOUTUPVTF%PDLFSJO$* • 4FUVQTMBWF • 4JNQMJGZUFTU • "DDFMFSBUFUFTU • 3FUSJFWFCVJMESFTVMU •
6QMPBEBSDIJWF
,FZ1PJOUTUPVTF%PDLFSJO$* • 4FUVQTMBWF • 4JNQMJGZUFTU • "DDFMFSBUFUFTU • 3FUSJFWFCVJMESFTVMU •
6QMPBEBSDIJWF
4UFQTUP4UBSU4MBWF IUUQTXJLJKFOLJOTDJPSHEJTQMBZ+&/,*/4"NB[PO &$ 1MVHJO
#FOFpUPG4JNQMF4MBWF4FUVQ • #PPUTUSBQOFXTMBWFRVJDLMZ • &OBCMFUPSVOKPCTBOZXIFSF%PDLFS JTSVOOJOH
,FZ1PJOUTUPVTF%PDLFSJO$* • 4FUVQTMBWF • 4JNQMJGZUFTU • "DDFMFSBUFUFTU • 3FUSJFWFCVJMESFTVMU •
6QMPBEBSDIJWF
+PC$POpHVSBUJPO $ ./gradlew clean test –Penv=ci $ docker run <run
option> test-image ./gradlew clean test
3VO.VMUJ1SPDFTTFTJO4JOHMF$POUBJOFS # Dockerfile # install package required for test RUN
apt-get install –y redis-server # Test Configuration in Jenkins $ docker run test-image bach –c “service redis-server start ; ./ gradlew clean test” • 0OMZTJOHMF%PDLFSpMFSFRVJSFE • 3VOUFTUXJUITBNFTFUUJOHJOMPDBM
%PDLFS$PNQPTFWT4JOHMF%PDLFSpMF • +VTUGPSUFTUJOHQVSQPTF 4JOHMF %PDLFSpMFJTFOPVHIJONBOZDBTFT • *G%PDLFSpMFXJMMCFSFVTFEGPSPUIFS QVSQPTF %PDLFS$PNQPTFDPVMECF CFUUFS
,FZ1PJOUTUPVTF%PDLFSJO$* • 4FUVQTMBWF • 4JNQMJGZUFTU • "DDFMFSBUFUFTU • 3FUSJFWFCVJMESFTVMU •
6QMPBEBSDIJWF
*OIPVTF3FHJTUSZBT*NBHF$BDIF
%FQFOEFODZ$BDIFr)PTU%JSFDUPSZ
%FQFOEFODZ$BDIFr)PTU%JSFDUPSZ $ docker run –v ${HOME}/.gradle:/root/.gradle test-image <test command> •
)PTUEJSFDUPSZBTDBDIF • 1SPTTIBSFDBDIFXJUIPUIFSKPCT • $POTQFSNJTTJPOJTTVF
%FQFOEFODZ$BDIFr$BDIFJOBEWBODF
%FQFOEFODZ$BDIFr$BDIFJOBEWBODF # Dockerfile RUN mkdir -p /opt/local/app COPY requirements.txt /opt/local/app/
WORKDIR /opt/local/app RUN pip install -r requirements.txt COPY . /opt/local/app $ docker build –t test-image . $ docker run test-image <test command> %FQFOEFODZVQEBUF IBQQFOT/05TPPGUFO UIBOBQQMJDBUJPODPEF
%FQFOEFODZ$BDIFr$BDIFJOBEWBODF • *OTUBMMEFQFOEFODZJOBEWBODF • 1SPTOPQFSNJTTJPOJTTVF • $POTBMMDBDIFDMFBSFEJOEFQFOEFODZ DIBOHF
%FQFOEFODZ$BDIFr&YUFSOBM$BDIF
%FQFOEFODZ$BDIFr&YUFSOBM$BDIF # Dockerfile RUN mkdir /root/.gradle RUN cd /root/.gradle; curl
-skL https://s3-ap- northeast-1.amazonaws.com/<cache-bucket>/cache.20151201.tar.gz | tar zxf - • &YUFSOBMDBDIF • 1SPTGBTUFSJOJUJBMJOTUBMMBUJPO • $POTNBJOUBJOFYUFSOBMDBDIF
%FQFOEFODZ$BDIF4USBUFHZ )PXUPDBDIF 1SPT $POT 1SPKFDUXFVTF )PTU%JSFDUPSZ 8IFOSVOOJOH UFTU NPVOUIPTU EJSFDUPSZUP
DPOUBJOFSBOE TUPSFEFQFOEFOU MJCSBSJFTUIFSF 4IBSFMJCSBSJFT BNPOHQSPKFDUT BOETNBMM EFQFOEFODZ DIBOHFEPFTO`U JNQBDUTPNVDI 1FSNJTTJPOJTTVF DPVMEIBQQFOJG UFTUTIPVMECF SVOCZOPOSPPU VTFS +BWB 4DBMB .BWFO (SBEMF TCU $BDIFJO BEWBODF $SFBUFMPDBMJNBHF XJUIJOTUBMMJOH EFQFOEFOU MJCSBSJFTCFGPSF UFTUJOH /PQFSNJTTJPO JTTVF 8IFO EFQFOEFODZ DIBOHFE BMM DBDIFXJMMCF DMFBSFE 1FSM 1ZUIPO OPEFKT &YUFSOBM$BDIF $SFBUFDBDIF BSDIJWFBOETBWF JUUPFYUFSOBM TUPSBHFMJLF4 BOEEPXOMPBEJU XIFOSVOOJOHUFTU 'BTUFSJOJUJBM JOTUBMMBUJPO DPNQBSFEUP MFUUJOHCVJMEUPPM UPSFTPMWF EFQFOEFODJFT /FFEUPNBJOUBJO FYUFSOBMDBDIF QSPQFSMZUPLFFQ QFSGPSNBODF 4DBMB TCU
,FZ1PJOUTUPVTF%PDLFSJO$* • 4FUVQTMBWF • 4JNQMJGZUFTU • "DDFMFSBUFUFTU • 3FUSJFWFCVJMESFTVMU •
6QMPBEBSDIJWF
3FUSJFWF#VJME3FTVMU
3FUSJFWF#VJME3FTVMU # Dockerfile WORKDIR /opt/app $ docker run --rm –v
$(pwd):/opt/app test-image <test command> • .PVOUXPSLTQBDFUPDPOUBJOFS • 1SPTSFNPWFDPOUBJOFSTPPOBGUFSUFTU • $POTQFSNJTTJPOJTTVF
1FSNJTTJPO*TTVFPG)PTU%JSFDUPSZ • *OTPNFDBTF UFTUTIPVMECFSVOCZOPO SPPUVTFS • 0XOFSPGIPTUEJSFDUPSZJOTJEFDPOUBJOFS JTJOEFpOJUF • 8SJUJOHCVJMESFTVMUUPIPTUEJSFDUPSZCZ
OPOSPPUVTFSDBOGBJM
8PSLBSPVOE • 8SJUFSFTVMUUPBWBJMBCMFEJSFDUPSZGPS OPOSPPUVTFS • $PQZJUUPIPTUEJSFDUPSZCZSPPU # run.sh su test-user
–c “py.test tests –-junit-xml=/var/tmp/results.xml” cp –p /var/tmp/results.xml . $ docker run --rm –v $(pwd):/opt/app test-image ./run.sh
8PSLBSPVOE • $IBOHFPXOFSTIJQUPOPOSPPUVTFS EVSJOHCVJMEUJNF # run.sh chown test-user . su
test-user –c “py.test tests” chown $1 . $ docker run --rm –v $(pwd):/opt/app test-image ./run.sh $(id -u)
3FUSJFWF#VJME3FTVMU BMU # Dockerfile WORKDIR /opt/app COPY . /opt/app
$ UNIQUE_NAME=“TEST_${GIT_COMMIT}_$(date +%s)” $ docker run --name=${UNIQUE_NAME} test-image <test command> $ docker cp ${UNIQUE_NAME}:/opt/app/build/test-result/ test-result $ docker rm ${UNIQUE_NAME} • $PQZCVJMESFTVMUGSPNDPOUBJOFS • 1SPTOPQFSNJTTJPOJTTVF • $POTDPNQMJDBUFE
,FZ1PJOUTUPVTF%PDLFSJO$* • 4FUVQTMBWF • 4JNQMJGZUFTU • "DDFMFSBUFUFTU • 3FUSJFWFCVJMESFTVMU •
6QMPBEBSDIJWF
6QMPBE"SDIJWFUP4 • 6QMPBEBQQMJDBUJPOBSDIJWFUP4GPSGVUVSF EFQMPZ • "84TUBOEBSEUPPMJOTUBMMFEJO"NB[PO-JOVY CZEFGBVMU • 6QMPBETUBUJDSFTPVSDFT JNBHF
TDSJQU DTT XJUIJOBSDIJWFUP4GPS$%/EFMJWFSZ • *OIPVTFVQMPBEJOHUPPM
%PDLFSOJ[FJOIPVTFVQMPBEJOHUPPM $ /usr/local/bin/upload-static-s3 ROOT.war –b <cdn-bucket> # Dockerfile ENTRYPOINT [“/usr/local/bin/upload-static-s3”]
$ docker run --rm <in-house-registory>/upload-static-s3 ROOT.war – b <cdn-bucket>
#VJME5JNF5SFOE
8IPMF$*QSPDFTTQPSUBCMF
4VNNBSZ
-FTTPO-FBSOFE • $*NFFUTQSPCMFNTMJLF • 5PPNBOZCSBODIFTUPUFTU • $PNQMJDBUFEUFTUJOHFOWJSPONFOU • %PDLFSDBOTPMWFUIFNF⒏DJFOUMZ
,FZ1PJOUTUPVTF%PDLFSJO$* • 4FUVQTMBWF • 4JNQMJGZUFTU • "DDFMFSBUFUFTU • 3FUSJFWFCVJMESFTVMU •
6QMPBEBSDIJWF
1SPEVDUJPO6TF$BTFJO+BQBO
%PDLFSJO$* • (PPEQMBDFUPTUBSU%PDLFS • $*CFDPNFTDPNNPOQSBDUJDF • *OTUBMMJOH%PDLFSJO$*EPFTO`UDIBOHF NBOZUIJOHT • 8FDPVMEIBWFCFTUQSBDUJDFJOUIJTBSFB
IUUQTXXXEPDLFSDPNQSPEVDUTVTFDBTFT
None