docker compose 安装 MySQL 8.0

文章目录

    首先要安装 docker,参考 Ubuntu Server 24.04 LTS 安装 docker

    然后创建一个新目录,在目录下新建一个 docker-compose.yaml 文件。
    配置文件内容如下:

    docker-compose.yaml

    services:
      mysql:
        image: mysql:8.0
        ports:
          - 3306:3306
        volumes:
          - ~/apps/mysql:/var/lib/mysql
        environment:
          - MYSQL_ROOT_PASSWORD=xxx
          - MYSQL_DATABASE=test
          - MYSQL_USER=test
          - MYSQL_PASSWORD=xxx
    

    注:

    • ports:端口配置语法通常采用 “HOST:CONTAINER” 的格式,其中 “HOST” 指的是主机上的端口,而 “CONTAINER” 指的是容器内部的端口。这个语法意味着 Docker 会将主机上的端口映射到容器内的端口。而如果不想将 3306 端口对外开放,可以直接写为 3306,而不是 3306:3306。
    • volumns: 是将容器中的 /var/lib/mysql 目录挂载到了宿主机的 ~/app/mysql 目录。而 /var/lib/mysql 目录是 MySQL 默认的写入数据文件的目录。即,存储的数据会保存到宿主机的 ~/app/mysql 目录。
    • environment: 环境变量,MYSQL_ROOT_PASSWORD 设置的是默认的 root 账号密码。MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD 这三个是可选设置,分别代表默认创建的数据库名,及这个数据库对应的超级管理员账号及密码。

    拉取镜像并运行容器

    docker compose up -d
    

    -d 参数是将运行容器在 detached 模式。不会因为断开远程连接而导致容器关闭。

    查看运行中的容器

    docker compose ps
    

    这个跟 linux 中的 ps 命令类似。输出结果:

    NAME              IMAGE       COMMAND                  SERVICE   CREATED          STATUS          PORTS
    xxx-mysql-1   mysql:8.0   "docker-entrypoint.s…"   mysql     39 seconds ago   Up 38 seconds   33060/tcp, 0.0.0.0:32768->3306/tcp, :::32768->3306/tcp
    

    登录 docker 中的 mysql

    输入:

    docker compose exec mysql /bin/bash
    

    即可看到 docker 中的 shell 提示,然后输入对应的 mysql 客户端命令即可进入 mysql。跟在正常 linux 宿主机中使用 mysql 命令是完全一样的。

    bash-5.1# mysql -uroot -p
    
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 9
    Server version: 8.0.37 MySQL Community Server - GPL
    

    最后

    在使用一个 docker 镜像之前,一定要详细阅读这个镜像的说明文档。例如:

    https://hub.docker.com/_/mysql/

    因为里面涉及很多的配置(环境变量)跟操作说明,跟在宿主机中直接安装 mysql 完全是两回事。比如,数据的备份及导入。

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式