Kevin Hu
commited on
Commit
·
3e56b9c
1
Parent(s):
9c8f077
Refactor dockerfile (#3741)
Browse files### What problem does this PR solve?
### Type of change
- [x] Refactoring
- Dockerfile +33 -33
Dockerfile
CHANGED
|
@@ -59,6 +59,21 @@ USER root
|
|
| 59 |
|
| 60 |
WORKDIR /ragflow
|
| 61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
COPY .git /ragflow/.git
|
| 63 |
|
| 64 |
RUN current_commit=$(git rev-parse --short HEAD); \
|
|
@@ -78,28 +93,16 @@ RUN current_commit=$(git rev-parse --short HEAD); \
|
|
| 78 |
echo "RAGFlow version: $version_info"; \
|
| 79 |
echo $version_info > /ragflow/VERSION
|
| 80 |
|
| 81 |
-
COPY web web
|
| 82 |
-
COPY docs docs
|
| 83 |
-
RUN --mount=type=cache,id=ragflow_builder_npm,target=/root/.npm,sharing=locked \
|
| 84 |
-
cd web && npm install --force && npm run build
|
| 85 |
-
|
| 86 |
-
# install dependencies from poetry.lock file
|
| 87 |
-
COPY pyproject.toml poetry.toml poetry.lock ./
|
| 88 |
-
|
| 89 |
-
RUN --mount=type=cache,id=ragflow_builder_poetry,target=/root/.cache/pypoetry,sharing=locked \
|
| 90 |
-
if [ "$LIGHTEN" == "1" ]; then \
|
| 91 |
-
poetry install --no-root; \
|
| 92 |
-
else \
|
| 93 |
-
poetry install --no-root --with=full; \
|
| 94 |
-
fi
|
| 95 |
-
|
| 96 |
# production stage
|
| 97 |
FROM base AS production
|
| 98 |
USER root
|
| 99 |
|
| 100 |
WORKDIR /ragflow
|
| 101 |
|
| 102 |
-
|
|
|
|
|
|
|
|
|
|
| 103 |
|
| 104 |
# Install python packages' dependencies
|
| 105 |
# cv2 requires libGL.so.1
|
|
@@ -107,15 +110,6 @@ RUN --mount=type=cache,id=ragflow_production_apt,target=/var/cache/apt,sharing=l
|
|
| 107 |
apt update && apt install -y --no-install-recommends nginx libgl1 vim less && \
|
| 108 |
rm -rf /var/lib/apt/lists/*
|
| 109 |
|
| 110 |
-
COPY web web
|
| 111 |
-
COPY api api
|
| 112 |
-
COPY conf conf
|
| 113 |
-
COPY deepdoc deepdoc
|
| 114 |
-
COPY rag rag
|
| 115 |
-
COPY agent agent
|
| 116 |
-
COPY graphrag graphrag
|
| 117 |
-
COPY pyproject.toml poetry.toml poetry.lock ./
|
| 118 |
-
|
| 119 |
# Copy models downloaded via download_deps.py
|
| 120 |
RUN mkdir -p /ragflow/rag/res/deepdoc /root/.ragflow
|
| 121 |
RUN --mount=type=bind,source=huggingface.co,target=/huggingface.co \
|
|
@@ -153,18 +147,24 @@ RUN --mount=type=bind,source=chromedriver-linux64-121-0-6167-85,target=/chromedr
|
|
| 153 |
mv chromedriver /usr/local/bin/ && \
|
| 154 |
rm -f /usr/bin/google-chrome
|
| 155 |
|
| 156 |
-
# Copy compiled web pages
|
| 157 |
-
COPY --from=builder /ragflow/web/dist /ragflow/web/dist
|
| 158 |
-
|
| 159 |
-
# Copy Python environment and packages
|
| 160 |
-
ENV VIRTUAL_ENV=/ragflow/.venv
|
| 161 |
-
COPY --from=builder ${VIRTUAL_ENV} ${VIRTUAL_ENV}
|
| 162 |
-
ENV PATH="${VIRTUAL_ENV}/bin:${PATH}"
|
| 163 |
-
|
| 164 |
ENV PYTHONPATH=/ragflow/
|
| 165 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 166 |
COPY docker/service_conf.yaml.template ./conf/service_conf.yaml.template
|
| 167 |
COPY docker/entrypoint.sh ./entrypoint.sh
|
| 168 |
RUN chmod +x ./entrypoint.sh
|
| 169 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 170 |
ENTRYPOINT ["./entrypoint.sh"]
|
|
|
|
| 59 |
|
| 60 |
WORKDIR /ragflow
|
| 61 |
|
| 62 |
+
# install dependencies from poetry.lock file
|
| 63 |
+
COPY pyproject.toml poetry.toml poetry.lock ./
|
| 64 |
+
|
| 65 |
+
RUN --mount=type=cache,id=ragflow_builder_poetry,target=/root/.cache/pypoetry,sharing=locked \
|
| 66 |
+
if [ "$LIGHTEN" == "1" ]; then \
|
| 67 |
+
poetry install --no-root; \
|
| 68 |
+
else \
|
| 69 |
+
poetry install --no-root --with=full; \
|
| 70 |
+
fi
|
| 71 |
+
|
| 72 |
+
COPY web web
|
| 73 |
+
COPY docs docs
|
| 74 |
+
RUN --mount=type=cache,id=ragflow_builder_npm,target=/root/.npm,sharing=locked \
|
| 75 |
+
cd web && npm install --force && npm run build
|
| 76 |
+
|
| 77 |
COPY .git /ragflow/.git
|
| 78 |
|
| 79 |
RUN current_commit=$(git rev-parse --short HEAD); \
|
|
|
|
| 93 |
echo "RAGFlow version: $version_info"; \
|
| 94 |
echo $version_info > /ragflow/VERSION
|
| 95 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
# production stage
|
| 97 |
FROM base AS production
|
| 98 |
USER root
|
| 99 |
|
| 100 |
WORKDIR /ragflow
|
| 101 |
|
| 102 |
+
# Copy Python environment and packages
|
| 103 |
+
ENV VIRTUAL_ENV=/ragflow/.venv
|
| 104 |
+
COPY --from=builder ${VIRTUAL_ENV} ${VIRTUAL_ENV}
|
| 105 |
+
ENV PATH="${VIRTUAL_ENV}/bin:${PATH}"
|
| 106 |
|
| 107 |
# Install python packages' dependencies
|
| 108 |
# cv2 requires libGL.so.1
|
|
|
|
| 110 |
apt update && apt install -y --no-install-recommends nginx libgl1 vim less && \
|
| 111 |
rm -rf /var/lib/apt/lists/*
|
| 112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 113 |
# Copy models downloaded via download_deps.py
|
| 114 |
RUN mkdir -p /ragflow/rag/res/deepdoc /root/.ragflow
|
| 115 |
RUN --mount=type=bind,source=huggingface.co,target=/huggingface.co \
|
|
|
|
| 147 |
mv chromedriver /usr/local/bin/ && \
|
| 148 |
rm -f /usr/bin/google-chrome
|
| 149 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 150 |
ENV PYTHONPATH=/ragflow/
|
| 151 |
|
| 152 |
+
COPY web web
|
| 153 |
+
COPY api api
|
| 154 |
+
COPY conf conf
|
| 155 |
+
COPY deepdoc deepdoc
|
| 156 |
+
COPY rag rag
|
| 157 |
+
COPY agent agent
|
| 158 |
+
COPY graphrag graphrag
|
| 159 |
+
COPY pyproject.toml poetry.toml poetry.lock ./
|
| 160 |
+
|
| 161 |
COPY docker/service_conf.yaml.template ./conf/service_conf.yaml.template
|
| 162 |
COPY docker/entrypoint.sh ./entrypoint.sh
|
| 163 |
RUN chmod +x ./entrypoint.sh
|
| 164 |
|
| 165 |
+
# Copy compiled web pages
|
| 166 |
+
COPY --from=builder /ragflow/web/dist /ragflow/web/dist
|
| 167 |
+
|
| 168 |
+
COPY --from=builder /ragflow/VERSION /ragflow/VERSION
|
| 169 |
+
|
| 170 |
ENTRYPOINT ["./entrypoint.sh"]
|