[英]Connect to local SQL Server from .Net 4.8 Console Application Running in Docker Windows container
[英]Running a standard .NET Console Application in docker container
我試圖將一個非常簡單的控制台應用程序作為Windows docker容器運行。 我有一個使用“ dotnet-framework:4.7.2-runtime-windowsservercore-1803”基礎映像顯示的泊塢窗文件。
FROM microsoft/dotnet-framework:4.7.2-runtime-windowsservercore-1803
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT "DockerConsoleApp.exe"
控制台應用程序僅每5秒將“ Hello World”輸出到日志文件”
static void Main(string[] args)
{
while (true)
{
try
{
Thread.Sleep(5000);
_logger.Info("Hello Wolrd");
}
catch (Exception e)
{
//handle the exception
Console.Error.WriteLine(e);
}
}
}
我正在使用以下docker compose文件
version: '3.4'
services:
dockerconsoleapp:
image: dockerconsoleapp:dev
build:
context: .\
args:
source: obj\Docker\publish
volumes:
- C:\Users\user\source\repos\DockerConsoleApp\DockerConsoleApp:C:\app
- C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Remote Debugger:C:\remote_debugger:ro
- C:\Users\user\source\repos\DockerConsoleApp\VolumeTest:C:\app\logs
問題是,一旦我手動構建或運行“ docker-compose up -d”,就會創建容器,然后立即死亡。 我希望容器可以保持打開狀態,因為在入口點中正在調用應用程序,除非手動停止,否則應用程序應該繼續運行。
您的容器很可能是由於ENTRYPOINT
異常或ENTRYPOINT
本身無效而導致的死亡。 您可以檢查docker logs
以找出原因。
最后,解決方法是將dockerfile中的ENTRYPOINT更改為CMD。 見下文。
FROM microsoft/dotnet-framework:4.7.2-runtime-windowsservercore-1803
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
CMD ["DockerConsoleApp.exe"]
我已經讓它運行了一整夜,現在容器可以用15個小時了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.