services: piaoruo: build: context: /mydata/docker/piaoruo dockerfile: /mydata/docker/piaoruo/Dockerfile image: ruopiao:1.0 container_name: piaoruo ports: - "1024:1024" environment: - TZ=Asia/Shanghai - SPRING_DATASOURCE_URL=jdbc:mysql://piaomysql:3306/piaoruo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai - SPRING_DATASOURCE_USERNAME=root - SPRING_DATASOURCE_PASSWORD=P0i8a1o9@#() - SPRING_REDIS_HOST=piaoredis - SPRING_REDIS_PASSWORD=Rds123!@$ volumes: - /mydata/docker/piaoruo/ruopiao.jar:/app/ruopiao.jar # jar 包挂载 - /mydata/docker/piaoruo/www:/app/upload/www # 前端文件挂载 - /mydata/docker/piaoruo/upload:/app/upload/piao - /mydata/docker/piaoruo/upload/json:/app/upload/json - /mydata/docker/piaoruo/upload/logs:/app/upload/logs networks: - piaonet restart: on-failure:3 depends_on: mysql: condition: service_healthy redis: condition: service_healthy redis: image: redis container_name: piaoredis volumes: - redis-data:/data command: redis-server --appendonly yes --requirepass Rds123!@$ --loglevel warning environment: - TZ=Asia/Shanghai networks: - piaonet restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "-a", "Rds123!@$", "ping"] timeout: 3s retries: 5 mysql: image: mysql:8.0 container_name: piaomysql ports: - "3306:3306" # ✅ 已支持远程访问(端口映射) environment: - MYSQL_ROOT_PASSWORD=P0i8a1o9@#() - TZ=Asia/Shanghai - MYSQL_DATABASE=piaoruo - MYSQL_CHARSET=utf8mb4 - MYSQL_COLLATION=utf8mb4_unicode_ci command: - --default-authentication-plugin=mysql_native_password - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --explicit_defaults_for_timestamp=1 - --skip-name-resolve - --bind-address=0.0.0.0 # ✅ 关键:允许远程连接 volumes: - ./mysql/sql:/docker-entrypoint-initdb.d # 初始化脚本 - mysql-data:/var/lib/mysql # ✅ 关键:数据持久化卷 - ./mysql/conf:/etc/mysql/conf.d # 自定义配置目录 networks: - piaonet restart: unless-stopped healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-pP0i8a1o9@#()"] timeout: 10s retries: 10 start_period: 30s nginx: image: nginx:alpine container_name: piaonginx ports: - "8089:80" volumes: - ./www:/usr/share/nginx/html:ro - ./nginx.conf:/etc/nginx/nginx.conf:ro networks: - piaonet restart: unless-stopped depends_on: - piaoruo gitea: image: gitea/gitea:latest container_name: piaogitea ports: - "3001:3000" # Web 访问端口 - "2223:22" # SSH 端口(避免与服务器 SSH 22 端口冲突) environment: - TZ=Asia/Shanghai - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=mysql - GITEA__database__HOST=piaomysql:3306 - GITEA__database__NAME=gitea - GITEA__database__USER=root - GITEA__database__PASSWD=P0i8a1o9@#() volumes: - gitea-data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro networks: - piaonet restart: unless-stopped depends_on: mysql: condition: service_healthy volumes: redis-data: {} # 空对象表示使用默认配置 mysql-data: {} # 空对象表示使用默认配置 gitea-data: {} # Gitea 数据持久化 networks: piaonet: driver: bridge