Stand-alone Application to deploy
- A stand-alone Docker image that exposes a single port
from flask import Flask, request, jsonify
import os
import datetime
version = 1
app = Flask(__name__)
filename = 'counter.txt'
dirname = os.environ.get('COUNTER_DIR')
if dirname:
filename = os.path.join(dirname, filename)
@app.route("/", methods=['GET'])
def main():
now = datetime.datetime.now()
counter = 0
if os.path.exists(filename):
with open(filename) as fh:
counter = int(fh.read())
counter += 1
with open(filename, 'w') as fh:
fh.write(str(counter))
return f'''
<html>
<head><title>Demo v{version}</title></head>
<body>Demo v{version} at {now} count: {counter}</body>
</html>
'''
import app
def test_app():
web = app.app.test_client()
rv = web.get('/')
assert rv.status == '200 OK'
assert b'<body>Demo' in rv.data
flask
FROM python:3.7
COPY requirements.txt /opt/
RUN pip3 install -r /opt/requirements.txt
COPY app.py /opt/
WORKDIR /opt
CMD ["flask", "run", "--host", "0.0.0.0", "--port", "5000"]
__pycache__
.git
.pytest_cache
counter.txt
Locally
docker build -t flasker .
docker run --rm -p5000:5000 flasker
http://localhost:5000/