feat: Restored requirements.txt and Dockerfile to project root. Project is now self-contained for Docker builds.
This commit is contained in:
26
Dockerfile
Normal file
26
Dockerfile
Normal file
@@ -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 <scott.idem@oneskyit.com>"
|
||||||
|
|
||||||
|
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"]
|
||||||
65
requirements.txt
Normal file
65
requirements.txt
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user