36 lines
No EOL
1.2 KiB
Text
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"] |