diff --git a/.github/workflows/docker_build.yaml b/.github/workflows/docker_build.yaml new file mode 100644 index 000000000..40180ecfe --- /dev/null +++ b/.github/workflows/docker_build.yaml @@ -0,0 +1,114 @@ +name: GIN-VUE-ADMIN Docker Build + +on: + push: + branches: [stopstopstop] + #workflow_dispatch: + # inputs: + # webtag: + # description: 'Set web tag, Default latest' + # required: true + # default: "latest" + # servertag: + # description: 'Set server tag, Default latest' + # required: true + # default: "latest" + +jobs: + GIN_VUE_ADMIN_WEB: + name: GIN VUE ADMIN WEB + runs-on: ubuntu-latest + steps: + - name: Private Actions Checkout + uses: actions/checkout@v2.3.4 + - name: Docker Setup QEMU + uses: docker/setup-qemu-action@v1.2.0 + - name: Docker Setup Buildx + uses: docker/setup-buildx-action@v1.6.0 + - name: Docker Login + uses: docker/login-action@v1.10.0 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Docker Login in Aliyun + uses: docker/login-action@v1.10.0 + with: + registry: ${{ secrets.DOCKERHUB_REGISTRY_ALIYUN }} + username: ${{ secrets.DOCKERHUB_ACCOUNT_ALIYUN }} + password: ${{ secrets.DOCKERHUB_PASSWORD_ALIYUN }} + - name: Build and push Docker images + uses: docker/build-push-action@v2.7.0 + with: + context: . + # 这里是适配 arm64 ,主要看你们的程序是否支持 arm64 + platforms: linux/amd64,linux/arm64 + file: web/Dockerfile + push: true + # 这里是给docker 打标签,默认不上传 latest + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/web:${{ github.event.inputs.webtag }} + ${{ secrets.DOCKERHUB_REGISTRY_ALIYUN }}/${{ secrets.DOCKERHUB_USERNAME_ALIYUN }}web:${{ github.event.inputs.webtag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/web:${{ github.event.inputs.webtag }}.cache + cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/web:${{ github.event.inputs.webtag }}.cache,mode=max + # 漏洞扫描 + - name: Scan for vulnerabilities + uses: crazy-max/ghaction-container-scan@v1 + with: + image: ${{ secrets.DOCKERHUB_USERNAME }}/web:${{ github.event.inputs.webtag }} + dockerfile: web/Dockerfile + # 更新 docker 描述页面 + - name: Docker Hub Description + uses: peter-evans/dockerhub-description@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + repository: ${{ secrets.DOCKERHUB_USERNAME }}/web + + GIN_VUE_ADMIN_SERVER: + name: GIN VUE ADMIN SERVER + runs-on: ubuntu-latest + steps: + - name: Private Actions Checkout + uses: actions/checkout@v2.3.4 + - name: Docker Setup QEMU + uses: docker/setup-qemu-action@v1.2.0 + - name: Docker Setup Buildx + uses: docker/setup-buildx-action@v1.6.0 + - name: Docker Login + uses: docker/login-action@v1.10.0 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Docker Login in Aliyun + uses: docker/login-action@v1.10.0 + with: + registry: ${{ secrets.DOCKERHUB_REGISTRY_ALIYUN }} + username: ${{ secrets.DOCKERHUB_ACCOUNT_ALIYUN }} + password: ${{ secrets.DOCKERHUB_PASSWORD_ALIYUN }} + - name: Build and push Docker images + uses: docker/build-push-action@v2.7.0 + with: + context: . + # 这里是适配 arm64 ,主要看你们的程序是否支持 arm64 + platforms: linux/amd64,linux/arm64 + file: server/Dockerfile + push: true + # 这里是给docker 打标签,默认不上传 latest + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/server:${{ github.event.inputs.servertag }} + ${{ secrets.DOCKERHUB_REGISTRY_ALIYUN }}/${{ secrets.DOCKERHUB_USERNAME_ALIYUN }}server:${{ github.event.inputs.servertag }} + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/server:${{ github.event.inputs.servertag }}.cache + cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/server:${{ github.event.inputs.servertag }}.cache,mode=max + # 漏洞扫描 + - name: Scan for vulnerabilities + uses: crazy-max/ghaction-container-scan@v1 + with: + image: ${{ secrets.DOCKERHUB_USERNAME }}/server:${{ github.event.inputs.servertag }} + dockerfile: server/Dockerfile + # 更新 docker 描述页面 + - name: Docker Hub Description + uses: peter-evans/dockerhub-description@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + repository: ${{ secrets.DOCKERHUB_USERNAME }}/server diff --git a/README.md b/README.md index 5e101d45a..a2ec2e5ef 100644 --- a/README.md +++ b/README.md @@ -305,6 +305,10 @@ swag init 如果你觉得这个项目对你有帮助,你可以请作者喝饮料 :tropical_drink: [点我](https://www.gin-vue-admin.com/docs/coffee) -## 10. 商用注意事项 +## 10. 友情链接 + +[H5-Dooring | H5页面制作神器](https://github.com/MrXujiang/h5-Dooring) + +## 11. 商用注意事项 如果您将此项目用于商业用途,请遵守Apache2.0协议并保留作者技术支持声明。 diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml new file mode 100644 index 000000000..8da83810c --- /dev/null +++ b/docker-compose-dev.yaml @@ -0,0 +1,83 @@ +version: "3" + +# 声明一个名为network的networks,subnet为network的子网地址,默认网关是177.7.0.1 +networks: + network: + ipam: + driver: default + config: + - subnet: '177.7.0.0/16' + +# 设置mysql,redis持久化保存 +volumes: + mysql: + redis: + +services: + web: + image: node:16 + container_name: gva-web + hostname: gva-web #可以通过容器名访问 + restart: always + ports: + - '8080:8080' + depends_on: + - server + working_dir: /gva-web # 如果docker 设置了workdir 则此处不需要设置 + command: bash -c "yarn config set registry https://registry.npm.taobao.org --global && yarn install && yarn serve" + volumes: + - ./web:/gva-web + networks: + network: + ipv4_address: 177.7.0.11 + + server: + image: golang:1.16 + container_name: gva-server + hostname: gva-server + restart: always + ports: + - '8888:8888' + depends_on: + - mysql + - redis + volumes: + - ./server:/gva-server + working_dir: /gva-server # 如果docker 设置了workdir 则此处不需要设置 + command: bash -c "go env -w GOPROXY=https://goproxy.cn,direct && go mod tidy && go run main.go" + links: + - mysql + - redis + networks: + network: + ipv4_address: 177.7.0.12 + + mysql: + image: mysql:8.0.21 # 如果您是 arm64 架构:如 MacOS 的 M1,请修改镜像为 image: mysql/mysql-server:8.0.21 + container_name: gva-mysql + hostname: gva-mysql + command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci #设置utf8字符集 + restart: always + ports: + - "13306:3306" # host物理直接映射端口为13306 + environment: + MYSQL_DATABASE: 'qmPlus' # 初始化启动时要创建的数据库的名称 + MYSQL_ROOT_PASSWORD: 'Aa@6447985' # root管理员用户密码 + volumes: + - mysql:/var/lib/mysql + networks: + network: + ipv4_address: 177.7.0.13 + + redis: + image: redis:6.0.6 + container_name: gva-redis # 容器名 + hostname: gva-redis + restart: always + ports: + - '16379:6379' + volumes: + - redis:/data + networks: + network: + ipv4_address: 177.7.0.14 diff --git a/docker-compose.yaml b/docker-compose.yaml index 4f3a204d8..ae69de5f4 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,12 +1,18 @@ version: "3" +# 声明一个名为network的networks,subnet为network的子网地址,默认网关是177.7.0.1 networks: network: ipam: driver: default config: - subnet: '177.7.0.0/16' - + +# 设置mysql,redis持久化保存 +volumes: + mysql: + redis: + services: web: build: @@ -42,7 +48,7 @@ services: ipv4_address: 177.7.0.12 mysql: - image: mysql:8.0.21 + image: mysql:8.0.21 # 如果您是 arm64 架构:如 MacOS 的 M1,请修改镜像为 image: mysql/mysql-server:8.0.21 container_name: gva-mysql command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci #设置utf8字符集 restart: always @@ -51,6 +57,8 @@ services: environment: MYSQL_DATABASE: 'qmPlus' # 初始化启动时要创建的数据库的名称 MYSQL_ROOT_PASSWORD: 'Aa@6447985' # root管理员用户密码 + volumes: + - mysql:/var/lib/mysql networks: network: ipv4_address: 177.7.0.13 @@ -61,6 +69,8 @@ services: restart: always ports: - '16379:6379' + volumes: + - redis:/data networks: network: - ipv4_address: 177.7.0.14 \ No newline at end of file + ipv4_address: 177.7.0.14 diff --git a/web/.env.development b/web/.env.development index 46223ad28..3bf31b1c8 100644 --- a/web/.env.development +++ b/web/.env.development @@ -3,3 +3,5 @@ VITE_CLI_PORT = 8080 VITE_SERVER_PORT = 8888 VITE_BASE_API = /api VITE_BASE_PATH = http://127.0.0.1 +// 如果使用docker-compose开发模式,设置为下面的地址 +//VITE_BASE_PATH = http://177.7.0.12 diff --git a/web/vite.config.js b/web/vite.config.js index 8d386b427..853b7c631 100644 --- a/web/vite.config.js +++ b/web/vite.config.js @@ -55,6 +55,7 @@ export default ({ 'process.env': {} }, server: { + // 如果使用docker-compose开发模式,设置为false open: true, port: process.env.VITE_CLI_PORT, proxy: {