Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
WORKDIR /app

# Install system build tools for packages with native extensions
RUN apt-get update && \

Check warning on line 9 in Dockerfile

View check run for this annotation

Codeac.io / Codeac Code Quality

DL3008

Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>`
apt-get install -y --no-install-recommends build-essential gcc libffi-dev libssl-dev && \
rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*.deb

Expand Down Expand Up @@ -47,13 +47,13 @@

# Copy entrypoint sctipt and SQLite database
COPY --chown=root:root --chmod=755 scripts/entrypoint.sh ./entrypoint.sh
COPY --chown=root:root --chmod=755 sqlite3-db ./docker-compose
COPY --chown=root:root --chmod=755 storage ./docker-compose

# Create non-root user and make volume mount point writable
RUN groupadd --system fastapi && \
adduser --system --ingroup fastapi --disabled-password --gecos '' fastapi && \
mkdir -p /sqlite3-db && \
chown fastapi:fastapi /sqlite3-db
mkdir -p /storage && \
chown fastapi:fastapi /storage

# Drop privileges
USER fastapi
Expand Down
4 changes: 2 additions & 2 deletions database/player_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
import logging
import os
from typing import AsyncGenerator
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession

Check failure on line 8 in database/player_database.py

View check run for this annotation

Codeac.io / Codeac Code Quality

import-error

Unable to import 'sqlalchemy.ext.asyncio'
from sqlalchemy.orm import sessionmaker, declarative_base

Check failure on line 9 in database/player_database.py

View check run for this annotation

Codeac.io / Codeac Code Quality

import-error

Unable to import 'sqlalchemy.orm'

database_file_path = os.getenv("DATABASE_FILE_PATH", "./sqlite3-db/players-sqlite3.db")
DATABASE_URL = f"sqlite+aiosqlite:///{database_file_path}"
storage_path = os.getenv("STORAGE_PATH", "./storage/players-sqlite3.db")
DATABASE_URL = f"sqlite+aiosqlite:///{storage_path}"

logger = logging.getLogger("uvicorn")
logging.getLogger("sqlalchemy.engine.Engine").handlers = logger.handlers
Expand Down
6 changes: 3 additions & 3 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ services:
ports:
- "9000:9000"
volumes:
- sqlite3-db:/sqlite3-db/
- storage:/storage/
environment:
- PYTHONUNBUFFERED=1
- DATABASE_FILE_PATH=/sqlite3-db/players-sqlite3.db
- STORAGE_PATH=/storage/players-sqlite3.db
restart: unless-stopped

volumes:
sqlite3-db:
storage:
14 changes: 7 additions & 7 deletions scripts/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
#!/bin/bash
set -e

IMAGE_DATABASE_FILE_PATH="/app/docker-compose/players-sqlite3.db"
VOLUME_DATABASE_FILE_PATH="/sqlite3-db/players-sqlite3.db"
IMAGE_STORAGE_PATH="/app/docker-compose/players-sqlite3.db"
VOLUME_STORAGE_PATH="/storage/players-sqlite3.db"

echo "✔ Starting container..."

if [ ! -f "$VOLUME_DATABASE_FILE_PATH" ]; then
if [ ! -f "$VOLUME_STORAGE_PATH" ]; then
echo "⚠️ No existing database file found in volume."
if [ -f "$IMAGE_DATABASE_FILE_PATH" ]; then
if [ -f "$IMAGE_STORAGE_PATH" ]; then
echo "Copying database file to writable volume..."
cp "$IMAGE_DATABASE_FILE_PATH" "$VOLUME_DATABASE_FILE_PATH"
echo "✔ Database initialized at $VOLUME_DATABASE_FILE_PATH"
cp "$IMAGE_STORAGE_PATH" "$VOLUME_STORAGE_PATH"
echo "✔ Database initialized at $VOLUME_STORAGE_PATH"
else
echo "⚠️ Database file missing at $IMAGE_DATABASE_FILE_PATH"
echo "⚠️ Database file missing at $IMAGE_STORAGE_PATH"
exit 1
fi
else
Expand Down
File renamed without changes.
Loading