Dockerfile 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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. # lgpio for Pi 5 GPIO support (rpi-lgpio Python package depends on this)
  15. python3-lgpio \
  16. scons \
  17. systemd \
  18. # Docker CLI for container self-restart/update
  19. ca-certificates curl gnupg \
  20. && pip install --upgrade pip \
  21. && pip install --no-cache-dir -r requirements.txt \
  22. # Install Docker CLI from official Docker repo
  23. && install -m 0755 -d /etc/apt/keyrings \
  24. && curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
  25. && chmod a+r /etc/apt/keyrings/docker.gpg \
  26. && 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 \
  27. && apt-get update \
  28. && apt-get install -y --no-install-recommends docker-ce-cli docker-compose-plugin \
  29. && apt-get purge -y gcc g++ make scons \
  30. && rm -rf /var/lib/apt/lists/*
  31. COPY . .
  32. EXPOSE 8080
  33. CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]