加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Docker文件中的“CMD [‘/home/user/script.sh’]”无法与docker

发布时间:2020-12-16 03:46:05 所属栏目:安全 来源:网络整理
导读:我有一个Docker文件,它完美地构建:docker build -t myfile. 但当我尝试使用docker-compose运行它时 它给了我一个错误: web_1 | /bin/sh: 1: [/home/root/myproject/uwsgi.sh: not foundmyproject_web_1 exited with code 127Gracefully stopping... (press

我有一个Docker文件,它完美地构建:docker build -t myfile.
但当我尝试使用docker-compose运行它时 – 它给了我一个错误:

web_1 | /bin/sh: 1: [/home/root/myproject/uwsgi.sh: not found
myproject_web_1 exited with code 127
Gracefully stopping... (press Ctrl+C again to force)

如果我手动启动此脚本 – 它工作正常.

Dockerfile看起来像:

FROM ubuntu:14.04

ADD ./myproject/ /home/root/myproject/

WORKDIR /home/root/myproject/

# Some other stuff...

CMD ['/home/root/myproject/uwsgi.sh','start' ]

泊坞窗,compose.yml:

web:
  build: .
  ports:
   - "8888:8888"
  links:
   - db
db:
  image: mysql

为什么我收到此错误?
谢谢.

最佳答案
我简化了你的例子

见https://github.com/BITPlan/docker-stackoverflowanswers/tree/master/33229581

和使用:

泊坞窗,compose.yml

web:
  build: .
  ports:
   - "8888:8888"

找 .

.
./docker-compose.yml
./Dockerfile
./myproject

码头工作者跑

docker-compose build
docker-compose run web

当然,我明白了

/bin/sh: 1: [/home/root/myproject/uwsgi.sh,: not found

假设这是因为myproject目录中没有uwsgi.sh.

如果我添加uwsgi.sh

echo 'echo $0 is there and called with params $@!' > myproject/uwsgi.sh
chmod +x myproject/uwsgi.sh

并测试它

docker-compose run web /bin/bash
ls
cat uwsgi.sh
./uwsgi.sh start

它就在那里并按预期行事:

root@9f06f8ff8c3b:/home/root/myproject# ls
uwsgi.sh
root@9f06f8ff8c3b:/home/root/myproject# cat uwsgi.sh 
echo $0 is there and called with params $@!
root@9f06f8ff8c3b:/home/root/myproject# ./uwsgi.sh start
./uwsgi.sh is there and called with params start!
 root@9f06f8ff8c3b:/home/root/myproject# 

但对于docker-compose运行网络,我仍然得到

/bin/sh: 1: [/home/root/myproject/uwsgi.sh,: not found

如果我向Dockerfile CMD行添加一个空格:

CMD [ '/home/root/myproject/uwsgi.sh','start' ] 

结果是:
????/ bin / sh:1:[:/ home / root /myproject / uwsgi.sh,:意外的运算符

这让我们更接近.作为下一步,我将省略“start”参数.

CMD [ '/home/root/myproject/uwsgi.sh' ] 

现在这导致根本没有输出……

如果我将CMD线更改为:

CMD [ "/home/root/myproject/uwsgi.sh","start" ] 

我明白了

 Cannot start container 
 0b9da138c43ef308ad70da4a7718cb96fbfdf6cda113e2ae0ce5e24de06f07cd: [8]  
 System   error: exec format error

现在你可以继续像爱迪生一样:

我没有失败.我刚刚找到了10,000种不起作用的方法.
直到你找到

CMD [ "/bin/bash","/home/root/myproject/uwsgi.sh","start" ]

这会让你更接近结果:

 /home/root/myproject/uwsgi.sh is there and called with params start!

CMD期望可执行文件作为第一个参数,例如

https://docs.docker.com/compose/

具有

CMD python app.py

举个例子.要运行shell脚本,您需要一个像bash这样的shell.
另见https://stackoverflow.com/a/33219131/1497139

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读