Escolar Documentos
Profissional Documentos
Cultura Documentos
Woodruff
swoodruff@sparefoot.com
@sjwoodr
Meet Steve
Originally from Chicago
BS Comp Sci 92 - IL State University
MS Info Sys Mgmt 08 - Keller
System Admin for IBM, 1996-2000
Development & CM for Motorola, 2000-2011
CI&D on SPAWAR Project for the VA, 2011-2014
DevOps / CI&D / Automation @ SpareFoot, 2014
SpareFoot Info
SpareFoot is the worlds largest, simplest and best
marketplace for self-storage.
Founded 2008
Were establishing ourselves as the technology and
thought leaders of self-storage.
Located downtown Austin
DB
Workers
App
Servers
Static
Servers /
Cache
Types of Environments
DEV
STG
PROD
Every Commit
Reviewed Changes
Production Code
GateKeeper Workflow
Bamboo for CI & Stash for Source Control
Devs work on feature branches for each Jira story
Each commit & push of a branch to Stash results in Bamboo
building that code, deploying it to DEV and executing tests. If the
tests pass, that code is pushed to master. Master is our dirty
mainline branch.
Devs submit Pull-Requests in Stash for when they want their code to
actually be deployed to production - the code is merged to the
release branch, which gets built by Bamboo and deployed to our
Staging Environment (STG) and tested again.
Why Docker?
Primarily a PHP shop
Suddenly doing nodejs development
Our DevOps team is so small, wed have trouble keeping
up with the constantly changing requirements for the app
servers
We use SaltStack to rapidly deploy new servers but if
the requirements change over the course of a single
sprint its hard to keep up.
Docker
Dockers Build, Ship, & Run philosophy allows us to
build Docker App Servers, let the developers focus on
the software in the container, and we take care of
deploying it.
Docker lets us abstract away any system level
differences between the developers environment and
the dev, staging, & production environments.
A Typical Dockerfile
FROM
ubuntu:14.04!
RUN
apt-get update ; apt-get -y install
nodejs npm git supervisor wget!
!
RUN
ADD
supervisord.conf /etc/supervisor/
conf.d/supervisord.conf!
!
RUN
EXPOSE
3000!
CMD ["/usr/bin/supervisord"]
Questions?
???