1. create test environment
1.1. docker image hierarchy
1.1.1. Untitled
1.1.2. could create really complicated image hierarchy
1.1.2.1. Untitled
1.2. base image
1.2.1. def
1.2.1.1. create and activate the runtime environment for the application
1.2.2. folder structure
1.2.2.1. separate base image from application runtime env
1.2.2.1.1. any change to base runtime env or application code trigger continuous workflow
1.2.2.1.2. Untitled
1.2.2.2. Untitled
1.2.3. contains
1.2.3.1. minimum runtime env
1.2.3.1.1. reduce footprint of runtime env
1.2.3.2. app dependencies
1.2.3.3. system config
1.2.3.4. default settings
1.2.4. create the base image
1.2.4.1. initial setup
1.2.4.2. choose parent image
1.2.4.3. describe os packages
1.2.4.4. establish virtual env
1.2.4.5. activate virtual env
1.2.4.6. build base image
1.2.5. docker and parent process ID
1.2.5.1. with exec
1.2.5.2. without exec
1.3. development image
1.3.1. def
1.3.1.1. add tests and build dependencies
1.3.1.2. run tests
1.3.2. install test and build dependencies
1.3.3. install test/build tools
1.3.4. create the dev image
1.3.4.1. create the development image
1.3.4.1.1. folder structure
1.3.4.1.2. specify dev/build dependencies
1.3.4.1.3. activate virtual environment and install wheel support
1.3.4.1.4. pip environment variables
1.3.4.1.5. specify output directory
1.3.4.1.6. entrypoint
1.3.4.1.7. add application source
1.3.4.2. create application requirement files
1.3.4.2.1. folder structure
1.3.4.3. image review
1.3.4.3.1. development image vs base image
1.3.4.3.2. test.sh running process
1.3.4.4. test the development image
1.3.4.4.1. $ docker build -t todobackend-dev -f docker/dev/Dockerfile .
1.3.4.4.2. create .dockerignore
1.3.4.4.3. $ docker run --rm todobackend-dev
1.3.4.4.4. need to add libmysqlclient-dev to dev image
1.3.4.5. reduce testing time
1.3.4.5.1. scenario
1.3.4.5.2. specified env var before XDG_CACHE_HOME
1.3.4.5.3. create a volume container
1.3.4.5.4. run the app container with volume container
1.3.4.6. use different test settings
1.3.4.6.1. by default
1.3.4.6.2. specify on command line to change
1.3.4.6.3. problem using test.py
1.3.4.6.4. connect to mysql
1.3.4.7. running test
1.3.4.7.1. create a docker-compose file
1.3.4.7.2. run test with docker-compose
1.3.4.7.3. multi-container racing condition
1.4. docker-compose
1.4.1. a complex test env
1.4.2. orchestrate unit/integration tests
1.5. release image
1.5.1. install application
1.5.2. application config
1.5.3. application entrypoint
2. review test env
2.1. docker-compose.yml
2.1.1. $docker-compose up agent
2.1.1.1. overview
2.1.1.1.1. Untitled
2.1.1.2. 1. create db service
2.1.1.3. 2. create agent service
2.1.1.3.1. use an ansible playbook to wait for db service being up and running
2.1.2. $docker-compose up test
2.1.2.1. overview
2.1.2.1.1. Untitled
2.1.2.2. 1. create cache service
2.1.2.3. 2. create test service
3. summary
3.1. Unit and Integration Test Infrastructure
3.1.1. create base image
3.1.1.1. minimum env to run
3.1.2. create development image
3.1.2.1. development dependencies
3.1.3. running tests using docker
3.2. docker-compose
3.2.1. multi-container env
3.2.2. integration testing between multiple containers
3.2.3. agent services to help orchestrate testing