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
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
160
Introduction to Time Series (Cloud Native Kraków, April 2019)
rawkode
0
110
Introduction to Time Series (Cloud Native Wales, April 2019)
rawkode
0
110
Introduction to InfluxDB 2.0 (Kubernetes London - February 2019)
rawkode
0
100
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
Claude code Orchestra
ozakiomumkj
3
920
React、まだ楽しくて草
uhyo
7
3.9k
関西に縁あるMicrosoft MVPsが語るCopilotの未来
kasada
0
1k
チームで実践する AI-DLC 思考の軌跡を残すチェックポイント設計
belongadmin
0
2.1k
Mastering Ruby Box
tagomoris
3
140
【Gen-AX】20260530開催_JJUG CCC 2026 Spring
genax
0
400
JJUG CCC 2026 Spring AI時代の開発こそ標準化を武器に! ― 方式・プロセス・プラットフォームの標準化
s27watanabe
2
690
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
190
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
170
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
160
新規事業を牽引する技術選定 〜フルスタックTypeScript開発の実践事例〜
nullnull
2
260
Gradle×GitHub_ActionsでCI時間を約50%短縮 ジョブ分割の設計と落とし穴 / Cutting CI Time by ~50% with Gradle and GitHub Actions: Job-Splitting Design and Pitfalls
takatty
0
620
Featured
See All Featured
Abbi's Birthday
coloredviolet
2
7.9k
Color Theory Basics | Prateek | Gurzu
gurzu
0
320
Deep Space Network (abreviated)
tonyrice
0
160
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
160
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
130
Automating Front-end Workflow
addyosmani
1370
210k
Designing for humans not robots
tammielis
254
26k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
190
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
170
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
360
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
520
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