Skip to content

Commit 1d98de3

Browse files
chore: make all-in-one Dockerfile
1 parent 828573f commit 1d98de3

File tree

3 files changed

+31
-15
lines changed

3 files changed

+31
-15
lines changed

Dockerfile

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
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
55
ENV PYTHONUNBUFFERED=1
@@ -17,11 +17,9 @@ RUN mkdir -p ${APP_HOME} ${UI_HOME}
1717

1818
WORKDIR ${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
2725
RUN test -f "./uv.lock" && \
@@ -36,28 +34,39 @@ COPY ./backend ${APP_HOME}
3634
RUN --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
4351
ENV PYTHONUNBUFFERED=1
4452
ENV SQLBOT_HOME=/opt/sqlbot
4553
ENV PYTHONPATH=${SQLBOT_HOME}/app
4654
ENV 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

5662
WORKDIR ${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
5969
HEALTHCHECK --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"]

g2-ssr

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit f84b33039e4339ab4598831fcf6a844092dc6a40

start.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SSR_PATH=/opt/sqlbot/g2-ssr
2+
APP_PATH=/opt/sqlbot/app
3+
node $SSR_PATH/app.js
4+
5+
cd $APP_PATH
6+
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 1 --proxy-headers

0 commit comments

Comments
 (0)