たとえば、ビルド中にフェッチするために認証が必要なファイルをインストールするために、環境変数をビルド時にドッカーファイルに渡すことは可能ですか?ビルド時に環境変数をDockerfileに渡す
答えて
この方法はあなたが望むものを達成しますが、秘密にはお勧めできません(秘密は難しい)。
Build Argsを使用できます。 DockerfileにARG
命令を置き、Dockerfile内で参照できるようにすることです。
$ docker build --build-arg some-thing=some-value .
この意志:あなたがイメージを構築するときに、あなたのようなdocker build
にARG
を渡すことができ
...
RUN echo $some-thing
...
:
FROM alpine:3.3
ARG some-thing=<optional default value>
あなたは次のようにDockerfileの後半で、この変数を使用することができますARG
'some-thing'としてDockerのビルドプロセスに「some-value」を渡します。
あなたARG
秒の
echo $some-thing
"some-value"
値がないがが終了画像に永続化され得ると思います。パスワードなどが最終的なイメージに漏れることを心配する必要はありません。しかし、Dockerは秘密を渡す方法としてこれを推奨していません。
秘密のために推奨されない理由は、コマンドがDockerの履歴に終わるからです。 – ldg
ドッカーファイルはこれを実現するためにEntrypointを提供します。イメージのエントリポイントとしてシェルスクリプトを作成することができます。このシェルスクリプトは、いくつかのコマンドをパラメータとして使用できます。
Hereは最近作成した例です。 entrypoint scriptはSSHキーペアをパラメータとしてとり、コンテナ内のプライベートgitリポジトリをクローンします。
このすべてのものはイメージで焼かれますか?これは答えではありません。 – johnharris85
@Jハリス申し訳ありませんが、私はあなたの点を得ることはありません。 「すべてのもの」の意味を教えてください。スクリプトやパラメータなどのものは? –
OK、そうではありません。あなたがしていることは本当にわかりません。あなたのイメージは、中間のクローンを作成することによって別のイメージを構築します。なぜ私はマシンにクローンを作成してから配布する前にコードをコピーしていないのですか? – johnharris85
docker build --help
を実行すると、どの引数を受け入れるかがわかります。あなたがそれを見てみると:
使用方法を理解できない場合は、完全なDockerドキュメントを参照してください。
- 1. ビルド時にファイル内の環境変数をDockerfileに渡す
- 2. ビルド用の環境変数がDockerfileに表示されない
- 3. Dockerfileビルトイン環境変数ドキュメント
- 4. ビルド時に多数のASP.NETサイトに環境変数を設定
- 5. 環境変数を渡す
- 6. 実行時に環境変数をkubernetesに渡す
- 7. 環境変数をサブシェルに渡すCMD
- 8. シェル環境変数をRscriptに渡す
- 9. データアクセス層に環境変数を渡す
- 10. phpコマンドラインスクリプトに環境変数を渡す
- 11. 環境変数をドッカーファイルビルドに渡す
- 12. ドッカーに渡される環境変数
- 13. Dockerfile - ビルド時にenv変数を評価する
- 14. DockerfileはPATH環境変数を無視します
- 15. ドックでビルド中に環境変数を設定するには
- 16. dockerfile環境変数をnode.jsファイルに渡すにはどうすればいいですか?
- 17. Android NDK - CMakeビルド環境変数
- 18. Jenkins環境変数値を渡す環境変数jenkinsジョブのビルドパラメータ
- 19. CMakeでビルド時間に環境変数を設定する方法は?
- 20. ビルド中に環境変数にアクセスする方法
- 21. ビルド中に環境変数を設定する
- 22. AndroidスタジオのGradleビルドに環境変数を使用する
- 23. 環境変数で引数をスペースで渡すには?
- 24. スーパーバイザプログラムにシェル環境変数を渡すには?
- 25. 環境変数をコマンドラインから.ymlファイルに渡すには?
- 26. 環境変数を川下のジョブに渡すには?
- 27. 環境変数をbashスクリプト内のバイナリプログラムに渡すには?
- 28. パッセンジャー/ nginx - 環境変数渡し、またはパッセンジャー変数渡し
- 29. ビルドパラメータを使用して環境変数をパイプラインノードに渡す
- 30. RubyでWindows環境変数を渡すには
[Dockerでビルド時に動的環境変数を作成する](http://stackoverflow.com/questions/27711304/create-dynamic-environment-variables-at-build-time-in-docker) – baxang