问题描述
所有人!
我在Windows上使用Docker,并且我有一个Docker文件来提供“清漆”安装和使用,但是当我运行docker compose时,我在Varnish容器上遇到错误,并且我不知道我需要什么修复该问题-Varnish容器处于重新启动循环中。这是Varnish的 docker文件:
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"]
/init/entrypoint: /start.sh: /bin/bash^M: bad interpreter: No such file or directory
#!/bin/bash
${VARNISH_START}
有人可以说我该怎么做才能修复并运行Varnish容器?
解决方法
^M
是回车符。您会看到错误是找不到/bin/bash^M
您似乎已使用“记事本”之类的工具编辑了start.sh
,该工具为它提供了Windows风格的CRLF
行尾(尤其是shebang),而不是linux风格LF
是容器所期望的。
使用“适当的”编程编辑器(例如Notepad ++或VSCode),可以将行尾仅更改为LF
。在Linux系统上的dos2unix
也会这样做。
如果您在Windows上使用GIT,则很可能是罪魁祸首,因为除非您告知不要,否则它会与行尾混淆。
(被自己咬了几次后,您会认识到^M
!)