Browse Source

docs: 添加docker部署文档

pull/126/head
wangjun 3 years ago
parent
commit
7acb1d6a71
  1. 186
      docs/content/user-guide/zh/deploy/docker.md
  2. 4
      docs/mkdocs.yml

186
docs/content/user-guide/zh/deploy/docker.md

@ -1,183 +1,87 @@
# Docker 部署
## Lion.AbpPro.HttpApi.Host
- 在Lion.AbpPro.HttpApi.Host目录下执行
## 后端
```bash
dotnet publish -o publish
```
- 生成 Docker 镜像
```bash
docker build -t Lion.AbpPro.HttpApi.Host .
```
- 在 aspnetcore 目录下执行
- 修改 appsetting.Production.json 配置
- 数据库连接
- Redis 连接
- Rabbitmq 连接(可选)
- 运行容器
### Dockerfile
```bash
docker run -itd --name Lion.AbpPro.HttpApi.Host -p 8011:80 Lion.AbpPro.HttpApi.Host
```
- 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
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
- 在Lion.AbpPro.IdentityServer目录下执行
FROM build AS publish
RUN dotnet publish "Lion.AbpPro.HttpApi.Host.csproj" -c Release -o /app/publish /p:UseAppHost=false
```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
COPY publish /app
# 设置工作目录
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;"]
```
!!! WARNING "检查跨域设置,请查看跨域文档"

4
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

Loading…
Cancel
Save