feat: implement robust database migration via new entrypoint script with retry logic
This commit is contained in:
parent
b67c39034c
commit
daf60d33e8
@ -17,11 +17,11 @@ RUN pip install --no-cache-dir -r requirements.txt
|
||||
# Copy application code
|
||||
COPY . .
|
||||
|
||||
# Migrate database
|
||||
RUN alembic upgrade head
|
||||
|
||||
# Expose port
|
||||
EXPOSE 8000
|
||||
|
||||
# Use the entrypoint so migrations run before CMD
|
||||
ENTRYPOINT ["/app/entrypoint.sh"]
|
||||
|
||||
# Run the application
|
||||
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
|
||||
|
||||
19
backend/entrymigrate.sh
Normal file
19
backend/entrymigrate.sh
Normal file
@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
MAX_RETRIES=10
|
||||
COUNT=0
|
||||
|
||||
echo "Waiting for DB and running alembic migrations..."
|
||||
until alembic upgrade head; do
|
||||
COUNT=$((COUNT+1))
|
||||
if [ "$COUNT" -ge "$MAX_RETRIES" ]; then
|
||||
echo "Alembic migrations failed after $COUNT attempts." >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Alembic failed, retrying in 3s... ($COUNT/$MAX_RETRIES)"
|
||||
sleep 3
|
||||
done
|
||||
|
||||
echo "Migrations applied."
|
||||
exec "$@"
|
||||
@ -50,7 +50,7 @@ services:
|
||||
piston:
|
||||
condition: service_started
|
||||
restart: unless-stopped
|
||||
|
||||
|
||||
# Next.js frontend
|
||||
frontend:
|
||||
build:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user