docker compose 部署单机mysql

118 阅读1分钟

docker compose文件

  1. vi mysql.yml加入以下内容。
services:
  mysql:
    image: container-registry.oracle.com/mysql/community-server:8.0
    restart: always
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      TZ: Asia/Shanghai
    ports:
      - 3306:3306
    volumes:
      - /srv/mysql/data:/var/lib/mysql
      - /srv/mysql/logs:/var/log/mysql
      - /srv/mysql/conf/my.cnf:/etc/mysql/my.cnf
    networks:
      - mysql-n
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s     # 每隔 10 秒检查一次
      timeout: 10s      # 检查的超时时间
      retries: 3        # 连续 3 次失败后标记为不健康

networks:
  mysql-n:
    driver: bridge

#权限
chmod -R 777 /srv/mysql/

2. 启动 docker compose -f ./mysql.yml up -d

  1. 进入容器,设置默认root账号允许所有ip访问 docker exec -it mysql mysql -u root -p
UPDATE mysql.user SET host='%' WHERE user='root';

FLUSH PRIVILEGES;

image.png

my.conf配置

vi /srv/mysql/conf/my.cnf

[mysqld]  
# 基础配置  
character-set-server = utf8mb4  
collation-server = utf8mb4_general_ci  
max_connections = 50  
# 性能优化  
thread_cache_size = 4  
table_open_cache = 256  
# InnoDB 引擎优化  
innodb_buffer_pool_size = 1G  
innodb_log_file_size = 128M  
innodb_log_buffer_size = 8M  
innodb_flush_log_at_trx_commit = 1  
innodb_file_per_table = 1  
innodb_flush_method = O_DIRECT  
# 日志相关  
log_error=/var/log/mysql/error.log  
slow_query_log=1  
slow_query_log_file=/var/log/mysql/slow.log  
long_query_time   = 1  
# 网络优化  
max_allowed_packet = 16M  

重启mysql docker compose -f ./mysql.yml restart

到此单机的mysql部署完毕。