ec552567c7
* Docker Desktop Development Environments config * Use cache volumes for pip * Upgrade from Python 3.7 -> Python 3.10 * Use port `8000` to avoid conflicts with Airplay on macOS for default Flask port `5000` * Use `SIGINT` to gracefully stop Flask Signed-off-by: Milas Bowman <milas.bowman@docker.com>
2.2 KiB
2.2 KiB
Compose sample application
Python/Flask application
Project structure:
.
├── compose.yaml
├── app
├── Dockerfile
├── requirements.txt
└── app.py
services:
web:
build:
context: app
target: builder
ports:
- '8000:8000'
Deploy with docker compose
$ docker compose up -d
[+] Building 1.1s (16/16) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
... 0.0s
=> => naming to docker.io/library/flask_web 0.0s
[+] Running 2/2
⠿ Network flask_default Created 0.0s
⠿ Container flask-web-1 Started
Expected result
Listing containers must show one container running and the port mapping as below:
$ docker compose ps
NAME COMMAND SERVICE STATUS PORTS
flask-web-1 "python3 app.py" web running 0.0.0.0:8000->8000/tcp
After the application starts, navigate to http://localhost:8000
in your web browser or run:
$ curl localhost:8000
Hello World!
Stop and remove the containers
$ docker compose down
Use with Docker Development Environments
You can use this sample with the Dev Environments feature of Docker Desktop.
To develop directly on the services inside containers, use the HTTPS Git url of the sample:
https://github.com/docker/awesome-compose/tree/master/flask