diff --git a/README.md b/README.md index 3388832..b9af267 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,9 @@ cp middleware/.env.example middleware/.env cp reader/src/main/resources/application.yml.example reader/src/main/resources/application.yml cp writer/src/main/resources/application.yml.example writer/src/main/resources/application.yml cp executor/src/main/resources/application.yml.example executor/src/main/resources/application.yml +cp reader/src/main/resources/mail.properties.example reader/src/main/resources/mail.properties +cp writer/src/main/resources/mail.properties.example writer/src/main/resources/mail.properties +cp executor/src/main/resources/mail.properties.example executor/src/main/resources/mail.properties ``` 5. 修改 `{repo}/middleware/.env` 文件里 `SQL_SCRIPT_PATH` 和 `DOCKER_DATA_PATH` 绝对路径到本地磁盘 diff --git a/db/gns-email.sql b/db/gns-email.sql index 6b9b8ae..7afad9e 100644 --- a/db/gns-email.sql +++ b/db/gns-email.sql @@ -23,4 +23,9 @@ CREATE TABLE `gitlink_email_send_records` ( PRIMARY KEY (`id`), KEY `index_on_email_and_status` (`email`,`status`), KEY `index_on_status` (`status`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; \ No newline at end of file +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + + +-- 2023-01-05 更新字符集编码 +ALTER TABLE gitlink_email_jobs CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE gitlink_email_send_records CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; \ No newline at end of file diff --git a/db/gns-notification.sql b/db/gns-notification.sql index 1637c77..e772b0d 100644 --- a/db/gns-notification.sql +++ b/db/gns-notification.sql @@ -35,4 +35,7 @@ ALTER TABLE gitlink_sys_notification ADD COLUMN (`type` TINYINT(4) NOT NULL DEFA -- 2021-09-09 新增 source 字段区分消息来源、新增 extra 字段保存额外信息 ALTER TABLE gitlink_sys_notification ADD source varchar(250) NULL COMMENT '消息来源'; -ALTER TABLE gitlink_sys_notification ADD extra TEXT NULL COMMENT '额外信息(备用字段)'; \ No newline at end of file +ALTER TABLE gitlink_sys_notification ADD extra TEXT NULL COMMENT '额外信息(备用字段)'; + +-- 2023-01-05 更新字符集编码 +ALTER TABLE gitlink_sys_notification CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; \ No newline at end of file diff --git a/db/hehui-gns-notification.sql b/db/hehui-gns-notification.sql index 4433194..823ae1e 100644 --- a/db/hehui-gns-notification.sql +++ b/db/hehui-gns-notification.sql @@ -24,4 +24,7 @@ ALTER TABLE hehui_sys_notification ADD COLUMN (`type` TINYINT(4) NOT NULL DEFAUL -- 2021-09-10 新增 source 字段区分消息来源、新增 extra 字段保存额外信息 ALTER TABLE hehui_sys_notification ADD source varchar(250) NULL COMMENT '消息来源'; -ALTER TABLE hehui_sys_notification ADD extra TEXT NULL COMMENT '额外信息(备用字段)'; \ No newline at end of file +ALTER TABLE hehui_sys_notification ADD extra TEXT NULL COMMENT '额外信息(备用字段)'; + +-- 2023-01-05 更新字符集编码 +ALTER TABLE hehui_sys_notification CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; \ No newline at end of file diff --git a/db/osredm-gns-notification.sql b/db/osredm-gns-notification.sql index 582c756..667d0dc 100644 --- a/db/osredm-gns-notification.sql +++ b/db/osredm-gns-notification.sql @@ -24,4 +24,7 @@ ALTER TABLE osredm_sys_notification ADD COLUMN (`type` TINYINT(4) NOT NULL DEFAU -- 2021-09-10 新增 source 字段区分消息来源、新增 extra 字段保存额外信息 ALTER TABLE osredm_sys_notification ADD source varchar(250) NULL COMMENT '消息来源'; -ALTER TABLE osredm_sys_notification ADD extra TEXT NULL COMMENT '额外信息(备用字段)'; \ No newline at end of file +ALTER TABLE osredm_sys_notification ADD extra TEXT NULL COMMENT '额外信息(备用字段)'; + +-- 2023-01-05 更新字符集编码 +ALTER TABLE osredm_sys_notification CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; \ No newline at end of file diff --git a/middleware/services.yml b/middleware/services.yml index 3ed5fd8..ab6c06b 100644 --- a/middleware/services.yml +++ b/middleware/services.yml @@ -1,173 +1,181 @@ -version: '3' -services: - - mysql: - image: mysql:${MYSQL_VERSION} - container_name: ${MYSQL_CONTAINER_NAME} - hostname: mysql - environment: - - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - - MYSQL_USER=${MYSQL_USER} - - MYSQL_PASSWORD=${MYSQL_PASSWORD} - - MYSQL_DATABASE=${MYSQL_DATABASE} - - TZ=Asia/Shanghai - volumes: - - ${DOCKER_DATA_PATH}/mysql:/var/lib/mysql - - ${SQL_SCRIPT_PATH}/gns-notification.sql:/docker-entrypoint-initdb.d/0001.sql - - ${SQL_SCRIPT_PATH}/hehui-gns-notification.sql:/docker-entrypoint-initdb.d/0002.sql - - ${SQL_SCRIPT_PATH}/gns-email.sql:/docker-entrypoint-initdb.d/0003.sql - - ${SQL_SCRIPT_PATH}/osredm-gns-notification.sql:/docker-entrypoint-initdb.d/0004.sql - command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci - ports: - - ${MYSQL_LOCAL_PORT}:3306 - networks: - - gitlink_network - - redis: - image: redis:${REDIS_VERSION} - container_name: ${REDIS_CONTAINER_NAME} - hostname: redis - volumes: - - ${DOCKER_DATA_PATH}/redis/data:/data - - ${DOCKER_DATA_PATH}/redis/logs:/logs - environment: - - TZ=Asia/Shanghai - ports: - - ${REDIS_LOCAL_PORT}:6379 - networks: - - gitlink_network - - # See Also: https://hub.docker.com/r/confluentinc/cp-zookeeper - zookeeper: - image: confluentinc/cp-zookeeper:latest - container_name: ${ZOOKEEPER_CONTAINER_NAME} - hostname: zookeeper - environment: - ZOOKEEPER_CLIENT_PORT: 2181 - ZOOKEEPER_TICK_TIME: 2000 - ports: - - ${ZOOKEEPER_LOCAL_PORT}:2181 -# volumes: -# - ${DOCKER_DATA_PATH}/zookeeper:/var/lib/zookeeper - networks: - - gitlink_network - - # See Also: https://hub.docker.com/r/confluentinc/cp-kafka - kafka1: - image: confluentinc/cp-kafka:latest - container_name: ${KAFKA_CONTAINER_01_NAME} - hostname: kafka1 - depends_on: - - zookeeper - ports: - - ${KAFKA_01_LOCAL_PORT}:29092 -# volumes: -# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_01_NAME}/lib:/var/lib/kafka -# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_01_NAME}/logs:/var/logs/kafka -# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_01_NAME}/conf:/etc/kafka - environment: - KAFKA_BROKER_ID: 1 - KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 - KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9092,PLAINTEXT_HOST://localhost:${KAFKA_01_LOCAL_PORT} - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT - KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 - networks: - - gitlink_network - - # See Also: https://hub.docker.com/r/confluentinc/cp-kafka - kafka2: - image: confluentinc/cp-kafka:latest - container_name: ${KAFKA_CONTAINER_02_NAME} - hostname: kafka2 - depends_on: - - zookeeper - ports: - - ${KAFKA_02_LOCAL_PORT}:39092 -# volumes: -# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_02_NAME}/lib:/var/lib/kafka -# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_02_NAME}/logs:/var/logs/kafka -# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_02_NAME}/conf:/etc/kafka - environment: - KAFKA_BROKER_ID: 2 - KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 - KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka2:9092,PLAINTEXT_HOST://localhost:${KAFKA_02_LOCAL_PORT} - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT - KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 - networks: - - gitlink_network - - gitlink-reader: - container_name: ${GNS_READER_CONTAINER_NAME} - hostname: gitlink_reader - image: gitlink/gns-reader:${GITLINK_NOTIFICATION_SYS_VERSION} - build: - context: ../ - dockerfile: middleware/reader.Dockerfile - networks: - - gitlink_network - environment: - - TZ=Asia/Shanghai - volumes: - - ${DOCKER_DATA_PATH}/gitlink/:/data/logs/ - depends_on: - - kafka1 - - kafka2 - - redis - - mysql - ports: - - ${GNS_READER_LOCAL_PORT}:8081 - - gitlink-writer: - container_name: ${GNS_WRITER_CONTAINER_NAME} - hostname: gitlink_writer - image: gitlink/gns-writer:${GITLINK_NOTIFICATION_SYS_VERSION} - build: - context: ../ - dockerfile: middleware/writer.Dockerfile - networks: - - gitlink_network - environment: - - TZ=Asia/Shanghai - volumes: - - ${DOCKER_DATA_PATH}/gitlink/:/data/logs/ - depends_on: - - kafka1 - - kafka2 - - redis - - mysql - ports: - - ${GNS_WRITER_LOCAL_PORT}:8082 - - gitlink-executor: - container_name: ${GNS_EXECUTOR_CONTAINER_NAME} - hostname: gitlink_executor - image: gitlink/gns-executor:${GITLINK_NOTIFICATION_SYS_VERSION} - build: - context: ../ - dockerfile: middleware/executor.Dockerfile - networks: - - gitlink_network - volumes: - - ${DOCKER_DATA_PATH}/gitlink/:/data/logs/ - environment: - - TZ=Asia/Shanghai - depends_on: - - kafka1 - - kafka2 - - redis - - mysql - ports: - - ${GNS_EXECUTOR_LOCAL_PORT}:8083 - -networks: - gitlink_network: - driver: bridge - name: gitlink_network - driver_opts: - com.docker.network.enable_ipv6: "true" - - - - +version: '3' +services: + + mysql: + image: mysql:${MYSQL_VERSION} + container_name: ${MYSQL_CONTAINER_NAME} + hostname: mysql + environment: + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} + - MYSQL_USER=${MYSQL_USER} + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + - MYSQL_DATABASE=${MYSQL_DATABASE} + - TZ=Asia/Shanghai + volumes: + - ${DOCKER_DATA_PATH}/mysql:/var/lib/mysql + - ${SQL_SCRIPT_PATH}/gns-notification.sql:/docker-entrypoint-initdb.d/0001.sql + - ${SQL_SCRIPT_PATH}/hehui-gns-notification.sql:/docker-entrypoint-initdb.d/0002.sql + - ${SQL_SCRIPT_PATH}/gns-email.sql:/docker-entrypoint-initdb.d/0003.sql + - ${SQL_SCRIPT_PATH}/osredm-gns-notification.sql:/docker-entrypoint-initdb.d/0004.sql + command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci + ports: + - ${MYSQL_LOCAL_PORT}:3306 + networks: + - gitlink_network + restart: always + + redis: + image: redis:${REDIS_VERSION} + container_name: ${REDIS_CONTAINER_NAME} + hostname: redis + volumes: + - ${DOCKER_DATA_PATH}/redis/data:/data + - ${DOCKER_DATA_PATH}/redis/logs:/logs + environment: + - TZ=Asia/Shanghai + ports: + - ${REDIS_LOCAL_PORT}:6379 + networks: + - gitlink_network + restart: always + + # See Also: https://hub.docker.com/r/confluentinc/cp-zookeeper + zookeeper: + image: confluentinc/cp-zookeeper:latest + container_name: ${ZOOKEEPER_CONTAINER_NAME} + hostname: zookeeper + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + ZOOKEEPER_TICK_TIME: 2000 + ports: + - ${ZOOKEEPER_LOCAL_PORT}:2181 +# volumes: +# - ${DOCKER_DATA_PATH}/zookeeper:/var/lib/zookeeper + networks: + - gitlink_network + restart: always + + # See Also: https://hub.docker.com/r/confluentinc/cp-kafka + kafka1: + image: confluentinc/cp-kafka:latest + container_name: ${KAFKA_CONTAINER_01_NAME} + hostname: kafka1 + depends_on: + - zookeeper + ports: + - ${KAFKA_01_LOCAL_PORT}:29092 +# volumes: +# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_01_NAME}/lib:/var/lib/kafka +# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_01_NAME}/logs:/var/logs/kafka +# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_01_NAME}/conf:/etc/kafka + environment: + KAFKA_BROKER_ID: 1 + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9092,PLAINTEXT_HOST://localhost:${KAFKA_01_LOCAL_PORT} + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + networks: + - gitlink_network + restart: always + + # See Also: https://hub.docker.com/r/confluentinc/cp-kafka + kafka2: + image: confluentinc/cp-kafka:latest + container_name: ${KAFKA_CONTAINER_02_NAME} + hostname: kafka2 + depends_on: + - zookeeper + ports: + - ${KAFKA_02_LOCAL_PORT}:39092 +# volumes: +# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_02_NAME}/lib:/var/lib/kafka +# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_02_NAME}/logs:/var/logs/kafka +# - ${DOCKER_DATA_PATH}/kafka/${KAFKA_CONTAINER_02_NAME}/conf:/etc/kafka + environment: + KAFKA_BROKER_ID: 2 + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka2:9092,PLAINTEXT_HOST://localhost:${KAFKA_02_LOCAL_PORT} + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + networks: + - gitlink_network + restart: always + + gitlink-reader: + container_name: ${GNS_READER_CONTAINER_NAME} + hostname: gitlink_reader + image: gitlink/gns-reader:${GITLINK_NOTIFICATION_SYS_VERSION} + build: + context: ../ + dockerfile: middleware/reader.Dockerfile + networks: + - gitlink_network + environment: + - TZ=Asia/Shanghai + volumes: + - ${DOCKER_DATA_PATH}/gitlink/:/data/logs/ + depends_on: + - kafka1 + - kafka2 + - redis + - mysql + ports: + - ${GNS_READER_LOCAL_PORT}:8081 + restart: always + + gitlink-writer: + container_name: ${GNS_WRITER_CONTAINER_NAME} + hostname: gitlink_writer + image: gitlink/gns-writer:${GITLINK_NOTIFICATION_SYS_VERSION} + build: + context: ../ + dockerfile: middleware/writer.Dockerfile + networks: + - gitlink_network + environment: + - TZ=Asia/Shanghai + volumes: + - ${DOCKER_DATA_PATH}/gitlink/:/data/logs/ + depends_on: + - kafka1 + - kafka2 + - redis + - mysql + ports: + - ${GNS_WRITER_LOCAL_PORT}:8082 + restart: always + + gitlink-executor: + container_name: ${GNS_EXECUTOR_CONTAINER_NAME} + hostname: gitlink_executor + image: gitlink/gns-executor:${GITLINK_NOTIFICATION_SYS_VERSION} + build: + context: ../ + dockerfile: middleware/executor.Dockerfile + networks: + - gitlink_network + volumes: + - ${DOCKER_DATA_PATH}/gitlink/:/data/logs/ + environment: + - TZ=Asia/Shanghai + depends_on: + - kafka1 + - kafka2 + - redis + - mysql + ports: + - ${GNS_EXECUTOR_LOCAL_PORT}:8083 + restart: always + +networks: + gitlink_network: + driver: bridge + name: gitlink_network + driver_opts: + com.docker.network.enable_ipv6: "true" + + + +