У меня есть экземпляр движка приложений, работающий на GCP, и пример приложения, которое я могу запустить непосредственно из Visual studio (Windows) и могу обновить базу данных cloudtore. Я также могу развернуть приложение в GCP.
Мне нужен ключ аутентификации для доступа к служебной учетной записи в GCP из docker, поэтому я добавил его в проект в SweepstakesLinux / Keys, чтобы он был скопирован в docker файлом dockerfile.
Однако, когда я пытаюсь запустить его в Docker, я получаю эту ошибку
Error reading credential file from location /app/SweepstakesLinux/Keys/KEY_NAME.json: Could not find file '/app/SweepstakesLinux/Keys/KEY_NAME.json'.
Мой Dockerfile выглядит так
FROM gcr.io/google-appengine/aspnetcore:2.1
COPY . /app
WORKDIR /app
# Environment Variables
ENV GOOGLE_APPLICATION_CREDENTIALS /app/SweepstakesLinux/Keys/KEY_NAME.json
ENTRYPOINT ["dotnet", "SweepstakesLinux.dll"]
Я могу подключиться к образу докера, используя
docker run -it --entrypoint sh sweepstakeslinux:dev
и я вижу, что файл существует в каталоге.
Если я запускаю $ GOOGLE_APPLICATION_CREDENTIALS из контейнера Docker, он, похоже, находит файл, но не поля в нем
и если я запускаю grep vi $ GOOGLE_APPLICATION_CREDENTIALS, он может открыть файл, но некоторые пары ключей и значений, по-видимому, отсутствуют:
Я также попытался смонтировать локальную папку с моего компьютера, чтобы получить доступ и скопировать ключ оттуда, запустив
docker run -v C:\Users\Phil\Keys:/keys --entrypoint sh sweepstakeslinux:dev
но это просто приводит к этой ошибке:
No executable found matching command "dotnet-SweepstakesLinux.dll"
Есть идеи?
Изменил мой докер-файл на
FROM gcr.io/google-appengine/aspnetcore:2.1
COPY . /app
WORKDIR /app
RUN mkdir /tmp/keys
RUN cp /app/SweepstakesLinux/Keys/dbAccessKey.json /tmp/keys/dbAccessKey.json
ENV GOOGLE_APPLICATION_CREDENTIALS /tmp/keys/dbAccessKey.json
ENTRYPOINT ["dotnet", "SweepstakesLinux.dll"]
и это работает. Я все еще не уверен в правильном подходе