diff --git a/README.md b/README.md index 5b0bad4..620fa70 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ docker-compose down - [`Angular`](angular) - [`Spark`](sparkjava) - [`VueJS`](vuejs) +- [`Flask`](flask) *Basic setups for different plaforms (not production ready - useful for personal use)* - [`Gitea / PostgreSQL`](gitea-postgres) diff --git a/flask/README.md b/flask/README.md new file mode 100644 index 0000000..420129d --- /dev/null +++ b/flask/README.md @@ -0,0 +1,56 @@ +## Compose sample application +### Python/Flask application with Nginx proxy and a Mongo database + +Project structure: +``` +. +├── docker-compose.yaml +├── app +    ├── Dockerfile +    ├── requirements.txt +    └── app.py + +``` + +[_docker-compose.yaml_](docker-compose.yaml) +``` +services: + web: + build: app + ports: + - '5000:5000' +``` + +## Deploy with docker-compose + +``` +$ docker-compose up -d +Creating network "flask_default" with the default driver +Building web +Step 1/6 : FROM python:3.7-alpine +... +... +Status: Downloaded newer image for python:3.7-alpine +Creating flask_web_1 ... done + +``` + +## Expected result + +Listing containers must show two containers running and the port mapping as below: +``` +$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +c126411df522 flask_web "python3 app.py" About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp flask_web_1 +``` + +After the application starts, navigate to `http://localhost:5000` in your web browser or run: +``` +$ curl localhost:5000 +Hello World! +``` + +Stop and remove the containers +``` +$ docker-compose down +``` diff --git a/flask/app/Dockerfile b/flask/app/Dockerfile new file mode 100644 index 0000000..6c294c0 --- /dev/null +++ b/flask/app/Dockerfile @@ -0,0 +1,6 @@ +FROM python:3.7-alpine +WORKDIR /app +RUN pip3 install -r requirements.txt +COPY . /app +ENTRYPOINT ["python3"] +CMD ["app.py"] diff --git a/flask/app/app.py b/flask/app/app.py new file mode 100644 index 0000000..e511196 --- /dev/null +++ b/flask/app/app.py @@ -0,0 +1,9 @@ +from flask import Flask +app = Flask(__name__) + +@app.route('/') +def hello(): + return "Hello World!" + +if __name__ == '__main__': + app.run(host='0.0.0.0') diff --git a/flask/app/requirements.txt b/flask/app/requirements.txt new file mode 100644 index 0000000..7e10602 --- /dev/null +++ b/flask/app/requirements.txt @@ -0,0 +1 @@ +flask diff --git a/flask/docker-compose.yml b/flask/docker-compose.yml new file mode 100644 index 0000000..8d861ab --- /dev/null +++ b/flask/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3' +services: + web: + build: app + ports: + - '5000:5000'