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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
David McKay
September 27, 2019
Technology
0
220
The DShell Pattern (DevOpsDays London 2019)
David McKay
September 27, 2019
Tweet
Share
More Decks by David McKay
See All by David McKay
The Telegraf Toolbelt (InfluxDays SF, 2019)
rawkode
0
170
Cloud Native Telegraf - Cloud Native London (September 2019)
rawkode
0
85
Developing Your Own Flux Packages (InfluxDays London 2019)
rawkode
0
130
Introduction to Time Series (Software Circus, April 2019)
rawkode
0
150
Introduction to Time Series (Cloud Native Kraków, April 2019)
rawkode
0
100
Introduction to Time Series (Cloud Native Wales, April 2019)
rawkode
0
99
Introduction to InfluxDB 2.0 (Kubernetes London - February 2019)
rawkode
0
91
Kickass Development Environments with Docker (PHPBenelux 2019)
rawkode
0
140
LaraconEU 2018 - Kickass Development Environments with Docker
rawkode
2
350
Other Decks in Technology
See All in Technology
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
120
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.3k
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
640
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
390
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
350
What happened to RubyGems and what can we learn?
mikemcquaid
0
280
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
110
GitLab Duo Agent Platform × AGENTS.md で実現するSpec-Driven Development / GitLab Duo Agent Platform × AGENTS.md
n11sh1
0
130
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
GSIが複数キー対応したことで、俺達はいったい何が嬉しいのか?
smt7174
3
150
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
190
AI駆動PjMの理想像 と現在地 -実践例を添えて-
masahiro_okamura
1
110
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.1k
Producing Creativity
orderedlist
PRO
348
40k
The Spectacular Lies of Maps
axbom
PRO
1
520
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Designing Powerful Visuals for Engaging Learning
tmiket
0
230
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
Large-scale JavaScript Application Architecture
addyosmani
515
110k
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