PreEmptive では、弊社の製品用に事前に作成された Docker コンテナを提供していませんが、弊社の提供するディストリビューションを使用すれば、独自のコンテナを作成するのは簡単な作業です。これらのコンテナを利用するには、フローティング ライセンスが必要であることに留意してください。
以下は、コンテナを構築するための出発点となる、Dotfuscator 用の Dockerfile のサンプルです。{x.y[.z]} は適切なメジャー.マイナー[.パッチ] バージョンに置き換えてください。
Dockerfile:
FROM mcr.microsoft.com/dotnet/sdk:8.0
# Dotfuscator をイメージにコピーする
COPY PreEmptive.Protection.Dotfuscator.Pro.{X.Y.Z}.nupkg .
# zip をインストールして Dotfuscator を展開する
RUN apt-get update && \
apt-get install \-y zip && \\
mkdir \-p /opt/local/PreEmptive.Protection.Dotfuscator.Pro && \\
unzip PreEmptive.Protection.Dotfuscator.Pro.{X.Y.Z}.nupkg \-d /opt/local/PreEmptive.Protection.Dotfuscator.Pro
# コマンド ライン インターフェイスを実行するように設定する
ENTRYPOINT ["dotnet", "/opt/local/PreEmptive.Protection.Dotfuscator.Pro/tools/programdir/netcore/dotfuscator.dll"]このイメージをビルドするには、次のようにします。
-
Dockerfileを任意の場所に保存し、その場所を覚えておいてください。 -
PreEmptive から
PreEmptive.Protection.Dotfuscator.Pro.{x.y.z}.nupkgパッケージをダウンロードします。 -
PreEmptive.Protection.Dotfuscator.Pro.{x.y.z}.nupkgを上記のDockerfileと同じディレクトリに配置します。 -
docker build -t preemptive/dotfuscator:{x.y.z} {'Dockerfile' を含むディレクトリへのパス}を実行します。
Dotfuscator コンテナの実行は簡単で、ライセンス情報を渡す必要があります。これは、現在の環境からミラーリングすることもできます。
docker run --rm -e DOTFUSCATOR_LICENSE -v {projectPath}:/code preemptive/dotfuscator:{x.y.z} /code/dotfuscatorconfig.xmlコンテナの環境で次のように設定します。
docker run --rm -e DOTFUSCATOR_LICENSE={LicenseString} -v {projectPath}:/code preemptive/dotfuscaator:{x.y.z} /code/dotfuscatorconfig.xmlまたは、コマンド ラインを使用して次のように渡します。
docker run --rm -v {projectPath}:/code preemptive/dotfuscator:{x.y.z} -license:<license-string> /code/dotfuscatorconfig.xml追加の引数についてはこちらを参照してください。
インターネット接続が制限されているか接続できない場合のトラブルシューティング
Docker がインターネット アクセスを制限されている/アクセスできない場合に、必要なツールをインストールするための 2 つの方法を紹介します。
解決法 1:Docker ビルド コンテキストにツールを組み込む
この方法では、.NET アセンブリの処理と難読化に必要なツールを含む Dockerfile を作成します。ツール(ILASM と ILDASM)は Docker イメージに直接コピーされます。
参考として、この方法の Dockerfile スクリプトを以下に示します。
#コンテナ内にツール用のディレクトリを作成する
RUN mkdir -p /usr/local/tools
#ツールをホストからコンテナにコピーする
#ilasm と ildasm が Dockerfile のビルド コンテキスト内に配置されていることを確認する
COPY ilasm /usr/local/tools/ilasm
COPY ildasm /usr/local/tools/ildasm
#ツールを実行可能にする
RUN chmod +x /usr/local/tools/ilasm /usr/local/tools/ildasm
#Dotfuscator がツールを見つけるための環境変数を設定する
ENV ILASM_PATH=/usr/local/tools/ilasm
ENV ILDASM_PATH=/usr/local/tools/ildasm
#Dotfuscator とその構成をコンテナにコピーする
COPY /path/to/dotfuscator /usr/local/dotfuscator
COPY /path/to/dotfuscatorconfig.xml /usr/local/dotfuscator/dotfuscatorconfig.xml
#指定された構成で Dotfuscator を実行するための既定のコマンドを定義する
#必要に応じてコマンドを調整して Dotfuscator を実行する
#例:CMD ["dotfuscator", "/usr/local/dotfuscator/dotfuscatorconfig.xml"]解決法 2:外部ツール用に Docker ボリュームを利用する
この方法では、ツールは Docker ビルド コンテキストの外部に配置され、実行時にコンテナにマウントされます。これにより柔軟性が向上し、ビルド プロセス中にツールを Docker イメージにコピーする必要がなくなります。
以下に示す Dockerfile と Docker run コマンドは、この方法を説明するための参考資料です。
Dockerfile:
#ツールと Dotfuscator 用のコンテナ内にディレクトリを作成する
RUN mkdir -p /usr/local/tools /usr/local/dotfuscator
#Dotfuscator がツールを見つけるための環境変数を設定する
ENV ILASM_PATH=/usr/local/tools/ilasm
ENV ILDASM_PATH=/usr/local/tools/ildasm
ENV DOTFUSCATOR_PATH=/usr/local/dotfuscator
#Dotfuscator とその構成ファイルをコンテナにコピーする
COPY /path/to/dotfuscator /usr/local/dotfuscator
COPY /path/to/dotfuscatorconfig.xml /usr/local/dotfuscator/dotfuscatorconfig.xml
#指定された構成で Dotfuscator を実行するための既定のコマンドを定義する
# 例:CMD ["dotfuscator", "/usr/local/dotfuscator/dotfuscatorconfig.xml"]Docker の Run コマンド:
Docker コンテナを実行し、ホスト マシン上の特定の場所からツールをマウントするには、次のようにします。
参考コマンド:
docker run -it --name dotnet-dotfuscator-container \
\-v /path/on/host/ilasm:/usr/local/tools/ilasm \\
\-v /path/on/host/ildasm:/usr/local/tools/ildasm \\
-v /path/on/host/ilasm:/usr/local/tools/ilasm: ホスト マシン上の ilasm ツールをコンテナにマウントする。
-v /path/on/host/ildasm:/usr/local/tools/ildasm: ホスト マシン上の ildasm ツールをコンテナにマウントする。