Selaa lähdekoodia

feat: add docker-compose sample

songyinyin 2 vuotta sitten
vanhempi
commit
5b865fe49b

+ 13 - 4
.github/workflows/docker-image.yml

@@ -2,7 +2,9 @@ name: Docker Image CI
 
 on:
   push:
-    branches: [ master ]
+    branches: [ 4.1.1-docker-compose ]
+    tags:
+      - 'v*'
 
 jobs:
 
@@ -13,18 +15,25 @@ jobs:
     steps:
     - uses: actions/checkout@v2
     - name: Build the Docker image
-      run: mvn clean package -Pdev -DskipTests -U -e && /bin/cp -rf powerjob-server/powerjob-server-starter/target/*.jar powerjob-server/docker/powerjob-server.jar && /bin/cp -rf powerjob-worker-agent/target/*.jar powerjob-worker-agent/powerjob-agent.jar
+      run: mvn clean package -Pdev -DskipTests -U -e && /bin/cp -rf powerjob-server/powerjob-server-starter/target/*.jar powerjob-server/docker/powerjob-server.jar && /bin/cp -rf powerjob-worker-agent/target/*.jar powerjob-worker-agent/powerjob-agent.jar && /bin/cp -rf powerjob-worker-samples/target/*.jar powerjob-worker-samples/powerjob-worker-samples.jar
     - uses: docker/build-push-action@v1
       with:
         username: ${{ secrets.DOCKER_USERNAME }}
         password: ${{ secrets.DOCKER_PASSWORD }}
         repository: tjqq/powerjob-server
-        tags: latest
+        tag_with_ref: true
         path: powerjob-server/docker/
     - uses: docker/build-push-action@v1
       with:
         username: ${{ secrets.DOCKER_USERNAME }}
         password: ${{ secrets.DOCKER_PASSWORD }}
         repository: tjqq/powerjob-agent
-        tags: latest
+        tag_with_ref: true
         path: powerjob-worker-agent/
+    - uses: docker/build-push-action@v1
+      with:
+        username: ${{ secrets.DOCKER_USERNAME }}
+        password: ${{ secrets.DOCKER_PASSWORD }}
+        repository: tjqq/powerjob-worker-samples
+        tag_with_ref: true
+        path: powerjob-worker-samples/

+ 2 - 1
.gitignore

@@ -41,4 +41,5 @@ build/
 .trc
 */.phd
 */.txt
-*/.trc
+*/.trc
+powerjob-data/

+ 50 - 0
docker-compose.yml

@@ -0,0 +1,50 @@
+# 使用说明 V4.1.1
+# 1. PowerJob 根目录执行:docker-compose up
+# 2. 静静等待服务启动。刚开始启动时,powerjob-worker-samples会启动失败,等powerjob-server启动成功后,powerjob-worker-samples才会启动成功。
+
+version: '3'
+services:
+  powerjob-mysql:
+    build:
+      context: ./others
+    environment:
+      MYSQL_ROOT_HOST: "%"
+      MYSQL_ROOT_PASSWORD: No1Bug2Please3!
+    restart: always
+    container_name: powerjob-mysql
+    image: powerjob/powerjob-mysql:4.1.1
+    ports:
+      - "3306:3306"
+    volumes:
+      - ./powerjob-data/powerjob-mysql:/var/lib/mysql
+    command: --lower_case_table_names=1
+
+  powerjob-server:
+    container_name: powerjob-server
+    image: tjqq/powerjob-server:latest
+    restart: always
+    depends_on:
+      - powerjob-mysql
+    environment:
+      PARAMS: "--oms.mongodb.enable=false --spring.datasource.core.jdbc-url=jdbc:mysql://powerjob-mysql:3306/powerjob-daily?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
+    ports:
+      - "7700:7700"
+      - "10086:10086"
+      - "10010:10010"
+    volumes:
+      - ./powerjob-data/powerjob-server:/powerjob/server/
+
+  powerjob-worker-samples:
+    container_name: powerjob-worker-samples
+    image: tjqq/powerjob-worker-samples:latest
+    restart: always
+    depends_on:
+      - powerjob-mysql
+      - powerjob-server
+    environment:
+      PARAMS: "--powerjob.worker.server-address=powerjob-server:7700"
+    ports:
+      - "8081:8081"
+      - "27777:27777"
+    volumes:
+      - ./powerjob-data/powerjob-worker-samples:/powerjob/worker

+ 11 - 0
others/Dockerfile

@@ -0,0 +1,11 @@
+FROM mysql/mysql-server:8.0.30
+
+MAINTAINER dudiao(idudaio@163.com)
+
+ENV TZ=Asia/Shanghai
+
+RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+COPY sql/01schema.sql /docker-entrypoint-initdb.d
+
+COPY sql/02worker-samples.sql /docker-entrypoint-initdb.d

+ 2 - 0
others/sql/01schema.sql

@@ -0,0 +1,2 @@
+-- powerjob
+create database `powerjob-daily` default character set utf8mb4 collate utf8mb4_general_ci;

+ 21 - 0
others/sql/02worker-samples.sql

@@ -0,0 +1,21 @@
+USE powerjob-daily;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+CREATE TABLE IF NOT EXISTS `app_info` (
+    `id`             bigint       NOT NULL AUTO_INCREMENT COMMENT '应用ID',
+    `app_name`       varchar(128) not NULL COMMENT '应用名称',
+    `current_server` varchar(255) default null COMMENT 'Server地址,用于负责调度应用的ActorSystem地址',
+    `gmt_create`     datetime     not null COMMENT '创建时间',
+    `gmt_modified`   datetime     not null COMMENT '更新时间',
+    `password`       varchar(255) not null COMMENT '应用密码',
+    PRIMARY KEY (`id`),
+    UNIQUE KEY `uidx01_app_info` (`app_name`)
+) ENGINE = InnoDB AUTO_INCREMENT = 1
+DEFAULT CHARSET = utf8mb4
+COLLATE = utf8mb4_general_ci COMMENT ='应用表';
+
+insert into app_info (app_name, gmt_create, gmt_modified, password) select 'powerjob-worker-samples', current_timestamp(), current_timestamp(), 'powerjob123' from dual where not exists ( select * from app_info where app_name = 'powerjob-worker-samples');
+
+SET FOREIGN_KEY_CHECKS = 1;

+ 18 - 0
powerjob-worker-samples/Dockerfile

@@ -0,0 +1,18 @@
+# 基础镜像(支持 amd64 & arm64),based on Ubuntu 18.04.4 LTS
+FROM adoptopenjdk:8-jdk-hotspot
+# 维护者
+MAINTAINER dudiao(idudiao@163.com)
+# 设置时区
+ENV TZ=Asia/Shanghai
+
+# 设置其他环境变量
+ENV APP_NAME=powerjob-worker-samples
+# 传递 SpringBoot 启动参数 和 JVM参数
+ENV PARAMS=""
+ENV JVMOPTIONS=""
+# 将应用 jar 包拷入 docker
+COPY target/powerjob-worker-samples-*.jar /powerjob-worker-samples.jar
+# 暴露端口(HTTP + AKKA)
+EXPOSE 8081 27777
+# 启动应用
+ENTRYPOINT ["sh","-c","java $JVMOPTIONS -jar /powerjob-worker-samples.jar $PARAMS"]

+ 1 - 1
powerjob-worker-samples/src/main/resources/application.properties

@@ -4,7 +4,7 @@ spring.jpa.open-in-view=false
 # Akka port, default is 27777
 powerjob.worker.akka-port=27777
 # Application name, used for grouping applications. Recommend to set the same value as project name.
-powerjob.worker.app-name=powerjob-agent-test
+powerjob.worker.app-name=powerjob-worker-samples
 # Address of PowerJob-server node(s). Ip:port or domain. Multiple addresses should be separated with comma.
 powerjob.worker.server-address=127.0.0.1:7700,127.0.0.1:7701
 # Store strategy of H2 database. disk or memory. Default value is disk.