|
|
|
@ -15,15 +15,50 @@ |
|
|
|
|
# limitations under the License. |
|
|
|
|
# |
|
|
|
|
|
|
|
|
|
# if command starts with an option, prepend minio |
|
|
|
|
# If command starts with an option, prepend minio. |
|
|
|
|
if [ "${1}" != "minio" ]; then |
|
|
|
|
if [ -n "${1}" ]; then |
|
|
|
|
set -- minio "$@" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
## Look for swarm secrets in default location. |
|
|
|
|
file_env() { |
|
|
|
|
# Wait for all the hosts to come online and have |
|
|
|
|
# their DNS entries populated properly. |
|
|
|
|
docker_wait_hosts() { |
|
|
|
|
hosts="$@" |
|
|
|
|
num_hosts=0 |
|
|
|
|
# Count number of hosts in arguments. |
|
|
|
|
for host in $hosts; do |
|
|
|
|
[ $(echo "$host" | grep -E "^http") ] || continue |
|
|
|
|
num_hosts=$((num_hosts+1)) |
|
|
|
|
done |
|
|
|
|
if [ $num_hosts -gt 0 ]; then |
|
|
|
|
echo -n "Waiting for all hosts to resolve..." |
|
|
|
|
while true; do |
|
|
|
|
x=0 |
|
|
|
|
for host in $hosts; do |
|
|
|
|
[ $(echo "$host" | grep -E "^http") ] || continue |
|
|
|
|
# Extract the domain. |
|
|
|
|
host=$(echo $host | sed -e 's/^http[s]\?:\/\/\([^\/]\+\).*/\1/') |
|
|
|
|
echo -n . |
|
|
|
|
val=$(ping -c 1 $host 2>/dev/null) |
|
|
|
|
if [ $? != 0 ]; then |
|
|
|
|
echo "Failed to lookup $host" |
|
|
|
|
continue |
|
|
|
|
fi |
|
|
|
|
x=$((x+1)) |
|
|
|
|
done |
|
|
|
|
# Provided hosts same as successful hosts, should break out. |
|
|
|
|
test $x -eq $num_hosts && break |
|
|
|
|
echo "Failed to resolve hosts.. retrying after 1 second." |
|
|
|
|
sleep 1 |
|
|
|
|
done |
|
|
|
|
echo "All hosts are resolving proceeding to initialize Minio." |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
## Look for docker secrets in default documented location. |
|
|
|
|
docker_secrets_env() { |
|
|
|
|
local MINIO_ACCESS_KEY_FILE="/run/secrets/access_key" |
|
|
|
|
local MINIO_SECRET_KEY_FILE="/run/secrets/secret_key" |
|
|
|
|
|
|
|
|
@ -37,7 +72,10 @@ file_env() { |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
## Set env if necessary. |
|
|
|
|
file_env |
|
|
|
|
## Set access env from secrets if necessary. |
|
|
|
|
docker_secrets_env |
|
|
|
|
|
|
|
|
|
## Wait for all the hosts to come online. |
|
|
|
|
docker_wait_hosts "$@" |
|
|
|
|
|
|
|
|
|
exec "$@" |
|
|
|
|