diff --git a/compose.yaml b/compose.yaml
new file mode 100644
index 00000000..5ca6cd59
--- /dev/null
+++ b/compose.yaml
@@ -0,0 +1,36 @@
+name: gongxue-local
+
+services:
+ postgres:
+ image: postgres:17-alpine
+ ports:
+ - "127.0.0.1::5432"
+ environment:
+ POSTGRES_DB: ruoyi-vue-pro
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: 123456
+ volumes:
+ - postgres-data:/var/lib/postgresql/data
+ - ./sql/postgresql/ruoyi-vue-pro.sql:/docker-entrypoint-initdb.d/000-platform.sql:ro
+ - ./script/docker/init-local-roles.sql:/docker-entrypoint-initdb.d/010-local-roles.sql:ro
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U postgres -d ruoyi-vue-pro"]
+ interval: 2s
+ timeout: 5s
+ retries: 30
+
+ redis:
+ image: redis:6-alpine
+ ports:
+ - "127.0.0.1::6379"
+ volumes:
+ - redis-data:/data
+ healthcheck:
+ test: ["CMD", "redis-cli", "ping"]
+ interval: 2s
+ timeout: 5s
+ retries: 30
+
+volumes:
+ postgres-data:
+ redis-data:
diff --git a/pom.xml b/pom.xml
index eb947f5c..7a12e96e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,8 +20,8 @@
-
-
+ yudao-module-pay
+ yudao-module-mall
diff --git a/script/docker/init-local-roles.sql b/script/docker/init-local-roles.sql
new file mode 100644
index 00000000..954c2bcd
--- /dev/null
+++ b/script/docker/init-local-roles.sql
@@ -0,0 +1,25 @@
+CREATE ROLE yudao_flyway LOGIN NOINHERIT PASSWORD '123456';
+CREATE ROLE yudao_runtime LOGIN NOINHERIT PASSWORD '123456';
+
+ALTER SCHEMA public OWNER TO yudao_flyway;
+DO $$
+DECLARE
+ object RECORD;
+BEGIN
+ FOR object IN
+ SELECT format('%I.%I', schemaname, tablename) AS name
+ FROM pg_tables
+ WHERE schemaname = 'public'
+ LOOP
+ EXECUTE 'ALTER TABLE ' || object.name || ' OWNER TO yudao_flyway';
+ END LOOP;
+ FOR object IN
+ SELECT format('%I.%I', sequence_schema, sequence_name) AS name
+ FROM information_schema.sequences
+ WHERE sequence_schema = 'public'
+ LOOP
+ EXECUTE 'ALTER SEQUENCE ' || object.name || ' OWNER TO yudao_flyway';
+ END LOOP;
+END
+$$;
+GRANT USAGE ON SCHEMA public TO yudao_runtime;
diff --git a/yudao-server/pom.xml b/yudao-server/pom.xml
index 0fd1a507..43c14055 100644
--- a/yudao-server/pom.xml
+++ b/yudao-server/pom.xml
@@ -58,12 +58,12 @@
-
-
-
-
-
-
+
+
+ cn.iocoder.boot
+ yudao-module-pay
+ ${revision}
+
@@ -73,21 +73,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ cn.iocoder.boot
+ yudao-module-product
+ ${revision}
+
+
+ cn.iocoder.boot
+ yudao-module-promotion
+ ${revision}
+
+
+ cn.iocoder.boot
+ yudao-module-trade
+ ${revision}
+
@@ -143,10 +143,24 @@
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+ true
+
+
+ org.springframework.boot
+ spring-boot-docker-compose
+ runtime
+ true
+
+
- org.flywaydb
- flyway-core
+ org.springframework.boot
+ spring-boot-starter-flyway
org.flywaydb
diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml
index 2536de6f..e9d92244 100644
--- a/yudao-server/src/main/resources/application-local.yaml
+++ b/yudao-server/src/main/resources/application-local.yaml
@@ -3,6 +3,10 @@ server:
--- #################### 数据库相关配置 ####################
spring:
+ docker:
+ compose:
+ file: ../compose.yaml
+ lifecycle-management: start-and-stop
autoconfigure:
# noinspection SpringBootApplicationYaml
exclude:
@@ -26,9 +30,9 @@ spring:
flyway:
enabled: true
url: ${FLYWAY_URL:${spring.datasource.dynamic.datasource.master.url}}
- user: ${FLYWAY_USER}
- password: ${FLYWAY_PASSWORD}
- locations: classpath:db/migration
+ user: ${FLYWAY_USER:yudao_flyway}
+ password: ${FLYWAY_PASSWORD:123456}
+ locations: classpath:db/migration,classpath:db/local
table: flyway_schema_history
baseline-on-migrate: true
baseline-version: 4009
@@ -75,14 +79,14 @@ spring:
primary: master
datasource:
master:
- url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro
- username: root
- password: 123456
+ url: ${MASTER_DATASOURCE_URL:jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro}
+ username: ${MASTER_DATASOURCE_USERNAME:yudao_runtime}
+ password: ${MASTER_DATASOURCE_PASSWORD:123456}
slave: # 模拟从库,可根据自己需要修改
lazy: true # 开启懒加载,保证启动速度
- url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro
- username: root
- password: 123456
+ url: ${SLAVE_DATASOURCE_URL:${spring.datasource.dynamic.datasource.master.url}}
+ username: ${SLAVE_DATASOURCE_USERNAME:${spring.datasource.dynamic.datasource.master.username}}
+ password: ${SLAVE_DATASOURCE_PASSWORD:${spring.datasource.dynamic.datasource.master.password}}
# tdengine: # IoT 数据库(需要 IoT 物联网再开启噢!)
# lazy: true # 开启懒加载,保证启动速度
# url: jdbc:TAOS-WS://127.0.0.1:6041/ruoyi_vue_pro?varcharAsString=true&enableAutoReconnect=true # 参见:https://t.zsxq.com/qaX9c,开启 TDengine WebSocket 自动重连
diff --git a/yudao-server/src/main/resources/db/local/afterMigrate.sql b/yudao-server/src/main/resources/db/local/afterMigrate.sql
new file mode 100644
index 00000000..e6fbbd81
--- /dev/null
+++ b/yudao-server/src/main/resources/db/local/afterMigrate.sql
@@ -0,0 +1,10 @@
+GRANT USAGE ON SCHEMA public TO yudao_runtime;
+GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA public TO yudao_runtime;
+GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO yudao_runtime;
+
+REVOKE ALL ON TABLE
+ education_question_lifecycle_transition_token,
+ education_content_node_lifecycle_transition_token,
+ education_question_collection_lifecycle_transition_token,
+ education_question_collection_membership_token
+FROM yudao_runtime;