docker-compose에서 .net 코어 앱으로의 환경 변수

Oct 27 2020

docker-compose의 환경 변수 (API_ENDPOINT)를 내 .net 핵심 API app.config로 전달하고 싶습니다.

도커 작성 :

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 핵심 가치를 얻을 수 있습니까?

답변

Romain Oct 27 2020 at 17:12

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/"/>