Попытка установить логирование в Google Cloud запускается, но это не удается - PullRequest
1 голос
/ 06 марта 2020

Я пытаюсь следовать этим инструкциям, чтобы правильно войти в систему с java, чтобы вернуться в cloudrun ...

https://cloud.google.com/logging/docs/setup/java

Если я использовал jdk8, У меня возникают проблемы с отсутствующим причалом, поэтому я перешел на Docker изображение openjdk: 10-jre-slim

, и мой DockerFile прост

FROM openjdk:10-jre-slim
RUN mkdir -p ./webpieces
COPY . ./webpieces/
COPY config/logback.cloudrun.xml ./webpieces/config/logback.xml
WORKDIR "/webpieces"
ENTRYPOINT ./bin/customerportal -http.port=:$PORT -hibernate.persistenceunit=cloud-production

И единственное отличие заключается в том, что я переключил изображение из openjdk: 8-jdk-alpine, который работал нормально !!!

При развертывании в Google Cloud я получаю эту ошибку ...

Deploying container to Cloud Run service [staging-customerportal] in project [orderly-gcp] region [us-west1]
⠏ Deploying... Cloud Run error: Invalid argument error. Invalid ENTRYPOINT. [name: "gcr.io/orderly-gcp/customerportal2@sha256:6c1c2e7531684d8f50a3120f1de60cade841ab1d9069b
704ee3fd8499c5b7779"
error: "Invalid command \"/bin/sh\": file not found"
]. 
X Deploying... Cloud Run error: Invalid argument error. Invalid ENTRYPOINT. [name: "gcr.io/orderly-gcp/customerportal2@sha256:6c1c2e7531684d8f50a3120f1de60cade841ab1d9069b
 704ee3fd8499c5b7779"
error: "Invalid command \"/bin/sh\": file not found"
].
 . Routing traffic...


Deployment failed
ERROR: (gcloud.run.deploy) Cloud Run error: Invalid argument error. Invalid ENTRYPOINT. [name: "gcr.io/orderly-gcp/customerportal2@sha256:6c1c2e7531684d8f50a3120f1de60cade841ab1d9069b704ee3fd8499c5b7779"
error: "Invalid command \"/bin/sh\": file not found"
 ].

Однако, когда я запускаю локально в тест, я получаю эту ошибку при необходимости ID проекта, поэтому кажется, что он работает. ПОБОЧНЫЙ ВОПРОС: Как смоделировать этот идентификатор проекта, чтобы я мог работать локально?

03:10:08,650 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [CLOUD]
03:10:09,868 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@14:13 - RuntimeException in Action for tag [appender] java.lang.IllegalArgumentException: A project ID is required for this service but could not be determined from the builder or the environment.  Please set a project ID using the builder.
at java.lang.IllegalArgumentException: A project ID is required for this service but could not be determined from the builder or the environment.  Please set a project ID using the builder.
at  at com.google.common.base.Preconditions.checkArgument(Preconditions.java:142)
at  at com.google.cloud.ServiceOptions.<init>(ServiceOptions.java:285)
at  at com.google.cloud.logging.LoggingOptions.<init>(LoggingOptions.java:98)
at  at com.google.cloud.logging.LoggingOptions$Builder.build(LoggingOptions.java:92)
at  at com.google.cloud.logging.LoggingOptions.getDefaultInstance(LoggingOptions.java:52)
at  at com.google.cloud.logging.logback.LoggingAppender.getLoggingOptions(LoggingAppender.java:246)
at  at com.google.cloud.logging.logback.LoggingAppender.getProjectId(LoggingAppender.java:209)
at  at com.google.cloud.logging.logback.LoggingAppender.start(LoggingAppender.java:194)
at  at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:90)
at  at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:309)
at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:193)
at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:179)
at  at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:165)
at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152)
at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110)

Ответы [ 3 ]

2 голосов
/ 06 марта 2020

Java 10 версия EOL, и официальные изображения были удалены. Подробнее здесь

Предпочитают Java 11 версию.

В любом случае, когда вы используете версию, некоторые оптимизируются и не устанавливают bash по умолчанию (для уменьшая их размер), и вы должны установить его самостоятельно.

Для локального запуска я не рекомендую использовать файл ключа JSON (как правило, не используйте файл ключа JSON , за исключением автоматической системы вне GCP) из-за ограничений безопасности, ротации ключей, безопасного хранения, ...

Для настройки проекта просто выполните эту команду gcloud config set project MY_PROJECT. Вам не нужны учетные данные для этого.

1 голос
/ 06 марта 2020

Поскольку ваш текущий вопрос состоит в том, как смоделировать идентификатор проекта для локального тестирования:

Вы должны загрузить файл ключа служебной учетной записи из https://console.cloud.google.com/iam-admin/serviceaccounts/project?project=MY_PROJECT, сделайте это доступны внутри docker контейнера и активируются через

gcloud auth activate-service-account --key-file my_service_account.json

gcloud config set project MY_PROJECT
0 голосов
/ 07 мая 2020

Эта проблема может быть связана с тем, что у alpine нет bash: "/ bin / sh", поэтому можно решить проблему удаления самой зависимости bash, не используя bash или используя exe c вместо bash. в моем случае я решил проблему с помощью более полного базового образа, например, вместо alpine.

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...