[英].Net Core 5 API projects in docker containers not working with docker run or docker-compose - no errors
我所看到的:
In VS2019, create a new .net core 5 web API app, turn off https (just to eliminate certificate issues for testing), call it dockertest.
對應用程序不進行任何更改
從 VS 中在 docker 中運行它——一切正常。
刪除 dockertest docker 容器(不是圖像)
使用docker run -it --rm -p 7722:80 dockertest:dev
-- 容器運行沒有錯誤並且日志顯示它正在監聽 80
嘗試在 http://localhost:7722/swagger/index.html 訪問應用程序 -返回錯誤無內容
我還嘗試過什么
使用以下命令手動構建映像: docker build -t dockertest:0.0.1 -f./dockertest/Dockerfile.
使用docker run -it --rm -p 7722:80 dockertest:0.0.1
創建容器 - 容器運行沒有錯誤,日志顯示它正在監聽 80
嘗試通過 http://localhost:7722/swagger/index.html 訪問應用程序——返回 404 ERROR Not Found
我也嘗試在 VSCode 中創建 dockerfile - 同樣的問題
我嘗試過使用 VSCode 創建的和手動創建的 docker-compose 文件,同樣的問題。
我懷疑這是一個網絡配置錯誤,因為應用程序似乎在容器中運行良好,但是創建了端口映射,所以我現在有點卡住了。
任何指出我正在犯的愚蠢錯誤的幫助將不勝感激。
非常感謝
容器日志:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://[::]:80
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: /app
集裝箱檢查:
{
"AppArmorProfile": "",
"Args": [
"dockertest3.dll"
],
"Config": {
"AttachStderr": true,
"AttachStdin": true,
"AttachStdout": true,
"Cmd": null,
"Domainname": "",
"Entrypoint": [
"dotnet",
"dockertest3.dll"
],
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"ASPNETCORE_URLS=http://+:80",
"DOTNET_RUNNING_IN_CONTAINER=true",
"DOTNET_VERSION=5.0.1",
"ASPNET_VERSION=5.0.1"
],
"ExposedPorts": {
"80/tcp": {}
},
"Hostname": "b4f5b2dff113",
"Image": "dockertest3:0.0.5",
"Labels": {},
"OnBuild": null,
"OpenStdin": true,
"StdinOnce": true,
"Tty": true,
"User": "",
"Volumes": null,
"WorkingDir": "/app"
},
"Created": "2021-01-07T09:46:30.9864781Z",
"Driver": "overlay2",
"ExecIDs": null,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/127d91088bf4c1723527366c1861d31374fae1d53981e40c148172d40d9a0d3d-init/diff:/var/lib/docker/overlay2/yraxw6cr3174e5trbzalykc0s/diff:/var/lib/docker/overlay2/nzvzpe3gdywqyblx27tbfklak/diff:/var/lib/docker/overlay2/z3tx67lfy5810vtmibw4aqadk/diff:/var/lib/docker/overlay2/6a8a63e392362af66acc3482f595bca36ec76462cc3172fd51eeb4dda31af427/diff:/var/lib/docker/overlay2/9fc4fe532dedaec2ccffe78163f348904ba6e5c53d0f269567dc9ae4d78def58/diff:/var/lib/docker/overlay2/41da0638d4d740b12bdb0d2d0ad4cfd2c42163b0d23e5a22b309eefbf86b68c1/diff:/var/lib/docker/overlay2/f0df011b8efda351f96981bdfa9f9fbc405132ee250a870cc2f69570792f65ff/diff:/var/lib/docker/overlay2/b3182380e8d22083de1e0b3468529a6b806f1569cf52589275c7e338ed717685/diff",
"MergedDir": "/var/lib/docker/overlay2/127d91088bf4c1723527366c1861d31374fae1d53981e40c148172d40d9a0d3d/merged",
"UpperDir": "/var/lib/docker/overlay2/127d91088bf4c1723527366c1861d31374fae1d53981e40c148172d40d9a0d3d/diff",
"WorkDir": "/var/lib/docker/overlay2/127d91088bf4c1723527366c1861d31374fae1d53981e40c148172d40d9a0d3d/work"
},
"Name": "overlay2"
},
"HostConfig": {
"AutoRemove": true,
"Binds": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceWriteIOps": null,
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"CapAdd": null,
"CapDrop": null,
"Capabilities": null,
"Cgroup": "",
"CgroupParent": "",
"ConsoleSize": [
11,
302
],
"ContainerIDFile": "",
"CpuCount": 0,
"CpuPercent": 0,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpuShares": 0,
"CpusetCpus": "",
"CpusetMems": "",
"DeviceCgroupRules": null,
"DeviceRequests": null,
"Devices": [],
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IOMaximumBandwidth": 0,
"IOMaximumIOps": 0,
"IpcMode": "private",
"Isolation": "",
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"Links": null,
"LogConfig": {
"Config": {},
"Type": "json-file"
},
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"Memory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"NanoCpus": 0,
"NetworkMode": "default",
"OomKillDisable": false,
"OomScoreAdj": 0,
"PidMode": "",
"PidsLimit": null,
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "7722"
}
]
},
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
],
"ReadonlyRootfs": false,
"RestartPolicy": {
"MaximumRetryCount": 0,
"Name": "no"
},
"Runtime": "runc",
"SecurityOpt": null,
"ShmSize": 67108864,
"UTSMode": "",
"Ulimits": null,
"UsernsMode": "",
"VolumeDriver": "",
"VolumesFrom": null
},
"HostnamePath": "/var/lib/docker/containers/b4f5b2dff11316e2b310430a5ac013816bd02418f17fd1d902f9f55bddbe3b9e/hostname",
"HostsPath": "/var/lib/docker/containers/b4f5b2dff11316e2b310430a5ac013816bd02418f17fd1d902f9f55bddbe3b9e/hosts",
"Id": "b4f5b2dff11316e2b310430a5ac013816bd02418f17fd1d902f9f55bddbe3b9e",
"Image": "sha256:eeadaeaa27801822b44a4f8a9fc6e2696a7f7d41cdd75f95fde6ad6e9170bcaf",
"LogPath": "/var/lib/docker/containers/b4f5b2dff11316e2b310430a5ac013816bd02418f17fd1d902f9f55bddbe3b9e/b4f5b2dff11316e2b310430a5ac013816bd02418f17fd1d902f9f55bddbe3b9e-json.log",
"MountLabel": "",
"Mounts": [],
"Name": "/interesting_lumiere",
"NetworkSettings": {
"Bridge": "",
"EndpointID": "ff21dbc13c19bbd2792be6f4098a477c29d9f35b16c2277f84d0dfccccddd147",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"HairpinMode": false,
"IPAddress": "172.17.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:05",
"Networks": {
"bridge": {
"Aliases": null,
"DriverOpts": null,
"EndpointID": "ff21dbc13c19bbd2792be6f4098a477c29d9f35b16c2277f84d0dfccccddd147",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAMConfig": null,
"IPAddress": "172.17.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"Links": null,
"MacAddress": "02:42:ac:11:00:05",
"NetworkID": "c730b712c96204bf2d888a9371b9b4a54f056e864bcce689f6b71e80a98eb83a"
}
},
"Ports": {
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "7722"
}
]
},
"SandboxID": "a4897ddfc05c6ff3083ca1ee4c2e61d56e151a4d10edeca8ae22838a43f0279d",
"SandboxKey": "/var/run/docker/netns/a4897ddfc05c",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null
},
"Path": "dotnet",
"Platform": "linux",
"ProcessLabel": "",
"ResolvConfPath": "/var/lib/docker/containers/b4f5b2dff11316e2b310430a5ac013816bd02418f17fd1d902f9f55bddbe3b9e/resolv.conf",
"RestartCount": 0,
"State": {
"Dead": false,
"Error": "",
"ExitCode": 0,
"FinishedAt": "0001-01-01T00:00:00Z",
"OOMKilled": false,
"Paused": false,
"Pid": 23466,
"Restarting": false,
"Running": true,
"StartedAt": "2021-01-07T09:46:31.2780767Z",
"Status": "running"
}
}
除此之外,我有一個部分答案。
這似乎與 VS2109 如何自定義容器以附加到調試器有很大關系。
如果我運行手動 docker 構建並添加 --no-cache 參數,則創建的 docker 容器可以正常工作,這至少是朝着正確方向邁出的一步。
現在我將假設從 VS 中創建容器對生產來說是不行的,盡管我看不出這是預期的功能。
我將 Visual Studio 用於 Docker 容器。 我發現 Visual Studio 2019 確實存在問題,因此我發現的唯一解決方案是將我的應用程序作為 vanilla Visual Studio 項目運行,並編寫 DockerCompose 腳本以與 VS 分開發布/創建圖像。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.