Development using Docker
Table of Contents
- 1. Development using Docker
- 2. About Me
- 3. oppositeOf Advanced
- 4. Trying to Solve
- 5. What is a Container
- 6. Process Overview
- 7. Dockerfile
- 8. Dockerfile Demo
- 9. Docker Compose
- 10. Docker-Compose Demo
- 11. File System 1
- 12. File System 2
- 13. Useful Commands
- 14. Results: The Good
- 15. Results: The Whoopsie Daisy
- 16. Other things to consider
- 17. Thanks
- 18. You Talked too Fast Moron
1 Development using Docker
An introduction to using Docker in development
2 About Me

3 oppositeOf Advanced

4 Trying to Solve
- New project setup time could be better
- Context switching time could be better
- Developer's environments differ from production (Nginx, linux, etc)
- Developer's environments become a complete mess (PHP 5.6/7.0, tomcat, node, etc)
- Setup for designers and QA was frustrating and slow
5 What is a Container
- A stand alone web app with everything (including OS) it needs to run
- Akin to a compiled desktop application; it "just runs"
- Isolated from other containers
- 👍 Easy to spin up and down
- 👍 If hacked - scorched earth
6 Process Overview
+----------------------------------------------+ | Docker Machine (kitematic, quick start term) | | | +----------------------------------------------+ +---------------+ +---------------+ | Dockerfile | | Registry | | +------->| | | | | | +---------------+ +-------+-------+ | +-----------v-------------------------------------+ | | | +---------------+ +---------------+ | | | Docker-Compose| | Local FS | | | | | | | | | | app, db, +---------+ /config | | | | cache, system | | /src | | | | | | | | | +---------------+ +---------------+ | | | +----------+--------------------------------------+ | +-------v--------+ | Jenkins | +-------+--------+ | +-------v--------+ | Dokku (UAT) | +----------------+
7 Dockerfile
- Used to build a 'machine' (an image)
- Dockerfile ➡️ image
- $ docker build -t nginx-php .
- $ docker push the.place.com:5000/nginx-php
- hub.docker.com
8 Dockerfile Demo

9 Docker Compose
- Used to build a 'network'
- docker-compose.yml
- $ docker-compose up &
- $ docker-compose stop
10 Docker-Compose Demo

11 File System 1
- Basic project layout
. ├── config -> Overrides (if needed) │ └── nginx.conf ├── docker-compose.yml -> Environment file ├── htdocs -> Mounted into the VM │ ├── index.php │ └── test.txt ├── logs -> Created / Written to by the VM │ ├── access.log │ ├── error.log │ ├── nginx │ └── php5-fpm.log └── run.command -> Double click for Designers
12 File System 2
- File system bridge
+----+ +-----------+ | | +------------+ | VM | | | | Host | | /var/www +---->| +-----> /var/www | | | | | | | | <-----+ <-----+ | | | | | | | +-----------+ | | +------------+ +----+
13 Useful Commands
- docker ps ➡️ process list
- docker exec 6e99a7a59d05 ls / ➡️ run command in container
- docker images ➡️ list images
- docker rmi ➡️ remove images
- docker-compose up ➡️ startup a 'network'
- docker-compose stop ➡️ stop a 'network'
14 Results: The Good
- Setup time went from ~4-8 hours to ~10 Minutes
- Take one for the team
- Similar stack (More similar anyway)
- Ops has a working example
- Configuration next to code
- Can be used to cross compile (for Go for example)
15 Results: The Whoopsie Daisy
- File system case sensitivity
- File system can be slow
- When it's broke, it's confusing as
- A lot of people hate change
16 Other things to consider
- Windows OS based continers don't run on Linux or Mac
- Aws Lambda / Azure Functions
17 Thanks













18 You Talked too Fast Moron
- How to remove all images (awk)
- The 'dock' file
- the run.command