这是我的流浪汉档案
Vagrant.configure("2") do |config|
config.vm.define "app" do |app|
app.vm.provider "docker" do |d|
d.build_dir = "."
d.cmd = ["/sbin/my_init", "--enable-insecure-key"]
end
end
config.ssh.username = "root"
config.ssh.private_key_path = "insecure_key"
end
这是我的码头文件
FROM phusion/baseimage:0.9.15
MAINTAINER neetu
ENV HOME /root
RUN mkdir /buzzbuild
ADD . /buzzbuild
RUN cd /buzzbuild/ && chmod 777 install.sh && sh install.sh
CMD ["/sbin/my_init"]
EXPOSE 80 443 5000 15672
所以你可以看到..。1)我正在添加buidl目录(.)到/buzzbuild 2),并在那里运行安装脚本(在我CD到该dir之后)
我得到了
root@8bde177d1bc2:/buzzbuild# ./test2.sh -bash:./install.sh: /bin/sh^M:糟糕的解释器:没有这样的文件或目录
安装脚本的内容如下:
#!/bin/sh
#apt-get update
apt-get update
apt-get install -y -q git
如果我创建了新文件(test.sh)并更改了对它的权限,并添加了相同的内容,它就能工作。
但是install.sh脚本不起作用。
我怀疑这是一个文件从窗口添加到ubuntu(容器)的问题。
有什么建议吗?
发布于 2014-10-24 20:51:31
怎么了
错误消息root@8bde177d1bc2:/buzzbuild# ./test2.sh -bash: ./install.sh: /bin/sh^M: bad interpreter: No such file or directory
向您提示您的install.sh文件具有install.sh样式的行尾。
Windows行端由两个字符组成:\r\n
,而Linux端行仅为\n
。^M
表示错误消息中的\r
字符。
做什么?
在构建映像之前,要么确保所有脚本都使用Linux样式的行尾,要么在Dockerfile中添加一个RUN语句,修复行尾:
ADD . /buzzbuild
RUN cd /buzzbuild/ \
&& sed -i 's/\r//' install.sh \
&& chmod 777 install.sh \
&& sh install.sh
https://stackoverflow.com/questions/26553648
复制相似问题