Dockerfileに複数行の環境変数を設定したい。
docker run
を介して環境変数を渡すと、すべてが機能します。
CONFIG="port: 4466
databases:
prod:
connector: mysql
active: true
Host: 33.333.333.333
port: 3306
user: root
password: pass"
docker run --env CONFIG="$CONFIG" ubuntu:latest env | grep 'CONFIG'
出力(複数行変数として解釈されるため、単一行のみ)
CONFIG=port: 4466
Dockerfile
FROM ubuntu:latest
ENV CONFIG 'port: 4466\ndatabases:\n prod:\n connector: mysql\n active: true\n Host: Host\n port: 3306\n user: root\n password: pass'
Dockerイメージをビルドして実行する
docker build -t multilinetest .
docker run multilinetest env | grep 'CONFIG'
出力
CONFIG=port: 4466\ndatabases:\n prod:\n connector: mysql\n active: true\n Host: Host\n port: 3306\n user: root\n password: pass
両方のシナリオで同じ環境変数を保存する必要があります(この環境変数を、複数行の文字列を必要とするサードパーティのイメージに渡します)
マルチライン環境変数をビルド引数としてdocker buildに渡すことで、これを機能させることができました。
Dockerfile
FROM ubuntu:latest
ARG CONFIG
ENV CONFIG $CONFIG
ビルドコマンド
CONFIG="port: 4466
databases:
prod:
connector: mysql
active: true
Host: 33.333.333.333
port: 3306
user: root
password: pass"
docker build --build-arg CONFIG="$CONFIG" ubuntu:latest env | grep 'CONFIG'
改行文字のエスケープは正常に機能します。
ENV BUILD_DEPENDENCIES apt-utils \
curl \
libc-dev \
gcc \
gnupg2
Step 8/48 : ENV BUILD_DEPENDENCIES apt-utils curl libc-dev gcc gnupg2
---> Running in 65b0ad105af4