From 889f0a943ec3c9be7f70d741b885712e1e6b6f0a Mon Sep 17 00:00:00 2001 From: pacnpal <183241239+pacnpal@users.noreply.github.com> Date: Tue, 28 Jan 2025 21:24:00 -0500 Subject: [PATCH] feat(docker): enhance Dockerfile and entrypoint for improved package verification and diagnostics --- Dockerfile | 24 ++++++++++++++---------- docker-entrypoint.sh | 16 +++++++++++----- setup.py | 2 +- src/simpleguardhome/main.py | 4 ++-- 4 files changed, 28 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index a611f1e..00ebb45 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,22 +18,26 @@ ENV PATH="$VIRTUAL_ENV/bin:$PATH" # Upgrade pip and essential tools RUN pip install --no-cache-dir --upgrade pip setuptools wheel -# Copy requirements first for better caching -COPY requirements.txt . +# Copy source code first +COPY . /app/ -# Install Python dependencies in venv +# Set PYTHONPATH +ENV PYTHONPATH=/app/src + +# Install requirements RUN pip install --no-cache-dir -r requirements.txt -# Copy the source code -COPY . . - -# Clean any previous installations and install the package -RUN pip uninstall -y simpleguardhome || true && \ +# Install the package in development mode +RUN cd /app && \ + pip uninstall -y simpleguardhome || true && \ pip install -e . && \ + echo "Verifying installation..." && \ pip show simpleguardhome && \ - pip list && \ + pip list | grep simpleguardhome && \ python3 -c "import sys; print('Python path:', sys.path)" && \ - python3 -c "import simpleguardhome; print('Package found at:', simpleguardhome.__file__)" + echo "Testing import..." && \ + python3 -c "import simpleguardhome; print('Found package at:', simpleguardhome.__file__)" && \ + ls -la /app/src/simpleguardhome/ # Copy and set up entrypoint script COPY docker-entrypoint.sh /usr/local/bin/ diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 70dded9..2cb7dc8 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -14,16 +14,22 @@ trap handle_term SIGTERM SIGINT # Print diagnostic information echo "Verifying package installation..." -echo "Python path:" +echo "PYTHONPATH environment variable:" +echo $PYTHONPATH +echo "Directory contents of /app/src:" +ls -la /app/src/ +echo "Directory contents of /app/src/simpleguardhome:" +ls -la /app/src/simpleguardhome/ +echo "Python sys.path:" python3 -c "import sys; print('\n'.join(sys.path))" echo "Installed packages:" -pip list -echo "Attempting to import simpleguardhome..." -python3 -c "import simpleguardhome; print('Successfully imported simpleguardhome')" || exit 1 +pip list | grep simpleguardhome +echo "Attempting to import and locate simpleguardhome..." +python3 -c "import simpleguardhome, os; print('Found at:', os.path.abspath(simpleguardhome.__file__)); print('Parent dir contents:', os.listdir(os.path.dirname(simpleguardhome.__file__)))" || exit 1 # Start the application echo "Starting SimpleGuardHome server..." -exec python3 -m simpleguardhome.main +exec python3 -c "from simpleguardhome import start; start()" # Store child PID child=$! diff --git a/setup.py b/setup.py index 5664815..5b7ffdc 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ from setuptools import setup, find_packages setup( name="simpleguardhome", version="0.1.0", - packages=find_packages(where="src"), + packages=find_packages(where="src", include=["simpleguardhome*"]), package_dir={"": "src"}, include_package_data=True, package_data={ diff --git a/src/simpleguardhome/main.py b/src/simpleguardhome/main.py index 1dc67fe..ab13ca9 100644 --- a/src/simpleguardhome/main.py +++ b/src/simpleguardhome/main.py @@ -188,10 +188,10 @@ def start(): """Start the application using uvicorn.""" import uvicorn uvicorn.run( - "simpleguardhome.main:app", + app, host="0.0.0.0", port=8000, - reload=True + reload=False # Disable reload in Docker ) if __name__ == "__main__":