Dockerfile changes: - Replace pip with uv package manager for faster builds - Remove build-essential and git dependencies - Use pyproject.toml instead of requirements.txt - Add uv installation and virtual environment setup - Modernize environment variables and caching - Fix hadolint warnings (add --no-install-recommends and pipefail) Makefile changes: - Remove docker-build-legacy target (legacy builder) - Remove docker-dev-host and docker-prod-host targets (networking workarounds) - Remove docker-reset target (networking fixes) - Remove docker-clean-legacy target (duplicate functionality) - Clean up help output and reduce maintenance overhead This modernizes the build system and removes workarounds for older Docker versions and networking issues.
54 lines
1.2 KiB
Docker
54 lines
1.2 KiB
Docker
# UnitForge Docker Image
|
|
# Modern build for development and production
|
|
|
|
FROM python:3.11-slim
|
|
|
|
# Set environment variables
|
|
ENV PYTHONUNBUFFERED=1 \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
UV_CACHE_DIR=/tmp/uv-cache \
|
|
UV_PYTHON=python3
|
|
|
|
# Install system dependencies and uv
|
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
curl \
|
|
&& curl -LsSf https://astral.sh/uv/install.sh | sh \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Add uv to PATH
|
|
ENV PATH="/root/.cargo/bin:$PATH"
|
|
|
|
# Create app user
|
|
RUN groupadd --gid 1000 app && \
|
|
useradd --uid 1000 --gid app --shell /bin/bash --create-home app
|
|
|
|
# Set work directory
|
|
WORKDIR /app
|
|
|
|
# Copy dependency files
|
|
COPY pyproject.toml uv.lock ./
|
|
|
|
# Install dependencies with uv
|
|
RUN uv venv && \
|
|
uv pip install -e ".[web]"
|
|
|
|
# Copy source code
|
|
COPY . .
|
|
|
|
# Make scripts executable
|
|
RUN chmod +x unitforge-cli start-server.sh demo.sh 2>/dev/null || true
|
|
|
|
# Change ownership
|
|
RUN chown -R app:app /app
|
|
|
|
USER app
|
|
|
|
# Activate virtual environment
|
|
ENV PATH="/app/.venv/bin:$PATH"
|
|
|
|
EXPOSE 8000
|
|
|
|
# Default command for development
|
|
CMD ["./start-server.sh", "--host", "0.0.0.0", "--log-level", "debug"]
|