docker-composeから.netコアアプリへの環境変数

Oct 27 2020

docker-composeから.netコアAPIapp.configに環境変数(API_ENDPOINT)を渡したい。

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コア値を取得することは可能ですか?

回答

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