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
The DShell Pattern (DevOpsDays London 2019)
Search
David McKay
September 27, 2019
Technology
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The DShell Pattern (DevOpsDays London 2019)
David McKay
September 27, 2019
More Decks by David McKay
See All by David McKay
The Telegraf Toolbelt (InfluxDays SF, 2019)
rawkode
0
210
Cloud Native Telegraf - Cloud Native London (September 2019)
rawkode
0
110
Developing Your Own Flux Packages (InfluxDays London 2019)
rawkode
0
150
Introduction to Time Series (Software Circus, April 2019)
rawkode
0
170
Introduction to Time Series (Cloud Native Kraków, April 2019)
rawkode
0
120
Introduction to Time Series (Cloud Native Wales, April 2019)
rawkode
0
120
Introduction to InfluxDB 2.0 (Kubernetes London - February 2019)
rawkode
0
110
Kickass Development Environments with Docker (PHPBenelux 2019)
rawkode
0
150
LaraconEU 2018 - Kickass Development Environments with Docker
rawkode
2
360
Other Decks in Technology
See All in Technology
Text-to-SQLをAgentCoreで実現し、生成されるSQLの精度を定量的に評価する
yakumo
2
660
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
310
事業価値を⽣み出すSREへ SREが担うべき意思決定の5層
kenta_hi
1
2.1k
なぜ人は自分のプロジェクトを 「なんちゃってアジャイル」と 自嘲するのか
kozotaira
0
260
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
グローバルチームと挑むプロダクト開発
sansantech
PRO
1
160
記録をかんたんに、提案をパーソナルに ── AIであすけんが目指すもの
oprstchn
0
170
プライバシー保護の理論と実践
lycorptech_jp
PRO
1
250
初めてのDatabricks勉強会
taka_aki
2
240
AIで政治は変わるのか? — 中高生と考えたAI時代の民主主義(東海高校サタデープログラム)
eitarosuda
0
400
攻撃者がいなくてもAIエージェントはインシデントを起こす
nomizone
0
200
デジタル・デザイン:次の50年を描く「進化する青写真」
y150saya
0
830
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
800
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
500
How to Talk to Developers About Accessibility
jct
2
280
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Marketing to machines
jonoalderson
1
5.6k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
170
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Navigating Weather and Climate Data
rabernat
0
280
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Transcript
The DShell Pattern DevOps Days London, 2019
David McKay ➔ Developer Advocate for InfluxData ➔ Kubernetes Release
Team ➔ Tweets @rawkode ★ Scottish ★ Lover of esoteric programming languages ★ Likes symmetry
BREAKING NEWS Some* developers don’t want to use Docker *
No developer with macOS wants to use Docker
Docker is useful Encapsulated Dependencies Documented Build Process Deployable
3 Components Dockerfile Docker Compose Makefile
Dockerfile Make it work for all environments
Dockerfile FROM elixir:1.9-alpine AS base FROM base AS development RUN
apk add --update vim git make FROM base AS build RUN make compile FROM base AS production COPY --from=build … ...
Docker Compose Make it as (more) painful as possible (than
normal)
dshell dshell: @docker-compose run \ --rm \ --service-ports \ --user
$UID \ --use-aliases \ --entrypoint=ash \ myapp
Encourage DShell Block Up service: myapp: entrypoint: sh command: echo
Publish Service Ports --service-ports Override Entrypoint --entrypoint=ash
UNPOPULAR OPINION DO NOT use compose syntax v3 in dev
Best Practice Use Depends On depends_on: mongodb: condition: service_healthy 12-Factor
env_file: .env env_file: - .env - .env.secret
Makefile Unify Developers
The Sausage .PHONY: dshell dclean up up: deps @mix run
--no-halt compile: deps @mix compile
up up: @npm run develop @mix test @FLASK_APP=hello flask run
dclean! dclean: @docker-compose down --rmi=local -v
Final API ❏ make dshell [host] ❏ make up [container]
❏ make test | deps | whatever [container] ❏ make dclean [host]
Better Together We’re deploying Docker to production (I hope), so
encourage (not force) it’s usage for local development; make it easy for people to dip their toe in.
VSCode Remotes { "dockerComposeFile": [ "../docker-compose.yml", ], "service": "node", }
Thank You ➔ Follow me on Twitter (@rawkode) ➔ At
the InfluxData booth (I’ve got badges and stickers) ➔ Come speak to me about InfluxDB, Cloud Native, Monitoring, Docker, or Kubernetes