Files

62 lines
1.7 KiB
Docker

FROM python:3.11-slim
ARG APP_VERSION=1.1.9
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
APP_VERSION=${APP_VERSION}
# System dependencies required by the backend (SSH, PDF, etc.)
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
curl \
wget \
sshpass \
openssh-client \
ca-certificates \
libpango-1.0-0 \
libpangocairo-1.0-0 \
libgdk-pixbuf2.0-0 \
libffi-dev \
shared-mime-info \
&& rm -rf /var/lib/apt/lists/*
# Create application directories
RUN mkdir -p /opt/depl0y/backend \
/var/lib/depl0y/db \
/var/lib/depl0y/cloud-images \
/var/lib/depl0y/isos \
/var/lib/depl0y/ssh_keys \
/var/lib/depl0y/cloud-init \
/var/log/depl0y
WORKDIR /opt/depl0y/backend
# Install Python dependencies
COPY src/backend/requirements.txt /opt/depl0y/backend/requirements.txt
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir -r requirements.txt \
&& pip install --no-cache-dir weasyprint markdown requests
# Copy backend code
COPY src/backend /opt/depl0y/backend
# Default environment values (can be overridden at runtime)
ENV DATABASE_URL=sqlite:////var/lib/depl0y/db/depl0y.db \
ISO_STORAGE_PATH=/var/lib/depl0y/isos \
UPLOAD_DIR=/var/lib/depl0y \
CLOUDINIT_TEMPLATE_PATH=/var/lib/depl0y/cloud-init \
SSH_KEY_PATH=/var/lib/depl0y/ssh_keys \
LOG_FILE=/var/log/depl0y/app.log \
APPLICATION_PORT_INTERNAL=8080
# Entrypoint script
COPY deployment/docker/backend/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
EXPOSE 8080
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]