diff --git a/docs/content/user-guide/zh/deploy/docker.md b/docs/content/user-guide/zh/deploy/docker.md index 215251ab..bb573c5f 100644 --- a/docs/content/user-guide/zh/deploy/docker.md +++ b/docs/content/user-guide/zh/deploy/docker.md @@ -1,183 +1,87 @@ -# Docker部署 -## Lion.AbpPro.HttpApi.Host +# Docker 部署 -- 在Lion.AbpPro.HttpApi.Host目录下执行 +## 后端 -```bash -dotnet publish -o publish -``` - -- 生成 Docker 镜像 - -```bash -docker build -t Lion.AbpPro.HttpApi.Host . -``` - -- 运行容器 - -```bash -docker run -itd --name Lion.AbpPro.HttpApi.Host -p 8011:80 Lion.AbpPro.HttpApi.Host -``` +- 在 aspnetcore 目录下执行 +- 修改 appsetting.Production.json 配置 + - 数据库连接 + - Redis 连接 + - Rabbitmq 连接(可选) -- Dockerfile 文件 +### Dockerfile -```yml -FROM mcr.microsoft.com/dotnet/aspnet:6.0 - -# 创建目录 -RUN mkdir /app - -COPY publish /app - -RUN echo "deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" > /etc/apt/sources.list && \ - echo "deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" >> /etc/apt/sources.list && \ - echo "deb http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list && \ - echo "deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list && \ - echo "deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list && \ - echo "deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list && \ - echo "deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" >> /etc/apt/sources.list && \ - echo "deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib" >> /etc/apt/sources.list && \ - apt-get update && \ - apt-get install libgdiplus libc6-dev -y && \ - ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll && \ - ln -s /usr/lib/x86_64-linux-gnu/libdl.so /usr/lib/libdl.dll && apt-get clean - -# 设置工作目录 +```yaml +FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base WORKDIR /app - -# 暴露80端口 EXPOSE 80 -# 设置时区 .net6 才有这个问题 +EXPOSE 443 ENV TZ=Asia/Shanghai - -# 设置环境变量 ENV ASPNETCORE_ENVIRONMENT=Production -ENTRYPOINT ["dotnet", "Lion.AbpPro.HttpApi.Host.dll"] - -``` - -## Lion.AbpPro.IdentityServer - -- 在Lion.AbpPro.IdentityServer目录下执行 - -```bash -dotnet public -o publish -``` - -- 生成 Docker 镜像 - -```bash -docker build -t Lion.AbpPro.IdentityServer . -``` - -- 运行容器 - -```bash -docker run -itd --name Lion.AbpPro.IdentityServer -p 8013:80 Lion.AbpPro.IdentityServer -``` - -- Dockerfile 文件 - -```yml -FROM mcr.microsoft.com/dotnet/aspnet:6.0 - -# 创建目录 -RUN mkdir /app +FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build +WORKDIR /src +COPY . . +WORKDIR "/src/services/host/Lion.AbpPro.HttpApi.Host" +RUN dotnet build "Lion.AbpPro.HttpApi.Host.csproj" -c Release -o /app/build -COPY publish /app +FROM build AS publish +RUN dotnet publish "Lion.AbpPro.HttpApi.Host.csproj" -c Release -o /app/publish /p:UseAppHost=false -# 设置工作目录 +FROM base AS final WORKDIR /app - -# 暴露80端口 -EXPOSE 80 - -# 设置时区 .net6 才有这个问题 -ENV TZ=Asia/Shanghai - -# 设置环境变量 -ENV ASPNETCORE_ENVIRONMENT=Production - -ENTRYPOINT ["dotnet", "Lion.AbpPro.IdentityServer.dll"] - +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "Lion.AbpPro.HttpApi.Host.dll"] ``` - -## Lion.AbpPro.WebGateway - -- 在Lion.AbpPro.WebGateway目录下执行 +### 构建镜像 ```bash -dotnet public -o publish +docker build -t Lion.AbpPro.HttpApi.Host . ``` -- 生成 Docker 镜像 +### 启动容器 ```bash -docker build -t Lion.AbpPro.WebGateway . +docker run -itd --name Lion.AbpPro.HttpApi.Host -p 8011:80 Lion.AbpPro.HttpApi.Host ``` -- 运行容器 +## 前端 -```bash -docker run -itd --name Lion.AbpPro.WebGateway -p 8013:80 Lion.AbpPro.WebGateway -``` +- 修改 env.production 接口地址为以上你发布的地址 +- 打包项目 -- Dockerfile 文件 +### Dockerfile ```yml -FROM mcr.microsoft.com/dotnet/aspnet:6.0 - -# 创建目录 -RUN mkdir /app - -COPY publish /app - -# 设置工作目录 +FROM node:16-alpine as build-stage WORKDIR /app - -# 暴露80端口 +COPY . ./ +ENV NODE_OPTIONS=--max-old-space-size=16384 +RUN npm install pnpm -g +RUN pnpm i +RUN pnpm build + + +FROM nginx:1.17.3-alpine as production-stage +COPY --from=build-stage app/_nginx/nginx.conf /etc/nginx/nginx.conf +COPY --from=build-stage app/_nginx/env.js /etc/nginx/env.js +COPY --from=build-stage app/_nginx/default.conf /etc/nginx/conf.d/default.conf +COPY --from=build-stage app/dist/ /usr/share/nginx/html EXPOSE 80 -# 设置时区 .net6 才有这个问题 -ENV TZ=Asia/Shanghai - -# 设置环境变量 -ENV ASPNETCORE_ENVIRONMENT=Production - -ENTRYPOINT ["dotnet", "Lion.AbpPro.WebGateway.dll"] -``` - - -## Vue3 -- 修改env.production 接口地址为以上你发布的地址 -- 打包项目 - -```bash -npm run build +CMD ["nginx", "-g", "daemon off;"] ``` -- 生产Docker镜像 +### 构建镜像 ```bash docker build -t Lion.AbpPro.Vue3 . ``` -- 运行容器 +### 启动容器 ```bash docker run -itd --name Lion.AbpPro.Vue3 -p 8012:80 Lion.AbpPro.Vue3 ``` -- Dockerfile 文件 - -```yml -FROM nginx:1.17.3-alpine as base -EXPOSE 80 -COPY /_nginx/nginx.conf /etc/nginx/nginx.conf -COPY /_nginx/env.js /etc/nginx/env.js -COPY /_nginx/default.conf /etc/nginx/conf.d/default.conf -COPY /dist/ /usr/share/nginx/html -CMD ["nginx", "-g", "daemon off;"] -``` \ No newline at end of file +!!! WARNING "检查跨域设置,请查看跨域文档" diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 61757678..d145294e 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -106,6 +106,8 @@ markdown_extensions: emoji_generator: !!python/name:materialx.emoji.to_svg - md_in_html - pymdownx.superfences + - pymdownx.tabbed: + alternate_style: true nav: - Home: index.md @@ -146,7 +148,7 @@ nav: - EFCore: user-guide/zh/problem/ef.md - 部署: - Docker: user-guide/zh/deploy/docker.md - - Github自动化部署: user-guide/zh/deploy/github.md + # - Github自动化部署: user-guide/zh/deploy/github.md - 常见问题: - 编译: user-guide/zh/problem/problem.md - EFCore: user-guide/zh/problem/ef.md