first commot
This commit is contained in:
66
Dockerfile
Normal file
66
Dockerfile
Normal file
@@ -0,0 +1,66 @@
|
||||
# 多阶段构建 Dockerfile
|
||||
# 第一阶段:构建前端
|
||||
FROM node:20-alpine AS frontend-build
|
||||
|
||||
WORKDIR /app/frontend
|
||||
|
||||
# 复制前端项目文件
|
||||
COPY Web/package.json Web/pnpm-lock.yaml ./
|
||||
RUN npm install -g pnpm && pnpm install
|
||||
|
||||
# 复制前端源代码并构建
|
||||
COPY Web/ ./
|
||||
RUN pnpm run build
|
||||
|
||||
# 第二阶段:构建后端
|
||||
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS backend-build
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 复制解决方案文件和项目文件
|
||||
COPY *.sln ./
|
||||
COPY Directory.Build.props ./
|
||||
COPY Directory.Packages.props ./
|
||||
COPY nuget.config ./
|
||||
COPY Common/*.csproj ./Common/
|
||||
COPY Entity/*.csproj ./Entity/
|
||||
COPY Repository/*.csproj ./Repository/
|
||||
COPY Service/*.csproj ./Service/
|
||||
COPY WebApi/*.csproj ./WebApi/
|
||||
|
||||
# 还原依赖
|
||||
RUN dotnet restore
|
||||
|
||||
# 复制所有源代码
|
||||
COPY Common/ ./Common/
|
||||
COPY Entity/ ./Entity/
|
||||
COPY Repository/ ./Repository/
|
||||
COPY Service/ ./Service/
|
||||
COPY WebApi/ ./WebApi/
|
||||
|
||||
# 构建并发布
|
||||
RUN dotnet publish WebApi/WebApi.csproj -c Release -o /app/publish
|
||||
|
||||
# 将前端构建产物复制到后端的 wwwroot 目录
|
||||
COPY --from=frontend-build /app/frontend/dist /app/publish/wwwroot
|
||||
|
||||
# 第三阶段:运行时镜像
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 复制发布的应用
|
||||
COPY --from=backend-build /app/publish ./
|
||||
|
||||
# 创建数据库目录
|
||||
RUN mkdir -p /app/database
|
||||
|
||||
# 暴露端口
|
||||
EXPOSE 8080
|
||||
|
||||
# 设置环境变量
|
||||
ENV ASPNETCORE_URLS=http://+:8080
|
||||
ENV ASPNETCORE_ENVIRONMENT=Production
|
||||
|
||||
# 启动应用
|
||||
ENTRYPOINT ["dotnet", "WebApi.dll"]
|
||||
Reference in New Issue
Block a user