awesome-compose/flask
Milas Bowman ec552567c7
flask: dev envs support & misc improvements (#263)
* 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>
2022-07-08 09:22:59 -04:00
..
.docker flask: dev envs support & misc improvements (#263) 2022-07-08 09:22:59 -04:00
app flask: dev envs support & misc improvements (#263) 2022-07-08 09:22:59 -04:00
compose.yaml flask: dev envs support & misc improvements (#263) 2022-07-08 09:22:59 -04:00
README.md flask: dev envs support & misc improvements (#263) 2022-07-08 09:22:59 -04:00

Compose sample application

Python/Flask application

Project structure:

.
├── compose.yaml
├── app
    ├── Dockerfile
    ├── requirements.txt
    └── app.py

compose.yaml

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.

Screenshot of creating a Dev Environment in 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