This approach uses bats to create a generic docker-compose test. It checks that images are pullable, projects are buildable, up works, and if ports are exposed that something is listening. The tests can be tailored for each example. As long as they are the same though, you can edit lib/test.bats.example and then `make update-tests` and all the tests will be synced. Signed-off-by: Chad Metcalf <chad@docker.com> |
||
---|---|---|
.. | ||
app | ||
docker-compose.yml | ||
README.md | ||
test.bats |
Compose sample application
Django application in dev mode
Project structure:
.
├── docker-compose.yml
├── app
├── Dockerfile
├── requirements.txt
└── manage.py
services:
web:
build: app
ports:
- '8000:8000'
Deploy with docker-compose
$ docker-compose up -d
Creating network "django_default" with the default driver
Building web
Step 1/6 : FROM python:3.7-alpine
...
...
Status: Downloaded newer image for python:3.7-alpine
Creating django_web_1 ... done
Expected result
Listing containers must show two containers running and the port mapping as below:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3adaea94142d django_web "python3 manage.py r…" About a minute ago Up About a minute 0.0.0.0:8000->8000/tcp django_web_1
After the application starts, navigate to http://localhost:8000
in your web browser:
Stop and remove the containers
$ docker-compose down