mike-backend / Dockerfile
bardd's picture
Run Postgres on local disk with bucket backups
bdda3e5 verified
Raw History Blame Contribute Delete
2.99 kB
FROM node:20-bookworm-slim AS backend-build
WORKDIR /build/backend
COPY backend/package*.json ./
RUN npm ci --legacy-peer-deps
COPY backend/ ./
RUN npm run build
RUN npm prune --omit=dev --legacy-peer-deps
FROM postgres:16-bookworm AS runtime
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ENV NODE_ENV=production
ENV DOTNET_ROOT=/opt/dotnet
ENV DOTNET_CLI_HOME=/tmp/dotnet
ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
ENV NUGET_PACKAGES=/opt/mike/.nuget/packages
ENV PATH="/opt/mike/python-venv/bin:/opt/dotnet:/usr/lib/postgresql/16/bin:/usr/local/bin:${PATH}"
COPY --from=node:20-bookworm-slim /usr/local/bin/node /usr/local/bin/node
COPY --from=node:20-bookworm-slim /usr/local/bin/npm /usr/local/bin/npm
COPY --from=node:20-bookworm-slim /usr/local/bin/npx /usr/local/bin/npx
COPY --from=node:20-bookworm-slim /usr/local/lib/node_modules /usr/local/lib/node_modules
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
curl \
gzip \
libicu72 \
libssl3 \
libstdc++6 \
libreoffice \
python3 \
python3-pip \
python3-venv \
tar \
zlib1g && \
rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh && \
bash /tmp/dotnet-install.sh --channel 8.0 --install-dir /opt/dotnet && \
rm /tmp/dotnet-install.sh
RUN useradd --create-home --uid 1000 --shell /bin/bash user && \
mkdir -p /opt/mike/backend /opt/mike/.nuget/packages /data /tmp/dotnet && \
chmod 777 /data /tmp/dotnet && \
chown -R user:user /opt/mike
WORKDIR /opt/mike
COPY --chown=user:user backend/ /opt/mike/backend/
COPY --from=backend-build --chown=user:user /build/backend/dist /opt/mike/backend/dist
COPY --from=backend-build --chown=user:user /build/backend/node_modules /opt/mike/backend/node_modules
RUN rm -f /usr/local/bin/npm /usr/local/bin/npx && \
ln -s ../lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm && \
ln -s ../lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx
USER user
RUN python3 -m venv /opt/mike/python-venv && \
/opt/mike/python-venv/bin/pip install --upgrade pip && \
/opt/mike/python-venv/bin/pip install --no-cache-dir -r /opt/mike/backend/python-service/requirements.txt
RUN dotnet restore /opt/mike/backend/tools/docx-commenter/docx-commenter.csproj && \
dotnet build /opt/mike/backend/tools/docx-commenter/docx-commenter.csproj --no-restore && \
dotnet restore /opt/mike/backend/tools/docx-bookmark-injector/docx-bookmark-injector.csproj && \
dotnet build /opt/mike/backend/tools/docx-bookmark-injector/docx-bookmark-injector.csproj --no-restore
USER root
COPY --chown=user:user deploy/huggingface/backend/start.sh /opt/mike/deploy/huggingface/backend/start.sh
RUN chmod +x /opt/mike/deploy/huggingface/backend/start.sh
USER user
ENV PGDATA=/tmp/mike-postgres
EXPOSE 7860
CMD ["/opt/mike/deploy/huggingface/backend/start.sh"]