docker-compose.yml 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. services:
  2. mysql80-1:
  3. image: registry.cn-chengdu.aliyuncs.com/reghao/mysql:8.0.36
  4. container_name: mysql80-1
  5. hostname: mysql80-1
  6. ports:
  7. - "33061:3306"
  8. environment:
  9. MYSQL_ROOT_PASSWORD: "Root_123456"
  10. volumes:
  11. - /etc/localtime:/etc/localtime:ro
  12. - /opt/docker/mysql80a/conf/my.cnf:/etc/mysql/conf.d/my.cnf
  13. - /opt/docker/mysql80a/data:/var/lib/mysql
  14. - /opt/docker/mysql80a/log:/var/log/mysql
  15. healthcheck:
  16. test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-u", "root", "-p$${MYSQL_ROOT_PASSWORD}"]
  17. interval: 5s
  18. timeout: 5s
  19. retries: 10
  20. networks:
  21. mgr-net:
  22. ipv4_address: 172.20.0.11
  23. mysql80-2:
  24. image: registry.cn-chengdu.aliyuncs.com/reghao/mysql:8.0.36
  25. container_name: mysql80-2
  26. hostname: mysql80-2
  27. ports:
  28. - "33062:3306"
  29. environment:
  30. MYSQL_ROOT_PASSWORD: "Root_123456"
  31. volumes:
  32. - /etc/localtime:/etc/localtime:ro
  33. - /opt/docker/mysql80b/conf/my.cnf:/etc/mysql/conf.d/my.cnf
  34. - /opt/docker/mysql80b/data:/var/lib/mysql
  35. - /opt/docker/mysql80b/log:/var/log/mysql
  36. healthcheck:
  37. test: [ "CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-u", "root", "-p$${MYSQL_ROOT_PASSWORD}" ]
  38. interval: 5s
  39. timeout: 5s
  40. retries: 10
  41. depends_on:
  42. mysql80-1:
  43. condition: service_healthy
  44. networks:
  45. mgr-net:
  46. ipv4_address: 172.20.0.12
  47. mysql80-3:
  48. image: registry.cn-chengdu.aliyuncs.com/reghao/mysql:8.0.36
  49. container_name: mysql80-3
  50. hostname: mysql80-3
  51. ports:
  52. - "33063:3306"
  53. environment:
  54. MYSQL_ROOT_PASSWORD: "Root_123456"
  55. volumes:
  56. - /etc/localtime:/etc/localtime:ro
  57. - /opt/docker/mysql80c/conf/my.cnf:/etc/mysql/conf.d/my.cnf
  58. - /opt/docker/mysql80c/data:/var/lib/mysql
  59. - /opt/docker/mysql80c/log:/var/log/mysql
  60. healthcheck:
  61. test: [ "CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-u", "root", "-p$${MYSQL_ROOT_PASSWORD}" ]
  62. interval: 5s
  63. timeout: 5s
  64. retries: 10
  65. depends_on:
  66. mysql80-2:
  67. condition: service_healthy
  68. networks:
  69. mgr-net:
  70. ipv4_address: 172.20.0.13
  71. proxysql:
  72. image: proxysql/proxysql:2.6.3
  73. container_name: proxysql
  74. restart: always
  75. ports:
  76. - "6032:6032" # 管理接口 (SQL 命令行配置)
  77. - "6033:6033" # 业务访问接口 (应用连这里)
  78. volumes:
  79. - /etc/localtime:/etc/localtime:ro
  80. healthcheck:
  81. # 检查业务端口 6032 是否接受连接
  82. test: [ "CMD", "mysql", "-uadmin", "-padmin", "-h127.0.0.1", "-P6032", "-e", "SELECT 1" ]
  83. interval: 10s # 每 10 秒检查一次
  84. timeout: 5s # 超时时间 5 秒
  85. retries: 3 # 连续失败 3 次认为是不健康
  86. start_period: 10s # 容器启动后给 10 秒缓冲时间再开始检查
  87. networks:
  88. mgr-net:
  89. ipv4_address: 172.20.0.15
  90. networks:
  91. mgr-net:
  92. driver: bridge
  93. ipam:
  94. config:
  95. - subnet: 172.20.0.0/24