'Wait to start Docker Stack until Filesystem is mounted

I have a problem with my nextcloud docker stack. I run fsck on every boot of my system. So the volume in the stack is not yet mounted when the stack starts. Is there a simple way to wait starting the stack until /srv/dev-disk-by-uuid-77365390-c57e-4b8a-846f-42fa099bf411/ is mounted??

My Stack looks like this...

version: "2"
services:

nextcloud:
image: linuxserver/nextcloud
container_name: nextcloud
networks:
  - homeserver
environment:
  - PUID=1000
  - PGID=1000
  - TZ=Europe/Berlin
volumes:
  - /srv/dev-disk-by-uuid-77365390-c57e-4b8a-846f-42fa099bf411/docker/appdata/nextcloud/config:/config
  - /srv/dev-disk-by-uuid-77365390-c57e-4b8a-846f-42fa099bf411/docker/appdata/nextcloud/data:/data
depends_on:
  - mariadb
restart: unless-stopped

mariadb:
image: yobasystems/alpine-mariadb:armhf
container_name: mariadb
networks:
  - homeserver
environment:
  - PUID=1000
  - PGID=1000
  - TZ=Europe/Berlin
  - MYSQL_DATABASE=nextcloud
  - MYSQL_USER=nextcloud
  - MYSQL_PASSWORD=xxx
  - MYSQL_ROOT_PASSWORD=
volumes:
  - /srv/dev-disk-by-uuid-77365390-c57e-4b8a-846f-42fa099bf411/docker/appdata/mariadb/logs:/var/lib/mysql/mysql-bin
  - /srv/dev-disk-by-uuid-77365390-c57e-4b8a-846f-42fa099bf411/docker/appdata/mariadb/mysql/_data:/var/lib/mysql
restart: unless-stopped

phpmyadmin:
container_name: phpmyadmin-nextcloud
image: phpmyadmin
networks:
  - homeserver
restart: unless-stopped
environment:
  - PMA_HOST=172.18.0.2
  - PMA_PORT=3306
ports:
  - 8182:80
  
networks:
homeserver:
  external:
    name: homeserver

Thanks a lot for your help!!



Solution 1:[1]

Afaik there is no native solution for this, I would recommend to take a look at the solution https://github.com/docker/compose/issues/374#issuecomment-310266246

copy-paste from the link

// start.sh

#!/bin/sh
set -eu

docker volume create --name=gql-sync
echo "Building docker containers"
docker-compose build
echo "Running tests inside docker container"
docker-compose up -d pubsub
docker-compose up -d mongo
docker-compose up -d botms
docker-compose up -d events
docker-compose up -d identity
docker-compose up -d importer
docker-compose run status
docker-compose run testing

exit $?

// status.sh

#!/bin/sh

set -eu pipefail

echo "Attempting to connect to bots"
until $(nc -zv botms 3000); do
    printf '.'
    sleep 5
done
echo "Attempting to connect to events"
until $(nc -zv events 3000); do
    printf '.'
    sleep 5
done
echo "Attempting to connect to identity"
until $(nc -zv identity 3000); do
    printf '.'
    sleep 5
done
echo "Attempting to connect to importer"
until $(nc -zv importer 8080); do
    printf '.'
    sleep 5
done
echo "Was able to connect to all"

exit 0

// in my docker compose file

  status:
    image: yikaus/alpine-bash
    volumes:
      - "./internals/scripts:/scripts"
    command: "sh /scripts/status.sh"
    depends_on:
      - "mongo"
      - "importer"
      - "events"
      - "identity"
      - "botms"

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 svonidze