Docker compose 


seguindo esse exemplo 

https://docs.docker.com/compose/gettingstarted/ 


Criamos um diretorio para a aplicação 

mkdir composetest

$ cd composetest


Criamos o arquivo da nossa  app.py

import time


import redis

from flask import Flask


app = Flask(__name__)

cache = redis.Redis(host='redis', port=6379)


def get_hit_count():

    retries = 5

    while True:

        try:

            return cache.incr('hits')

        except redis.exceptions.ConnectionError as exc:

            if retries == 0:

                raise exc

            retries -= 1

            time.sleep(0.5)


@app.route('/')

def hello():

    count = get_hit_count()

    return 'Hello World! I have been seen {} times.\n'.format(count)



Criamos tambem o arquivo de requisitos da aplicação requirements.txt

flask

redis



Logo em seguida criamos o dockerfile onde é feita a imagem da aplicação para rodar no container 

# syntax=docker/dockerfile:1

FROM python:3.7-alpine

WORKDIR /code

ENV FLASK_APP=app.py

ENV FLASK_RUN_HOST=0.0.0.0

RUN apk add --no-cache gcc musl-dev linux-headers

COPY requirements.txt requirements.txt

RUN pip install -r requirements.txt

EXPOSE 5000

COPY . .

CMD ["flask", "run"]


Por ultimo o docker-compose.yml  

Nele se configura todos os atribuitos do container - porta redes ... 

version: "3.9"

services:

  web:

    build: .

    ports:

      - "8000:5000"

  redis:

    image: "redis:alpine"