In this tutorial you will learn how to deploy a containerized Python Flask application to Fly.
The final code of this article can be found here.
Prerequisites
- A Fly account
- A computer with Python, Docker, and Flyctl (the Fly CLI)
Creating the application
requirements.txt
Flask==2.1.0
server.py
from flask import Flask, jsonify
import random
application = Flask(__name__)
port = 8080
@application.route("/")
def hello():
return jsonify({"message": "Hello, World!"})
@application.route("/random")
def generate_random_number():
return jsonify({"number": random.randint(0, 100)})
if __name__ == "__main__":
application.run(port=port)
Containerizing the application
Dockerfile
FROM python:3.9-slim-buster
WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . /usr/src/app
ENV FLASK_APP=server.py
EXPOSE 8080
CMD ["flask", "run", "--host", "0.0.0.0", "--port", "8080"]
To build and run the container locally:
docker build . -t hello-world
docker run -dp 8080:8080 hello-world
Deploying the application
fly launch
to prepare yourfly.toml
file, containing your project settings. Inside thefly.toml
file, ensure the service'sinternal_port
(8080 by default) matches the port exposed by your container.fly deploy
to deploy your application.fly open
to open the deployed application in your browser.
Cleaning up
fly destroy your-unique-app-id -y
removes your application from the Fly platform.
That's all! Don't forget to delete the application once you're done testing.
The final code of this article can be found here.