awesome-compose/flask-redis/README.md

83 lines
2.9 KiB
Markdown

## Compose sample application
### Python/Flask application using a Redis database
Project structure:
```
.
├── Dockerfile
├── README.md
├── app.py
├── compose.yaml
└── requirements.txt
```
[_compose.yaml_](compose.yaml)
```
services:
redis:
image: redislabs/redismod
ports:
- '6379:6379'
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
depends_on:
- redis
```
## Deploy with docker compose
```
$ docker compose up -d
[+] Running 24/24
⠿ redis Pulled
...
⠿ 565225d89260 Pull complete
[+] Building 12.7s (10/10) FINISHED
=> [internal] load build definition from Dockerfile ...
[+] Running 3/3
⠿ Network flask-redis_default Created
⠿ Container flask-redis-redis-1 Started
⠿ Container flask-redis-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-redis-redis-1 "redis-server --load…" redis running 0.0.0.0:6379->6379/tcp
flask-redis-web-1 "/bin/sh -c 'python …" web running 0.0.0.0:5000->5000/tcp
```
After the application starts, navigate to `http://localhost:5000` in your web browser or run:
```
$ curl localhost:5000
This webpage has been viewed 2 time(s)
```
## Monitoring Redis keys
Connect to redis database by using ```redis-cli``` command and monitor the keys.
```
redis-cli -p 6379
127.0.0.1:6379> monitor
OK
1646634062.732496 [0 172.21.0.3:33106] "INCRBY" "hits" "1"
1646634062.735669 [0 172.21.0.3:33106] "GET" "hits"
```
Stop and remove the containers
```
$ docker compose down
```