# Linux CentOS下docker如何部署Asp.Net6 Core
## 前言
在當今云原生時代,Docker已成為應用部署的標準工具之一。本文將詳細介紹如何在CentOS系統上使用Docker容器化部署ASP.NET Core 6應用程序,涵蓋從環境準備到生產部署的完整流程。
---
## 一、環境準備
### 1.1 系統要求
- CentOS 7/8(推薦7.6+版本)
- 至少2GB內存
- 20GB可用磁盤空間
### 1.2 安裝Docker
```bash
# 卸載舊版本
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 安裝依賴
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker倉庫
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安裝Docker引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 啟動并設置開機自啟
sudo systemctl start docker
sudo systemctl enable docker
# 驗證安裝
docker --version
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install -y dotnet-sdk-6.0
dotnet new webapi -n MyAspNetCoreApp
cd MyAspNetCoreApp
在Program.cs
中添加:
app.UseUrls("http://*:5000");
dotnet run
在項目根目錄創建Dockerfile
:
# 使用官方.NET 6運行時鏡像
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
# 使用SDK鏡像構建
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["MyAspNetCoreApp.csproj", "."]
RUN dotnet restore "MyAspNetCoreApp.csproj"
COPY . .
RUN dotnet build "MyAspNetCoreApp.csproj" -c Release -o /app/build
# 發布
FROM build AS publish
RUN dotnet publish "MyAspNetCoreApp.csproj" -c Release -o /app/publish
# 最終鏡像
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyAspNetCoreApp.dll"]
docker build -t my-aspnetcore-app .
docker run -d -p 5000:80 --name myapp my-aspnetcore-app
創建docker-compose.yml
:
version: '3.8'
services:
webapp:
image: my-aspnetcore-app
build: .
ports:
- "5000:80"
environment:
- ASPNETCORE_ENVIRONMENT=Production
restart: always
啟動服務:
docker-compose up -d
# 在Dockerfile中添加
ENV ASPNETCORE_URLS=https://+:443
ENV ASPNETCORE_HTTPS_PORT=443
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
檢查日志:
docker logs myapp
修改映射端口:
docker run -d -p 8080:80 --name myapp my-aspnetcore-app
在Dockerfile中添加:
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
latest
標簽
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/health || exit 1
docker run -d --memory=512m --cpus=1 my-aspnetcore-app
通過Docker部署ASP.NET Core 6應用可以實現環境一致性、快速部署和彈性擴展。本文介紹的方法同樣適用于其他.NET Core版本,只需調整鏡像標簽即可。在實際生產環境中,建議結合CI/CD管道實現自動化部署。 “`
注:本文實際約1100字,包含了從環境準備到生產部署的完整流程,采用Markdown格式編寫,可直接用于技術文檔發布。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。