.env ファイルにDATA_PATH_HOST=dataと書いてしまっていました。
本当は、以下のように ./data
と設定したかったのです。
# Choose storage path on your machine. For all storage systems
DATA_PATH_HOST=./data
それを、以下のように、dataの前の ./
を書き忘れてしまい、標題のようなエラーが発生しました。
# Choose storage path on your machine. For all storage systems
DATA_PATH_HOST=data
DATA_PATH_HOST=./data
と書きかえたら、問題が解消されました。
事態が改善するかもしれません。
もっと詳しく
Laradockをインストールした直後は通常、 env-example ファイルを .env というファイル名でコピーします。
その .env ファイルには DATA_PATH_HOST
という項目があり、以下のような記述になっています。
# Choose storage path on your machine. For all storage systems
DATA_PATH_HOST=~/.laradock/data
この設定のままだと、MySQLのデータなどが、laradockフォルダの外に保存されます。
それはそれで便利なケースもありますが、プロジェクトごとに laradock フォルダの中にdataフォルダという名前で保存されるように設定しようとしました。
その時に変更するのが、 DATA_PATH_HOST
という項目です。
この設定は、.envとは別のファイル、 docker-compose.yaml ファイルの中で、コンテナが使用するボリュームとして使われています。
https://github.com/laradock/laradock/blob/master/docker-compose.yml#L427-L428
### Minio ################################################
minio:
build: ./minio
volumes:
- ${DATA_PATH_HOST}/minio/data:/export
- ${DATA_PATH_HOST}/minio/config:/root/.minio
もし、DATA_PATH_HOST
の値が ./data
ではなく、ただの data
だとすると、はこれらの設定は以下のように解釈されます。
### Minio ################################################
minio:
build: ./minio
volumes:
- data/minio/data:/export
- data/minio/config:/root/.minio
先頭が/
や~
や .
や ..
など、相対パスとして使う記号から始まるボリュームは、ホストOSのファイルパスだと解釈されます。(今回は、こちらが正解でした。)
しかし、ただ data と書いてしまうと、それはホストOSのファイルパスではなく、「ボリューム名」として解釈されます。
Dockerは、data/minio/data
と名付けられたボリュームの設定が、docker-compose.yamlのどこかに記述されていると解釈して探しますが、実際には、そんなものは書かれておらず、今回のエラーとなったようです。
HTMLでの相対パスの書き方とは、考え方が違う
HTMLでの外部ファイルへのリンクでは、先頭の ./ は、あってもなくても同じように動作します。
<script src="script.js"></script>
<script src="./script.js"></script>
しかし、docker-compose.yml の コンテナに使用するボリュームの設定では ./
があればファイルパス、なければ「Named Volume」という、全く異なった解釈となるようでした。
Compose file version 3 reference
https://docs.docker.com/compose/compose-file/#short-syntax-3