Docker Compose
Web applications have non-code dependencies. Things like databases and queues. Docker Compose lets you specify those dependencies.
# docker-compose.yml
version: "3"
services:
app:
build: ./foo
ports:
- 8000:5000
environment:
- DEBUG=True
volumes:
- ./foo:/app
command: flask run --host=0.0.0.0 --port=5000
db:
image: postgres
The example will run two containers, one named app
and one named db
.
A db
container running the standard postgres
image from docker hub to
provide a database to our app
container on postgres://db
.
The app
container will run an image based on ./foo/Dockerfile
. It will run
flask run --host=0.0.0.0 --port=5000
instead of the CMD
line. Folder
foo
is availble inside the container as /app
. Environment variables will
be set. And port 8000
of localhost will map to port 5000
inside the
container.