Я использую ruby:2.5.1-alpine
для изображения контейнера моего приложения.Когда я запускаю make release
локально, который выполняет следующие команды:
docker-compose build --pull release
docker-compose up --abort-on-container-exit test
Этап тестирования запускает миграции, линтер и спецификации.Работает без проблем.Когда я запускаю ту же самую точную команду на CodeBuild, которая использует aws/codebuild/ruby:2.5.1
в качестве среды хоста, я получаю следующую ошибку:
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
Это было частью проблемы:
https://forums.docker.com/t/not-able-to-change-permissions-for-files-and-folders-created-on-mounted-volumes/45769
После удаления тома для сценыкоторый работает на CodeBuild mid и gig верны, но сами разрешения все еще отключены.
·[36mcodebuild_1 |·[0m File permissions for bin/console are
#<File::Stat ino=2755035, mode=0100666, nlink=1, uid=1000, gid=1000...>
Не уверен, что делать с отладкой.