From 83a24f681f821c85f4f8d7b2bb3349bf7024405a Mon Sep 17 00:00:00 2001 From: kouul Date: Thu, 26 Mar 2020 08:41:17 +0400 Subject: [PATCH] add flask sample Signed-off-by: kouul --- flask/README.md | 56 ++++++++++++++++++++++++++++++++++++++ flask/app/Dockerfile | 6 ++++ flask/app/app.py | 9 ++++++ flask/app/requirements.txt | 1 + flask/docker-compose.yml | 6 ++++ 5 files changed, 78 insertions(+) create mode 100644 flask/README.md create mode 100644 flask/app/Dockerfile create mode 100644 flask/app/app.py create mode 100644 flask/app/requirements.txt create mode 100644 flask/docker-compose.yml 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..26008d9 --- /dev/null +++ b/flask/app/Dockerfile @@ -0,0 +1,6 @@ +FROM python:3.7-alpine +WORKDIR /app +COPY . /app +RUN pip3 install -r requirements.txt +ENTRYPOINT ["python3"] +CMD ["app.py"] \ No newline at end of file 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..462e978 --- /dev/null +++ b/flask/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3' +services: + web: + build: app + ports: + - '5000:5000' \ No newline at end of file