[英]How do I install Nexus 3 in a Docker container with no internet connection?
[英]How do I get a connection string into a docker container in heroku securely?
在使用 Heroku 时,我一直在努力寻找一种将连接字符串安全地放入 docker 容器的方法。 这是文档告诉我的:
“我们建议将 ENV 用于运行时变量(例如,GEM_PATH)并使用 heroku 配置作为凭证,这样敏感凭证就不会意外地检查到源代码控制中。”
在这种情况下,对于连接字符串,我想通过 heroku 配置设置一个变量,这就是我所做的。 打到这个尝试使用Heroku的配置:编辑,所以我使用Heroku的配置--json。
这个变量在那里:
"ConnectionStrings__Default": "MyConnectionString"
现在至于如何在实际的 dockerfile 中传递它,我对 docker 并不擅长,所以很多这都是猜测工作,结合我发现的关于从外部获取连接字符串到 c# here 的内容。 我怀疑问题出在附近,所以请告诉我这是否不正确:
# publish
FROM build AS publish
WORKDIR /src/webapplication/webapplication
RUN dotnet publish -c Release -o /src/publish
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=publish /src/publish .
# heroku uses the following
CMD Default=$ConnectionStrings__Default ASPNETCORE_URLS=http://*:$PORT dotnet webapplication.dll
我以这种方式将配置变量插入 docker 中的 aspnet 核心应用程序是否正确? 我能找到的例子很少,所以不确定。
获取连接字符串的代码(在使用 json.config 时有效):
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
string basePath = Directory.GetCurrentDirectory();
if (!optionsBuilder.IsConfigured)
{
var builder = new ConfigurationBuilder()
.SetBasePath(basePath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
IConfigurationRoot configuration = builder.Build();
string connectionString = configuration.GetConnectionString("Default");
optionsBuilder.UseSqlServer(connectionString)
.EnableSensitiveDataLogging();
optionsBuilder.UseLazyLoadingProxies();
}
}
错误:
System.ArgumentNullException: Value cannot be null. (Parameter 'connectionString')
如果有人能给我一些指点,那对我来说意味着整个世界,因为我想部署这个东西,但我不知道该怎么做。
在.AddJsonFile()
您需要调用.AddEnvironmentVariables()
这将使用匹配的环境变量覆盖设置文件中的任何设置。
你的代码应该是这样的
var builder = new ConfigurationBuilder()
.SetBasePath(basePath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
另一种选择是在调用docker run
时使用-e
标志在容器中设置环境变量
https://docs.docker.com/engine/reference/run/#env-environment-variables
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.