diff --git a/userdb/Dockerfile b/userdb/Dockerfile new file mode 100644 index 0000000..9d996bf --- /dev/null +++ b/userdb/Dockerfile @@ -0,0 +1,39 @@ +# Use an official Python runtime as a parent image +FROM python:3.9-slim-bookworm + +# --- Basic runtime hygiene --- +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 + +# Workdir +WORKDIR /usr/src/app + +# Install OS deps first (so pip layer can cache better) +# You mentioned custom markovify & git, so we keep git. +RUN apt-get update && apt-get install -y --no-install-recommends \ + git \ + && rm -rf /var/lib/apt/lists/* + +# Copy only requirements first to leverage Docker layer cache +COPY requirements.txt . + +# Install Python deps +RUN pip install --no-cache-dir -r requirements.txt + +# Copy the rest of your app +COPY . . + +# Create a non-root user and give ownership +RUN adduser --disabled-password --gecos "" appuser \ + && chown -R appuser:appuser /usr/src/app + +USER appuser + +# Default cache dir (override with TEXTS_CACHE_DIR env if you want) +ENV DB_DIR=/usr/src/app/db +RUN mkdir -p "$DB_DIR" + +# Expose the service port +EXPOSE 5000 + +CMD ["python", "-u", "db.py"] diff --git a/userdb/db.py b/userdb/db.py index da3582a..d88553c 100644 --- a/userdb/db.py +++ b/userdb/db.py @@ -24,8 +24,8 @@ def track(): ua = str(request.args.get('ua')) url = str(request.values.get("url") or request.headers.get("Referer")) - if os.path.exists('db.json'): - with open('db.json', 'r') as db: + if os.path.exists('db/db.json'): + with open('db/db.json', 'r') as db: db = json.loads(db.read()) else: db = {} @@ -45,7 +45,7 @@ def track(): send_msg(f'User <{hash}> visited { url } on { ua } ({ str(len(db[hash][cat])) })') - with open('db.json', 'w+') as dbw: + with open('db/db.json', 'w+') as dbw: dbw.write(json.dumps(db, indent=4)) return str(len(db[hash][cat])) diff --git a/userdb/docker-compose.yml b/userdb/docker-compose.yml new file mode 100644 index 0000000..ff2c609 --- /dev/null +++ b/userdb/docker-compose.yml @@ -0,0 +1,11 @@ +services: + wordonaut: + build: . + container_name: tagbot + ports: + - "8001:5000" + environment: + - FLASK_APP=wordonaut.py + - FLASK_RUN_HOST=0.0.0.0 + volumes: + - .:/usr/src/app \ No newline at end of file diff --git a/userdb/requirements.txt b/userdb/requirements.txt new file mode 100644 index 0000000..1d9c060 --- /dev/null +++ b/userdb/requirements.txt @@ -0,0 +1,3 @@ +Flask +waitress +requests \ No newline at end of file