Releases.exs似乎无法与Elixir部署一起正常使用

时间:2020-04-24 22:09:27

标签: elixir

我的目标是使用在整个SDLC中推送到开发人员中的同一Docker映像。代码合并后,我们要构建一个容器并将其推送到ECR中。从那里,我们部署到共享的开发环境中,然后将其推送到暂存阶段并最终进行生产(所有运行ECS)。我想澄清一些事情。

1)尝试针对dev构建代码库时,我们的应用似乎无法针对mydb2进行查询。我得到的错误是我的用户无法访问mydb2中的表。否则,将加载UI,因为UI可以访问mydb1中的表。在我的ECS任务中,我通过环境变量导出必需的变量。这是有趣的部分,如果存在config/dev.secret.exs,则一切正常。我不确定为什么需要保密文件?

2)您注意到config/config.exs有一些进口。我尝试删除此文件,并且仅存在config/dev.exsconfig/releases.exs,但是遇到了上述相同问题。无论我尝试什么,似乎都没有dev.secret.exs的支持而没有任何效果。 config/releases.exs仅适用于“产品”构建吗?

export MIX_ENV=dev
mix release

config / releases.exs

import Config

secret_key_base = System.fetch_env!("SECRET_KEY_BASE")
db_host = System.fetch_env!("db_host")
db_password = System.fetch_env!("db_password")
aws_access_key_id = System.fetch_env!("AWS_ACCESS_KEY_ID")
aws_secret_access_key = System.fetch_env!("AWS_SECRET_ACCESS_KEY")

config :inv, Inv.Repo,
  username: "myuser",
  password: db_password,
  database: "mydb1",
  hostname: db_host,
  pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")

config :inv, Inv.Wordpress,
  username: "myuser",
  password: db_password,
  database: "mydb2",
  hostname: db_host,
  pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")

config :inv, Inv.Endpoint,
  server: true,
  secret_key_base: secret_key_base

config / config.exs

import_config "#{Mix.env()}.exs"
secrets_config_path = Path.join(__DIR__, "#{Mix.env()}.secret.exs")

config / dev.exs

use Mix.Config

config :inv, InvWeb.Endpoint,
  http: [port: 4002],
  url: [host: "MYURL", port: 80],
  cache_static_manifest: "priv/static/cache_manifest.json"

# Do not print debug messages in production
config :logger, level: :info
config :phoenix, :serve_endpoints, true

config / dev.secret.exs

import Config

secret_key_base =
  System.get_env("SECRET_KEY_BASE") ||
    raise """
    e1:nvironment variable SECRET_KEY_BASE is missing.
    You can generate one by calling: mix phx.gen.secret
    """

db_host =
  System.get_env("db_host") ||
    raise """
    environment variable db_host is missing.
    """

db_password =
  System.get_env("db_password") ||
    raise """
    environment variable db_password is missing.
    """

config :inv, Inv.Repo,
  username: "myuser",
  password: db_password,
  database: "mydb1",
  hostname: db_host,
  pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")

config :inv, Inv.Wordpress,
  username: "myuser",
  password: db_password,
  database: "mydb2",
  hostname: db_host,
  pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")

0 个答案:

没有答案