From c3761454d5a007eb97c329d10e00b9f6a43bc942 Mon Sep 17 00:00:00 2001 From: David Beniamine <david.beniamine@tetras-libre.fr> Date: Wed, 18 Jan 2023 16:56:09 +0100 Subject: [PATCH] Docker stack --- .env.sample | 8 +++++ .gitignore | 2 ++ .../__init__.py | 0 {Mirador-backend => Mirador_backend}/app.py | 0 .../resources/__init__.py | 0 .../resources/mirador_resource.py | 0 Readme.md | 36 ++++++++++++------- docker-compose.yml | 24 +++++++++++++ docker/flask/Dockerfile | 9 +++++ docker/flask/entrypoint.sh | 3 ++ ports.yml | 6 ++++ setup.py | 2 +- 12 files changed, 76 insertions(+), 14 deletions(-) create mode 100644 .env.sample rename {Mirador-backend => Mirador_backend}/__init__.py (100%) rename {Mirador-backend => Mirador_backend}/app.py (100%) rename {Mirador-backend => Mirador_backend}/resources/__init__.py (100%) rename {Mirador-backend => Mirador_backend}/resources/mirador_resource.py (100%) create mode 100644 docker-compose.yml create mode 100644 docker/flask/Dockerfile create mode 100755 docker/flask/entrypoint.sh create mode 100644 ports.yml diff --git a/.env.sample b/.env.sample new file mode 100644 index 0000000..d777283 --- /dev/null +++ b/.env.sample @@ -0,0 +1,8 @@ +COMPOSE_FILE=docker-compose.yml:ports.yml +HOST=0.0.0.0 +PORT=5000 +MYSQL_USER=mirador_backend +MYSQL_PASSWORD=randompassword +MYSQL_ROOT_PASSWORD=otherrandompassword +MYSQL_DATABASE=mirador_backend +ENV=dev diff --git a/.gitignore b/.gitignore index 69b2b1e..b8cd07c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ venv *.egg-info .eggs **/__pycache__ +.env +*.sw? diff --git a/Mirador-backend/__init__.py b/Mirador_backend/__init__.py similarity index 100% rename from Mirador-backend/__init__.py rename to Mirador_backend/__init__.py diff --git a/Mirador-backend/app.py b/Mirador_backend/app.py similarity index 100% rename from Mirador-backend/app.py rename to Mirador_backend/app.py diff --git a/Mirador-backend/resources/__init__.py b/Mirador_backend/resources/__init__.py similarity index 100% rename from Mirador-backend/resources/__init__.py rename to Mirador_backend/resources/__init__.py diff --git a/Mirador-backend/resources/mirador_resource.py b/Mirador_backend/resources/mirador_resource.py similarity index 100% rename from Mirador-backend/resources/mirador_resource.py rename to Mirador_backend/resources/mirador_resource.py diff --git a/Readme.md b/Readme.md index 1fc694a..6bc6627 100644 --- a/Readme.md +++ b/Readme.md @@ -1,31 +1,41 @@ # Mirador backend -## Requirements +## Install and run + +### local + + +#### Requirements + virtualenv (optionnal) + Python >= 3.10 -## Install - -### Dev mode +#### Dev mode 1. Optionnal create a virtual env `virtualenv venv && . venv/bin/activate` 2. Install dependencies `pip install -e .` +3. `cp .env.sample .env` and edit `.env` file to suit your needs +4. Run `flask --debug --app Mirador_backend.app run` -### Production mode +#### Production mode + +**TODO** +### Production mode **TODO** -## Run +### Docker -### Dev mode +#### Requirements -``` -cd Mirador-backend -flask --debug run -``` ++ [docker](https://www.docker.com/) ++ [docker compose](https://docs.docker.com/compose/install/) -### Production mode +#### Install and run -**TODO** +``` +cp .env.sample .env +# Edit .env file to suit your needs +docker-compose up +``` diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..60a5ffb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3" + +services: + flask: + build: + context: "docker/flask" + environment: + ENV: + HOST: + volumes: + - .:/app + + db: + image: mariadb + environment: + MYSQL_USER: + MYSQL_PASSWORD: + MYSQL_DATABASE: + MYSQL_ROOT_PASSWORD: + volumes: + - db_data:/var/lib/mysql + +volumes: + db_data: diff --git a/docker/flask/Dockerfile b/docker/flask/Dockerfile new file mode 100644 index 0000000..79f8104 --- /dev/null +++ b/docker/flask/Dockerfile @@ -0,0 +1,9 @@ +FROM python:3.10 + +COPY entrypoint.sh /entrypoint + +RUN mkdir /app + +WORKDIR /app + +ENTRYPOINT ["/entrypoint"] diff --git a/docker/flask/entrypoint.sh b/docker/flask/entrypoint.sh new file mode 100755 index 0000000..a3570e4 --- /dev/null +++ b/docker/flask/entrypoint.sh @@ -0,0 +1,3 @@ +#!/bin/bash +pip install -e . +exec flask --debug --app Mirador_backend.app run --host $HOST diff --git a/ports.yml b/ports.yml new file mode 100644 index 0000000..ffa57f2 --- /dev/null +++ b/ports.yml @@ -0,0 +1,6 @@ +version: "3" + +services: + flask: + ports: + - $FLASK_PORT:5000 diff --git a/setup.py b/setup.py index ec402d2..37acbcc 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,7 @@ setup( packages=find_packages(), - install_requires=["flask", "flask-restful"], + install_requires=["flask", "flask-restful", "python-dotenv"], setup_requires=["pytest-runner"], -- GitLab