mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2026-05-31 15:35:26 +02:00
33 lines
1.3 KiB
Bash
33 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
|
|
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
|
|
# https://securityonion.net/license; you may not use this file except in compliance with the
|
|
# Elastic License 2.0.
|
|
|
|
# Wait for the so-postgres container to accept TCP connections.
|
|
#
|
|
# docker_container.running returns as soon as the container starts, but on
|
|
# first-init docker-entrypoint.sh starts a temporary postgres with
|
|
# `listen_addresses=''` to run /docker-entrypoint-initdb.d scripts, then
|
|
# shuts it down before exec'ing the real CMD. A default pg_isready check
|
|
# (Unix socket) passes during that ephemeral phase and races the shutdown
|
|
# with "the database system is shutting down". Checking TCP readiness on
|
|
# 127.0.0.1 only succeeds after the final postgres binds the port.
|
|
#
|
|
# Usage: so-postgres-wait [iterations] [sleep_seconds]
|
|
# Default: 60 iterations, 2s sleep (~120s total).
|
|
|
|
ITERATIONS=${1:-60}
|
|
SLEEP_SECONDS=${2:-2}
|
|
|
|
for i in $(seq 1 "$ITERATIONS"); do
|
|
if docker exec so-postgres pg_isready -h 127.0.0.1 -U postgres -q 2>/dev/null; then
|
|
exit 0
|
|
fi
|
|
sleep "$SLEEP_SECONDS"
|
|
done
|
|
|
|
echo "so-postgres did not accept TCP connections within $((ITERATIONS * SLEEP_SECONDS))s" >&2
|
|
exit 1
|