diff --git a/app.py b/app.py index 4a8d101..1f6d086 100644 --- a/app.py +++ b/app.py @@ -5,12 +5,23 @@ from werkzeug.security import generate_password_hash, check_password_hash import os app = Flask(__name__) + +# Ensure instance directory exists +# Ensure instance and database directories exist app.config["SECRET_KEY"] = os.environ.get( "FLASK_SECRET_KEY", "your-secret-key-here" # Fallback for development only ) -app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///" + os.path.join( - os.path.abspath(os.path.dirname(__file__)), "instance/database.db" -) +app.config["SQLALCHEMY_DATABASE_URI"] = os.environ.get("SQLALCHEMY_DATABASE_URI", "sqlite:///instance/database.db") # Read from environment + +# Ensure database directory exists AFTER config is set +with app.app_context(): + db_path = app.config["SQLALCHEMY_DATABASE_URI"].replace("sqlite:///", "") + try: + os.makedirs(os.path.dirname(db_path), exist_ok=True, mode=0o755) + print(f"Ensured database directory exists at {os.path.dirname(db_path)}") + except Exception as e: + print(f"Error creating database directory: {str(e)}") + raise app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False db = SQLAlchemy(app) diff --git a/docker-compose.yml b/docker-compose.yml index da92fd8..e0d6cd8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,9 @@ services: - "5001:5001" environment: - FLASK_ENV=production - - FLASK_SECRET_KEY=${FLASK_SECRET_KEY} # Required - set in .env file + - FLASK_SECRET_KEY=${FLASK_SECRET_KEY} - SQLALCHEMY_DATABASE_URI=sqlite:////app/instance/database.db volumes: - ./instance:/app/instance + command: > + sh -c "flask init-db && gunicorn --bind 0.0.0.0:5001 --workers 4 app:app"