FROM python:3.11-slim # Install docker CLI (just the client, not the daemon) RUN apt-get update && \ apt-get install -y --no-install-recommends curl gnupg && \ install -m 0755 -d /etc/apt/keyrings && \ curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list && \ apt-get update && \ apt-get install -y --no-install-recommends docker-ce-cli && \ rm -rf /var/lib/apt/lists/* # Install PyYAML for registry parsing RUN pip install --no-cache-dir pyyaml WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY app/ ./app/ COPY static/ ./static/ # Locale support for paths with special chars + libexpat for host venv compatibility RUN apt-get update && \ apt-get install -y --no-install-recommends locales libexpat1 && \ echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen && \ rm -rf /var/lib/apt/lists/* ENV LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 EXPOSE 8080 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"]