Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
The DShell Pattern (DevOpsDays London 2019)
Search
David McKay
September 27, 2019
Technology
260
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
220
Cloud Native Telegraf - Cloud Native London (September 2019)
rawkode
0
130
Developing Your Own Flux Packages (InfluxDays London 2019)
rawkode
0
170
Introduction to Time Series (Software Circus, April 2019)
rawkode
0
190
Introduction to Time Series (Cloud Native Kraków, April 2019)
rawkode
0
130
Introduction to Time Series (Cloud Native Wales, April 2019)
rawkode
0
150
Introduction to InfluxDB 2.0 (Kubernetes London - February 2019)
rawkode
0
120
Kickass Development Environments with Docker (PHPBenelux 2019)
rawkode
0
160
LaraconEU 2018 - Kickass Development Environments with Docker
rawkode
2
370
Other Decks in Technology
See All in Technology
生き様としてのSRE
hokkai7go
0
110
Vue.jsのGitHubから学ぶ意思決定
yut0naga1_fa
1
330
AIコーディングエージェント開発_全体像
happysamurai294
0
120
2026-10-24 JAWS JAWS-UG 茨城 #18 IAM Policy Autopilotってなにさ。terraform planからIAM Policyつくれるの? / What's IAM Policy Autopilot
masasuzu
0
180
日本AIベンチャーレポート2026
kentarofujii
0
260
バイブコーディングの特徴と「コケて直す」ループ
happysamurai294
0
110
ポケモン対戦を自動で記録して振り返ろう
fufufukakaka
0
420
Snowflake でできることが増えたら、 ABAC が必要になった
kaeton
0
120
AWSDirectConnectの構築の進め方を整理してみた
masa_my
1
210
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
530
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
13k
Flutter Widget Previewerで始めるUIプレビューとVRTの自動化
sakusaku3939
0
160
Featured
See All Featured
Practical Orchestrator
shlominoach
192
12k
Faster Mobile Websites
deanohume
310
32k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
900
Typedesign – Prime Four
hannesfritz
42
3.2k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
370
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.5k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
330
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
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