
.NET 7でビルトインコンテナサポートが導入され、制約はありますがDockerfileを記載することなく、.NET のプロジェクトファイル(csproj)とdotnetコマンドのみでコンテナイメージのビルドまでできるようになりました。
さて、New Relicの.NET AgentをDocker環境にインストールする場合、ドキュメントの記載されているようにDockerfileにインストール処理を記述します。Dockerfileがなくなったビルトインコンテナサポートの場合、どのように.NET Agentをインストールすればよいのでしょうか。
Microsoftの公式ブログにもある通り、このような場合はビルトインコンテナサポートが利用するベースとなるコンテナイメージをカスタマイズします。あらかじめ.NET Agentをインストールしたイメージをベースとして指定することができます。
例えば、ASP.NET 向けのベースイメージであれば次のようなDockerfileでベースとなるコンテナイメージを作成します。
そしてビルドします。ビルトインコンテナサポートは現時点ではLinux amd64イメージしかサポートしていないのと、Windows上でビルドしているためプラットフォームを明示しています。リポジトリは利用するものを、イメージ名は任意です。
そしてリポジトリにプッシュします。ビルトインコンテナサポートが参照するベースイメージはリポジトリにあるものを完全修飾名でしか指定できないため同じマシンでテストするときもプッシュする必要があります。
ビルトインコンテナサポートを使う側では、プロジェクトファイルは次のようになります。
ContainerBaseImageで先ほどプッシュしたベースイメージを完全修飾名で指定します。また、元のイメージではライセンスキーとアプリ名を指定していません。コンテナ起動時に指定する方法もありますが、今回はアプリケーションのコンテナイメージの環境変数に指定することにし、ContainerEnvironmentVariableで指定しています。
これでdotnet publish --os linux --arch x64 -c Release -p:PublishProfile=DefaultContainer
のように実行するとNew Relic Agentを含んだコンテナイメージを作成できます。

Les opinions exprimées sur ce blog sont celles de l'auteur et ne reflètent pas nécessairement celles de New Relic. Toutes les solutions proposées par l'auteur sont spécifiques à l'environnement et ne font pas partie des solutions commerciales ou du support proposés par New Relic. Veuillez nous rejoindre exclusivement sur l'Explorers Hub (discuss.newrelic.com) pour toute question et assistance concernant cet article de blog. Ce blog peut contenir des liens vers du contenu de sites tiers. En fournissant de tels liens, New Relic n'adopte, ne garantit, n'approuve ou n'approuve pas les informations, vues ou produits disponibles sur ces sites.