refacto: reorganize files to easily add an API service

This commit is contained in:
Alexis Fourmaux 2026-05-09 18:21:45 +02:00
parent 5c480db410
commit 9c883a8eca
22 changed files with 26 additions and 23 deletions

View file

@ -1,6 +1,8 @@
IP ?= 192.168.1.195 IP ?= 192.168.1.195
REMOTE_USER ?= pi REMOTE_USER ?= pi
REMOTE = $(REMOTE_USER)@$(IP) REMOTE = $(REMOTE_USER)@$(IP)
SERVER = server
GATEWAY = lora-gateway
DEST ?= /home/$(REMOTE_USER)/projet-agreg DEST ?= /home/$(REMOTE_USER)/projet-agreg
RSYNC_OPTS = -arvz --delete --exclude='__pycache__' --exclude='*.pyc' --exclude='.env' --exclude='.venv' --exclude='Makefile' --exclude='.git' --exclude='.vscode' --exclude='.gitignore' RSYNC_OPTS = -arvz --delete --exclude='__pycache__' --exclude='*.pyc' --exclude='.env' --exclude='.venv' --exclude='Makefile' --exclude='.git' --exclude='.vscode' --exclude='.gitignore'
@ -11,29 +13,29 @@ deploy-all: deploy-gw deploy-app
deploy-app: deploy-app:
@echo "Déploiement sur $(REMOTE):$(DEST)" @echo "Déploiement sur $(REMOTE):$(DEST)"
ssh $(REMOTE) "mkdir -p $(DEST)" ssh $(REMOTE) "mkdir -p $(DEST)"
rsync $(RSYNC_OPTS) app $(REMOTE):$(DEST) rsync $(RSYNC_OPTS) $(SERVER) $(REMOTE):$(DEST)
@echo "Déploiement terminé" @echo "Déploiement terminé"
ssh $(REMOTE) "cd $(DEST)/app && docker compose up -d --build" ssh $(REMOTE) "cd $(DEST)/$(SERVER) && docker compose up -d --build"
@echo "Services redémarrés" @echo "Services redémarrés"
deploy-gw: deploy-gw:
@echo "Déploiement sur $(REMOTE):$(DEST)" @echo "Déploiement sur $(REMOTE):$(DEST)"
ssh $(REMOTE) "mkdir -p $(DEST)" ssh $(REMOTE) "mkdir -p $(DEST)"
rsync $(RSYNC_OPTS) lora-gateway $(REMOTE):$(DEST) rsync $(RSYNC_OPTS) $(GATEWAY) $(REMOTE):$(DEST)
@echo "Déploiement terminé" @echo "Déploiement terminé"
ssh $(REMOTE) "cd $(DEST)/lora-gateway && docker compose up -d" ssh $(REMOTE) "cd $(DEST)/$(GATEWAY) && docker compose up -d"
@echo "Services redémarrés" @echo "Services redémarrés"
clean-app: clean-app:
@echo "Nettoyage de l'app sur $(REMOTE):$(DEST)/app" @echo "Nettoyage de l'app sur $(REMOTE):$(DEST)/$(SERVER)"
ssh $(REMOTE) "cd $(DEST)/app && docker compose down --volumes --remove-orphans || true" ssh $(REMOTE) "cd $(DEST)/$(SERVER) && docker compose down --volumes --remove-orphans || true"
ssh $(REMOTE) "rm -rf $(DEST)/app" ssh $(REMOTE) "rm -rf $(DEST)/$(SERVER)"
@echo "Nettoyage de l'application terminé" @echo "Nettoyage de l'application terminé"
clean-gw: clean-gw:
@echo "Nettoyage de la gateway sur $(REMOTE):$(DEST)/lora-gateway" @echo "Nettoyage de la gateway sur $(REMOTE):$(DEST)/$(GATEWAY)"
ssh $(REMOTE) "cd $(DEST)/lora-gateway && docker compose down --volumes --remove-orphans || true" ssh $(REMOTE) "cd $(DEST)/$(GATEWAY) && docker compose down --volumes --remove-orphans || true"
ssh $(REMOTE) "rm -rf $(DEST)/lora-gateway" ssh $(REMOTE) "rm -rf $(DEST)/$(GATEWAY)"
@echo "Nettoyage de la gateway terminé" @echo "Nettoyage de la gateway terminé"
clean-all: clean-app clean-gw clean-all: clean-app clean-gw

1
server/app/.dockerignore Normal file
View file

@ -0,0 +1 @@
Dockerfile

View file

@ -2,5 +2,5 @@ FROM python:3.13-slim
WORKDIR /app WORKDIR /app
COPY requirements.txt . COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt RUN pip install --no-cache-dir -r requirements.txt
COPY ./src/. /app/ COPY . .
CMD ["python", "main.py"] CMD ["python", "consumer.py"]

View file

@ -8,8 +8,8 @@ from paho.mqtt.enums import CallbackAPIVersion
from paho.mqtt.properties import Properties from paho.mqtt.properties import Properties
from paho.mqtt.reasoncodes import ReasonCode from paho.mqtt.reasoncodes import ReasonCode
from exceptions import MessageBrokerError, InfrastructureError from domain.exceptions import MessageBrokerError, InfrastructureError
from entities import UplinkEvent from domain.entities import UplinkEvent
from ports import MessageBroker from ports import MessageBroker
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View file

@ -4,7 +4,7 @@ import time
import psycopg2 import psycopg2
from psycopg2.extensions import connection from psycopg2.extensions import connection
from ports import DeviceRepository, ReadingRepository from ports import DeviceRepository, ReadingRepository
from exceptions import DatabaseConnectionError, DatabaseError from domain.exceptions import DatabaseConnectionError, DatabaseError
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View file

@ -1,7 +1,7 @@
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from typing import Callable from typing import Callable
from entities import UplinkEvent from domain.entities import UplinkEvent
class MessageBroker(ABC): class MessageBroker(ABC):
@abstractmethod @abstractmethod

View file

View file

@ -1,6 +1,6 @@
import logging import logging
from ports import DeviceRepository, ReadingRepository from ports import DeviceRepository, ReadingRepository
from entities import UplinkEvent from domain.entities import UplinkEvent
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View file

@ -1,6 +1,6 @@
services: services:
consumer: consumer:
build: ./consumer build: ./app
restart: unless-stopped restart: unless-stopped
networks: networks:
- lora-gateway_mqtt - lora-gateway_mqtt
@ -10,7 +10,7 @@ services:
image: postgres:18-alpine image: postgres:18-alpine
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- ./consumer/initdb:/docker-entrypoint-initdb.d:ro - ./initdb:/docker-entrypoint-initdb.d:ro
- db:/var/lib/postgresql - db:/var/lib/postgresql
networks: networks:
- database - database