guanaco/Dockerfile.test

36 lines
No EOL
1.2 KiB
Text

# Guanaco test container — mimics a fresh install environment
# Used to validate: pip install, CLI commands, app startup, auto-update flow
FROM python:3.12-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
git curl sudo systemd && \
rm -rf /var/lib/apt/lists/*
WORKDIR /opt/guanaco
# Copy project files
COPY . .
# Install into a clean venv (same as install.sh does)
RUN python -m venv /opt/guanaco-venv && \
/opt/guanaco-venv/bin/pip install --no-cache-dir -e .
# Create guanaco user (mimics install.sh)
RUN useradd -m -s /bin/bash guanaco && \
mkdir -p /home/guanaco/.guanaco && \
chown -R guanaco:guanaco /home/guanaco/.guanaco && \
mkdir -p /home/guanaco/.local/bin && \
cp /opt/guanaco/contrib/guanaco-wrapper.sh /home/guanaco/.local/bin/guanaco && \
chmod +x /home/guanaco/.local/bin/guanaco
ENV PATH="/opt/guanaco-venv/bin:/home/guanaco/.local/bin:$PATH"
USER guanaco
# Health check — app should start and respond
HEALTHCHECK --interval=5s --timeout=3s --retries=3 \
CMD curl -f http://localhost:8080/health || exit 1
EXPOSE 8080
# Default: start the server (can override for tests)
CMD ["python", "-m", "uvicorn", "guanaco.app:create_app", "--factory", "--host", "0.0.0.0", "--port", "8080"]