mirror of
				https://github.com/mistakes-23/backend.git
				synced 2025-11-04 01:17:25 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
set -o errexit
 | 
						|
set -o pipefail
 | 
						|
set -o nounset
 | 
						|
 | 
						|
 | 
						|
 | 
						|
# N.B. If only .env files supported variable expansion...
 | 
						|
export CELERY_BROKER_URL="${REDIS_URL}"
 | 
						|
 | 
						|
 | 
						|
if [ -z "${POSTGRES_USER}" ]; then
 | 
						|
    base_postgres_image_default_user='postgres'
 | 
						|
    export POSTGRES_USER="${base_postgres_image_default_user}"
 | 
						|
fi
 | 
						|
export DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
 | 
						|
 | 
						|
python << END
 | 
						|
import sys
 | 
						|
import time
 | 
						|
 | 
						|
import psycopg2
 | 
						|
 | 
						|
suggest_unrecoverable_after = 30
 | 
						|
start = time.time()
 | 
						|
 | 
						|
while True:
 | 
						|
    try:
 | 
						|
        psycopg2.connect(
 | 
						|
            dbname="${POSTGRES_DB}",
 | 
						|
            user="${POSTGRES_USER}",
 | 
						|
            password="${POSTGRES_PASSWORD}",
 | 
						|
            host="${POSTGRES_HOST}",
 | 
						|
            port="${POSTGRES_PORT}",
 | 
						|
        )
 | 
						|
        break
 | 
						|
    except psycopg2.OperationalError as error:
 | 
						|
        sys.stderr.write("Waiting for PostgreSQL to become available...\n")
 | 
						|
 | 
						|
        if time.time() - start > suggest_unrecoverable_after:
 | 
						|
            sys.stderr.write("  This is taking longer than expected. The following exception may be indicative of an unrecoverable error: '{}'\n".format(error))
 | 
						|
 | 
						|
    time.sleep(1)
 | 
						|
END
 | 
						|
 | 
						|
>&2 echo 'PostgreSQL is available'
 | 
						|
 | 
						|
exec "$@"
 |