
.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を含んだコンテナイメージを作成できます。

The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.