mirror of
https://github.com/PlayEdu/docker-playedu-light
synced 2025-06-27 02:07:19 +08:00
Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
026d993b01 | ||
|
a8525a0634 | ||
|
3eb3273f09 | ||
|
adbf75bcd4 | ||
|
5f7410ec33 | ||
|
a5272cd8cd | ||
|
ac9a9c6935 | ||
|
6a6a0095c2 | ||
|
4737baff59 | ||
|
371e60ef21 | ||
|
3ed1549c4d | ||
|
c1455046ae | ||
|
03c1e74a77 | ||
|
3c03e140af | ||
|
f5793200f7 | ||
|
f29d8307d5 |
36
.github/workflows/build.yml
vendored
Normal file
36
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
name: EstablishDockerImage
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "*"
|
||||
|
||||
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 }}:${{ github.ref_name }}
|
51
Dockerfile
51
Dockerfile
@ -1,22 +1,51 @@
|
||||
FROM eclipse-temurin:17
|
||||
FROM node:20-alpine as NodeBuilder
|
||||
|
||||
LABEL maintainer="0xtyz <tengyongzhi@meedu.vip>"
|
||||
# install git - apt-get replace with apk
|
||||
RUN apk update && \
|
||||
apk upgrade && \
|
||||
apk add --no-cache bash git openssh
|
||||
|
||||
#使用东八区时间环境
|
||||
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||||
# 编译后端
|
||||
WORKDIR /app
|
||||
RUN git clone -b 1.6 https://github.com/PlayEdu/backend.git backend
|
||||
RUN git clone -b 1.6 https://github.com/PlayEdu/frontend.git pc
|
||||
RUN git clone -b 1.6 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 registry.cn-hangzhou.aliyuncs.com/playedu/api:1.6
|
||||
|
||||
LABEL maintainer="滕勇志 <tengyongzhi@meedu.vip>"
|
||||
|
||||
# 使用东八区时间环境
|
||||
RUN echo "Asia/Shanghai" > /etc/timezone
|
||||
|
||||
#安装基本组件
|
||||
RUN apt update && apt install -y nginx
|
||||
|
||||
RUN mkdir /app
|
||||
COPY docker/start.sh /app/api/start.sh
|
||||
|
||||
#Copy代码
|
||||
COPY frontend /app/frontend
|
||||
COPY backend /app/backend
|
||||
COPY h5 /app/h5
|
||||
COPY api /app/api
|
||||
COPY conf/nginx.conf /etc/nginx/sites-enabled/default
|
||||
RUN mv /app/app.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"]
|
56
README.md
56
README.md
@ -2,14 +2,17 @@
|
||||
|
||||
本套方案将 API + PC 前台 + H5 前台 + 后台管理 四个整合在一个镜像当中,适用于轻量级客户。
|
||||
|
||||
### 使用官方镜像
|
||||
### 直接运行
|
||||
|
||||
在命令行中执行:
|
||||
|
||||
> 本项目提供 `linux/amd64` 的 platform 运行。如果您是 `linux/arm64` 的话请将 `playedu/light` 修改为 `playedu/light-arm64` 。
|
||||
|
||||
```
|
||||
docker run -d -p 9700:80 -p 9800:9800 -p 9801:9801 -p 9900:9900 --name playedu-light \
|
||||
docker run -d --restart=always \
|
||||
--name playedu-light \
|
||||
-p 9700:80 \
|
||||
-p 9800:9800 \
|
||||
-p 9801:9801 \
|
||||
-p 9900:9900 \
|
||||
-e DB_HOST=数据库host \
|
||||
-e DB_PORT=数据库端口 \
|
||||
-e DB_NAME=数据库名 \
|
||||
@ -18,47 +21,10 @@ 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.2.2
|
||||
```
|
||||
|
||||
跑起来之后,可以通过下面的链接访问前后台:
|
||||
|
||||
| 端口 | 地址 |
|
||||
| ------------ | -------------------------- |
|
||||
| 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 --platform linux/amd64 -t playedu-light .
|
||||
```
|
||||
|
||||
> 如果是编译 arm 平台运行镜像的话,请将上述命令的 `linux/amd64` 更换为 `linux/arm64` 。
|
||||
|
||||
执行完毕之后,可运行下面命令将 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
|
||||
-e REDIS_DB=2 \
|
||||
-e SA_TOKEN_IS_CONCURRENT=false \
|
||||
-e SA_TOKEN_JWT_SECRET_KEY=playeduxyz \
|
||||
registry.cn-hangzhou.aliyuncs.com/playedu/light:1.6
|
||||
```
|
||||
|
||||
跑起来之后,可以通过下面的链接访问前后台:
|
||||
|
3
api/.gitignore
vendored
3
api/.gitignore
vendored
@ -1,3 +0,0 @@
|
||||
*
|
||||
!.gitignore
|
||||
!start.sh
|
@ -1,5 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
nginx
|
||||
|
||||
java -jar /app/api/app.jar --spring.profiles.active=prod --spring.datasource.url="jdbc:mysql://${DB_HOST}:${DB_PORT:-3306}/${DB_NAME}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false" --spring.datasource.username=${DB_USER} --spring.datasource.password=${DB_PASS} --spring.data.redis.host=${REDIS_HOST} --spring.data.redis.port=${REDIS_PORT} --spring.data.redis.password=${REDIS_PASS} --spring.data.redis.database=${REDIS_DB:-0} --sa-token.is-concurrent=${SA_TOKEN_IS_CONCURRENT:-false} --sa-token.jwt-secret-key=${SA_TOKEN_JWT_SECRET_KEY:-playeduxyz}
|
@ -1,3 +1,5 @@
|
||||
client_max_body_size 50m;
|
||||
|
||||
server {
|
||||
# 监听端口号9800
|
||||
listen 9800 default_server;
|
5
docker/start.sh
Normal file
5
docker/start.sh
Normal file
@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
nginx
|
||||
|
||||
java -jar /app/api/app.jar --spring.profiles.active=prod --spring.datasource.url="jdbc:mysql://${DB_HOST}:${DB_PORT:-3306}/${DB_NAME}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true" --spring.datasource.username=${DB_USER} --spring.datasource.password=${DB_PASS} --spring.data.redis.host=${REDIS_HOST} --spring.data.redis.port=${REDIS_PORT} --spring.data.redis.password=${REDIS_PASS} --spring.data.redis.database=${REDIS_DB:-0} --sa-token.is-concurrent=${SA_TOKEN_IS_CONCURRENT:-false} --sa-token.jwt-secret-key=${SA_TOKEN_JWT_SECRET_KEY:-playeduxyz}
|
Loading…
x
Reference in New Issue
Block a user