使用Windows在Docker上进行清漆

问题描述

所有人!

我在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"]

错误(我在Docker容器日志中得到此错误

/init/entrypoint: /start.sh: /bin/bash^M: bad interpreter: No such file or directory

start.sh中,我有以下代码

#!/bin/bash

${VARNISH_START}

有人可以说我该怎么做才能修复并运行Varnish容器?

解决方法

^M是回车符。您会看到错误是找不到/bin/bash^M

您似乎已使用“记事本”之类的工具编辑了start.sh,该工具为它提供了Windows风格的CRLF行尾(尤其是shebang),而不是linux风格LF是容器所期望的。

使用“适当的”编程编辑器(例如Notepad ++或VSCode),可以将行尾仅更改为LF。在Linux系统上的dos2unix也会这样做。

如果您在Windows上使用GIT,则很可能是罪魁祸首,因为除非您告知不要,否则它会与行尾混淆。

(被自己咬了几次后,您会认识到^M!)