Update Dockerfile
Browse files- Dockerfile +23 -12
Dockerfile
CHANGED
@@ -9,15 +9,17 @@ ENV POETRY_VERSION=1.8.4 \
|
|
9 |
POETRY_CACHE_DIR=/tmp/poetry_cache \
|
10 |
PYTHONDONTWRITEBYTECODE=1
|
11 |
|
12 |
-
# Create users first
|
13 |
-
RUN
|
|
|
|
|
14 |
|
15 |
-
# Install system dependencies and set up directories
|
16 |
RUN apt-get update && apt-get install -y \
|
17 |
postgresql \
|
18 |
&& rm -rf /var/lib/apt/lists/* \
|
19 |
-
&& mkdir -p /var/run/postgresql /var/lib/postgresql/data \
|
20 |
-
&& chown postgres:postgres /var/run/postgresql /var/lib/postgresql/data \
|
21 |
&& chmod 2777 /var/run/postgresql \
|
22 |
&& chmod 700 /var/lib/postgresql/data
|
23 |
|
@@ -116,15 +118,21 @@ EXPOSE 7860 3000
|
|
116 |
RUN echo '#!/bin/bash\n\
|
117 |
echo "===== Application Startup at $(date "+%Y-%m-%d %H:%M:%S") ====="\n\
|
118 |
\n\
|
119 |
-
#
|
120 |
-
mkdir -p /var/log/postgresql\n\
|
121 |
-
chown postgres:postgres /var/log/postgresql\n\
|
122 |
-
|
|
|
123 |
\n\
|
|
|
|
|
|
|
|
|
|
|
124 |
max_tries=30\n\
|
125 |
count=0\n\
|
126 |
echo "Checking database connection..."\n\
|
127 |
-
until PGPASSWORD="${DB_PASSWORD}" psql -h
|
128 |
echo "Waiting for database connection... (${count}/${max_tries})"\n\
|
129 |
sleep 2\n\
|
130 |
count=$((count+1))\n\
|
@@ -134,8 +142,11 @@ until PGPASSWORD="${DB_PASSWORD}" psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_
|
|
134 |
fi\n\
|
135 |
done\n\
|
136 |
\n\
|
137 |
-
# Create database
|
138 |
-
PGPASSWORD="${DB_PASSWORD}" psql -h
|
|
|
|
|
|
|
139 |
\n\
|
140 |
echo "Database connection successful"\n\
|
141 |
\n\
|
|
|
9 |
POETRY_CACHE_DIR=/tmp/poetry_cache \
|
10 |
PYTHONDONTWRITEBYTECODE=1
|
11 |
|
12 |
+
# Create users first with specific GID/UID for HF Spaces compatibility
|
13 |
+
RUN groupadd -g 1000 user && \
|
14 |
+
useradd -m -u 1000 -g user user && \
|
15 |
+
usermod -aG postgres user
|
16 |
|
17 |
+
# Install system dependencies and set up directories with correct permissions
|
18 |
RUN apt-get update && apt-get install -y \
|
19 |
postgresql \
|
20 |
&& rm -rf /var/lib/apt/lists/* \
|
21 |
+
&& mkdir -p /var/run/postgresql /var/lib/postgresql/data /var/log/postgresql \
|
22 |
+
&& chown -R postgres:postgres /var/run/postgresql /var/lib/postgresql/data /var/log/postgresql \
|
23 |
&& chmod 2777 /var/run/postgresql \
|
24 |
&& chmod 700 /var/lib/postgresql/data
|
25 |
|
|
|
118 |
RUN echo '#!/bin/bash\n\
|
119 |
echo "===== Application Startup at $(date "+%Y-%m-%d %H:%M:%S") ====="\n\
|
120 |
\n\
|
121 |
+
# Ensure PostgreSQL directories have correct permissions\n\
|
122 |
+
mkdir -p /var/log/postgresql /var/run/postgresql\n\
|
123 |
+
chown -R postgres:postgres /var/log/postgresql /var/run/postgresql /var/lib/postgresql/data\n\
|
124 |
+
chmod 2777 /var/run/postgresql\n\
|
125 |
+
chmod 700 /var/lib/postgresql/data\n\
|
126 |
\n\
|
127 |
+
# Start PostgreSQL as postgres user without using su command\n\
|
128 |
+
runuser -u postgres -- /usr/lib/postgresql/15/bin/pg_ctl -D /var/lib/postgresql/data \
|
129 |
+
-l /var/log/postgresql/postgresql.log start\n\
|
130 |
+
\n\
|
131 |
+
# Wait for PostgreSQL to start\n\
|
132 |
max_tries=30\n\
|
133 |
count=0\n\
|
134 |
echo "Checking database connection..."\n\
|
135 |
+
until PGPASSWORD="${DB_PASSWORD}" psql -h localhost -p 5432 -U postgres -c "SELECT 1" > /dev/null 2>&1; do\n\
|
136 |
echo "Waiting for database connection... (${count}/${max_tries})"\n\
|
137 |
sleep 2\n\
|
138 |
count=$((count+1))\n\
|
|
|
142 |
fi\n\
|
143 |
done\n\
|
144 |
\n\
|
145 |
+
# Create database and set up permissions\n\
|
146 |
+
PGPASSWORD="${DB_PASSWORD}" psql -h localhost -p 5432 -U postgres <<-EOSQL\n\
|
147 |
+
CREATE DATABASE ${DB_DATABASE} WITH OWNER ${DB_USERNAME};\n\
|
148 |
+
ALTER USER ${DB_USERNAME} WITH PASSWORD '\''${DB_PASSWORD}'\'';\n\
|
149 |
+
EOSQL\n\
|
150 |
\n\
|
151 |
echo "Database connection successful"\n\
|
152 |
\n\
|