使用docker for win10构建映像,发现COPY命令改变了新行

时间:2016-09-26 10:32:53

标签: git docker

在容器中,

# git diff selenium60.sh
diff --git a/selenium60.sh b/selenium60.sh
index 6ce5f9f..8893fb3 100644
--- a/selenium60.sh
+++ b/selenium60.sh
@@ -1,2 +1,2 @@
-#!/bin/sh
+#!/bin/sh^M
 java -Dphantomjs.binary.path=vendor/bin/phantomjs  -Dwebdriver.firefox.profile=default -Dwebdriver.reap_profile=true -jar vendor/bin/selenium-standalone.jar -timeout 60 -browserTimeout 60
\ No newline at end of file

我需要使用git pull来更新我的源代码,那么如何让docker不改变源代码新行呢?

1 个答案:

答案 0 :(得分:0)

假设您在主机上运行git pull,然后在Dockerfile中运行COPY,文件结尾已由​​Git转换 - COPY指令就是这样, Docker不会改变内容。

最简单的解决方法是告诉Git不要更改行结尾,方法是将--config core.autocrlf=input选项添加到git pull命令中,该命令不会转换Unix风格的换行符。

或者,您可以使用RUN git clone...克隆映像内的repo,这意味着您使用Linux进行克隆,因此Git将单独保留换行符。

或者您可以在构建中添加dos2linux命令,运行它以将CRLF行结尾替换为LF,然后删除该实用程序:

RUN apt-get update && apt-get install -y dos2unix
COPY ...
RUN dos2unix ...

最后一个选项以及docker中的Windows vs. Linux换行问题在Will Anderson's blog上有一个很好的记录。