Severian commited on
Commit
f0c6f87
·
verified ·
1 Parent(s): f308308

Update Dockerfile

Browse files
Files changed (1) hide show
  1. 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 useradd -m -u 1000 user
 
 
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
- # Start PostgreSQL with proper permissions\n\
120
- mkdir -p /var/log/postgresql\n\
121
- chown postgres:postgres /var/log/postgresql\n\
122
- su - postgres -c "/usr/lib/postgresql/15/bin/pg_ctl -D /var/lib/postgresql/data -l /var/log/postgresql/postgresql.log start"\n\
 
123
  \n\
 
 
 
 
 
124
  max_tries=30\n\
125
  count=0\n\
126
  echo "Checking database connection..."\n\
127
- until PGPASSWORD="${DB_PASSWORD}" psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USERNAME}" -d postgres -c "SELECT 1" > /dev/null 2>&1; do\n\
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 if it doesnt exist\n\
138
- PGPASSWORD="${DB_PASSWORD}" psql -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USERNAME}" -d postgres -c "CREATE DATABASE ${DB_DATABASE};" || true\n\
 
 
 
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\