Update Dockerfile
Browse files- Dockerfile +30 -4
Dockerfile
CHANGED
@@ -28,7 +28,11 @@ RUN apt-get update && apt-get install -y \
|
|
28 |
FROM langgenius/dify-web:latest AS web
|
29 |
FROM langgenius/dify-api:latest AS api
|
30 |
|
31 |
-
#
|
|
|
|
|
|
|
|
|
32 |
FROM base
|
33 |
|
34 |
# Create non-root user
|
@@ -84,15 +88,32 @@ ENV FLASK_APP=app.py \
|
|
84 |
USER user
|
85 |
EXPOSE 7860 3000
|
86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
# Create startup script with connection retries
|
88 |
RUN echo '#!/bin/bash\n\
|
89 |
echo "===== Application Startup at $(date "+%Y-%m-%d %H:%M:%S") ====="\n\
|
90 |
\n\
|
91 |
-
#
|
|
|
|
|
|
|
92 |
max_tries=30\n\
|
93 |
count=0\n\
|
94 |
echo "Checking database connection..."\n\
|
95 |
-
until PGPASSWORD=$DB_PASSWORD psql -h
|
96 |
echo "Waiting for database connection..."\n\
|
97 |
sleep 2\n\
|
98 |
count=$((count+1))\n\
|
@@ -102,6 +123,11 @@ until PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME -d $D
|
|
102 |
fi\n\
|
103 |
done\n\
|
104 |
\n\
|
|
|
|
|
|
|
|
|
|
|
105 |
echo "Database connection successful"\n\
|
106 |
\n\
|
107 |
# Run database migrations\n\
|
@@ -123,4 +149,4 @@ chmod +x /app/entrypoint.sh
|
|
123 |
|
124 |
WORKDIR /app
|
125 |
|
126 |
-
CMD ["./entrypoint.sh"]
|
|
|
28 |
FROM langgenius/dify-web:latest AS web
|
29 |
FROM langgenius/dify-api:latest AS api
|
30 |
|
31 |
+
# After base image setup and before final stage (around line 27)
|
32 |
+
# Add PostgreSQL stage
|
33 |
+
FROM postgres:15-alpine AS postgres
|
34 |
+
|
35 |
+
# Final stage (continuing from line 32)
|
36 |
FROM base
|
37 |
|
38 |
# Create non-root user
|
|
|
88 |
USER user
|
89 |
EXPOSE 7860 3000
|
90 |
|
91 |
+
# Install PostgreSQL
|
92 |
+
RUN apt-get update && apt-get install -y postgresql postgresql-contrib && \
|
93 |
+
rm -rf /var/lib/apt/lists/* && \
|
94 |
+
mkdir -p /var/lib/postgresql/data && \
|
95 |
+
chown -R postgres:postgres /var/lib/postgresql
|
96 |
+
|
97 |
+
# Initialize PostgreSQL database
|
98 |
+
USER postgres
|
99 |
+
RUN /usr/lib/postgresql/15/bin/initdb -D /var/lib/postgresql/data && \
|
100 |
+
echo "host all all 0.0.0.0/0 md5" >> /var/lib/postgresql/data/pg_hba.conf && \
|
101 |
+
echo "listen_addresses='*'" >> /var/lib/postgresql/data/postgresql.conf
|
102 |
+
|
103 |
+
USER user
|
104 |
+
|
105 |
# Create startup script with connection retries
|
106 |
RUN echo '#!/bin/bash\n\
|
107 |
echo "===== Application Startup at $(date "+%Y-%m-%d %H:%M:%S") ====="\n\
|
108 |
\n\
|
109 |
+
# Start PostgreSQL\n\
|
110 |
+
sudo -u postgres /usr/lib/postgresql/15/bin/pg_ctl -D /var/lib/postgresql/data start\n\
|
111 |
+
\n\
|
112 |
+
# Wait for PostgreSQL to start\n\
|
113 |
max_tries=30\n\
|
114 |
count=0\n\
|
115 |
echo "Checking database connection..."\n\
|
116 |
+
until PGPASSWORD=$DB_PASSWORD psql -h localhost -p 5432 -U postgres -c "SELECT 1" > /dev/null 2>&1; do\n\
|
117 |
echo "Waiting for database connection..."\n\
|
118 |
sleep 2\n\
|
119 |
count=$((count+1))\n\
|
|
|
123 |
fi\n\
|
124 |
done\n\
|
125 |
\n\
|
126 |
+
# Create database and user if they dont exist\n\
|
127 |
+
PGPASSWORD=$DB_PASSWORD psql -h localhost -U postgres -c "CREATE DATABASE $DB_DATABASE;" || true\n\
|
128 |
+
PGPASSWORD=$DB_PASSWORD psql -h localhost -U postgres -c "CREATE USER $DB_USERNAME WITH PASSWORD '\''$DB_PASSWORD'\'';" || true\n\
|
129 |
+
PGPASSWORD=$DB_PASSWORD psql -h localhost -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE $DB_DATABASE TO $DB_USERNAME;" || true\n\
|
130 |
+
\n\
|
131 |
echo "Database connection successful"\n\
|
132 |
\n\
|
133 |
# Run database migrations\n\
|
|
|
149 |
|
150 |
WORKDIR /app
|
151 |
|
152 |
+
CMD ["./entrypoint.sh"]
|