DockerコンテナのHerokuで実行するために古い.NET Web APIアプリケーションを移植しています。私はそうするためにモノ画像を使用しています。HerokuのDockerコンテナからXサーバーにアクセス
は、ここに私のDockerfileです:
FROM mono:latest
EXPOSE 5000
ENV PORT 5000
ADD ./ /api
WORKDIR /api
RUN nuget restore -NonInteractive
RUN msbuild webapi.sln /p:Configuration=Release
CMD mono /api/MyProject/bin/Release/MyProject.exe port:$PORT
かなり簡単、ソリューションを構築し、それを実行し、NuGetパッケージを復元し、ソースをコピーして、最新のモノ画像を使用しています。 $ PORT環境変数はHerokuによって設定されるか、私のローカル開発環境ではデフォルトで5000に設定されます。
PDFレポートを生成する特定のAPIコントローラを除いて、すべてがうまくいきます。このレポートは、必要なレンダリングのためにSystem.Drawingアセンブリに依存するPdfSharpによって生成されます。しかし、これはディスプレイに依存することを意味します。
レポートを生成するためにそのコントローラを呼び出すと、次のエラーが発生します。
Could not open display (X-Server required. Check your DISPLAY environment variable).
必要なレンダリングを行うには、Xサーバーにアクセスする必要があります。私は数多くのことを試しましたが、常にこのエラーで立ち往生しています。