Docker内のすべての環境を常に再構築すると、依存関係が常に満たされ、ドッカーファイルを他の人に与えることができるようになり、問題なくローカルで再構築できるという高い確信が得られます。
一時ファイルはDocker内でのビルドに最適です!だから私は可能な限りコンテナ内にそれらを構築しようとします。
2)第二の問題に私たちを上のリードドッカーから解除夫婦承認構築プロセス
、どのようにデカップルする方法をビルドからの認可を?
オプション1 - Bake In composer auth。json専用のビルドユーザーのための信用を持っています。
他の答えとして、資格情報をベイクしてから再度削除することができます。しかし、あなたはsshキーと同じように敏感なものを「焼く」ことは望まないでしょう。 Composerはauth.jsonファイルをサポートしていますので、専用のビルド・ユーザーを作成し、自分の代わりにcredsをauth.jsonファイルに保管してください。万一侵害された場合は、パスワードを変更することができます。コンポーザーのインストールが完了したら、ファイルを削除または上書きします。
COPY . ./
RUN composer install --no-dev --no-interaction -o
RUN rm -f ./auth.json
オプション2 - credsを自身が過渡作成し、ドッキングウィンドウexecを使用してドッカーコンテナにそれらを渡す:
私は完全にこのアプローチをテストしていませんが、私は、なぜ何かを見ることができませんこれはうまくいかないでしょう。あなたは)
2「を作曲インストール」(またはドッキングウィンドウハブからいずれかを使用する実行できる基本PHPコンテナを構築
1))、それは
を実行しているように、このベースコンテナをスピンアップ 3.)docker execを使用して、すでにコンテナに焼き込まれているラッパースクリプトに信用を渡します。ラッパースクリプトは、作曲はHTTP基本認証を使用して をインストールし実行します - それは、すでにユーザ名が焼いていますので、あなただけのhttp-basic technique
docker exec -d my_base_php_container php -f /my_wrapper_script.php ${PASSWORD}
4.ごとにパスワードを提供する必要がありますに)あなたはこのコンテナとしてコミット新しいイメージ
docker commit --change "composer install" ${CONTAINER_ID} my_installed_image:1.0
内部ビルドの主な議論は、私が必要とするすべての依存関係がイメージ内にあることです。それでは、作成したアーティファクトをコピーするためのプライベートイメージを作成してください。そうすれば、私は一貫性のあるビルドプロセスをすべてのものに持たせることができます。また、credsやsshキーでベーキングしなくても、私の展開イメージには作者のような不要なレイヤーがありません。 – NiRR
はい、イメージ内のすべての依存関係を使用すると、一貫性と移植性が得られます。私たちのドッカーコンテナにアーティファクトを作成させてみませんか?良い質問とこれは別の良いアプローチです!これは私がPOMファイルを渡すことができるMavenドッカーの画像で試したことですが、それはうまくいきます。1)authがドッカーの外にある場合はどうすれば他のものを入手できますか?あなたのイメージを構築する?そして2.)どのようにコンテナからアーティファクトを抽出しますか? (これを達成するためにボリュームマウントを使用することもできますが、env固有の依存関係が導入される可能性があります) – GreensterRox