我的docker-compose.yml如下所示。
version: '3.4'
services:
identity.api:
image: panda/identity.api
build:
context: .
dockerfile: Services/Identity/PandaMarket.Identity.Api/Dockerfile
ports:
- "5000:80"
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ConnectionString=Server=sql.server;Database=PandaMarket.Identity;User Id=sa;Password=Password#123
当我执行docker-compose build或docker-compose up
我检查了docker inspect panda/identity.api
,找不到ASPNETCORE_ENVIRONMENT和ConnectionString。
我表演时
docker inspect -f '{{range $index, $value := .Config.Env}} {{$value}} {{end}}' panda/identity.api
我只能看到这些变量
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ASPNETCORE_URLS=http://+:80 DOTNET_RUNNING_IN_CONTAINER=true ASPNETCORE_VERSION=2.1.2
我的问题是图像中如何反映环境?
答案 0 :(得分:0)
如果要在映像中定义环境变量,则需要在Dockerfile中定义它们。您可以传递一个build arg,以允许您从撰写文件中更改该环境变量。
在compose文件中设置环境变量以及其他设置(例如命令和入口点)后,它们将应用于运行中的容器。您需要运行docker-compose up
或docker stack deploy ...
才能查看这些设置的结果。
请注意,不鼓励从compose运行构建。它们不再是版本3格式的功能,并且在您使用撰写文件通过编排工具(例如群模式)进行部署时不适用。理想的解决方案是使用可推送到注册表的CI服务器进行构建。