Update Dockerfile
Browse files- Dockerfile +71 -76
Dockerfile
CHANGED
|
@@ -14,9 +14,6 @@ ENV POETRY_VERSION=1.8.4 \
|
|
| 14 |
PORT=7860 \
|
| 15 |
NODE_ENV=production
|
| 16 |
|
| 17 |
-
# Create user first (HF Spaces requirement)
|
| 18 |
-
RUN useradd -m -u 1000 user
|
| 19 |
-
|
| 20 |
# Install system dependencies and set up locales
|
| 21 |
RUN apt-get update && apt-get install -y \
|
| 22 |
curl \
|
|
@@ -114,82 +111,18 @@ http {
|
|
| 114 |
}
|
| 115 |
EOF
|
| 116 |
|
| 117 |
-
|
| 118 |
-
|
|
|
|
|
|
|
| 119 |
touch /run/nginx.pid && \
|
| 120 |
-
chown -R
|
| 121 |
-
chown -R user:user /var/lib/nginx && \
|
| 122 |
chmod -R 755 /var/lib/nginx && \
|
| 123 |
-
chmod -R
|
| 124 |
-
chmod
|
| 125 |
-
|
| 126 |
-
# Set up PostgreSQL directories with standard locations
|
| 127 |
-
RUN mkdir -p /var/run/postgresql /var/lib/postgresql/data /var/log/postgresql && \
|
| 128 |
-
chown -R user:user /var/run/postgresql /var/lib/postgresql/data /var/log/postgresql && \
|
| 129 |
-
chmod 700 /var/lib/postgresql/data
|
| 130 |
-
|
| 131 |
-
# Create application directories
|
| 132 |
-
RUN mkdir -p /app/api /app/web /data/storage && \
|
| 133 |
-
chown -R user:user /app /data && \
|
| 134 |
chmod 777 /data /app
|
| 135 |
|
| 136 |
-
#
|
| 137 |
-
USER user
|
| 138 |
-
|
| 139 |
-
# Set environment for user
|
| 140 |
-
ENV HOME=/home/user \
|
| 141 |
-
PATH=/usr/lib/postgresql/15/bin:/home/user/.local/bin:$PATH \
|
| 142 |
-
PGDATA=/var/lib/postgresql/data
|
| 143 |
-
|
| 144 |
-
# Pull official images
|
| 145 |
-
FROM langgenius/dify-web:latest AS web
|
| 146 |
-
FROM langgenius/dify-api:latest AS api
|
| 147 |
-
|
| 148 |
-
# Final stage
|
| 149 |
-
FROM base
|
| 150 |
-
|
| 151 |
-
# Set up directory structure
|
| 152 |
-
WORKDIR /app
|
| 153 |
-
RUN mkdir -p api web /data/storage
|
| 154 |
-
|
| 155 |
-
# Copy from official images
|
| 156 |
-
COPY --from=web --chown=user:user /app/web /app/web/
|
| 157 |
-
COPY --from=api --chown=user:user /app/api /app/api/
|
| 158 |
-
|
| 159 |
-
# Install API dependencies using Poetry
|
| 160 |
-
WORKDIR /app/api
|
| 161 |
-
COPY --from=api --chown=user /app/api/pyproject.toml /app/api/poetry.lock /app/api/poetry.toml ./
|
| 162 |
-
RUN poetry install --no-root --no-dev
|
| 163 |
-
|
| 164 |
-
# Create symlink for persistent storage
|
| 165 |
-
RUN ln -s /data/storage /app/api/storage
|
| 166 |
-
|
| 167 |
-
# Set environment variables
|
| 168 |
-
ENV FLASK_APP=app.py \
|
| 169 |
-
EDITION=SELF_HOSTED \
|
| 170 |
-
DEPLOY_ENV=PRODUCTION \
|
| 171 |
-
MODE=api \
|
| 172 |
-
LOG_LEVEL=INFO \
|
| 173 |
-
DEBUG=false \
|
| 174 |
-
FLASK_DEBUG=false \
|
| 175 |
-
SECRET_KEY=sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U \
|
| 176 |
-
CONSOLE_API_URL=https://${SPACE_ID}.hf.space \
|
| 177 |
-
CONSOLE_WEB_URL=https://${SPACE_ID}.hf.space \
|
| 178 |
-
SERVICE_API_URL=https://${SPACE_ID}.hf.space \
|
| 179 |
-
APP_WEB_URL=https://${SPACE_ID}.hf.space \
|
| 180 |
-
DIFY_PORT=5001 \
|
| 181 |
-
DIFY_BIND_ADDRESS=127.0.0.1 \
|
| 182 |
-
DB_USERNAME=user \
|
| 183 |
-
DB_PASSWORD=difyai123456 \
|
| 184 |
-
DB_HOST=localhost \
|
| 185 |
-
DB_PORT=5432 \
|
| 186 |
-
DB_DATABASE=dify \
|
| 187 |
-
PYTHONPATH=/app/api \
|
| 188 |
-
STORAGE_PATH=/data/storage
|
| 189 |
-
|
| 190 |
-
EXPOSE 7860
|
| 191 |
-
|
| 192 |
-
# Create startup script
|
| 193 |
COPY <<-'EOT' /app/entrypoint.sh
|
| 194 |
#!/bin/bash
|
| 195 |
set -e
|
|
@@ -312,7 +245,69 @@ while true; do
|
|
| 312 |
done
|
| 313 |
EOT
|
| 314 |
|
| 315 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 316 |
|
| 317 |
WORKDIR /app
|
| 318 |
|
|
|
|
| 14 |
PORT=7860 \
|
| 15 |
NODE_ENV=production
|
| 16 |
|
|
|
|
|
|
|
|
|
|
| 17 |
# Install system dependencies and set up locales
|
| 18 |
RUN apt-get update && apt-get install -y \
|
| 19 |
curl \
|
|
|
|
| 111 |
}
|
| 112 |
EOF
|
| 113 |
|
| 114 |
+
# Set up directories and permissions
|
| 115 |
+
RUN mkdir -p /var/log/nginx /var/run/postgresql /var/lib/postgresql/data /var/log/postgresql /app/api /app/web /data/storage && \
|
| 116 |
+
chown -R root:root /etc/nginx && \
|
| 117 |
+
chmod -R 755 /etc/nginx && \
|
| 118 |
touch /run/nginx.pid && \
|
| 119 |
+
chown -R root:root /run/nginx.pid && \
|
|
|
|
| 120 |
chmod -R 755 /var/lib/nginx && \
|
| 121 |
+
chmod -R 777 /run && \
|
| 122 |
+
chmod 700 /var/lib/postgresql/data && \
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
chmod 777 /data /app
|
| 124 |
|
| 125 |
+
# Create and configure entrypoint script
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 126 |
COPY <<-'EOT' /app/entrypoint.sh
|
| 127 |
#!/bin/bash
|
| 128 |
set -e
|
|
|
|
| 245 |
done
|
| 246 |
EOT
|
| 247 |
|
| 248 |
+
# Set permissions for entrypoint script
|
| 249 |
+
RUN chmod +x /app/entrypoint.sh && \
|
| 250 |
+
chown user:user /app/entrypoint.sh
|
| 251 |
+
|
| 252 |
+
# Create user after setting up all files and permissions
|
| 253 |
+
RUN useradd -m -u 1000 user && \
|
| 254 |
+
chown -R user:user /var/run/postgresql /var/lib/postgresql/data /var/log/postgresql /app /data /var/log/nginx
|
| 255 |
+
|
| 256 |
+
# Switch to user for remaining operations
|
| 257 |
+
USER user
|
| 258 |
+
|
| 259 |
+
# Set environment for user
|
| 260 |
+
ENV HOME=/home/user \
|
| 261 |
+
PATH=/usr/lib/postgresql/15/bin:/home/user/.local/bin:$PATH \
|
| 262 |
+
PGDATA=/var/lib/postgresql/data
|
| 263 |
+
|
| 264 |
+
# Pull official images
|
| 265 |
+
FROM langgenius/dify-web:latest AS web
|
| 266 |
+
FROM langgenius/dify-api:latest AS api
|
| 267 |
+
|
| 268 |
+
# Final stage
|
| 269 |
+
FROM base
|
| 270 |
+
|
| 271 |
+
# Set up directory structure
|
| 272 |
+
WORKDIR /app
|
| 273 |
+
RUN mkdir -p api web /data/storage
|
| 274 |
+
|
| 275 |
+
# Copy from official images
|
| 276 |
+
COPY --from=web --chown=user:user /app/web /app/web/
|
| 277 |
+
COPY --from=api --chown=user:user /app/api /app/api/
|
| 278 |
+
|
| 279 |
+
# Install API dependencies using Poetry
|
| 280 |
+
WORKDIR /app/api
|
| 281 |
+
COPY --from=api --chown=user /app/api/pyproject.toml /app/api/poetry.lock /app/api/poetry.toml ./
|
| 282 |
+
RUN poetry install --no-root --no-dev
|
| 283 |
+
|
| 284 |
+
# Create symlink for persistent storage
|
| 285 |
+
RUN ln -s /data/storage /app/api/storage
|
| 286 |
+
|
| 287 |
+
# Set environment variables
|
| 288 |
+
ENV FLASK_APP=app.py \
|
| 289 |
+
EDITION=SELF_HOSTED \
|
| 290 |
+
DEPLOY_ENV=PRODUCTION \
|
| 291 |
+
MODE=api \
|
| 292 |
+
LOG_LEVEL=INFO \
|
| 293 |
+
DEBUG=false \
|
| 294 |
+
FLASK_DEBUG=false \
|
| 295 |
+
SECRET_KEY=sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U \
|
| 296 |
+
CONSOLE_API_URL=https://${SPACE_ID}.hf.space \
|
| 297 |
+
CONSOLE_WEB_URL=https://${SPACE_ID}.hf.space \
|
| 298 |
+
SERVICE_API_URL=https://${SPACE_ID}.hf.space \
|
| 299 |
+
APP_WEB_URL=https://${SPACE_ID}.hf.space \
|
| 300 |
+
DIFY_PORT=5001 \
|
| 301 |
+
DIFY_BIND_ADDRESS=127.0.0.1 \
|
| 302 |
+
DB_USERNAME=user \
|
| 303 |
+
DB_PASSWORD=difyai123456 \
|
| 304 |
+
DB_HOST=localhost \
|
| 305 |
+
DB_PORT=5432 \
|
| 306 |
+
DB_DATABASE=dify \
|
| 307 |
+
PYTHONPATH=/app/api \
|
| 308 |
+
STORAGE_PATH=/data/storage
|
| 309 |
+
|
| 310 |
+
EXPOSE 7860
|
| 311 |
|
| 312 |
WORKDIR /app
|
| 313 |
|