2016-07-08 13 views
1

ドッキング・イメージで本番環境をセットアップしようとしています。 ソフトウェアのコンパイルに数時間を費やした後、私はDockerfileにロケール環境変数を設定するのを忘れていることに気付きました。Dockerの環境変数

イメージに環境変数を永続的にコミットする方法はありますか? 私はこれを行うドッカーファイルの方法を見つけただけで、私はそれを再構築して、すでに完了した作業をすべて失いたくない。

.bashrcにこれらの変数を設定すると、dockerの実行コマンドがこれらの設定をバイパスしているように見えます。

+0

あなたは遅かれ早かれ、再構築する必要が_will_:ここ

は、私はちょうど(bashシェルを)やっていたものの一例です。プロビジョニングの自動化に取りかかることをお勧めします。 –

+0

あなたはドッカーのどのバージョンを使用していますか?どのOSで?あなたが使用している 'docker run'オプションは何ですか? – VonC

+0

@VonCバージョン1.11.2を使用しています。私はちょうどコンテナに接続し、apt-getをインストールし、手作業でコンパイルして、自分のイメージに変更をコミットするだけです。私はまだドッカーを正しく使用する方法を学んでいます... – KahPhi

答えて

1

イメージに環境変数を永続的にコミットする方法はありますか?

これはdirective ENV in Dockerfileです。

ENV <key> <value> 
ENV <key>=<value> ... 

しかし、あなたは(あなたがdockerfileの最後にそれを追加し、イメージビルドのほとんどのbenefit from the cacheができるが)画像を再構築したくないので、あなたはまだdocker run -e "variable=value"

であなたのコンテナを起動することができます
+0

これを私のイメージに永久に追加するには、ドッカーファイルのFROM {my_image}を使用し、ここで説明したようにENVを設定することが唯一の選択肢と思われます。おかげで – KahPhi

+0

@ KahPhi本当に、あなたはあなたの既存のイメージから新しいイメージを構築することができます。 – VonC

0

「ドッカーコミット」操作中に環境変数を変更して、既存のイメージを変更することができます。 https://docs.docker.com/engine/reference/commandline/commit/とこのStackOverflow Q & A:Docker Commit Created Images and ENTRYPOINTを参照し、sxc731の回答を参照してください。どのように複数のEnv変数を設定するかはわかりませんが、それぞれに別々の変更が必要な場合があります。

docker run -it --entrypoint /bin/bash $origimghash 
# make changes, leave running, then in another shell: 
EP='ENTRYPOINT ["python","/tmp/deploy/deploy.py"]' 
ENV='Env no_proxy "*.local, 169.254/16"' 
docker commit "--change=$ENV" "--change=$EP" $runninghash me/myimg 
docker inspect -f "{{ .Config.Env }}" $newhash 
関連する問題