在 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 服务器上啦 !