在 Visual Studio(VS) 中,使用 Docker 方式部署 .NET Core 项目 到 Linux 服务器,可以简化环境管理并提高部署效率。以下是完整教程:
1. 在 VS 创建 .NET Core 项目并启用 Docker
新建 ASP.NET Core 项目 打开 Visual Studio(2022 或更新版本)。 新建项目 → 选择 ASP.NET Core Web API 或 ASP.NET Core MVC → 下一步。 设置项目名称,例如:MyWebApi → 创建。配置项目:
目标框架:.NET 7 或 .NET 8 启用 Docker 支持(必须勾选) Docker OS 选择:Linux 取消 HTTPS 配置(可选) 点击 创建2. VS 生成 Dockerfile
当你在 VS 启用 Docker 时,项目会自动生成 Dockerfile,你可以在 MyWebApi 目录中找到它。
Dockerfile(默认生成,建议优化):
# 使用官方 .NET SDK 构建
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
# 复制项目文件
COPY . .
RUN dotnet restore
RUN dotnet publish -c Release -o out
# 运行环境(轻量级 ASP.NET Core 运行时)
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
# 复制编译后的文件
COPY --from=build /app/out ./
# 端口配置(与 launchSettings.json 一致)
EXPOSE 80
ENTRYPOINT ["dotnet", "MyWebApi.dll"]
3. 在本地构建并运行 Docker 容器
构建 Docker 镜像
在 VS 终端(或 PowerShell)运行:
docker build -t mywebapi .
运行 Docker 容器
docker run -d -p 5000:80 --name mywebapi_container mywebapi
访问 Web API,打开浏览器,访问:http://localhost:5000/swagger。如果你创建的是 MVC 项目,直接访问:http://localhost:5000。
4. 部署到 Linux 服务器
(1)安装 Docker
在 Linux 服务器 上(如 CentOS/Ubuntu),安装 Docker:
curl -fsSL https://get.docker.com | bash
systemctl start docker
systemctl enable docker
(2)上传 Docker 镜像
方法1:使用 Docker Hub
docker tag mywebapi yourdockerhub/mywebapi
docker push yourdockerhub/mywebapi
在服务器上拉取:
docker pull yourdockerhub/mywebapi
docker run -d -p 5000:80 --name mywebapi_container yourdockerhub/mywebapi
方法2:使用 SCP 直接上传
docker save -o mywebapi.tar mywebapi
scp mywebapi.tar user@your_server_ip:/home/user/
在 Linux 服务器执行:
docker load -i /home/user/mywebapi.tar
docker run -d -p 5000:80 --name mywebapi_container mywebapi
5. 配置 Nginx 反向代理(可选)
如果希望使用 域名 或 HTTPS,可以配置 Nginx。
(1)安装 Nginx
sudo apt update && sudo apt install -y nginx
(2)配置代理
编辑 /etc/nginx/sites-available/default:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
(3)重启 Nginx
systemctl restart nginx
6. 更新和开机启动
更新应用
docker stop mywebapi_container
docker rm mywebapi_container
docker pull yourdockerhub/mywebapi # 如果使用 Docker Hub
docker run -d -p 5000:80 --name mywebapi_container yourdockerhub/mywebapi
设置开机自启
docker update --restart always mywebapi_container
这样,你的 .NET Core 项目 就可以稳定运行在 Linux 服务器 上了 !