コンテナステーションアプリでバインドボリュームが表示されない

みなさん、こんにちは;

TS-464 NAS を使用しています;

複数のコンテナを正常にデプロイし、CSインターフェースを使って内部ディレクトリをQNAPホストにマッピングできました。とても良いです。すべてのコンテナのデータは /local/containers-data フォルダーとそのサブフォルダー(各コンテナごとに1つ)にあります。

同じことをアプリケーション内で、以下のような一般的な “compose” 構文を使ってやろうとしています:

services:
  mongo:
    platform: linux/amd64
    image:  mongo:bionic
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: zorglub
      MONGO_INITDB_DATABASE: garden-planner
    ports:
      - "27017:27017"
    volumes: 
      - type: bind
        source: /local/containers-data/garden-planner/mongo/db
        target: /data/db
      - type: bind
        source: /local/containers-data/garden-planner/mongo/configdb
        target: /data/configdb

/local/containers-data/garden-planner/mongo/db と configdb のフォルダーは作成済みです。(フォルダーを作成せずに試したこともあります)

それぞれ /data/db と /data/configdb の内容がそこに表示されることを期待していましたが、空のままです。

コンテナの “shell” で /data/db を確認すると、正しくデータが入っています。

QLog にエラーはなく、コンテナのログにもエラーはありません。

何かアイデアはありますか?何時間も悩んでいて、Googleでもヒントが見つかりません :sleepy_face:

Xavier

私はbindを使っていません。私が使っているのは以下の通りです:

   volumes:
      - /etc/localtime:/etc/localtime:ro
      - /share/Container/SimpleHelp/configuration:/opt/SimpleHelp/configuration
    restart: always

または

    volumes:
      - /share/Container/somokeping/config:/config
      - /share/Container/smokeping/data:/data

もしかすると、構文の違いで、私たちは同じことをしているのかもしれません?

ありがとうございます!はい、これは単に短い構文か長い構文かの違いだけです。

ご返信を読んだ後、NASにsshで接続して、「/shared」ディレクトリを発見しました。今まで知らなかったのですが、このフォルダの下に「local」があり、FileStationからアクセスできました。

そしてもちろん、「/local/」に期待していたファイルが見つかりました…composeファイルで指定されていた通りです。
つまり、バインドするボリュームに「/shared」をプレフィックスすれば全て問題ありません。

不思議なのは、CSインターフェースで直接コンテナを作成した時には「/shared」を付けなくても問題なく動作していたことです…

改めてありがとうございます、無事動作しました!

Xavier

素晴らしい!

はい、/shareはQNAPの世界で全ての作業ディレクトリのトップレベルです。ルートレベル / には他にもボリュームやフォルダーがありますが、それらは主にOS用であり、ユーザーのファイルシステムの一部ではありません。NoteStationなど一部のプログラムは、これらの「その他」のフォルダーにデータベースを保存するため、NASを初期化する前にコンテンツをエクスポートしないと、すべて失ってしまいます。私はそれで痛い目を見ました!しかし、「通常」のフォルダーはすべて /share の下にあります。

こんにちは @xjimenez

参考情報です:

たとえば、コンテナアプリケーションに /root/apple というフォルダがあり、これをNAS上の指定ディレクトリに「リンク」したい場合、File Stationの Container/folder-apple フォルダを使用するとします。

方法は2つあります。1つ目は、GUIでコンテナを作成する際に「詳細設定」と「ストレージ」に進み、「ホストとのマッピング」を選択する方法です。1つ目のフィールドでNAS上の /Container/folder-apple フォルダをホストとして選択し、2つ目のフィールドにコンテナ内の場所 /root/apple を手動で入力します。

2つ目の方法は、YAMLファイルを使って手動で作成する場合で、-volumes フィールドに /share/Container/folder-apple:/root/apple というマウントポイントを作成します。

先頭の /share は固定で、/Container はFile Stationで表示される共有フォルダ、/folder-apple はそのサブフォルダです。コロンの後の :/root/apple はコンテナ内の場所を表します。

設定が完了すると、コンテナの /root/apple はFile Station上の Container/folder-apple とリンクされます。コンテナ側でファイルを作成しても、Container/folder-apple にファイルをアップロードしても、どちらのプラットフォームでもファイルを確認できます。