From ddbc588c77d1589440b0fd189e6c1a8cba6d8709 Mon Sep 17 00:00:00 2001 From: ferdzo Date: Thu, 30 Oct 2025 23:20:51 +0100 Subject: [PATCH] Add Dockerfile and .dockerignore; refactor import paths in app modules --- services/device_manager/.dockerignore | 9 +++++++++ services/device_manager/Dockerfile | 11 +++++++++++ services/device_manager/app/app.py | 8 ++++---- services/device_manager/app/cert_manager.py | 4 ++-- services/device_manager/app/database.py | 2 +- services/device_manager/app/models.py | 1 + 6 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 services/device_manager/.dockerignore create mode 100644 services/device_manager/Dockerfile diff --git a/services/device_manager/.dockerignore b/services/device_manager/.dockerignore new file mode 100644 index 0000000..01415b9 --- /dev/null +++ b/services/device_manager/.dockerignore @@ -0,0 +1,9 @@ +.env +.venv/ +__pycache__/ +*.pyc +*.pyo +*.pyd +*.crl +*.crt +*.pem \ No newline at end of file diff --git a/services/device_manager/Dockerfile b/services/device_manager/Dockerfile new file mode 100644 index 0000000..d468070 --- /dev/null +++ b/services/device_manager/Dockerfile @@ -0,0 +1,11 @@ +FROM ghcr.io/astral-sh/uv:python3.13-alpine + +COPY ./pyproject.toml ./ + +COPY ./uv.lock ./ + +RUN uv sync + +COPY ./app/ ./app/ + +ENTRYPOINT [ "uv", "run", "uvicorn", "app.app:app", "--host", "0.0.0.0", "--port", "8000" ] \ No newline at end of file diff --git a/services/device_manager/app/app.py b/services/device_manager/app/app.py index f38a3ae..ca2782b 100644 --- a/services/device_manager/app/app.py +++ b/services/device_manager/app/app.py @@ -1,12 +1,12 @@ import datetime import logging -from db_models import Device, DeviceCertificate # SQLAlchemy ORM models from fastapi import FastAPI, HTTPException -from cert_manager import CertificateManager -from database import get_db_context -from models import DeviceRegistrationRequest, DeviceRegistrationResponse, DeviceResponse +from app.cert_manager import CertificateManager +from app.database import get_db_context +from app.db_models import Device, DeviceCertificate # SQLAlchemy ORM models +from app.models import DeviceRegistrationRequest, DeviceRegistrationResponse, DeviceResponse logger = logging.getLogger(__name__) diff --git a/services/device_manager/app/cert_manager.py b/services/device_manager/app/cert_manager.py index 0968cc9..9ef37d3 100644 --- a/services/device_manager/app/cert_manager.py +++ b/services/device_manager/app/cert_manager.py @@ -7,8 +7,8 @@ from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.x509.oid import NameOID from nanoid import generate -from config import config -from models import DeviceRegistrationResponse +from app.config import config +from app.models import DeviceRegistrationResponse lowercase_numbers = "abcdefghijklmnopqrstuvwxyz0123456789" diff --git a/services/device_manager/app/database.py b/services/device_manager/app/database.py index dbc954b..5b74523 100644 --- a/services/device_manager/app/database.py +++ b/services/device_manager/app/database.py @@ -9,7 +9,7 @@ from contextlib import contextmanager from sqlalchemy import create_engine from sqlalchemy.orm import Session, sessionmaker -from config import config +from app.config import config # Create engine with connection pooling engine = create_engine( diff --git a/services/device_manager/app/models.py b/services/device_manager/app/models.py index ec997a5..01d6f83 100644 --- a/services/device_manager/app/models.py +++ b/services/device_manager/app/models.py @@ -2,6 +2,7 @@ import datetime from pydantic import BaseModel + class DeviceRegistrationRequest(BaseModel): """Request model for registering a new device."""