返回

VS创建.NET Core项目使用Docker方式部署到Linux服务器

2025-03-14 .NET .NET Core Docker Linux 355 0

在 Visual Studio(VS) 中,使用 Docker 方式部署 .NET Core 项目 到 Linux 服务器,可以简化环境管理并提高部署效率。以下是完整教程:

1. 在 VS 创建 .NET Core 项目并启用 Docker

  1. 新建 ASP.NET Core 项目
  2. 打开 Visual Studio(2022 或更新版本)。
  3. 新建项目 → 选择 ASP.NET Core Web API 或 ASP.NET Core MVC → 下一步。
  4. 设置项目名称,例如: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 服务器 上了 !

您可能感兴趣:

阿里云 云服务器 99元1年 2核2G 3M固定带宽 续费与新购同价

DOVE 网络加速器 梯子 免费 试用

椤堕儴