我的目标是使用在整个SDLC中推送到开发人员中的同一Docker映像。代码合并后,我们要构建一个容器并将其推送到ECR中。从那里,我们部署到共享的开发环境中,然后将其推送到暂存阶段并最终进行生产(所有运行ECS)。我想澄清一些事情。
1)尝试针对dev
构建代码库时,我们的应用似乎无法针对mydb2
进行查询。我得到的错误是我的用户无法访问mydb2
中的表。否则,将加载UI,因为UI可以访问mydb1
中的表。在我的ECS任务中,我通过环境变量导出必需的变量。这是有趣的部分,如果存在config/dev.secret.exs
,则一切正常。我不确定为什么需要保密文件?
2)您注意到config/config.exs
有一些进口。我尝试删除此文件,并且仅存在config/dev.exs
和config/releases.exs
,但是遇到了上述相同问题。无论我尝试什么,似乎都没有dev.secret.exs
的支持而没有任何效果。 config/releases.exs
仅适用于“产品”构建吗?
export MIX_ENV=dev
mix release
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
import_config "#{Mix.env()}.exs"
secrets_config_path = Path.join(__DIR__, "#{Mix.env()}.secret.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
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")