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
REMOTE_USER ?= pi
REMOTE = $(REMOTE_USER)@$(IP)
SERVER = server
GATEWAY = lora-gateway
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'
@ -11,29 +13,29 @@ deploy-all: deploy-gw deploy-app
deploy-app:
@echo "Déploiement sur $(REMOTE):$(DEST)"
ssh $(REMOTE) "mkdir -p $(DEST)"
rsync $(RSYNC_OPTS) app $(REMOTE):$(DEST)
rsync $(RSYNC_OPTS) $(SERVER) $(REMOTE):$(DEST)
@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"
deploy-gw:
@echo "Déploiement sur $(REMOTE):$(DEST)"
ssh $(REMOTE) "mkdir -p $(DEST)"
rsync $(RSYNC_OPTS) lora-gateway $(REMOTE):$(DEST)
rsync $(RSYNC_OPTS) $(GATEWAY) $(REMOTE):$(DEST)
@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"
clean-app:
@echo "Nettoyage de l'app sur $(REMOTE):$(DEST)/app"
ssh $(REMOTE) "cd $(DEST)/app && docker compose down --volumes --remove-orphans || true"
ssh $(REMOTE) "rm -rf $(DEST)/app"
@echo "Nettoyage de l'app sur $(REMOTE):$(DEST)/$(SERVER)"
ssh $(REMOTE) "cd $(DEST)/$(SERVER) && docker compose down --volumes --remove-orphans || true"
ssh $(REMOTE) "rm -rf $(DEST)/$(SERVER)"
@echo "Nettoyage de l'application terminé"
clean-gw:
@echo "Nettoyage de la gateway sur $(REMOTE):$(DEST)/lora-gateway"
ssh $(REMOTE) "cd $(DEST)/lora-gateway && docker compose down --volumes --remove-orphans || true"
ssh $(REMOTE) "rm -rf $(DEST)/lora-gateway"
@echo "Nettoyage de la gateway sur $(REMOTE):$(DEST)/$(GATEWAY)"
ssh $(REMOTE) "cd $(DEST)/$(GATEWAY) && docker compose down --volumes --remove-orphans || true"
ssh $(REMOTE) "rm -rf $(DEST)/$(GATEWAY)"
@echo "Nettoyage de la gateway terminé"
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
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY ./src/. /app/
CMD ["python", "main.py"]
COPY . .
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.reasoncodes import ReasonCode
from exceptions import MessageBrokerError, InfrastructureError
from entities import UplinkEvent
from domain.exceptions import MessageBrokerError, InfrastructureError
from domain.entities import UplinkEvent
from ports import MessageBroker
log = logging.getLogger(__name__)

View file

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

View file

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

View file

View file

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

View file

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