我想把我的环境变量(API_ENDPOINT)从docker-compose传递给我的.net核心应用程序接口app.config。
docker-compose:
services:
api_service:
image: api_image
environment:
- API_ENDPOINT=http://service:3000/api/v1/
ports:
- "44399:44399"
.NET核心,app.config:
<add key="apiUrl" value="{{API_ENDPOINT}}" />
从docker-compose中获取API_ENDPOINT的.net核心价值是可能的吗?
发布于 2020-10-27 17:12:55
您可以编写一个ENTRYPOINT
来执行此转换。
#!/bin/sh
# Replacing {{API_ENDPOINT}} placeholder by the value of the variable
sed -ibak -e "s~{{API_ENDPOINT}}~${API_ENDPOINT}~g" \
/app.config
exec "$@"
并将其添加到您的Dockerfile
中。
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
# ...
COPY docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
RUN chmod +x /docker-entrypoint.sh
构建和测试
# build
docker build --rm . -t test-net
# test (mimic what is done on compose)
docker run --rm -it --env API_ENDPOINT="http://service:3000/api/v1/" test-net cat /app.config
# <add key="apiUrl" value="http://service:3000/api/v1/"/>
https://stackoverflow.com/questions/64558438
复制