33 lines
990 B
Docker
33 lines
990 B
Docker
# ============ 多阶段构建:.NET 5.0 ============
|
|
# 构建阶段
|
|
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
|
|
WORKDIR /src
|
|
|
|
# 复制解决方案与全部项目文件(利用层缓存)
|
|
COPY YHDocPrintCore.sln* ./
|
|
COPY src/*/*.csproj ./
|
|
RUN for f in src/*/*.csproj; do \
|
|
mkdir -p "$(dirname "$f")" && mv "$f" "$(dirname "$f")/"; \
|
|
done \
|
|
&& dotnet restore YHDocPrintCore.sln
|
|
|
|
# 复制源码并发布
|
|
COPY src/ src/
|
|
RUN dotnet publish src/YHDocPrintCore.WebApi/YHDocPrintCore.WebApi.csproj \
|
|
-c Release -o /app/publish --no-restore
|
|
|
|
# 运行阶段
|
|
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime
|
|
WORKDIR /app
|
|
COPY --from=build /app/publish .
|
|
|
|
# 日志目录(接口访问日志唯一输出,挂载卷便于采集)
|
|
RUN mkdir -p /app/logs
|
|
VOLUME ["/app/logs"]
|
|
|
|
EXPOSE 80
|
|
ENV ASPNETCORE_URLS=http://+:80
|
|
|
|
# 生产配置通过环境变量注入(ConnectionStrings__SqlServer / Redis:ConnectionString 等)
|
|
ENTRYPOINT ["dotnet", "YHDocPrintCore.WebApi.dll"]
|