SlideShare a Scribd company logo
Michael Irwin
Application Architect, Virginia Tech
Docker Captain
@mikesir87
App-in-a-Box
with Docker App
Warning: Lots of content ahead!
@mikesir87
● Founded in 1872
● Main campus in Blacksburg, VA, USA
○ Six campuses throughout Virginia and one in Switzerland
● ~35,000 students and ~4,500 faculty/staff
● Manages research portfolio valued more than $520 million
About Virginia Tech
@mikesir87
Summit Overview
● Software designed to manage
sponsored research processes
○ Document management, collaboration,
compliance, and documentation
● First VT IT app to use containers and
deploy to public cloud
● System is composed of several
separately deployed components
@mikesir87
● The master branch is always production-quality code
● New branch created for new work
● Work committed on new branch
● Open a merge request when ready
● Code review performed and code merged
We use GitHub Flow
@mikesir87
With Simple Apps...
● Working on a feature is simply checking out a branch
○ Get all source code and environment together
○ May need to restart containers
@mikesir87
Summit Components
Desktop Client
AngularJS
Mobile Client
Angular 4
User Guide/Docs
Static HTML generated
from mkdocs
API
JavaEE in Wildfly
Admin Client
React
@mikesir87
Scenario 1...
● All new work is done on only a single component
Desktop Client
CREST-1111
Mobile Client
master
User Guide/Docs
master
API
master
Admin Client
master
@mikesir87
Scenario 2...
● New work requires updates in multiple components
Desktop Client
CREST-1234
Mobile Client
CREST-1234
User Guide/Docs
master
API
CREST-1234
Admin Client
master
@mikesir87
With Multiple Services...
● Switching features is much more complicated
○ Source code is still in individual components
○ Environment is scattered across repositories
@mikesir87
A frequent problem
● We frequently noticed that we would change to a new
branch, but not every component was updated
Desktop Client
CREST-1234
Mobile Client
CREST-1234
User Guide/Docs
master
API
CREST-1111
Admin Client
master
@mikesir87
Our Objective
● We want an “App-in-a-Box!” The ability to…
○ spin up the entire application (with all components)
○ use the latest versions of each component, whether feature
branch of latest master branch
@mikesir87
Our Sample App
@mikesir87
The App’s Components
Proxy
(Traefik)
React Client
app.dceu
Node API
api.dceu
MongoDB
db
@mikesir87
● Theme the app for DockerCon!
○ Change the welcome message (provided by API)
○ Apply a stylesheet to theme the client
Our Feature
Let’s check in with Sally!
@mikesir87
Anyone impressed?
@mikesir87
The secret sauce!
version: "3.7"
services:
api:
image: summit/api:abcdef
…
desktop-client:
image: summit/desktop:defabc
...
docs:
image: summit/docs:abc123
...
mobile-client:
image: summit/mobile:123456
...
version: "3.7"
services:
api:
image: summit/api:234567
...
desktop-client:
image: summit/desktop:defabc
...
docs:
image: summit/docs:abc123
...
mobile-client:
image: summit/mobile:123456
...
Pre-push to API Post-push to API
@mikesir87
Mirror your environment!
Desktop Client
Mobile Client
User Guide/Docs
API
Admin Client
Database
Proxy (Traefik)
● If you’re deploying to multiple
hostnames, do the same locally!
● Stop worrying about port conflicts in
local development
● We love using Traefik!
@mikesir87
Great, but how?
@mikesir87
● Push “current environment” state into its own repo
● Use the CI pipelines to update env when any component is updated
Automatic updates
Desktop App
Build and push image Notify summit-env
summit-env
Update Compose file
Push new Docker
App image
Any other component repo
@mikesir87
The Build Pipeline
Commit and push
Update compose file
2
Create branch
1Feature
branch
exist?
Yes
No
Build triggered by upstream component
on update branch
Build triggered by update to feature branch
Push Docker App
1
What is Docker App?
@mikesir87
Docker App
● An experimental utility designed to make compose files
shareable and reusable
● Creates a Docker image containing:
– Docker Compose file
– Settings and metadata files
– Other supporting files
@mikesir87
Docker App, cont’d.
● App shared through a registry, just as any other image
● Settings allow for configuration within the compose file
● When deploying, custom setting values can be applied
● Can generate Helm charts
@mikesir87
docker-app init dceu
Bootstraps a project
docker-app push dceu
Create an image using the local files and push it
docker-app deploy mikesir87/dceu:master
Pull the docker app and deploy it
docker-app render mikesir87/dceu.dockerapp:master
Pull the app and output the Compose file to stdout
Docker App commands (a few anyways)
Let’s dive into an image!
How’s this change local dev?
@mikesir87
Local Dev Environment
Proxy Desktop Client
app.dceu
API
api.dceu
Database
db
Desktop Client
app.dceu
@mikesir87
● Docker Compose file format 3.4+
allows extension fields
● Docker App observes specification of
x-enabled on a service
● If the value is false, that service is NOT
rendered/deployed
Disabling a service
version: "3.7"
services:
desktop-client:
image: my-desktop-client-image
x-enabled: ${enable-desktop-client}
labels:
traefik.frontend.rule: Host:app.localhost
...
@mikesir87
Hooking in a Dev Container
● Each component’s docker-compose.yml will:
○ Start a dev-ready container
○ Use the same networks from the Docker App
○ Add labels to configure Traefik to send traffic
Show me the demo again!
Great! What else can we do?
@mikesir87
● With docker-app render, we can use other compose features
● Feature One: Docker Compose allows use of multiple
compose files
○ Using multiple -f flags, we can add or modify services in the stack
○ NOTE: You can pipe the docker-app render directly to compose.
But, you can’t use a piped file AND a local file together.
Layering additional services
@mikesir87
Layering in test containers
Proxy Desktop Client
app.dceu
API
api.dceu
Database
db
Selenium with
Chrome
Test Code
@mikesir87
Running Tests with Docker
● Feature Two: Usage of --exit-code-from will:
○ Spin up all containers in the stack
○ Wait for the specified service to exit
○ Relay exit code from service as result of compose run
Proxy
Desktop Client
app.dceu
API
api.dceu
Database
db
Selenium
with Chrome
Test Code
Demo Time!
Tests failed! Let’s fix them!
@mikesir87
● Spin up the Selenium service
● Write tests
● Point tests to go against the Selenium service
Fixing the Tests
Proxy Desktop Client
app.dceu
API
api.dceu
Database
db
Selenium
with Chrome
My Code
@mikesir87
Generalizing things
● We noticed we frequently wanted to disable services for
local development
● Keeping track of the settings to disable services is a pain
● Wouldn’t it be nice to have a tool that asked us what
services we want disabled and kept track of the settings?
@mikesir87
DevDock
● With DevDock, we add additional fields
to each service in the Docker App:
○ x-devdock-description - a human
readable description of the service
○ x-devdock-setting - the name of the
settings that must be set to false to
disable the service
version: "3.7"
services:
api:
image: my-api-image
x-enabled: ${enable-api}
x-devdock-description: API/Backend
x-devdock-setting: enable-api
...
desktop-client:
image: my-desktop-client-image
x-enabled: ${enable-client}
x-devdock-description: Desktop Client
x-devdock-setting: enable-client
...
@mikesir87
DevDock, cont’d.
Usage: devdock [project] [dockerapp-image]
● Two ways to run the cli:
○ No additional args - presents a cli-based UI to allow selection
of services to disable
○ Additional args - passes through to an underlying Docker
Compose command that’s running on the rendered output
Demo Time!
@mikesir87
One more thing!
● Create your own team env CLI by aliasing devdock!
alias dceu="devdock dceu mikesir87/dceu.dockerapp:{BRANCH} $@"
dceu up -d
dceu logs -f
dceu down
@mikesir87
How to install DevDock?
● Currently distributed as a global NPM module.
○ So… just npm install!
npm install -g devdock
@mikesir87
Recap
● Docker Compose is incredible and has great features!
● Docker App is awesome and makes local dev MUCH better!
● You can use extension fields to build tools to help your devs
@mikesir87
Testimonials
“Summit-in-a-box healed my relationship with my
wife and kids”
- Justin Boblitt
“I am getting better gas mileage in my Jeep now.”
- Jeff Mitchell
@mikesir87
(Actual) Testimonials
“Thumbs are raised. Summit-in-a-Box gives me more
confidence that I'm running the latest versions of each
component, preventing bugs and helping isolate new
bugs I've introduced. Summit-in-a-Box hides the fact that
we're even sharing docker-compose files.”
- Justin Boblitt
“SIAB has made it even easier for me to spin up or
disable different components in my stack as
testing requirements change.”
- Jeff Mitchell
Thanks!
Take A Breakout Survey
Access your session and/or workshop surveys for the conference at any time by tapping the Sessions
link on the navigation menu or block on the home screen.
Find the session/workshop you attended and tap on it to view the session details. On this page, you will
find a link to the survey.
Questions?
Ad

More Related Content

What's hot (20)

Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Docker, Inc.
 
DockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mphDockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mph
Docker, Inc.
 
DCEU 18: From Monolith to Microservices
DCEU 18: From Monolith to MicroservicesDCEU 18: From Monolith to Microservices
DCEU 18: From Monolith to Microservices
Docker, Inc.
 
On-the-Fly Containerization of Enterprise Java & .NET Apps by Amjad Afanah
On-the-Fly Containerization of Enterprise Java & .NET Apps by Amjad AfanahOn-the-Fly Containerization of Enterprise Java & .NET Apps by Amjad Afanah
On-the-Fly Containerization of Enterprise Java & .NET Apps by Amjad Afanah
Docker, Inc.
 
DCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and ArchitectureDCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and Architecture
Docker, Inc.
 
DCEU 18: Docker Container Security
DCEU 18: Docker Container SecurityDCEU 18: Docker Container Security
DCEU 18: Docker Container Security
Docker, Inc.
 
Building Your Docker Swarm Tech Stack
Building Your Docker Swarm Tech StackBuilding Your Docker Swarm Tech Stack
Building Your Docker Swarm Tech Stack
Bret Fisher
 
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
Docker, Inc.
 
Automating CICD Pipeline with GitLab and Docker Containers for Java Applications
Automating CICD Pipeline with GitLab and Docker Containers for Java ApplicationsAutomating CICD Pipeline with GitLab and Docker Containers for Java Applications
Automating CICD Pipeline with GitLab and Docker Containers for Java Applications
Jelastic Multi-Cloud PaaS
 
Modernizing Java Apps with Docker
Modernizing Java Apps with DockerModernizing Java Apps with Docker
Modernizing Java Apps with Docker
Docker, Inc.
 
Packaging software for the distribution on the edge
Packaging software for the distribution on the edgePackaging software for the distribution on the edge
Packaging software for the distribution on the edge
Docker, Inc.
 
DCEU 18: Provisioning and Managing Storage for Docker Containers
DCEU 18: Provisioning and Managing Storage for Docker ContainersDCEU 18: Provisioning and Managing Storage for Docker Containers
DCEU 18: Provisioning and Managing Storage for Docker Containers
Docker, Inc.
 
Docker Federal Summit 2017 General Session
Docker Federal Summit 2017 General SessionDocker Federal Summit 2017 General Session
Docker Federal Summit 2017 General Session
Docker, Inc.
 
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
Docker, Inc.
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013
aspyker
 
Docker ee an architecture and operations overview
Docker ee an architecture and operations overviewDocker ee an architecture and operations overview
Docker ee an architecture and operations overview
Docker, Inc.
 
Docker - A curtain raiser to the Container world
Docker - A curtain raiser to the Container worldDocker - A curtain raiser to the Container world
Docker - A curtain raiser to the Container world
zekeLabs Technologies
 
Considerations for operating docker at scale
Considerations for operating docker at scaleConsiderations for operating docker at scale
Considerations for operating docker at scale
Docker, Inc.
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker Containers
Docker, Inc.
 
Back to the Future: Containerize Legacy Applications
Back to the Future: Containerize Legacy ApplicationsBack to the Future: Containerize Legacy Applications
Back to the Future: Containerize Legacy Applications
Docker, Inc.
 
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Docker, Inc.
 
DockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mphDockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mph
Docker, Inc.
 
DCEU 18: From Monolith to Microservices
DCEU 18: From Monolith to MicroservicesDCEU 18: From Monolith to Microservices
DCEU 18: From Monolith to Microservices
Docker, Inc.
 
On-the-Fly Containerization of Enterprise Java & .NET Apps by Amjad Afanah
On-the-Fly Containerization of Enterprise Java & .NET Apps by Amjad AfanahOn-the-Fly Containerization of Enterprise Java & .NET Apps by Amjad Afanah
On-the-Fly Containerization of Enterprise Java & .NET Apps by Amjad Afanah
Docker, Inc.
 
DCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and ArchitectureDCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and Architecture
Docker, Inc.
 
DCEU 18: Docker Container Security
DCEU 18: Docker Container SecurityDCEU 18: Docker Container Security
DCEU 18: Docker Container Security
Docker, Inc.
 
Building Your Docker Swarm Tech Stack
Building Your Docker Swarm Tech StackBuilding Your Docker Swarm Tech Stack
Building Your Docker Swarm Tech Stack
Bret Fisher
 
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
Docker, Inc.
 
Automating CICD Pipeline with GitLab and Docker Containers for Java Applications
Automating CICD Pipeline with GitLab and Docker Containers for Java ApplicationsAutomating CICD Pipeline with GitLab and Docker Containers for Java Applications
Automating CICD Pipeline with GitLab and Docker Containers for Java Applications
Jelastic Multi-Cloud PaaS
 
Modernizing Java Apps with Docker
Modernizing Java Apps with DockerModernizing Java Apps with Docker
Modernizing Java Apps with Docker
Docker, Inc.
 
Packaging software for the distribution on the edge
Packaging software for the distribution on the edgePackaging software for the distribution on the edge
Packaging software for the distribution on the edge
Docker, Inc.
 
DCEU 18: Provisioning and Managing Storage for Docker Containers
DCEU 18: Provisioning and Managing Storage for Docker ContainersDCEU 18: Provisioning and Managing Storage for Docker Containers
DCEU 18: Provisioning and Managing Storage for Docker Containers
Docker, Inc.
 
Docker Federal Summit 2017 General Session
Docker Federal Summit 2017 General SessionDocker Federal Summit 2017 General Session
Docker Federal Summit 2017 General Session
Docker, Inc.
 
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
Docker, Inc.
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013
aspyker
 
Docker ee an architecture and operations overview
Docker ee an architecture and operations overviewDocker ee an architecture and operations overview
Docker ee an architecture and operations overview
Docker, Inc.
 
Docker - A curtain raiser to the Container world
Docker - A curtain raiser to the Container worldDocker - A curtain raiser to the Container world
Docker - A curtain raiser to the Container world
zekeLabs Technologies
 
Considerations for operating docker at scale
Considerations for operating docker at scaleConsiderations for operating docker at scale
Considerations for operating docker at scale
Docker, Inc.
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker Containers
Docker, Inc.
 
Back to the Future: Containerize Legacy Applications
Back to the Future: Containerize Legacy ApplicationsBack to the Future: Containerize Legacy Applications
Back to the Future: Containerize Legacy Applications
Docker, Inc.
 

Similar to DCEU 18: App-in-a-Box with Docker Application Packages (20)

Docker primer and tips
Docker primer and tipsDocker primer and tips
Docker primer and tips
Samuel Chow
 
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp BerlinTech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
LeanIX GmbH
 
ContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small business
Docker-Hanoi
 
Dockerizing react app
Dockerizing react appDockerizing react app
Dockerizing react app
Malang QA Community
 
20170321 docker with Visual Studio 2017
20170321 docker with Visual Studio 201720170321 docker with Visual Studio 2017
20170321 docker with Visual Studio 2017
Takayoshi Tanaka
 
Sprint 17
Sprint 17Sprint 17
Sprint 17
ManageIQ
 
Ultimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on KubernetesUltimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on Kubernetes
kloia
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - Presentation
Alex Vranceanu
 
Rome .NET Conference 2024 - Remote Conference
Rome .NET Conference 2024  - Remote ConferenceRome .NET Conference 2024  - Remote Conference
Rome .NET Conference 2024 - Remote Conference
Hamida Rebai Trabelsi
 
Automating Workflows for Analytics Pipelines
Automating Workflows for Analytics PipelinesAutomating Workflows for Analytics Pipelines
Automating Workflows for Analytics Pipelines
Sadayuki Furuhashi
 
[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin
HanLing Shen
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
Microsoft
 
Introduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxDataIntroduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxData
InfluxData
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
Simon Storm
 
DevAssistant, Docker and You
DevAssistant, Docker and YouDevAssistant, Docker and You
DevAssistant, Docker and You
BalaBit
 
Tampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerTampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday Docker
Sakari Hoisko
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
Jérôme Petazzoni
 
Building production-quality apps with Node.js
Building production-quality apps with Node.jsBuilding production-quality apps with Node.js
Building production-quality apps with Node.js
mattpardee
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/Kubernetes
Chakradhar Rao Jonagam
 
Deploy made easy (even on Friday)
Deploy made easy (even on Friday)Deploy made easy (even on Friday)
Deploy made easy (even on Friday)
Riccardo Bini
 
Docker primer and tips
Docker primer and tipsDocker primer and tips
Docker primer and tips
Samuel Chow
 
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp BerlinTech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
LeanIX GmbH
 
ContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small business
Docker-Hanoi
 
20170321 docker with Visual Studio 2017
20170321 docker with Visual Studio 201720170321 docker with Visual Studio 2017
20170321 docker with Visual Studio 2017
Takayoshi Tanaka
 
Ultimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on KubernetesUltimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on Kubernetes
kloia
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - Presentation
Alex Vranceanu
 
Rome .NET Conference 2024 - Remote Conference
Rome .NET Conference 2024  - Remote ConferenceRome .NET Conference 2024  - Remote Conference
Rome .NET Conference 2024 - Remote Conference
Hamida Rebai Trabelsi
 
Automating Workflows for Analytics Pipelines
Automating Workflows for Analytics PipelinesAutomating Workflows for Analytics Pipelines
Automating Workflows for Analytics Pipelines
Sadayuki Furuhashi
 
[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin
HanLing Shen
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
Microsoft
 
Introduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxDataIntroduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxData
InfluxData
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
Simon Storm
 
DevAssistant, Docker and You
DevAssistant, Docker and YouDevAssistant, Docker and You
DevAssistant, Docker and You
BalaBit
 
Tampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerTampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday Docker
Sakari Hoisko
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
Jérôme Petazzoni
 
Building production-quality apps with Node.js
Building production-quality apps with Node.jsBuilding production-quality apps with Node.js
Building production-quality apps with Node.js
mattpardee
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/Kubernetes
Chakradhar Rao Jonagam
 
Deploy made easy (even on Friday)
Deploy made easy (even on Friday)Deploy made easy (even on Friday)
Deploy made easy (even on Friday)
Riccardo Bini
 
Ad

More from Docker, Inc. (20)

Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
Docker, Inc.
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
Docker, Inc.
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
Docker, Inc.
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
Docker, Inc.
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
Docker, Inc.
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
Docker, Inc.
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
Docker, Inc.
 
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
Docker, Inc.
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
Docker, Inc.
 
Become a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeBecome a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio Code
Docker, Inc.
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
Docker, Inc.
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
Docker, Inc.
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
Docker, Inc.
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
Docker, Inc.
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
Docker, Inc.
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
Docker, Inc.
 
Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
Docker, Inc.
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
Docker, Inc.
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
Docker, Inc.
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
Docker, Inc.
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
Docker, Inc.
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
Docker, Inc.
 
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
Docker, Inc.
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
Docker, Inc.
 
Become a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeBecome a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio Code
Docker, Inc.
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
Docker, Inc.
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
Docker, Inc.
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
Docker, Inc.
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
Docker, Inc.
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
Docker, Inc.
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
Docker, Inc.
 
Ad

Recently uploaded (20)

Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 

DCEU 18: App-in-a-Box with Docker Application Packages

  • 1. Michael Irwin Application Architect, Virginia Tech Docker Captain @mikesir87 App-in-a-Box with Docker App
  • 2. Warning: Lots of content ahead!
  • 3. @mikesir87 ● Founded in 1872 ● Main campus in Blacksburg, VA, USA ○ Six campuses throughout Virginia and one in Switzerland ● ~35,000 students and ~4,500 faculty/staff ● Manages research portfolio valued more than $520 million About Virginia Tech
  • 4. @mikesir87 Summit Overview ● Software designed to manage sponsored research processes ○ Document management, collaboration, compliance, and documentation ● First VT IT app to use containers and deploy to public cloud ● System is composed of several separately deployed components
  • 5. @mikesir87 ● The master branch is always production-quality code ● New branch created for new work ● Work committed on new branch ● Open a merge request when ready ● Code review performed and code merged We use GitHub Flow
  • 6. @mikesir87 With Simple Apps... ● Working on a feature is simply checking out a branch ○ Get all source code and environment together ○ May need to restart containers
  • 7. @mikesir87 Summit Components Desktop Client AngularJS Mobile Client Angular 4 User Guide/Docs Static HTML generated from mkdocs API JavaEE in Wildfly Admin Client React
  • 8. @mikesir87 Scenario 1... ● All new work is done on only a single component Desktop Client CREST-1111 Mobile Client master User Guide/Docs master API master Admin Client master
  • 9. @mikesir87 Scenario 2... ● New work requires updates in multiple components Desktop Client CREST-1234 Mobile Client CREST-1234 User Guide/Docs master API CREST-1234 Admin Client master
  • 10. @mikesir87 With Multiple Services... ● Switching features is much more complicated ○ Source code is still in individual components ○ Environment is scattered across repositories
  • 11. @mikesir87 A frequent problem ● We frequently noticed that we would change to a new branch, but not every component was updated Desktop Client CREST-1234 Mobile Client CREST-1234 User Guide/Docs master API CREST-1111 Admin Client master
  • 12. @mikesir87 Our Objective ● We want an “App-in-a-Box!” The ability to… ○ spin up the entire application (with all components) ○ use the latest versions of each component, whether feature branch of latest master branch
  • 14. @mikesir87 The App’s Components Proxy (Traefik) React Client app.dceu Node API api.dceu MongoDB db
  • 15. @mikesir87 ● Theme the app for DockerCon! ○ Change the welcome message (provided by API) ○ Apply a stylesheet to theme the client Our Feature
  • 16. Let’s check in with Sally!
  • 18. @mikesir87 The secret sauce! version: "3.7" services: api: image: summit/api:abcdef … desktop-client: image: summit/desktop:defabc ... docs: image: summit/docs:abc123 ... mobile-client: image: summit/mobile:123456 ... version: "3.7" services: api: image: summit/api:234567 ... desktop-client: image: summit/desktop:defabc ... docs: image: summit/docs:abc123 ... mobile-client: image: summit/mobile:123456 ... Pre-push to API Post-push to API
  • 19. @mikesir87 Mirror your environment! Desktop Client Mobile Client User Guide/Docs API Admin Client Database Proxy (Traefik) ● If you’re deploying to multiple hostnames, do the same locally! ● Stop worrying about port conflicts in local development ● We love using Traefik!
  • 21. @mikesir87 ● Push “current environment” state into its own repo ● Use the CI pipelines to update env when any component is updated Automatic updates Desktop App Build and push image Notify summit-env summit-env Update Compose file Push new Docker App image Any other component repo
  • 22. @mikesir87 The Build Pipeline Commit and push Update compose file 2 Create branch 1Feature branch exist? Yes No Build triggered by upstream component on update branch Build triggered by update to feature branch Push Docker App 1
  • 24. @mikesir87 Docker App ● An experimental utility designed to make compose files shareable and reusable ● Creates a Docker image containing: – Docker Compose file – Settings and metadata files – Other supporting files
  • 25. @mikesir87 Docker App, cont’d. ● App shared through a registry, just as any other image ● Settings allow for configuration within the compose file ● When deploying, custom setting values can be applied ● Can generate Helm charts
  • 26. @mikesir87 docker-app init dceu Bootstraps a project docker-app push dceu Create an image using the local files and push it docker-app deploy mikesir87/dceu:master Pull the docker app and deploy it docker-app render mikesir87/dceu.dockerapp:master Pull the app and output the Compose file to stdout Docker App commands (a few anyways)
  • 27. Let’s dive into an image!
  • 28. How’s this change local dev?
  • 29. @mikesir87 Local Dev Environment Proxy Desktop Client app.dceu API api.dceu Database db Desktop Client app.dceu
  • 30. @mikesir87 ● Docker Compose file format 3.4+ allows extension fields ● Docker App observes specification of x-enabled on a service ● If the value is false, that service is NOT rendered/deployed Disabling a service version: "3.7" services: desktop-client: image: my-desktop-client-image x-enabled: ${enable-desktop-client} labels: traefik.frontend.rule: Host:app.localhost ...
  • 31. @mikesir87 Hooking in a Dev Container ● Each component’s docker-compose.yml will: ○ Start a dev-ready container ○ Use the same networks from the Docker App ○ Add labels to configure Traefik to send traffic
  • 32. Show me the demo again!
  • 33. Great! What else can we do?
  • 34. @mikesir87 ● With docker-app render, we can use other compose features ● Feature One: Docker Compose allows use of multiple compose files ○ Using multiple -f flags, we can add or modify services in the stack ○ NOTE: You can pipe the docker-app render directly to compose. But, you can’t use a piped file AND a local file together. Layering additional services
  • 35. @mikesir87 Layering in test containers Proxy Desktop Client app.dceu API api.dceu Database db Selenium with Chrome Test Code
  • 36. @mikesir87 Running Tests with Docker ● Feature Two: Usage of --exit-code-from will: ○ Spin up all containers in the stack ○ Wait for the specified service to exit ○ Relay exit code from service as result of compose run Proxy Desktop Client app.dceu API api.dceu Database db Selenium with Chrome Test Code
  • 39. @mikesir87 ● Spin up the Selenium service ● Write tests ● Point tests to go against the Selenium service Fixing the Tests Proxy Desktop Client app.dceu API api.dceu Database db Selenium with Chrome My Code
  • 40. @mikesir87 Generalizing things ● We noticed we frequently wanted to disable services for local development ● Keeping track of the settings to disable services is a pain ● Wouldn’t it be nice to have a tool that asked us what services we want disabled and kept track of the settings?
  • 41. @mikesir87 DevDock ● With DevDock, we add additional fields to each service in the Docker App: ○ x-devdock-description - a human readable description of the service ○ x-devdock-setting - the name of the settings that must be set to false to disable the service version: "3.7" services: api: image: my-api-image x-enabled: ${enable-api} x-devdock-description: API/Backend x-devdock-setting: enable-api ... desktop-client: image: my-desktop-client-image x-enabled: ${enable-client} x-devdock-description: Desktop Client x-devdock-setting: enable-client ...
  • 42. @mikesir87 DevDock, cont’d. Usage: devdock [project] [dockerapp-image] ● Two ways to run the cli: ○ No additional args - presents a cli-based UI to allow selection of services to disable ○ Additional args - passes through to an underlying Docker Compose command that’s running on the rendered output
  • 44. @mikesir87 One more thing! ● Create your own team env CLI by aliasing devdock! alias dceu="devdock dceu mikesir87/dceu.dockerapp:{BRANCH} $@" dceu up -d dceu logs -f dceu down
  • 45. @mikesir87 How to install DevDock? ● Currently distributed as a global NPM module. ○ So… just npm install! npm install -g devdock
  • 46. @mikesir87 Recap ● Docker Compose is incredible and has great features! ● Docker App is awesome and makes local dev MUCH better! ● You can use extension fields to build tools to help your devs
  • 47. @mikesir87 Testimonials “Summit-in-a-box healed my relationship with my wife and kids” - Justin Boblitt “I am getting better gas mileage in my Jeep now.” - Jeff Mitchell
  • 48. @mikesir87 (Actual) Testimonials “Thumbs are raised. Summit-in-a-Box gives me more confidence that I'm running the latest versions of each component, preventing bugs and helping isolate new bugs I've introduced. Summit-in-a-Box hides the fact that we're even sharing docker-compose files.” - Justin Boblitt “SIAB has made it even easier for me to spin up or disable different components in my stack as testing requirements change.” - Jeff Mitchell
  • 50. Take A Breakout Survey Access your session and/or workshop surveys for the conference at any time by tapping the Sessions link on the navigation menu or block on the home screen. Find the session/workshop you attended and tap on it to view the session details. On this page, you will find a link to the survey.