9 Commits
v1.1 ... dev

Author SHA1 Message Date
xxx
c1455046ae v1.3 2023-09-06 14:28:58 +08:00
xxx
03c1e74a77 update 2023-09-05 11:11:15 +08:00
xxx
3c03e140af rebuild 2023-09-05 11:09:32 +08:00
xxx
f5793200f7 clone子模块 2023-09-04 17:41:13 +08:00
xxx
f29d8307d5 直接编译 2023-09-04 17:33:57 +08:00
xxx
cdecc60ac4 update 2023-08-06 09:38:40 +08:00
xxx
554ffd1e40 update 2023-08-04 11:43:44 +08:00
xxx
a0d358f0ba v1.2.1 && arm支持 2023-08-04 11:24:31 +08:00
none
a1dfcfa517 update 2023-07-31 14:56:24 +08:00
6 changed files with 101 additions and 59 deletions

37
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,37 @@
name: EstablishDockerImage
on:
push:
branches:
- main
- dev
env:
IMAGE_FQDN: registry.cn-hangzhou.aliyuncs.com/playedu/light
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GHCR
uses: docker/login-action@v2
with:
registry: registry.cn-hangzhou.aliyuncs.com
username: ${{ secrets.ALI_REGISTRY_EMAIL }}
password: ${{ secrets.ALI_REGISTRY_PASS }}
- name: Build
uses: docker/build-push-action@v3
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: |
${{ env.IMAGE_FQDN }}:1.3

View File

@@ -1,23 +1,69 @@
FROM eclipse-temurin:17-alpine
FROM eclipse-temurin:17 as ApiBuilder
LABEL maintainer="0xtyz <tengyongzhi@meedu.vip>"
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories && \
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories && \
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories
# 安装基本组件
RUN apk update && apk add nginx
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y git
RUN mkdir /app
# Copy代码
COPY frontend /app/frontend
COPY backend /app/backend
COPY h5 /app/h5
COPY api /app/api
COPY conf/nginx.conf /etc/nginx/http.d/default.conf
WORKDIR /app
RUN git clone -b dev https://github.com/PlayEdu/PlayEdu.git playedu
# 编译jar包
WORKDIR /app/playedu
RUN /app/playedu/mvnw -Dmaven.test.skip=true clean package
FROM node:20-alpine as NodeBuilder
# install git - apt-get replace with apk
RUN apk update && \
apk upgrade && \
apk add --no-cache bash git openssh
# 编译后端
WORKDIR /app
RUN git clone -b dev https://github.com/PlayEdu/backend.git backend
RUN git clone -b dev https://github.com/PlayEdu/frontend.git pc
RUN git clone -b dev https://github.com/PlayEdu/h5.git h5
# 编译后台
WORKDIR /app/backend
RUN npm i && VITE_APP_URL=/api/ npm run build
# 编译PC
WORKDIR /app/pc
RUN npm i && VITE_APP_URL=/api/ npm run build
# 编译H5
WORKDIR /app/h5
RUN npm i && VITE_APP_URL=/api/ npm run build
FROM eclipse-temurin:17
LABEL maintainer="0xtyz <tengyongzhi@meedu.vip>"
#使用东八区时间环境
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#安装基本组件
RUN apt update && apt install -y nginx
RUN mkdir /app
COPY docker/start.sh /app/api/start.sh
COPY --from=ApiBuilder /app/playedu/playedu-api/target/playedu-api.jar /app/api/app.jar
COPY --from=NodeBuilder /app/backend/dist /app/backend
COPY --from=NodeBuilder /app/pc/dist /app/frontend
COPY --from=NodeBuilder /app/h5/dist /app/h5
# 复制nginx配置文件
COPY docker/nginx/conf/nginx.conf /etc/nginx/sites-enabled/default
RUN chmod +x /app/api/start.sh
WORKDIR /app/api
ENTRYPOINT ["/app/api/start.sh"]

View File

@@ -1,8 +1,8 @@
### PlayEdu Light Docker 构建方案
## PlayEdu Light Docker 构建方案
本套方案将 API + PC 前台 + H5 前台 + 后台管理 四个整合在一个镜像当中,适用于轻量级客户。
### 使用官方镜像
### 直接运行
在命令行中执行:
@@ -16,45 +16,7 @@ docker run -d -p 9700:80 -p 9800:9800 -p 9801:9801 -p 9900:9900 --name playedu-l
-e REDIS_HOST=Redis的host \
-e REDIS_PORT=Redis的端口 \
-e REDIS_PASS=redis的密码 \
-e SA_TOKEN_JWT_SECRET_KEY=随机英文+数字的字符串 \
registry.cn-hangzhou.aliyuncs.com/playedu/light:1.1
```
跑起来之后,可以通过下面的链接访问前后台:
| 端口 | 地址 |
| ------------ | -------------------------- |
| API 服务 | `http://你的服务器IP:9700` |
| 学员 PC 界面 | `http://你的服务器IP:9800` |
| 学员 H5 界面 | `http://你的服务器IP:9801` |
| 后台管理 | `http://你的服务器IP:9900` |
### 自己动手
- API 程序 `package` 之后,将 `jar` 包复制到 `api` 目录下,并重新命名为 `app.jar`
- PC 界面程序 build 之后(`VITE_APP_URL=/api/` 应该这样设置),将 `dist` 目录复制到本项目的根目录,然后重命名为 `frontend`
- 后台界面程序 build 之后(`VITE_APP_URL=/api/` 应该这样设置),将 `dist` 目录复制到本项目的根目录,然后重命名为 `backend`
之后,在本项目目录命令执行:
```
docker build -t playedu-light .
```
执行完毕之后,可运行下面命令将 PlayEdu 服务跑起来:
```
docker run -d -p 9700:80 -p 9800:9800 -p 9801:9801 -p 9900:9900 --name playedu-local \
-e DB_HOST=数据库host \
-e DB_PORT=数据库端口 \
-e DB_NAME=数据库名 \
-e DB_USER=数据库用户 \
-e DB_PASS=数据库密码 \
-e REDIS_HOST=Redis的host \
-e REDIS_PORT=Redis的端口 \
-e REDIS_PASS=redis的密码 \
-e SA_TOKEN_JWT_SECRET_KEY=随机英文+数字的字符串 \
playedu-light
registry.cn-hangzhou.aliyuncs.com/playedu/light:1.3
```
跑起来之后,可以通过下面的链接访问前后台:

3
api/.gitignore vendored
View File

@@ -1,3 +0,0 @@
*
!.gitignore
!start.sh