Cannot create container for 〇〇: create .: volume name is too short, names should be at least two alphanumeric characters
エラー文
$ docker-compose up -d
中略
Cannot create container for service webserver: create .: volume name is too short, names should be at least two alphanumeric characters
$ docker-compose up -d
中略
Cannot create container for service webserver: create .: volume name is too short, names should be at least two alphanumeric characters
.
というパス名が短すぎるぞ、と怒られてます。
原因
docker-compose.yml
version: "3.7"
services:
webserver:
volumes:
- ./bar/:/foo/bar/
- ${HOGE_CFG}:/foo/hoge.ctg
version: "3.7"
services:
webserver:
volumes:
- ./bar/:/foo/bar/
- ${HOGE_CFG}:/foo/hoge.ctg
docker-compose.yml
を確認しましたが、.
だけをパス名に指定したvolumeは無さそうです。
そこでちょっと閃いて、6行目の$HOGE_CFG
の中身を覗いてみることにしました。
$ echo $HOGE_CFG
シェル変数$HOGE_CFG
の中身が空でした。
$HOGE_CFG
に何も入ってなかったから、docker-compose.yml
の6行目が- .:/foo/hoge.ctg
と同じ扱いになってしまったみたいです。
$HOGE_CFG
の定義場所を探し、$HOGE_CFG
が定義されていなかった問題を解消したら、この問題も解決しました。
余談
例えば、a=/var/tmp/log2といったな変数を指定してrm -rf $a/のような処理をしていたとする。スクリプトの書き換えやロジックのミスなどで変数aが空だと、rm -rf /というコマンドが実行されてしまうことになる。rm -rf /*はrmコマンドからの警告なしにそのまま実行されてしまうため、ここに示したようにやっぱりシステムは壊れてしまう。
これと同種の問題だと思いました。
もし自分でスクリプトを書くときには、シェル変数でパスを指定するときは、シェル変数に何も入っていなかったときにどのパスになってしまうのか?は注意しなくてはいけないなと思いました。
参考記事
Author And Source
この問題について(Cannot create container for 〇〇: create .: volume name is too short, names should be at least two alphanumeric characters), 我々は、より多くの情報をここで見つけました https://qiita.com/kumackey/items/5b5617047a5685e61953著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .