Я пытаюсь реализовать контейнер, который преобразует данные из HL7 в FHIR (https://github.com/GoogleCloudPlatform/healthcare/tree/master/ehr/hl7/message_converter/java) в Google Cloud. Однако я не могу создать контейнер локально на своем компьютере, чтобы позже развернуть его в облаке.
Возникающая ошибка всегда возникает в части аутентификации учетных данных, когда я пытаюсь локально повернуть изображение с помощью докера:
docker run --network=host -v ~/.config:/root/.config hl7v2_to_fhir_converter
/healthcare/bin/healthcare --fhirProjectId=<PROJECT_ID> --fhirLocationId=<LOCATION_ID> --
fhirDatasetId=<DATASET_ID> --fhirStoreId=<STORE_ID> --pubsubProjectId=<PUBSUB_PROJECT_ID> --
pubsubSubscription=<PUBSUB_SUBSCRIPTION_ID> --apiAddrPrefix=<API_ADDR_PREFIX>
Я использую Windows и уже выполнил приведенную ниже команду для создания учетных данных:
gcloud auth application-default login
Учетные данные после выполнения вышеуказанной команды сохраняются в:
C:\Users\XXXXXX\AppData\Roaming\gcloud\application_default_credentials.json
Команда -v ~ / .config: /root/.config
должна позволить докеру искать учетные данные при запуске образа, но это не так. Возникающая ошибка:
The Application Default Credentials are not available. They are available if running in Google
Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined
pointing to a file defining the credentials. See
https://developers.google.com/accounts/docs/application-default-credentials for more information.
Что я ставлю ошибку?
Спасибо,
3) Используйте синтаксис монтирования контейнера (-v), чтобы указать файл учетной записи службы. Затем установите переменную среды GOOGLE_APPLICATION_CREDENTIALS
(-e) при запуске контейнера, чтобы сообщить ему, где находятся учетные данные.
Спасибо вам за помощь!!
Контейнер работает изолированно от остальной системы, в этом его сила, и именно поэтому этот метод упаковки так популярен.
Таким образом, вся конфигурация в вашей среде будет недействительной, если вы не передадите ее в среду выполнения контейнера, например переменную окружения GOOGLE_APPLICATION_CREDENTIALS.
Я написал об этом статью. Дайте мне знать, если это поможет, и, если нет, мы обсудим точку блокировки!
Привет! Спасибо вам за помощь!! Я попробовал следующий код для запуска...
SET ADC = %appdata%/gcloud/application_default_credentials.json
docker run --network=host -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json -v ADC:/tmp/keys/FILE_NAME.json:ro /healthcare/bin/healthcare --fhirProjectId=<PROJECT_ID> --fhirLocationId=<LOCATION_ID> --fhirDatasetId=<DATASET_ID> --fhirStoreId=<STORE_ID> --pubsubProjectId=<PUBSUB_PROJECT_ID> --pubsubSubscription=<PUBSUB_SUBSCRIPTION_ID> --apiAddrPrefix=<API_ADDR_PREFIX>
Но все еще показывает ошибку: java.io.IOException: Error reading credential file from environment variable GOOGLE_APPLICATION_CREDENTIALS, value '/tmp/keys/FILE_NAME.json': File does not exist.
Я поставил только:SET ADC = "%appdata%/gcloud/application_default_credentials.json"
И используя %ADC
Ценю вашу помощь =)
Еще вопрос... В --apiAddrPrefix=<API_ADDR_PREFIX>
использую healthcare.googleapis.com/v1
. Это верно? Учетные данные в порядке, но я получаю следующую ошибку:
Exception in thread "main" java.lang.NullPointerException at com.google.api.client.http.GenericUrl.<init>(GenericUrl.java:158) at com.google.api.client.http.GenericUrl.<init>(GenericUrl.java:125) at com.google.cloud.healthcare.apiclient.HttpFhirClient.generateFhirStoreUrl(HttpFhirClient.java:89) at com.google.cloud.healthcare.apiclient.HttpFhirClient.getFhirStore(HttpFhirClient.java:73) at com.google.cloud.healthcare.pubsub.MessageListener.start(MessageListener.java:70) at com.google.cloud.healthcare.Hl7V2ToFhirWorker.main(Hl7V2ToFhirWorker.java:117)
Я просто поставил https://healthcare.googleapis.com/v1beta1
и все работает!! Спасибо
1) Ваше предположение о
is supposed to enable the docker to search
неверно. Приложения-контейнеры не могут выполнять поиск в среде хоста. Google ADC проверяет только известные местоположения, и указанный вами путь не является одним из них. 2) НЕ ссылайтесь на файлы учетных данных, созданные CLIgcloud
. Укажите файл JSON учетной записи службы из вашего каталога, а не файл, управляемый CLI.