创建Docker容器时无法运行脚本

时间:2020-02-06 13:47:18

标签: docker

我正在使用docker-compose构建映像并运行容器。在我的Dockferfile中,我加入了这一行:

ENTRYPOINT ["entrypoint.sh"]
CMD /bin/bash

此入口点脚本确实存在(我确实尝试过进入一个容器并且它存在),并且脚本的工作目录也正确。脚本本身是:

#!/bin/bash
set -e
set -u

echo "==> Executing master image entrypoint ..."

echo "-> Setting up ROS"
source "./devel/setup.bash"
#chmod 666 /dev/ttyUSBO
echo "==> Container ready"
exec "$@"

当我跑步时:

docker-compose up --build

我收到此错误:

ERROR: for 45f1dcaf575e_rosdocker_master_1  Cannot start service master: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"entrypoint.sh\": executable file not found in $PATH": unknown

ERROR: for master  Cannot start service master: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"entrypoint.sh\": executable file not found in $PATH": unknown

2 个答案:

答案 0 :(得分:0)

如果脚本在工作目录中,请使用./进行访问:

ENTRYPOINT ["./entrypoint.sh"]

答案 1 :(得分:0)

确保脚本具有正确的权限(可以通过调用chmod +x entrypoint.sh来设置),可以在Dockerfile中使用RUN指令:

...
RUN chmod +x /entrypoint.sh
...

如果在根目录中,请在ENTRYPOINT设置中设置完整路径,例如/entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]