├── .gitignore ├── requirements.txt ├── api ├── __init__.py └── ProjectAPI.py ├── Dockerfile ├── app.py └── Readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | venv 2 | __pycache__ 3 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | aniso8601==3.0.2 2 | click==6.7 3 | Flask==1.0.2 4 | Flask-RESTful==0.3.6 5 | itsdangerous==0.24 6 | Jinja2==2.10 7 | MarkupSafe==1.0 8 | pytz==2018.5 9 | six==1.11.0 10 | Werkzeug==0.14.1 11 | -------------------------------------------------------------------------------- /api/__init__.py: -------------------------------------------------------------------------------- 1 | from flask_restful import Api 2 | from app import flaskAppInstance 3 | from .ProjectAPI import ProjectAPI 4 | 5 | 6 | 7 | restServerInstance = Api(flaskAppInstance) 8 | 9 | restServerInstance.add_resource(ProjectAPI,"/") 10 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | from alpine:latest 2 | 3 | RUN apk add --no-cache python3-dev \ 4 | && pip3 install --upgrade pip 5 | 6 | WORKDIR /app 7 | 8 | COPY . /app 9 | 10 | RUN pip3 --no-cache-dir install -r requirements.txt 11 | 12 | EXPOSE 5000 13 | 14 | ENTRYPOINT ["python3"] 15 | CMD ["app.py"] 16 | 17 | 18 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | import logging as logger 3 | logger.basicConfig(level="DEBUG") 4 | 5 | 6 | flaskAppInstance = Flask(__name__) 7 | 8 | 9 | 10 | if __name__ == '__main__': 11 | 12 | logger.debug("Starting Flask Server") 13 | from api import * 14 | flaskAppInstance.run(host="0.0.0.0",port=5000,debug=True,use_reloader=True) 15 | -------------------------------------------------------------------------------- /api/ProjectAPI.py: -------------------------------------------------------------------------------- 1 | from flask_restful import Resource 2 | import logging as logger 3 | 4 | class ProjectAPI(Resource): 5 | 6 | def get(self): 7 | 8 | logger.debug("Inside the post method of Task") 9 | 10 | projectDetails = { 11 | "version" : "1.0.0.0", 12 | "owner" : "Selftuts", 13 | "projectName" : "Python Flask Docker Container" 14 | } 15 | 16 | 17 | return projectDetails,200 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | ## Git clone the application 2 | 3 | ## Create a virtual environment inside the application 4 | 5 | ```python 6 | 7 | virtualenv -p /usr/bin/python3 venv 8 | 9 | source venv/bin/activate 10 | 11 | ``` 12 | 13 | ## Install Python modules 14 | 15 | ```python 16 | 17 | pip3 install -r requirements.txt 18 | 19 | ``` 20 | 21 | 22 | ## Run the application using 23 | 24 | ```python 25 | 26 | python app.py 27 | 28 | ``` 29 | 30 | 31 | ## You will get below REST API 32 | 33 | ```python 34 | 35 | http://localhost:5000 36 | 37 | ``` 38 | 39 | ## Docker commands 40 | 41 | ```bash 42 | 43 | // List all running container 44 | docker ps 45 | 46 | // list all containers 47 | docker ps -a 48 | 49 | 50 | // list all docker images 51 | docker images 52 | 53 | // build a docker image 54 | docker build -t dockerFilePath 55 | 56 | 57 | // run a docker container in daemon mode with ports exposed 58 | docker run -it -d -p : 59 | 60 | 61 | 62 | 63 | ``` 64 | --------------------------------------------------------------------------------