Severian commited on
Commit
d5ae4c2
·
verified ·
1 Parent(s): d691a45

Update Dockerfile

Browse files
Files changed (1) hide show
  1. 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
- # Final stage
 
 
 
 
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
- # Wait for database\n\
 
 
 
92
  max_tries=30\n\
93
  count=0\n\
94
  echo "Checking database connection..."\n\
95
- until PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME -d $DB_DATABASE -c "SELECT 1" > /dev/null 2>&1; do\n\
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"]