mirror of
				https://github.com/task-17-lct/backend.git
				synced 2025-10-25 04:41:09 +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 "$@"
 |