我正在将ruby:2.5.1-alpine
用于应用程序的容器映像。当我在本地运行make release
时,它将运行以下命令:
docker-compose build --pull release
docker-compose up --abort-on-container-exit test
测试阶段运行迁移,棉绒和规格。它运行没有问题。当我在使用aws/codebuild/ruby:2.5.1
作为宿主环境的CodeBuild上运行相同的确切命令时,出现以下错误:
Running RuboCop...
Inspecting 82 files
.................................................................................W
Offenses:
bin/console:1:1: W: Lint/ScriptPermission: Script file console doesn't have execute permission.
我检查了git权限,所有内容看起来都很干净:
edit [...master ] git ls-tree HEAD bin/
100755 blob ad9a02fe6ed489beb105295de771cab5fa87a6af bin/console
100755 blob 9d87e9579b9c16c42d65301e8540888e044ba25d bin/run
100755 blob cf5febb7c6dd34aebdb862792fa147d06a9c5764 bin/setup
edit [...master ]
我添加了一条调试语句,以查看运行测试时的权限以及此处的区别。
我在本地得到:
test_1_4d039799a73c | File permissions for bin/console are
#<File::Stat ino=10432530, **mode=0100755**, nlink=1, uid=1000, gid=1000,...>
在CodeBuild服务器上,我得到:
File permissions for bin/console are
#<File::Stat ino=525319, **mode=0100666**, nlink=1, uid=0, gid=0, ...>
在粘贴上面的内容时,我还注意到UID和GID是不同的。因此,似乎权限设置不正确:
RUN addgroup -g 1000 app && adduser -u 1000 -G app -D app
RUN chown -R app:app $APP_ROOT
WORKDIR $APP_ROOT
这是问题的一部分:
在为CodeBuild上运行的阶段删除卷之后,mid和gig是正确的,但权限本身仍处于关闭状态。
·[36mcodebuild_1 |·[0m File permissions for bin/console are
#<File::Stat ino=2755035, mode=0100666, nlink=1, uid=1000, gid=1000...>
不确定如何进行调试。