这是我的流浪文件
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)并在那里运行安装脚本(在我进入该目录之后)
我得到了
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脚本不起作用。
我怀疑从windows添加到ubuntu(容器)的文件存在问题
有什么建议吗?
答案 0 :(得分:2)
错误消息root@8bde177d1bc2:/buzzbuild# ./test2.sh -bash: ./install.sh: /bin/sh^M: bad interpreter: No such file or directory
为您提示 install.sh 文件具有Windows样式行尾。
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