用 Windows 在 Docker 上涂漆

Varnish on Docker with Windows

各位!

我在 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 是 Carriage-Return 字符。可以看到报错是找不到/bin/bash^M

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

使用 'proper' 编程编辑器,例如 Notepad++ 或 VSCode,您只能将 line-endings 更改为 LFdos2unix 在 linux 系统上也会这样做。

如果您将 GIT 用于 Windows,这很可能是罪魁祸首,因为它与 line-endings 混淆,除非您告诉它不要这样做。

(当你自己被这个咬过几次后,你就会认出^M!)