我最近开始处理使用 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 应用程序?
以下只是一个概念验证测试项目:
sudo snap install dotnet-sdk --classic
dotnet new webapp -n MyAspNetApp
cd MyAspNetApp
touch 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 build -t myaspnetapp .
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
浏览器打开
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