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

As opiniões expressas neste blog são de responsabilidade do autor e não refletem necessariamente as opiniões da New Relic. Todas as soluções oferecidas pelo autor são específicas do ambiente e não fazem parte das soluções comerciais ou do suporte oferecido pela New Relic. Junte-se a nós exclusivamente no Explorers Hub ( discuss.newrelic.com ) para perguntas e suporte relacionados a esta postagem do blog. Este blog pode conter links para conteúdo de sites de terceiros. Ao fornecer esses links, a New Relic não adota, garante, aprova ou endossa as informações, visualizações ou produtos disponíveis em tais sites.