Bash 用窗户给码头工人上漆
各位! 我在Windows上使用一个Docker,我有一个Docker文件来提供“varnish”安装和使用,但是当我运行Docker compose时,我在varnish容器上遇到一个错误,我不知道我需要做什么来修复它-varnish容器处于重新启动循环中。这是Varnish的docker文件:Bash 用窗户给码头工人上漆,bash,docker,varnish,varnish-vcl,Bash,Docker,Varnish,Varnish Vcl,各位! 我在Windows上使用一个Docker,我有一个Docker文件来提供“varnish”安装和使用,但是当我运行Docker compose时,我在varnish容器上遇到一个错误,我不知道我需要做什么来修复它-varnish容器处于重新启动循环中。这是Varnish的docker文件: FROM 1and1internet/ubuntu-16 RUN apt-get update -y && apt-get install varnish -y RUN apt-g
FROM 1and1internet/ubuntu-16
RUN apt-get update -y && apt-get install varnish -y
RUN apt-get install nano -y
COPY default.vcl /etc/varnish/default.vcl
ENV VARNISH_START /usr/sbin/varnishd -j unix,user=varnish -F -f /etc/varnish/default.vcl -a 0.0.0.0:6081 -s malloc,1g
EXPOSE 6081
ADD start.sh /start.sh
RUN chmod +x /start.sh
CMD ["/start.sh"]
错误是(我从Docker容器日志中获得此信息):
/init/entrypoint: /start.sh: /bin/bash^M: bad interpreter: No such file or directory
#!/bin/bash
${VARNISH_START}
在start.sh中,我有以下代码:
/init/entrypoint: /start.sh: /bin/bash^M: bad interpreter: No such file or directory
#!/bin/bash
${VARNISH_START}
有人可以告诉我需要做什么来修复该问题并运行清漆容器?
^M
是回车字符。您可以看到错误在于它找不到/bin/bash^M
看起来您已经使用“记事本”之类的工具编辑了start.sh
,该工具为它提供了windows风格的CRLF
行结尾(尤其是shebang),而不是容器所期望的linux风格的LF
使用“适当”的编程编辑器,如记事本++或VSCode,您可以将行尾仅更改为LF
<在linux系统上,code>dos2unix也可以这样做
如果您使用的是GIT for Windows,则很可能是这一问题的罪魁祸首,因为它会弄乱行尾,除非您告诉它不要这样做
(当你自己被咬了几次后,你就能认出^M
)