diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4301344 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +# Aether API - FastAPI + Gunicorn +# Using tiangolo's optimized FastAPI image +FROM tiangolo/uvicorn-gunicorn-fastapi:python3.11 + +LABEL maintainer="Scott Idem " + +WORKDIR /srv/aether_api + +# Install OS dependencies for image processing and utilities +RUN apt-get update; \ + apt-get install -y \ + imagemagick ffmpeg curl poppler-utils \ + ; \ + rm -rf /var/lib/apt/lists/*; + +# Install Python requirements +# This file is now located in the project root +COPY requirements.txt /tmp/requirements.txt +RUN pip install --no-cache-dir -r /tmp/requirements.txt + +# Create a reference of actual installed versions +RUN pip freeze >> /tmp/aether_fastapi_requirements_current.txt + +# The application source is mounted as a volume in docker-compose.yml +# for real-time development, but we set the default command here. +CMD ["gunicorn", "--conf", "/conf/gunicorn_fastapi_conf.py"] diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..ede07f3 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,65 @@ +# Aether API - Python Requirements +# Managed via Aether Docker Orchestration (Unified V3) + +aiofiles +argon2-cffi +argon2-cffi-bindings +# asgiref +# async-timeout +# baize +charset-normalizer +click +Deprecated +dnspython +email-validator +et-xmlfile +fastapi==0.115.5 +# greenlet +gunicorn +h11 +html2text +httpcore +httptools +httpx +idna +# itsdangerous +# Jinja2 +MarkupSafe +mysqlclient +numpy +openpyxl +orjson +# packaging +pandas +passlib +pdf2image +Pillow +pycparser +pydantic==1.* +PyJWT +pyparsing +python-dateutil +# python-dotenv +python-multipart +pytz +PyYAML +qrcode +redis[hiredis] +requests +rfc3986 +# six +sniffio +SQLAlchemy==1.4.52 +starlette +stripe +typing_extensions +ujson +urllib3 +uvicorn +uvloop +Wand +watchfiles +# watchgod +websockets +wrapt +xlrd