【问题标题】:Wait to start Docker Stack until Filesystem is mounted等待启动 Docker Stack,直到挂载文件系统
【发布时间】:2022-05-12 19:12:19
【问题描述】:

我的 nextcloud docker 堆栈有问题。 我每次启动系统时都运行 fsck。因此,当堆栈启动时,堆栈中的卷尚未安装。 有没有一种简单的方法可以等待启动堆栈,直到 /srv/dev-disk-by-uuid-77365390-c57e-4b8a-846f-42fa099bf411/ 挂载??

我的堆栈看起来像这样...

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

非常感谢您的帮助!!

【问题讨论】:

  • 最简单的解决方案可能是在 systemd 中为 docker 服务添加一个依赖项,以等待执行这些文件系统挂载的服务。

标签: docker wait volume mount


【解决方案1】:

Afaik 对此没有本机解决方案,我建议您查看解决方案 https://github.com/docker/compose/issues/374#issuecomment-310266246

从链接复制粘贴

// 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

// 在我的 docker compose 文件中

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 2019-08-23
    • 2018-12-18
    • 2015-03-03
    • 2016-01-29
    • 2020-11-03
    相关资源
    最近更新 更多