1- # Build stage
2- FROM registry.cn-qingdao.aliyuncs.com/dataease/python:3.11-slim-bookworm AS builder
1+ # Build sqlbot
2+ FROM registry.cn-qingdao.aliyuncs.com/dataease/sqlbot-base:latest AS sqlbot- builder
33
44# Set build environment variables
55ENV PYTHONUNBUFFERED=1
@@ -17,11 +17,9 @@ RUN mkdir -p ${APP_HOME} ${UI_HOME}
1717
1818WORKDIR ${APP_HOME}
1919
20- # Install uv tool
21- COPY --from=ghcr.io/astral-sh/uv:0.7.8 /uv /uvx /bin/
20+ COPY frontend /tmp/frontend
2221
23- # COPY ../frontend/dist /opt/sqlbot/frontend/dist
24- COPY frontend/dist ${UI_HOME}/dist
22+ RUN cd /tmp/frontend; npm install; npm run build; mv dist ${UI_HOME}/dist
2523
2624# Install dependencies
2725RUN test -f "./uv.lock" && \
@@ -36,28 +34,39 @@ COPY ./backend ${APP_HOME}
3634RUN --mount=type=cache,target=/root/.cache/uv \
3735 uv sync
3836
37+ # Build g2-ssr
38+ FROM registry.cn-qingdao.aliyuncs.com/dataease/sqlbot-base:latest AS ssr-builder
39+
40+ WORKDIR /app
41+
42+ COPY g2-ssr/app.js g2-ssr/package.json /app/
43+ COPY g2-ssr/charts/* /app/charts/
44+
45+ RUN npm install
46+
3947# Runtime stage
40- FROM registry.cn-qingdao.aliyuncs.com/dataease/python:3.11-slim-bookworm
48+ FROM registry.cn-qingdao.aliyuncs.com/dataease/sqlbot-base:latest
4149
4250# Set runtime environment variables
4351ENV PYTHONUNBUFFERED=1
4452ENV SQLBOT_HOME=/opt/sqlbot
4553ENV PYTHONPATH=${SQLBOT_HOME}/app
4654ENV PATH="${SQLBOT_HOME}/app/.venv/bin:$PATH"
4755
48- RUN apt-get update && apt-get install -y --no-install-recommends \
49- curl \
50- && apt-get clean \
51- && rm -rf /var/lib/apt/lists/*
52-
5356# Copy necessary files from builder
54- COPY --from=builder ${SQLBOT_HOME} ${SQLBOT_HOME}
57+ COPY start.sh /opt/sqlbot/app/start.sh
58+ COPY g2-ssr/*.ttf /usr/share/fonts/truetype/liberation/
59+ COPY --from=sqlbot-builder ${SQLBOT_HOME} ${SQLBOT_HOME}
60+ COPY --from=ssr-builder /app /opt/sqlbot/g2-ssr
5561
5662WORKDIR ${SQLBOT_HOME}/app
5763
64+ RUN mkdir -p /opt/sqlbot/images /opt/sqlbot/g2-ssr
65+
66+ EXPOSE 3000 8000
67+
5868# Add health check
5969HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
6070 CMD curl -f http://localhost:8000 || exit 1
6171
62- # Run with uvicorn
63- CMD ["uvicorn" , "main:app" , "--host" , "0.0.0.0" , "--port" , "8000" , "--workers" , "4" , "--proxy-headers" ]
72+ ENTRYPOINT ["sh" , "start.sh" ]
0 commit comments