devmandan's picture
QR Scan Difficulty Check
b43c3a8 verified
Raw History Blame Contribute Delete
1.62 kB
# QR Scan Difficulty Check: the measured bell, and five open-source QR scanners that place your pictures on it.
FROM python:3.13-slim-bookworm
# Java runs ZXing as Android's Settings app does; curl fetches the pinned third-party files below
RUN apt-get update \
&& apt-get install -y --no-install-recommends openjdk-17-jdk-headless curl ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir --require-hashes --only-binary=:all: -r requirements.txt
# ZXing core 3.5.2 from Maven Central, and WeChat's detector and super-resolution models with their licence from
# WeChatCV's opencv_3rdparty repository (Apache-2.0) at a fixed commit, each checked against a pinned SHA-256
COPY server/vendor.sha256 /app/vendor/vendor.sha256
RUN cd /app/vendor && mkdir -p zxing wechat \
&& curl -fsSL -o zxing/core-3.5.2.jar https://repo1.maven.org/maven2/com/google/zxing/core/3.5.2/core-3.5.2.jar \
&& for f in detect.prototxt detect.caffemodel sr.prototxt sr.caffemodel LICENSE; do \
curl -fsSL -o "wechat/$f" "https://raw.githubusercontent.com/WeChatCV/opencv_3rdparty/3487ef7cde71d93c6a01bb0b84aa0f22c6128f6b/$f"; \
done \
&& sha256sum -c vendor.sha256
COPY server/ /app/server/
RUN javac --release 17 -d /app/vendor/zxing/classes -cp /app/vendor/zxing/core-3.5.2.jar /app/server/zxing/ZxingServer.java
COPY web/ /app/web/
RUN useradd -m -u 1000 user
USER user
ENV PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1 OPENCV_IO_MAX_IMAGE_PIXELS=50000000
EXPOSE 7860
CMD ["uvicorn", "server.main:app", "--host", "0.0.0.0", "--port", "7860", "--no-access-log"]