SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
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?

Weitere ähnliche Inhalte

Was ist angesagt?

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 200mphDocker, Inc.
 
DCEU 18: From Monolith to Microservices
DCEU 18: From Monolith to MicroservicesDCEU 18: From Monolith to Microservices
DCEU 18: From Monolith to MicroservicesDocker, 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 AfanahDocker, 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 ArchitectureDocker, Inc.
 
DCEU 18: Docker Container Security
DCEU 18: Docker Container SecurityDCEU 18: Docker Container Security
DCEU 18: Docker Container SecurityDocker, Inc.
 
Building Your Docker Swarm Tech Stack
Building Your Docker Swarm Tech StackBuilding Your Docker Swarm Tech Stack
Building Your Docker Swarm Tech StackBret 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 ApplicationsJelastic Multi-Cloud PaaS
 
Modernizing Java Apps with Docker
Modernizing Java Apps with DockerModernizing Java Apps with Docker
Modernizing Java Apps with DockerDocker, 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 edgeDocker, 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 ContainersDocker, Inc.
 
Docker Federal Summit 2017 General Session
Docker Federal Summit 2017 General SessionDocker Federal Summit 2017 General Session
Docker Federal Summit 2017 General SessionDocker, 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 2013aspyker
 
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 overviewDocker, 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 worldzekeLabs Technologies
 
Considerations for operating docker at scale
Considerations for operating docker at scaleConsiderations for operating docker at scale
Considerations for operating docker at scaleDocker, Inc.
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDocker, 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 ApplicationsDocker, Inc.
 

Was ist angesagt? (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...
 
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
 
DCEU 18: From Monolith to Microservices
DCEU 18: From Monolith to MicroservicesDCEU 18: From Monolith to Microservices
DCEU 18: From Monolith to Microservices
 
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
 
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
 
DCEU 18: Docker Container Security
DCEU 18: Docker Container SecurityDCEU 18: Docker Container Security
DCEU 18: Docker Container Security
 
Building Your Docker Swarm Tech Stack
Building Your Docker Swarm Tech StackBuilding Your Docker Swarm Tech Stack
Building Your Docker Swarm Tech Stack
 
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...
 
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
 
Modernizing Java Apps with Docker
Modernizing Java Apps with DockerModernizing Java Apps with Docker
Modernizing Java Apps with Docker
 
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
 
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 Federal Summit 2017 General Session
Docker Federal Summit 2017 General SessionDocker Federal Summit 2017 General Session
Docker Federal Summit 2017 General Session
 
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
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013
 
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 - 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
 
Considerations for operating docker at scale
Considerations for operating docker at scaleConsiderations for operating docker at scale
Considerations for operating docker at scale
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker Containers
 
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
 

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

Docker primer and tips
Docker primer and tipsDocker primer and tips
Docker primer and tipsSamuel 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 BerlinLeanIX GmbH
 
ContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessDocker-Hanoi
 
20170321 docker with Visual Studio 2017
20170321 docker with Visual Studio 201720170321 docker with Visual Studio 2017
20170321 docker with Visual Studio 2017Takayoshi 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 Kuberneteskloia
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationAlex Vranceanu
 
Rome .NET Conference 2024 - Remote Conference
Rome .NET Conference 2024  - Remote ConferenceRome .NET Conference 2024  - Remote Conference
Rome .NET Conference 2024 - Remote ConferenceHamida Rebai Trabelsi
 
Automating Workflows for Analytics Pipelines
Automating Workflows for Analytics PipelinesAutomating Workflows for Analytics Pipelines
Automating Workflows for Analytics PipelinesSadayuki Furuhashi
 
[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson LinHanLing Shen
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Microsoft
 
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 InfluxDataInfluxData
 
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-14Simon Storm
 
DevAssistant, Docker and You
DevAssistant, Docker and YouDevAssistant, Docker and You
DevAssistant, Docker and YouBalaBit
 
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 DockerSakari 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.jsmattpardee
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesChakradhar 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
 

Ähnlich wie 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
 
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
 
ContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small business
 
Dockerizing react app
Dockerizing react appDockerizing react app
Dockerizing react app
 
20170321 docker with Visual Studio 2017
20170321 docker with Visual Studio 201720170321 docker with Visual Studio 2017
20170321 docker with Visual Studio 2017
 
Sprint 17
Sprint 17Sprint 17
Sprint 17
 
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
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - Presentation
 
Rome .NET Conference 2024 - Remote Conference
Rome .NET Conference 2024  - Remote ConferenceRome .NET Conference 2024  - Remote Conference
Rome .NET Conference 2024 - Remote Conference
 
Automating Workflows for Analytics Pipelines
Automating Workflows for Analytics PipelinesAutomating Workflows for Analytics Pipelines
Automating Workflows for Analytics Pipelines
 
[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
 
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
 
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
 
DevAssistant, Docker and You
DevAssistant, Docker and YouDevAssistant, Docker and You
DevAssistant, Docker and You
 
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
 
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,...
 
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
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/Kubernetes
 
Deploy made easy (even on Friday)
Deploy made easy (even on Friday)Deploy made easy (even on Friday)
Deploy made easy (even on Friday)
 

Mehr von 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 BuildDocker, 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 AWSDocker, Inc.
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXDocker, 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 ComposeDocker, 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 SalesforceDocker, 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 HubDocker, Inc.
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices WorldDocker, 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 DockerDocker, 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 CodeDocker, 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 RegistryDocker, 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 ScaleDocker, 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 ModelDocker, 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 AWSDocker, 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 ArchitectureDocker, Inc.
 

Mehr von 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
 
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
 
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
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
 
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
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
 
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
 
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
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
 
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...
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
 
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
 
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
 
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!
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
 
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
 
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
 
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...
 
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
 

Kürzlich hochgeladen

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 

Kürzlich hochgeladen (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 

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.