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
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
190
Cloud Native Telegraf - Cloud Native London (September 2019)
rawkode
0
97
Developing Your Own Flux Packages (InfluxDays London 2019)
rawkode
0
140
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
10サービス以上のメール到達率改善を地道に継続的に進めている話 / Continue to improve email delivery rates across multiple services
yamaguchitk333
6
2.3k
AWS運用におけるAI Agent活用術 / JAWS-UG 神戸 #11 LT大会
genda
1
320
AWS WAFの運用を地道に改善し、自社で運用可能にするプラクティス
andpad
1
640
データ分析基盤の信頼を支える視点と設計
yuki_saito
0
130
AI飲み会幹事エージェントを作っただけなのに
ykimi
0
250
GitHub Copilot appで変わる GitHub Copilot CLI開発体験
tomokusaba
0
100
RedmineをAIで効率的に使う検証
yoshiokacb
0
170
AI時代に求められる思考のパラダイムシフト
nrinetcom
PRO
0
110
[みん強]AIの価値を最大化するデータ基盤戦略:Self-Service型Data Meshへの転換とAgentic AI Meshに向けた取り組み with Snowflake他
y_matsubara
1
160
DI コンテナ自動生成ツールを実装してみた / intro-autodi
uhzz
0
760
いつの間にかデータエンジニア以外の業務も増えていたけど、意外と経験が役に立ってる
zozotech
PRO
0
750
マンション備え付けのネットワークとLTE回線を組み合わせた ネットワークの安定化の考案
harutiro
1
140
Featured
See All Featured
Test your architecture with Archunit
thirion
1
2.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
How to make the Groovebox
asonas
2
2.2k
New Earth Scene 8
popppiees
3
2.2k
How to Ace a Technical Interview
jacobian
281
24k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
530
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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