diff --git a/.env.sample b/.env.sample new file mode 100644 index 0000000000000000000000000000000000000000..d777283f3d53ee199cc8f80aebd5e303ef77397b --- /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 69b2b1e480976e0204b73a64f417a821edfb477d..b8cd07cd7656aadcb573ed47f1a8e2ab78a1608b 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 1fc694ae27a4e1ff0fd2e91d05eeaa5e2db8d26b..6bc6627b7ca856def18ab5efe3174b4e416e6316 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 0000000000000000000000000000000000000000..60a5ffb3cd71f03f9e2afa00ee9799fc60271ee4 --- /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 0000000000000000000000000000000000000000..79f810428434501bccf70af4b202c394cc8518b5 --- /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 0000000000000000000000000000000000000000..a3570e4ee1f49fab5ed031865e248041dece4925 --- /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 0000000000000000000000000000000000000000..ffa57f26d534410bfb21b31fe3acd048fc2c741f --- /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 ec402d2717bf7dfa8e15ffe66d0c367faed258a5..37acbcc063e861b2f140f3792402504b9fefd98e 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"],