services: web: build: context: /mydata/docker/piaowu dockerfile: /mydata/docker/piaowu/Dockerfile image: piaowu:1.0 container_name: piaowu ports: - "1024:1024" environment: - TZ=Asia/Shanghai - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/piaowu?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai - SPRING_DATASOURCE_USERNAME=root - SPRING_DATASOURCE_PASSWORD=P2i0a2o6w@u - SPRING_REDIS_HOST=piaowuredis - SPRING_REDIS_PASSWORD=Rds234!@$ volumes: - /mydata/docker/piaowu/piaowu.jar:/app/piaowu.jar # jar 包挂载 - /mydata/docker/piaowu/www:/app/upload/www # 前端文件挂载 - /mydata/docker/piaowu/upload:/app/upload/piaowu - /mydata/docker/piaowu/upload/json:/app/upload/json - /mydata/docker/piaowu/upload/logs:/app/upload/logs networks: - piaowunet restart: on-failure:3 depends_on: mysql: condition: service_healthy redis: condition: service_healthy redis: image: redis container_name: piaowuredis volumes: - redis-data-piaowu:/data/redis command: redis-server --appendonly yes --requirepass Rds234!@$ --loglevel warning environment: - TZ=Asia/Shanghai networks: - piaowunet restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "-a", "Rds234!@$", "ping"] timeout: 3s retries: 5 mysql: image: mysql:8.0 container_name: piaowumysql ports: - "3309:3306" # ✅ 已支持远程访问(端口映射) environment: - MYSQL_ROOT_PASSWORD=P2i0a2o6w@u - TZ=Asia/Shanghai - MYSQL_DATABASE=piaowu - 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-piaowu:/var/lib/mysql # ✅ 关键:数据持久化卷 - ./mysql/conf:/etc/mysql/conf.d # 自定义配置目录 networks: - piaowunet restart: unless-stopped healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-pP2i0a2o6w@u"] timeout: 10s retries: 10 start_period: 30s nginx: image: nginx:alpine container_name: piaowunginx ports: - "8089:80" volumes: - ./www:/usr/share/nginx/html:ro - ./nginx.conf:/etc/nginx/nginx.conf:ro networks: - piaowunet restart: unless-stopped depends_on: - web gitea: image: gitea/gitea container_name: piaowugitea ports: - "3000:3000" # Web 访问端口 - "222:22" # SSH 端口(避免与服务器 SSH 22 端口冲突) environment: - TZ=Asia/Shanghai - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=mysql - GITEA__database__HOST=mysql:3306 - GITEA__database__NAME=gitea - GITEA__database__USER=root - GITEA__database__PASSWD=P2i0a2o6w@u volumes: - gitea-data-piaowu:/data/gitea - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro networks: - piaowunet restart: unless-stopped depends_on: mysql: condition: service_healthy jenkins: image: jenkins/jenkins:lts container_name: piaowujenkins ports: - "3001:8080" # Web 访问端口 - "50000:50000" # Agent 通信端口 environment: - TZ=Asia/Shanghai volumes: - jenkins-data-piaowu:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock # 允许 Jenkins 内调用 docker - /mydata/docker/suanfa/www:/app/www networks: - piaowunet restart: unless-stopped volumes: jenkins-data-piaowu: {} # Jenkins 数据持久化 redis-data-piaowu: {} # 空对象表示使用默认配置 mysql-data-piaowu: {} # 空对象表示使用默认配置 gitea-data-piaowu: {} # Gitea 数据持久化 networks: piaowunet: driver: bridge