Dockerfile 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. FROM --platform=$TARGETPLATFORM python:3.11-slim-bookworm
  2. # Faster, repeatable builds
  3. ENV PYTHONDONTWRITEBYTECODE=1 \
  4. PYTHONUNBUFFERED=1 \
  5. PIP_NO_CACHE_DIR=1 \
  6. PIP_DISABLE_PIP_VERSION_CHECK=1
  7. WORKDIR /app
  8. COPY requirements.txt ./
  9. RUN apt-get update && apt-get install -y --no-install-recommends \
  10. gcc g++ make libjpeg-dev zlib1g-dev git \
  11. # GPIO/NeoPixel support for DW LEDs
  12. python3-dev python3-pip \
  13. libgpiod2 libgpiod-dev \
  14. scons \
  15. systemd \
  16. # Docker CLI for container self-restart/update
  17. ca-certificates curl gnupg \
  18. && pip install --upgrade pip \
  19. && pip install --no-cache-dir -r requirements.txt \
  20. # Install Docker CLI from official Docker repo
  21. && install -m 0755 -d /etc/apt/keyrings \
  22. && curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
  23. && chmod a+r /etc/apt/keyrings/docker.gpg \
  24. && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" > /etc/apt/sources.list.d/docker.list \
  25. && apt-get update \
  26. && apt-get install -y --no-install-recommends docker-ce-cli docker-compose-plugin \
  27. && apt-get purge -y gcc g++ make scons \
  28. && rm -rf /var/lib/apt/lists/*
  29. COPY . .
  30. EXPOSE 8080
  31. CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]