用 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 更改为 LF
。 dos2unix
在 linux 系统上也会这样做。
如果您将 GIT 用于 Windows,这很可能是罪魁祸首,因为它与 line-endings 混淆,除非您告诉它不要这样做。
(当你自己被这个咬过几次后,你就会认出^M
!)
各位!
我在 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 更改为 LF
。 dos2unix
在 linux 系统上也会这样做。
如果您将 GIT 用于 Windows,这很可能是罪魁祸首,因为它与 line-endings 混淆,除非您告诉它不要这样做。
(当你自己被这个咬过几次后,你就会认出^M
!)