经常会遇到本地搭建测试环境mysql的需求, docker应该是不二之选了吧,话不多说 上代码。
---
services:
mysql:
container_name: mysql
image: mysql:5.7
### 常用mysql启动参数介绍
# lower_case_table_names=1 不区分大小写
# max_connections 最大连接数
# default-time-zone 时区
# max_allowed_packet 最大传输包限制
# interactive_timeout 连接超时配置
command: "mysqld --lower_case_table_names=1
--max_connections=2000 --default-time-zone=+8:00
--max_allowed_packet=500M --interactive_timeout=288000
--sql_mode='NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'"
ulimits:
nofile:
soft: 65536
hard: 65536
restart: unless-stopped
ports:
# 设置mysql暴露端口 默认是63306
- ${DOCKER_DB_EXTERNAL_PORT:-63306}:3306
expose:
- 3306
environment:
- MYSQL_ROOT_PASSWORD=${DOCKER_MYSQL_ROOT_PASSWORD:-1x_ays.Rl05}
- MYSQL_USER=${DOCKER_MYSQL_PROGRAM_USER:-prog}
- MYSQL_PASSWORD=${DOCKER_MYSQL_PROGRAM_PASSWORD:-mM1_w.ccord}
volumes:
- "./data:/var/lib/mysql"
# mysql创建的时候,如果docker-entrypoint-initdb.d有.sql文件 会自动执行
- "./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d:ro"
healthcheck:
test: '/usr/bin/mysql --user=root --password=$$MYSQL_ROOT_PASSWORD --execute "SHOW DATABASES;"'
interval: 10s
timeout: 40s
retries: 20
start_period: 120s