#!/bin/bash
MYSQL_HOST=${1:-localhost}
MYSQL_PORT=${2:-3306}
MYSQL_DATABASE=${3:-login}
MYSQL_USERNAME=${4:-root}
MYSQL_PASSWORD=${5:-111111}
REDIS_HOST=${6:-localhost}
REDIS_PORT=${7:-6379}
REDIS_PASSWORD=${8:-}
if [ "$#" -eq 0 ]; then
echo "请输入配置信息(直接回车使用默认值):"
read -p "MySQL主机地址 [localhost]: " MYSQL_HOST
MYSQL_HOST=${MYSQL_HOST:-localhost}
read -p "MySQL端口 [3306]: " MYSQL_PORT
MYSQL_PORT=${MYSQL_PORT:-3306}
read -p "MySQL数据库名 [login]: " MYSQL_DATABASE
MYSQL_DATABASE=${MYSQL_DATABASE:-login}
read -p "MySQL用户名 [root]: " MYSQL_USERNAME
MYSQL_USERNAME=${MYSQL_USERNAME:-root}
read -p "MySQL密码 [111111]: " MYSQL_PASSWORD
MYSQL_PASSWORD=${MYSQL_PASSWORD:-111111}
read -p "Redis主机地址 [localhost]: " REDIS_HOST
REDIS_HOST=${REDIS_HOST:-localhost}
read -p "Redis端口 [6379]: " REDIS_PORT
REDIS_PORT=${REDIS_PORT:-6379}
read -p "Redis密码 []: " REDIS_PASSWORD
REDIS_PASSWORD=${REDIS_PASSWORD:-}
fi
echo "# MySQL 配置" > .env
echo "MYSQL_HOST=$MYSQL_HOST" >> .env
echo "MYSQL_PORT=$MYSQL_PORT" >> .env
echo "MYSQL_DATABASE=$MYSQL_DATABASE" >> .env
echo "MYSQL_USERNAME=$MYSQL_USERNAME" >> .env
echo "MYSQL_PASSWORD=$MYSQL_PASSWORD" >> .env
echo "" >> .env
echo "# Redis 配置" >> .env
echo "REDIS_HOST=$REDIS_HOST" >> .env
echo "REDIS_PORT=$REDIS_PORT" >> .env
echo "REDIS_PASSWORD=$REDIS_PASSWORD" >> .env
echo "" >> .env
echo "# Docker Compose 会自动加载这些环境变量" >> .env
echo "配置已生成到 .env 文件:"
echo ""
echo "MySQL 配置:"
echo " 主机: $MYSQL_HOST"
echo " 端口: $MYSQL_PORT"
echo " 数据库: $MYSQL_DATABASE"
echo " 用户名: $MYSQL_USERNAME"
echo " 密码: $MYSQL_PASSWORD"
echo ""
echo "Redis 配置:"
echo " 主机: $REDIS_HOST"
echo " 端口: $REDIS_PORT"
echo " 密码: ${REDIS_PASSWORD:-未设置}"
echo ""
echo "使用方法:"
echo " docker-compose up -d"
echo ""
echo ".env 文件已创建,环境变量会自动传递给应用容器"
if [ ! -d "config" ]; then
mkdir -p config
fi
cat > config/application.yml <<EOF
spring:
profiles:
active: dev
app:
env: development
EOF
cat > src/main/resources/application-dev.yml <<EOF
server:
port: 3000
spring:
datasource:
url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?allowMultiQueries=true&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&allowPublicKeyRetrieval=true&useSSL=false
username: ${MYSQL_USERNAME}
password: ${MYSQL_PASSWORD}
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
pool-name: HikariCPDatasource
minimum-idle: 5
idle-timeout: 180000
maximum-pool-size: 10
auto-commit: true
max-lifetime: 180000
connection-timeout: 30000
redis:
host: ${REDIS_HOST}
port: ${REDIS_PORT}
password: ${REDIS_PASSWORD}
database: 0
lettuce:
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: -1ms
timeout: 2000ms
jpa:
hibernate:
ddl-auto: update
database-platform: org.hibernate.dialect.MySQL8Dialect
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
dialect.storage_engine: innodb
globally_quoted_identifiers: true
dialect: org.hibernate.dialect.MySQL8Dialect
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
mybatis-plus:
mapper-locations: classpath:mappers/*.xml
type-aliases-package: com.TinyPro.entity.po
configuration:
map-underscore-to-camel-case: true
default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler
jwt:
secret: 0Zi4SA==
reject:
start: false
EOF
echo ""
echo "Spring Boot 配置文件已生成到 config/ 目录"
echo "包含所有您的自定义配置项"