web-dev-qa-db-ja.com

Docker exec-コンテナー内のファイルにテキストを書き込む

実行中のdockerコンテナー内のテキストファイルにテキスト行を書き込みたいです。これまでに試したことがあります:

docker exec -d app_$i eval echo "server.url=$server_url" >> /home/app/.app/app.config

応答:

/home/user/.app/app.config: No such file or directory

2回目の試行:

cfg_add="echo 'server.url=$server_url' >> /home/user/.app/app.config"
docker exec -i app_$i eval $cfg_add

応答:

exec: "eval": executable file not found in $PATH

何か案は?

15
jwi

さらに:

コンテナの外部からテキストを記述する必要がある場合、これも機能します。

(docker exec -i container sh -c "cat > c.sql") < c.sql

これにより、入力がコンテナにパイプされます。もちろん、これはプレーンテキスト(ファイルなし)でも機能します。 -tパラメーターを省略することが重要です。

https://github.com/docker/docker/pull/9537 を参照してください

更新(ファイルの一部ではなく、ファイルをコピーする必要がある場合):

Docker v17.03には、ローカルfsとコンテナ間でコピーするdocker cpがあります。 https://docs.docker.com/engine/reference/commandline/cp/#usage

11
Risadinha