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
200
Cloud Native Telegraf - Cloud Native London (September 2019)
rawkode
0
100
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
110
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
Platform engineering for developers, architects & the rest of us (AI agents)
danielbryantuk
0
180
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
1.6k
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
260
はじめてのDatadog
kairim0
0
280
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.8k
Amazon Bedrock AgentCore ワークショップ JAWS UG TOHOKU / amazon-bedrock-agentcore-workshop-jawsug-tohoku-2026
gawa
8
330
React、まだ楽しくて草
uhyo
7
4.1k
Rubyで音を視る
ydah
1
100
個人の発見を、組織の知恵に 〜生成AI活用を"探索"から"組織の仕組み"へ〜
kintotechdev
2
1k
生成 AI × MCP で切り拓く次世代 SRE!自律型運用への挑戦と開発者体験の進化
_awache
0
160
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
540
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.8k
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
What's in a price? How to price your products and services
michaelherold
247
13k
Scaling GitHub
holman
464
140k
Building Applications with DynamoDB
mza
96
7.1k
How GitHub (no longer) Works
holman
316
150k
Building AI with AI
inesmontani
PRO
1
1.1k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
550
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Paper Plane (Part 1)
katiecoart
PRO
0
8.5k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
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