diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 695a0114..702f8d0f 100644 --- a/.github/workflows/docker-image.yml +++ b/.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/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index 32b2010d..af404450 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,5 @@ build/ .trc */.phd */.txt -*/.trc \ No newline at end of file +*/.trc +powerjob-data/ \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..82771c05 --- /dev/null +++ b/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 diff --git a/others/Dockerfile b/others/Dockerfile new file mode 100644 index 00000000..873727ab --- /dev/null +++ b/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 diff --git a/others/sql/01schema.sql b/others/sql/01schema.sql new file mode 100644 index 00000000..d80a9cd7 --- /dev/null +++ b/others/sql/01schema.sql @@ -0,0 +1,2 @@ +-- powerjob +create database `powerjob-daily` default character set utf8mb4 collate utf8mb4_general_ci; diff --git a/others/sql/02worker-samples.sql b/others/sql/02worker-samples.sql new file mode 100644 index 00000000..1ae66265 --- /dev/null +++ b/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; \ No newline at end of file diff --git a/powerjob-worker-samples/Dockerfile b/powerjob-worker-samples/Dockerfile new file mode 100644 index 00000000..d3ceec34 --- /dev/null +++ b/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"] diff --git a/powerjob-worker-samples/src/main/resources/application.properties b/powerjob-worker-samples/src/main/resources/application.properties index b303af55..933f71b2 100644 --- a/powerjob-worker-samples/src/main/resources/application.properties +++ b/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.