LinMinquan's Blog

Experience technology to change life

Deploy Mysql 8.0.36 via Docker in Ubuntu 22.04

走了些弯路,记录下。

用 docker compose 部署的,docker-compose.yml 内容如下:

version: '3'
services:
  db:
    image: mysql:8.0.36
    restart: always
    container_name: mysql8
    command:
      --max_connections=500
    environment:
      - MYSQL_ROOT_PASSWORD=your_password
    volumes:
      - /opt/docker/mysql8.0.36/datadir:/var/lib/mysql
      - /opt/docker/mysql8.0.36/config/my.cnf:/etc/mysql/my.cnf
    ports:
      - 3306:3306

MySQL 8.0.36 镜像的选择,在 https://hub.docker.com/_/mysql,选择了 8.0.36。想改它的 max_connections,后来发现进它的 container 里,vi 命令无法使用,想改一下 my.cnf 都改不了。网上说用 apt 命令安装下,但在这 container 里,连 apt 命令也用不了。后来注意到有 8.0.36-debian 版本,后者应该是基于 debian 的,试了下,可以用 apt 命令。但是在阿里云,apt 命令无法下载。

最后,用了上面的 docker-compose.yml,在宿主机上,/opt/docker/mysql8.0.36/config/my.cnf 内容如下:

[mysqld]
character-set-server=utf8mb4
default-time-zone='+8:00'
innodb_rollback_on_timeout='ON'
max_connections=500

可以不用映射 /etc/mysql/my.cnf,直接在 command 里加上 --max_connections=500 也可以。 当有多个 command 时,用数组形式,如:

command:
  - --max_connections=500
  - --log-bin

Share