From f29d8307d51862f4d3cfc4f0ff06aedabd30e18d Mon Sep 17 00:00:00 2001 From: xxx Date: Mon, 4 Sep 2023 17:33:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E7=BC=96=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 35 ++++++++++++++++++++++ .gitmodules | 12 ++++++++ Dockerfile | 41 ++++++++++++++++++++++---- api/.gitignore | 3 -- api/start.sh | 5 ---- {conf => docker/nginx/conf}/nginx.conf | 0 playedu-api | 1 + playedu-backend | 1 + playedu-h5 | 1 + playedu-pc | 1 + 10 files changed, 86 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .gitmodules delete mode 100644 api/.gitignore delete mode 100644 api/start.sh rename {conf => docker/nginx/conf}/nginx.conf (100%) create mode 160000 playedu-api create mode 160000 playedu-backend create mode 160000 playedu-h5 create mode 160000 playedu-pc diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..95d927c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,35 @@ +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 + - 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 diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..c054a8c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,12 @@ +[submodule "playedu-api"] + path = playedu-api + url = https://github.com/PlayEdu/PlayEdu +[submodule "playedu-backend"] + path = playedu-backend + url = https://github.com/PlayEdu/backend +[submodule "playedu-h5"] + path = playedu-h5 + url = https://github.com/PlayEdu/h5 +[submodule "playedu-pc"] + path = playedu-pc + url = https://github.com/PlayEdu/frontend diff --git a/Dockerfile b/Dockerfile index 9d88710..08881ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,30 @@ +FROM eclipse-temurin:17 as ApiBuilder + +COPY playedu-api /app + +WORKDIR /app + +# 编译jar包 +RUN /app/mvnw -Dmaven.test.skip=true clean package + +FROM node:20-alpine as NodeBuilder + +COPY playedu-backend /app/backend +COPY playedu-pc /app/pc +COPY playedu-h5 /app/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 " @@ -10,12 +37,14 @@ RUN apt update && apt install -y nginx 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/sites-enabled/default +COPY --from=ApiBuilder /app/playedu-api/target/playedu-api.jar /app/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 diff --git a/api/.gitignore b/api/.gitignore deleted file mode 100644 index 6059910..0000000 --- a/api/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!.gitignore -!start.sh \ No newline at end of file diff --git a/api/start.sh b/api/start.sh deleted file mode 100644 index 68af9fd..0000000 --- a/api/start.sh +++ /dev/null @@ -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} \ No newline at end of file diff --git a/conf/nginx.conf b/docker/nginx/conf/nginx.conf similarity index 100% rename from conf/nginx.conf rename to docker/nginx/conf/nginx.conf diff --git a/playedu-api b/playedu-api new file mode 160000 index 0000000..26074ef --- /dev/null +++ b/playedu-api @@ -0,0 +1 @@ +Subproject commit 26074efea4543ca138d7a70018210a42d676f070 diff --git a/playedu-backend b/playedu-backend new file mode 160000 index 0000000..f897a02 --- /dev/null +++ b/playedu-backend @@ -0,0 +1 @@ +Subproject commit f897a029f5e87b7a99648e8275fbad1eeca2a82b diff --git a/playedu-h5 b/playedu-h5 new file mode 160000 index 0000000..e8e047d --- /dev/null +++ b/playedu-h5 @@ -0,0 +1 @@ +Subproject commit e8e047da3718828fd292fac3a8ed7a1294fcbc57 diff --git a/playedu-pc b/playedu-pc new file mode 160000 index 0000000..c00a723 --- /dev/null +++ b/playedu-pc @@ -0,0 +1 @@ +Subproject commit c00a7236a71f05aac1fafca2353c932f315465b9