cc / Dockerfile
hequ's picture
Update Dockerfile
c090f90 verified
FROM node:18-alpine AS frontend-builder
WORKDIR /app/web/admin-spa
COPY web/admin-spa/package*.json ./
RUN npm ci
COPY web/admin-spa/ ./
RUN npm run build
FROM node:18-alpine
LABEL org.opencontainers.image.title="123"
LABEL org.opencontainers.image.description="1234"
LABEL org.opencontainers.image.version="1.0.0"
LABEL maintainer="123@example.com"
WORKDIR /app
RUN apk add --no-cache redis curl dumb-init python3 py3-pip
RUN python3 -m venv /opt/venv && \
. /opt/venv/bin/activate && \
pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir huggingface_hub
ENV PATH="/opt/venv/bin:${PATH}"
COPY package*.json ./
RUN npm ci --omit=dev && npm cache clean --force
COPY . .
COPY --from=frontend-builder /app/web/admin-spa/dist /app/web/admin-spa/dist
# COPY tools/hf_backup.py /app/tools/hf_backup.py
# COPY tools/hf-backup.sh /app/tools/hf-backup.sh
RUN chmod +x /app/tools/hf-backup.sh || true
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
RUN mkdir -p /app/logs /app/data /app/temp
RUN if [ ! -f "/app/config/config.js" ] && [ -f "/app/config/config.example.js" ]; then \
cp /app/config/config.example.js /app/config/config.js; \
fi
ENV NODE_ENV=production
ENV HOST=0.0.0.0
ENV PORT=7860
EXPOSE 7860
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD sh -c 'curl -fsS "http://127.0.0.1:${PORT:-7860}/health" || exit 1'
ENTRYPOINT ["dumb-init", "--", "/usr/local/bin/docker-entrypoint.sh"]
CMD ["node", "src/app.js"]