Неверный ENTRYPOINT при развертывании образа Docker внутри Google Cloud

Я получаю эту ошибку, когда запускаю "gcloud builds submit --config cloudbuild.yaml" из gcloud-cli.

Step #1: Deploying...
Step #1: Setting IAM Policy.....................................done
Step #1: Creating Revision.....................................................failed
Step #1: Deployment failed
Step #1: ERROR: (gcloud.run.deploy) Cloud Run error: Invalid argument error. Invalid ENTRYPOINT. [name: "gcr.io/customerapi-275705/quickstart-image@sha256:0d1965181fa4c2811c3fcbd63d68de5b4c348ee5b62615594946dea48fee9735"
Step #1: error: "Command \"/quickstart.sh\": invalid mode \"-rw-rw-rw-\" for /quickstart.sh"
Step #1: ].
Finished Step #1

Предполагается, что файл имеет права доступа «+ x» (чтение / выполнение), установленные chmod. Эквивалент для Windows будет «/ grant User: F».

Шаг №1: ошибка: "Command \" / quickstart.sh \ ": недопустимый режим \" - rw-rw-rw- \ "для /quickstart.sh"

-rw-rw-rw мне кажется правильным. Что мне не хватает?

Это в моем Dockerfile

FROM alpine
COPY quickstart.sh /
CMD ["\/quickstart.sh"]

А это мой cloudbuild.yaml

steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/quickstart-image', '.' ]

    - name: 'gcr.io/cloud-builders/gcloud'
      args:
      - 'run'
      - 'deploy'
      - 'myservice'
      - '--image'
      - 'gcr.io/$PROJECT_ID/quickstart-image'
      - '--region'
      - 'europe-north1'
      - '--platform'
      - 'managed'
      - '--allow-unauthenticated'
images: 
     - 'gcr.io/$PROJECT_ID/quickstart-image'

person fbf    schedule 29.04.2020    source источник
comment
Вы случайно не пытались использовать icalcs или CALCS для получения разрешения, чтобы вы стали владельцем?   -  person Stefan Neacsu    schedule 29.04.2020
comment
@StefanNeacsu Да, я использовал icacls / grant Everyone: F, что привело к -rw-rw-rw (777).   -  person fbf    schedule 29.04.2020
comment
Посмотрев еще раз на ошибку, я думаю, кажется, что он думает, что имя файла - это режим, который не соответствует действительности, поэтому изменение в правильный режим решит проблему.   -  person Stefan Neacsu    schedule 05.05.2020
comment
Удалось ли вам это исправить? Я столкнулся с той же проблемой.   -  person Morfinismo    schedule 06.05.2020
comment
@Morfinismo Нет. В итоге я удалил Dockerfile и развернул его непосредственно в AppEngine.   -  person fbf    schedule 06.05.2020
comment
@StefanNeacsu Ну, по сути, я об этом и спрашиваю. Режим согласно документации Google Cloud должен быть + x (unix), что эквивалентно -rw-rw-rw в системе Windows, в которой я работаю. Тем не менее он жалуется.   -  person fbf    schedule 06.05.2020


Ответы (2)


Я считаю, что в песочнице среды Cloud Build ваш quickstart.sh не имеет разрешений на выполнение, что вы можете проверить, добавив этот шаг в файл конфигурации Cloud Build cloudbuild.yaml:

- name: 'ubuntu'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
        ls -lart

Я не уверен, что песочница Cloud Build позволит вам предоставить разрешения на выполнение сценарию bash, но вы можете попробовать сделать это, добавив еще один шаг с chmod +x quickstart.sh.

person llompalles    schedule 19.05.2020

У меня была такая же проблема несколько часов назад, я исправил ее, добавив форму exec ENTRYPOINT в конец Dockerfile.

Я попробовал использовать форму оболочки ENTRYPOINT, но она не сработала, предположительно по следующей причине:

Форма оболочки предотвращает использование любых CMD или run аргументов командной строки, но имеет тот недостаток, что ваша ENTRYPOINT будет запускаться как подкоманда /bin/sh -c, которая не передает сигналы. Это означает, что исполняемый файл не будет PID 1 контейнера и не будет получать сигналы Unix, поэтому ваш исполняемый файл не получит SIGTERM от docker stop <container>.

GCP, вероятно, необходимо передать некоторые аргументы командной строки.

исходный код

person daka    schedule 28.02.2021