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

在 Linux 服务器 上使用 Docker 部署 .NET Core 项目,可以大大简化环境配置,提高应用的可移植性。以下是完整的步骤:

1. 准备 .NET Core 项目

首先,确保你已经有一个 .NET Core 项目,比如一个 ASP.NET Core Web API 项目。如果没有,可以新建一个:

dotnet new webapi -o MyWebApi
cd MyWebApi

完成代码编写后,编译项目:

dotnet publish -c Release -o out

2. 创建 Dockerfile

在项目根目录下,创建 Dockerfile(无扩展名):

# 使用官方 .NET Core 运行时镜像
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app

# 复制已发布的应用文件
COPY out/ ./

# 暴露应用端口
EXPOSE 80

# 运行应用
ENTRYPOINT ["dotnet", "MyWebApi.dll"]

如果项目使用 HTTPS,还需要配置 SSL 证书,可以修改 Dockerfile 以适应 HTTPS。

如果使用 Visual Studio 创建项目时选择支持Docker,会自动生成这些文件。

3. 构建 Docker 镜像

在 Dockerfile 所在目录执行:

docker build -t mywebapi .

这里的 -t mywebapi 代表给镜像命名为 mywebapi。

4. 运行 Docker 容器

docker run -d -p 5000:80 --name mywebapi_container mywebapi

参数说明:

  • -d:后台运行
  • -p 5000:80:把 宿主机的 5000 端口 映射到 容器的 80 端口
  • --name mywebapi_container:为容器命名

检查是否运行成功:

docker ps

然后访问 http://<服务器IP>:5000,如果是 Web API,可以加上 /swagger 进行测试。

5. 部署到 Linux 服务器

(1)安装 Docker

如果 Linux 服务器未安装 Docker,可以执行:

curl -fsSL https://get.docker.com | bash
systemctl start docker
systemctl enable docker

(2)上传 Docker 镜像

在 本地构建的机器(比如 Windows、Mac)上:

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

(3)使用 Docker Hub 或私有仓库(可选)

如果你的服务器可以访问 Docker Hub,可以直接 push/pull:

docker tag mywebapi yourdockerhub/mywebapi
docker push yourdockerhub/mywebapi

然后在服务器上拉取:

docker pull yourdockerhub/mywebapi
docker run -d -p 5000:80 --name mywebapi_container yourdockerhub/mywebapi

6. 配置 Nginx 反向代理(可选)

如果希望使用 域名 或 HTTPS,可以配置 Nginx 反向代理。

在 /etc/nginx/sites-available/default(或 /etc/nginx/nginx.conf)添加:

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;
    }
}

然后重启 Nginx:

systemctl restart nginx

7. 维护 & 更新

(1)查看日志

docker logs mywebapi_container

(2)更新应用

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

(3)设置开机自启

docker update --restart always mywebapi_container

这样,你的 .NET Core 应用就可以稳定运行在 Linux 服务器上啦 !

评论