Dockerfileからカールの設定ファイルをアップロードした後、いくつかの編集が必要です。以下は構造例です。
client:
...
server:
applicationConnectors:
- type: http
port: 8989
# for security reasons bind to localhost
bindHost: localhost
requestLog:
appenders: []
adminConnectors:
- type: http
port: 8990
bindHost: localhost
これら2つのパラメータを編集する必要がありますbindHost
が、その期間にその値をパラメータとして渡すことができれば良いと思いますがdocker build
、インターネットやドキュメントには何も見つからないようです。
答え1
質問を正しく理解したら、Dockerfileコマンドでカールをsedにパイプします。
curl XXX | sed -e "s/bindHost: localhost/bindHost: ${your_variable}/g" > yourfile.yaml
または、ファイルをダウンロードして編集することもできます。
sed -ie "s/bindHost: localhost/bindHost: ${your_variable}/g" /path/to/your/file
答え2
"--build-arg" を使用して Dockerfile に値を渡し、その値を呼び出しに使用できます。RUN sed
たとえば、IPアドレスパラメータを挿入します。
FROM whatever
COPY config.file /etc/config.file
ARG IPADDR
RUN sed -i -r "s/#IPADDR#/$IPADDR/g" /etc/config.file
以下を使用してビルドできます。
docker build -t foobar --build-arg IPADDR=11.12.13.14 .
ビルドパラメータをランタイム環境変数に変換することもできます。
ARG ARGVAR
ENV ENVVAR $ARGVAR
構成構文を実行せずに環境変数置換を実行できる場合は、より良いでしょうsed
。
しかし、これは画像をとても具体的にする。コンテナを起動するとき(、docker run
使用)環境変数を設定し、その値を使用して設定構文でない限り、スクリプトで設定ファイルをコンテナエントリとしてすぐに編集できます。 (または実行パラメータ)Envvarの置き換えが可能です。--env
--env-list