# syntax=docker/dockerfile:1.6 ARG TARGETOS=linux ARG PYTHON_VERSION=3.12.6 # Linux production image FROM python:${PYTHON_VERSION}-alpine AS production-linux ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 WORKDIR /app COPY data/requirements.txt ./ RUN set -eux; \ apk add --no-cache \ tzdata \ curl \ libstdc++ \ libgcc; \ apk add --no-cache --virtual .build-deps \ gcc \ musl-dev \ linux-headers \ build-base; \ python -m pip install --no-cache-dir -r requirements.txt; \ apk del .build-deps COPY data /app/data RUN addgroup -S potatomesh && \ adduser -S potatomesh -G potatomesh && \ adduser potatomesh dialout && \ chown -R potatomesh:potatomesh /app USER potatomesh ENV CONNECTION=/dev/ttyACM0 \ CHANNEL_INDEX=0 \ DEBUG=0 \ POTATOMESH_INSTANCE="" \ API_TOKEN="" CMD ["python", "-m", "data.mesh"] # Windows production image FROM python:${PYTHON_VERSION}-windowsservercore-ltsc2022 AS production-windows SHELL ["cmd", "/S", "/C"] ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 WORKDIR /app COPY data/requirements.txt ./ RUN python -m pip install --no-cache-dir -r requirements.txt COPY data /app/data USER ContainerUser ENV CONNECTION=/dev/ttyACM0 \ CHANNEL_INDEX=0 \ DEBUG=0 \ POTATOMESH_INSTANCE="" \ API_TOKEN="" CMD ["python", "-m", "data.mesh"] FROM production-${TARGETOS} AS production