Wonderfall / docker-nextcloud

All-in-one Nextcloud Docker image, based on Alpine Linux. Aims at being simple and hardened.
194 stars 93 forks source link

Accessing database before it might be available #105

Open waja opened 2 years ago

waja commented 2 years ago

Hi,

In https://github.com/Wonderfall/docker-nextcloud/blob/main/rootfs/usr/local/bin/setup.sh#L58-L64 we are checking if the database is accessible, which is totally fine:

if [ ${DB_TYPE} != "sqlite3" ]; then
  until nc -z "${DB_HOST:-nextcloud-db}" "${DB_PORT:-3306}"
  do
    echo "waiting for the database container..."
    sleep 1
  done
fi

Looking into https://github.com/Wonderfall/docker-nextcloud/blob/main/rootfs/usr/local/bin/run.sh#L18-L24 indicates, that this is okay for new installations. But for existing setups, we just call occ upgrade without checking if the database is available. This results into a race condition, which may lead into issues when updating (needing manual intervention) and in best cases just noisy logs.

Does it make sense for you to check for availability of the database just before line 18 in run.sh? If it's okay for you, I can push a PR for you.

waja commented 1 year ago

@Wonderfall Any opinion on that?