Files
HospitalAssistantBackend/Dockerfile
Miwory 967bb8d936
Some checks failed
Build And Push / publish (push) Failing after 3m15s
first commit
2025-09-24 04:11:55 +03:00

83 lines
2.5 KiB
Docker

#################################################
FROM debian:bookworm-slim AS builder-base
RUN apt-get update && \
apt-get install --no-install-recommends -y \
libpq-dev \
ca-certificates \
libc6 \
libstdc++6 \
sudo \
&& groupadd --gid 1001 appuser \
&& useradd --uid 1001 --gid appuser --shell /bin/bash --create-home appuser
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
UV_VERSION="0.7.6" \
UV_PYTHON="3.13.3" \
UV_PYTHON_INSTALL_DIR="/app/.python" \
UV_PYTHON_PREFERENCE="only-managed" \
UV_COMPILE_BYTECODE=1 \
UV_NO_INSTALLER_METADATA=1 \
UV_LINK_MODE=copy \
PATH="$PATH:/root/.local/bin/:/app/.venv/bin:/opt/cprocsp/bin/amd64:/opt/cprocsp/sbin/amd64"
# Install CryptoPro CSP 5
WORKDIR /tmp/cryptopro
COPY packages/linux-amd64_deb.tgz /tmp/cryptopro/
RUN tar -xzf linux-amd64_deb.tgz && \
cd linux-amd64_deb && \
./install.sh && \
dpkg -i cprocsp-cptools-*.deb lsb-cprocsp-base_*.deb lsb-cprocsp-kc1_*.deb lsb-cprocsp-capilite_*.deb || apt-get install -f -y && \
# Create symbolic links for CryptoPro tools
ln -s /opt/cprocsp/bin/amd64/certmgr /bin/certmgr && \
ln -s /opt/cprocsp/bin/amd64/cpverify /bin/cpverify && \
ln -s /opt/cprocsp/bin/amd64/cryptcp /bin/cryptcp && \
ln -s /opt/cprocsp/bin/amd64/csptest /bin/csptest && \
ln -s /opt/cprocsp/sbin/amd64/cpconfig /bin/cpconfig && \
# Set permissions for CryptoPro directories
mkdir -p /etc/opt/cprocsp /var/opt/cprocsp && \
chown -R appuser:appuser /etc/opt/cprocsp /var/opt/cprocsp && \
# Clean up
rm -rf /tmp/cryptopro && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
#################################################
FROM builder-base AS python-base
WORKDIR /app
RUN apt-get update && \
apt-get install --no-install-recommends -y \
curl \
clang \
&& curl -LsSf https://github.com/astral-sh/uv/releases/download/${UV_VERSION}/uv-installer.sh | sh && \
uv python install && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
COPY pyproject.toml ./
RUN uv sync --no-dev -n
RUN uv version --short > .version
#################################################
FROM builder-base AS production
WORKDIR /app
RUN chown -R appuser:appuser /app
COPY --from=python-base /app/.python /app/.python
COPY --from=python-base /app/.venv /app/.venv
COPY --from=python-base /app/.version /app/
COPY /src/ /app/
COPY /scripts/ /app/scripts
RUN chmod -R 755 /app/scripts
USER appuser
CMD ["sh", "./scripts/boot.sh"]
#################################################