Update Dockerfile
Browse files- Dockerfile +25 -15
Dockerfile
CHANGED
@@ -1,21 +1,32 @@
|
|
1 |
# Base Python image with correct version
|
2 |
FROM python:3.12-slim-bookworm AS base
|
3 |
|
4 |
-
|
5 |
-
|
6 |
-
# Install Poetry and configure
|
7 |
ENV POETRY_VERSION=1.8.4 \
|
8 |
POETRY_NO_INTERACTION=1 \
|
9 |
POETRY_VIRTUALENVS_CREATE=true \
|
10 |
POETRY_VIRTUALENVS_IN_PROJECT=true \
|
11 |
POETRY_CACHE_DIR=/tmp/poetry_cache \
|
12 |
-
|
13 |
|
14 |
# Install system dependencies
|
15 |
-
RUN apt-get update && apt-get install -y
|
16 |
-
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
# Create non-root user
|
21 |
RUN useradd -m -u 1000 user
|
@@ -25,15 +36,14 @@ WORKDIR /app
|
|
25 |
RUN mkdir -p api web /data/storage && \
|
26 |
chown -R user:user /app /data
|
27 |
|
28 |
-
# Copy
|
29 |
-
COPY --chown=user
|
|
|
30 |
|
31 |
-
# Install dependencies
|
32 |
WORKDIR /app/api
|
33 |
-
|
34 |
-
|
35 |
-
# Copy application code
|
36 |
-
COPY --chown=user . .
|
37 |
|
38 |
# Create symlink for persistent storage
|
39 |
RUN ln -s /data/storage /app/api/storage
|
|
|
1 |
# Base Python image with correct version
|
2 |
FROM python:3.12-slim-bookworm AS base
|
3 |
|
4 |
+
# Set shared environment variables
|
|
|
|
|
5 |
ENV POETRY_VERSION=1.8.4 \
|
6 |
POETRY_NO_INTERACTION=1 \
|
7 |
POETRY_VIRTUALENVS_CREATE=true \
|
8 |
POETRY_VIRTUALENVS_IN_PROJECT=true \
|
9 |
POETRY_CACHE_DIR=/tmp/poetry_cache \
|
10 |
+
PYTHONDONTWRITEBYTECODE=1
|
11 |
|
12 |
# Install system dependencies
|
13 |
+
RUN apt-get update && apt-get install -y \
|
14 |
+
curl \
|
15 |
+
git \
|
16 |
+
gcc \
|
17 |
+
python3-dev \
|
18 |
+
libgmp-dev \
|
19 |
+
libmpfr-dev \
|
20 |
+
libmpc-dev \
|
21 |
+
&& rm -rf /var/lib/apt/lists/* \
|
22 |
+
&& pip install --no-cache-dir "poetry==${POETRY_VERSION}"
|
23 |
+
|
24 |
+
# Pull official images
|
25 |
+
FROM langgenius/dify-web:latest AS web
|
26 |
+
FROM langgenius/dify-api:latest AS api
|
27 |
+
|
28 |
+
# Final stage
|
29 |
+
FROM base
|
30 |
|
31 |
# Create non-root user
|
32 |
RUN useradd -m -u 1000 user
|
|
|
36 |
RUN mkdir -p api web /data/storage && \
|
37 |
chown -R user:user /app /data
|
38 |
|
39 |
+
# Copy from official images
|
40 |
+
COPY --from=web --chown=user /app/web /app/web/
|
41 |
+
COPY --from=api --chown=user /app/api /app/api/
|
42 |
|
43 |
+
# Install API dependencies using Poetry
|
44 |
WORKDIR /app/api
|
45 |
+
COPY --from=api --chown=user /app/api/pyproject.toml /app/api/poetry.lock /app/api/poetry.toml ./
|
46 |
+
RUN poetry install --no-root --no-dev
|
|
|
|
|
47 |
|
48 |
# Create symlink for persistent storage
|
49 |
RUN ln -s /data/storage /app/api/storage
|