.NET 6 WebAPI 已打包应用 Docker 部署文档

一、文档说明

本文档适用于已打包完成的 .NET 6 WebAPI 应用(仅包含编译后的程序集及依赖文件,无 .csproj 等项目文件),指导如何通过 Docker 部署并固定服务端口为 8011

二、前置条件

  1. 服务器环境:CentOS 系统(或其他 Linux 发行版),已安装 Docker。
  2. 应用文件:已打包好的 .NET 6 WebAPI 应用文件(包含主程序集 .dll、依赖文件等)。

三、部署步骤

3.1 准备应用文件

将已打包好的 .NET 6 WebAPI 应用文件上传至服务器指定目录(例如 /usr/local/wcswebapipck/)。确保目录中包含主程序集(如 Project.WebApi.dll)及所有运行依赖文件。

3.2 创建 Dockerfile

在应用文件所在目录(/usr/local/wcswebapipck/)下,创建 Dockerfile 文件,内容如下:

# 使用 .NET 6 运行时镜像(仅包含运行时,体积更小)
FROM mcr.microsoft.com/dotnet/aspnet:6.0

# 设置容器内工作目录
WORKDIR /app

# 暴露应用监听的端口(固定为 8011)
EXPOSE 8011

# 配置应用启动时绑定的端口(固定为 8011)
ENV ASPNETCORE_URLS=http://+:8011

# 将宿主机当前目录(应用文件目录)的所有文件复制到容器的工作目录
COPY . .

# 启动 WebAPI(将 Project.WebApi.dll 替换为你的实际主程序集名称)
ENTRYPOINT ["dotnet", "Project.WebApi.dll"]

  • 注意:需将 Project.WebApi.dll 替换为你实际的主程序集文件名。

3.3 构建 Docker 镜像

在应用文件目录(/usr/local/wcswebapipck/)下,执行以下命令构建 Docker 镜像:

docker build -t my-webapi:v1 .
  • 参数说明:-t my-webapi:v1 为镜像指定标签(名称为 my-webapi,版本为 v1),. 表示以当前目录作为构建上下文。

3.4 运行 Docker 容器

执行以下命令启动 Docker 容器:

docker run -d -p 8011:8011 --restart=always --name my-webapi-container my-webapi:v1
  • 参数说明:
    • -d:后台运行容器。
    • -p 8011:8011:将容器的 8011 端口映射到主机的 8011 端口(实现外部访问)。
    • --restart=always:配置容器随 Docker 服务自动启动。
    • --name my-webapi-container:为容器指定名称,便于管理。
    • my-webapi:v1:使用的镜像名称及标签。

四、验证部署

4.1 查看容器运行状态

执行以下命令,查看容器是否正常运行:

docker ps

若能看到名为 my-webapi-container 的容器,且 STATUS 列显示 Up,则容器运行正常。

4.2 测试接口访问

在浏览器或通过 curl 命令,访问 WebAPI 接口(以测试接口 api/values 为例):

curl http://服务器IP:8011/api/values

若能正常返回接口数据,则部署成功。

五、常见问题排查

5.1 容器启动后立即退出

  • 原因:可能是主程序集名称配置错误,或应用启动时发生错误。
  • 解决:查看容器日志,定位错误原因:
    docker logs my-webapi-container
    

5.2 接口访问失败

  • 原因:可能是端口映射错误、防火墙阻止端口访问或应用内部错误。
  • 解决:
    • 检查端口映射:确保 docker run 命令中 -p 参数配置正确。
    • 关闭服务器防火墙(或开放 8011 端口):
      # 关闭防火墙(CentOS 7 及以上)
      systemctl stop firewalld
      # 开放 8011 端口(如需保留防火墙)
      firewall-cmd --zone=public --add-port=8011/tcp --permanent
      firewall-cmd --reload
      
    • 查看容器日志,排查应用内部错误。

六、更新应用

若需更新 WebAPI 应用,步骤如下:

  1. 将新的打包文件替换服务器上原应用文件目录(/usr/local/wcswebapipck/)中的文件。
  2. 重新构建镜像,请注意需要在应用文件目录下执行命令('/usr/local/wcswebapipck/'):
    docker build -t my-webapi:v2 .
    
  3. 停止并删除旧容器:
    docker stop my-webapi-container
    docker rm my-webapi-container
    
  4. 启动新容器,请注意需要先 build my-webapi:v2 才可以 run my-webapi:v2 :
    docker run -d -p 8011:8011 --restart=always --name my-webapi-container my-webapi:v2
    
posted @ 2025-09-08 17:14  柴油飞机  阅读(54)  评论(0)    收藏  举报