场景

因为最近在转用Gradle进行项目的编译,所以很多以前用maven的地方,还是有非常多的不同。这里主要针对Docker的使用,来进行记录。

方案

1. Windows 下的entrypoint.sh无法执行

假如你是使用windows,创建一个entrypoint.sh文件后,会发现build出来的镜像无法执行,会报错:

1
standard_init_linux.go:211: exec user process caused "no such file or directory"

恭喜你,又踩到了一个windows下编码的坑。因为是在windows下创建的文件,所以编码会是dos,而并非unix,这会导致在docker内执行时,会无法正常解析该文件,所以报错。

解决方案也相对简单,不过首先你得有git bash这种unix编辑环境,就可以修改编码了:

1
2
3
4
5
6
# 打开文件
vi entrypoint.sh
# 设置编码
:set ff=unix
# 保存
:wq

再重新build镜像,就可以正常执行啦。