Docker Stack
This project is dedicated to maintain a couple of best-practice Docker-based stacks and related images that can be used and adapted by your projects, or act as a reference point and inspiration when you set up your own Docker-based stack architecture., (*1)
The core stacks in this project have been verified to work well for both local development and high performance multi-node setups deployed at AWS using Docker Cloud., (*2)
Develop, Build, Test, Deploy and Maintain your 12-factor web app using Docker
Uses Docker Toolbox to maintain a base-practice Docker-based "one-process-per-container" stack and development workflows for your 12-factor web apps., (*3)
Enables easy app-specific orchestration of dockerized services (databases, mail servers, task runners, message queues etc)., (*4)
Requirements
- docker 1.8.3 (1.11.1+ recommended)
- docker-compose 1.4.2 (1.7.1+ recommended)
- git
Why use a Docker-based stack in the first place?
As a member of a developer team, the Docker-based stack enables you to ditch Vagrant/Puppet/Chef while still maintaining a cross-platform local development workflow similar to the powerful npm install
+ grunt serve
combo for javascript-based apps:, (*5)
docker-compose run --rm worker composer install
docker-compose up
Thus, in any team or project where multiple developers are involved, less time and hassle is necessary to get the project software running locally., (*6)
The stack can then be deployed to any docker host/swarm or orchestrated via Docker Cloud, providing a high degree of dev/prod parity:, (*7)
Why docker-stack
?
Setting up, configuring and maintaining a Docker-based stack takes time, and docker-stack makes it possible to re-use existing stack configurations which empowers the 12-factor web app., (*8)
Care has been taken to make all vital configuration files visible and easy customizable, so that it is straightforward to tweak, adjust and debug configuration issues., (*9)
Core Stacks
Publisher: neam
These stacks and underlying concepts are used in production by Neam Labs and are constantly tweaked to be faster and more reliable., (*10)
Publisher: schmunk42
These stacks and underlying concepts are used in production by Herzog Kommunikation - The Application Factory, (*11)
Miscellaneous Stacks
Publisher: neam
Publisher: schmunk42
There are three main ways to interact with a Docker-based once installed in your project:
* docker-compose
* docker-stack
CLI
* doma
, (*12)
Read more about them below., (*13)
docker-compose
Docker Compose is the heart of Docker Stack. Once a stack is installed in your project folder (and thus a docker-compose.yml file is present), docker-compose can be used "as usual"., (*14)
docker-stack
CLI
A wrapper around docker-compose
that allows to list, select and interact with third-party stacks without copying the stack files to the project folder., (*15)
Instructions for using/adopting docker-based stacks for your 12-factor web app:, (*16)
doma
DOcker and MAkefile combined for easy stack/application control., (*17)
Requirements:
* make
, (*18)
Control your stacks and applications with Makefile
templates for docker
, docker-composer
, tutum
, aws-s3
or mysql
., (*19)
For full documentation see GitHub Repository., (*20)
Configuration Generators included in Docker Stack
Usage
Building/forking Docker Stack
FAQ
What is a stack?
A stack is a collection of services that make up an application in a specific environment. A stack file is a file in YAML format that define one or more services. The YAML reference is documented here., (*21)
A stack is a convenient way to automate the deployment of multiple services that are linked to each other, without the need to define one by one., (*22)
As stack files also define environment variables and related environment-specific configuration, it is recommended to use one stack file per environment (dev, test, prod...)., (*23)
See Docker Cloud documentation, (*24)
License
MIT, (*25)