Update intranet tools and voucher comparison

This commit is contained in:
b17301
2026-06-04 09:00:51 +09:00
parent 2ab74bac88
commit b93289bfa8
55 changed files with 32809 additions and 1063 deletions
+54
View File
@@ -0,0 +1,54 @@
FROM python:3.12-slim-bookworm
ARG SQLITE_ARCHIVE=sqlite-autoconf-3530100.tar.gz
ARG SQLITE_URL=https://www.sqlite.org/2026/sqlite-autoconf-3530100.tar.gz
ARG SQLITE_SHA3_256=36ca143645cf76997d07b66e9244c636b8ccdec64a1d50558259c4e415e6558b
ARG APP_UID=1000
ARG APP_GID=1000
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
LD_LIBRARY_PATH=/usr/local/lib \
INTRANET_DB_PATH=/runtime/db/data.db \
INTRANET_BACKUP_DIR=/runtime/backups \
INTRANET_CACHE_ROOT=/runtime/cache \
INTRANET_COMPARE_EXPORT_DIR=/runtime/exports/wehago_compare \
INTRANET_HANMAC_EXPORT_DIR=/runtime/exports/hanmac \
WEHAGO_SOURCE_ROOT=/source/wehago \
INTRANET_REQUIRE_SAFE_SQLITE=1
RUN apt-get update \
&& apt-get install -y --no-install-recommends build-essential ca-certificates curl \
&& curl -fsSL "${SQLITE_URL}" -o "/tmp/${SQLITE_ARCHIVE}" \
&& python -c "import hashlib, pathlib; p=pathlib.Path('/tmp/${SQLITE_ARCHIVE}'); actual=hashlib.sha3_256(p.read_bytes()).hexdigest(); expected='${SQLITE_SHA3_256}'; assert actual == expected, (actual, expected)" \
&& mkdir -p /tmp/sqlite-src \
&& tar -xzf "/tmp/${SQLITE_ARCHIVE}" -C /tmp/sqlite-src --strip-components=1 \
&& cd /tmp/sqlite-src \
&& ./configure --prefix=/usr/local --enable-shared --disable-static \
&& make -j2 \
&& make install \
&& ldconfig \
&& python -c "import sqlite3; assert sqlite3.sqlite_version_info >= (3, 51, 3), sqlite3.sqlite_version" \
&& rm -rf /tmp/sqlite-src "/tmp/${SQLITE_ARCHIVE}" \
&& apt-get purge -y --auto-remove build-essential curl \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r /app/requirements.txt
COPY . /app
RUN mkdir -p /runtime/db /runtime/backups /runtime/cache /runtime/exports/wehago_compare /runtime/exports/hanmac \
&& groupadd --gid "${APP_GID}" intranet \
&& useradd --create-home --uid "${APP_UID}" --gid "${APP_GID}" intranet \
&& chown -R intranet:intranet /app /runtime
USER intranet
EXPOSE 8010
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8010/health', timeout=3).read()"
CMD ["python", "main.py"]