我可以在 Linux 上使用 .NET Framework 和 docker 吗?

问题描述 投票:0回答:1

我最近开始处理使用 ASP.NET Framework 4.8.1 WebForms 构建的现有项目。但是,我的开发环境是 Ubuntu Linux,由于依赖 Windows 库,它本身并不支持 ASP.NET Framework。

有没有办法使用Docker为这个应用程序创建开发容器?这将使我无需安装虚拟机 (VM) 即可进行开发。

在我的研究过程中,我遇到了一个名为 Mono 的 Docker 镜像,但我无法将其与我的项目结构集成,该结构由解决方案文件中的多个项目组成 (

Portal.Web.sln
):

Portal.Web.sln
| -- Portal.Web/
| ---- Portal.Web.csproj
| -- Portal.Scripts/
| ---- Portal.Scripts.csproj
| -- Portal.Neg/
| ---- Portal.Neg.csproj
| -- Portal.Ent/
| ---- Portal.Ent.csproj
| -- Portal.Dao/
| ---- Portal.Dao.csproj`

看来我需要一个

.exe
文件来一次运行所有内容。谁能指导我使用 Mono 设置 Docker 以在 Ubuntu 上运行此 ASP.NET WebForms 应用程序?

asp.net .net docker webforms .net-framework-version
1个回答
0
投票
  • ASP.NET 8.0
  • Ubuntu 20.04

以下只是一个概念验证测试项目:

安装点网SDK

sudo snap install dotnet-sdk --classic

创建示例项目

dotnet new webapp -n MyAspNetApp

创建 Dockerfile

cd MyAspNetApp

touch Dockerfile

Dockerfile

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["MyAspNetApp.csproj", "./"]
RUN dotnet restore "MyAspNetApp.csproj"
COPY . .
WORKDIR "/src"
RUN dotnet build "MyAspNetApp.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyAspNetApp.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyAspNetApp.dll"]

构建 Docker 镜像

docker build -t myaspnetapp .

Docker 运行

docker run -it -p 8080:80 myaspnetapp

检查容器

打开另一个终端

# find container id
docker ps

CONTAINER ID   IMAGE
dfa770ca6e1b   myaspnetapp

# dfa770ca6e1b is your container id
docker inspect dfa770ca6e1b

浏览器打开

http://172.17.0.2:8080/

001

002

172.17.0.2
是容器ip

您可以在

docker inspect dfa770ca6e1b

找到它

dfa770ca6e1b
是你的容器id

"Networks": {
    "bridge": {
        ....
        "Gateway": "172.17.0.1",
        "IPAddress": "172.17.0.2",

注意

https://hub.docker.com/r/microsoft/dotnet-sdk

仅支持6.0和8.0两个版本

- 8.0 (Long-Term Support)
        docker pull mcr.microsoft.com/dotnet/sdk:8.0
- 6.0 (Long-Term Support)
        docker pull mcr.microsoft.com/dotnet/sdk:6.0
© www.soinside.com 2019 - 2024. All rights reserved.