我不明白为什么我的入口点无法执行我的命令。我的入口点如下所示:
#!/bin/bash
...
exec "$@"
我的脚本已经存在,当我进入容器时可以运行它:
drwxrwxrwx 1 root root 512 mars 25 09:07 .
drwxrwxrwx 1 root root 512 mars 25 09:07 ..
-rwxrwxrwx 1 root root 128 mars 25 10:05 entrypoint.sh
-rwxrwxrwx 1 root root 481 mars 25 09:07 init-dev.sh
-rwxrwxrwx 1 root root 419 mars 25 10:02 migration.sh
root@0c0062fbf916:/app/scripts# pwd
/app/scripts
当我运行我的容器时:docker run my_container "scripts/migration.sh"
我收到了这个错误:
scripts/entrypoint.sh: line 8: /app/scripts/migration.sh: No such file or directory
如果我只是运行,我会遇到同样的错误ls -all
docker run my_container "ls -all"
exec: ls -all: not found
我正在将 linux 切换到 windows <-> windows 到 linux 所以我检查将 lf 更改为 crlf 但没有任何更改
您的第一个命令不起作用,因为您的脚本在/app/scripts
(注意复数),但您正在尝试运行 run script/migration.sh
。此外,目前尚不清楚容器中的当前工作目录是什么:即使您编写了scripts/migration.sh
,也只有在(a)您Dockerfile
包含 aWORKDIR /app
或您的docker run
命令行包含-w /app
. 最好使用完全限定的路径:
docker run mycontainer /app/scripts/migration.sh
您的第二个示例 ( docker run my_container "ls -all"
) 被过度引用并且永远不会起作用。你需要写docker run my_container ls -all
,除了它-all
实际上不是一个ls
接受的选项,尽管它可以通过-a
和-l
选项的组合来工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句