#elixir #elixir-mix
#elixir #elixir-mix
Вопрос:
При выполнении следующего действия все работает нормально:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to.json
MIX_ENV=prod
DATABASE_URL=...
SECRET_KEY_BASE=...
HOST=localhost
PORT=80
iex -S mix phx.server
Однако при генерации выпуска эликсира с mix release
:
GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to.json
MIX_ENV=prod
DATABASE_URL=...
SECRET_KEY_BASE=...
HOST=localhost
PORT=80
mix release
( iex -S mix phx.server
заменяется mix release
на, а остальное остается тем же)
И запуске его через: _build/prod/rel/app/bin/app start
Я получаю следующую ошибку:
0:24:29.781 [info] Application goth exited: Goth.start(:normal, []) returned an error: shutdown: failed to start child: Goth.Config
** (EXIT) an exception was raised:
** (RuntimeError) Failed to retrieve project data from GCE internal metadata service.
Either you haven't configured your GCP credentials, you aren't running on GCE, or both.
Please see README.md for instructions on configuring your credentials.
(goth 1.2.0) lib/goth/config.ex:182: Goth.Config.determine_project_id/2
(goth 1.2.0) lib/goth/config.ex:73: anonymous fn/2 in Goth.Config.load_and_init/1
(elixir 1.11.2) lib/enum.ex:1403: anonymous fn/3 in Enum.map/2
(stdlib 3.13.2) maps.erl:233: :maps.fold_1/3
(elixir 1.11.2) lib/enum.ex:2197: Enum.map/2
(goth 1.2.0) lib/goth/config.ex:71: Goth.Config.load_and_init/1
(stdlib 3.13.2) gen_server.erl:417: :gen_server.init_it/2
(stdlib 3.13.2) gen_server.erl:385: :gen_server.init_it/6
Эта ошибка означает, что GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to.json
деталь работала не так, как ожидалось. По какой-то причине файл JSON не может быть найден.
Я могу гарантировать, что файл JSON существует, и кажется, что он просто недоступен из выпуска.
Кто-нибудь знает, почему файл JSON не может быть найден при запуске приложения из выпуска?
Ответ №1:
Настройка среды выполнения для релизов выполняется с config/runtime.exs
помощью ( config/releases.exs
до v1.11
) и обсуждается в документации здесь .