Docker-compose安装MySQL8.0.39

  1. 编写Dockerfile
FROM mysql:8.0.39

ENV TZ=Asia/Shanghai

RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
  1. 编写docker-compose.yml,与Dockerfile在同目录中
services:
  db:
    build:
      context: ./
    image: mysql:8.0.39
    container_name: mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=root # 设置root用户的密码
      - MYSQL_ROOT_HOST=%           # 允许从任何主机连接
      - TZ=Asia/Shanghai
    ports:
      - 3306:3306                # 映射端口到宿主机
    command: # MySQL启动时执行的命令行参数
      - --lower_case_table_names=1
      - --character_set_server=utf8mb4
      - --collation_server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
      - --max_allowed_packet=128M
      # 这个参数在MySQL8.4中已经被删除
      - --default_authentication_plugin=caching_sha2_password
    volumes:
      # MySQL8.0.19的my.cnf在/etc/mysql/my.cnf,新版本位置都在/etc/my.cnf
      # 如不需要也可以使用默认的将这个挂载删掉
      - /root/workspace/docker/my.cnf:/etc/my.cnf
      # MySQL数据
      - /root/workspace/docker/volumn:/var/lib/mysql
      # MySQL日志,在my.cnf中开启
      - /root/workspace/docker/volumn_logs:/var/log/mysql
  1. 运行docker-compose up -d
    • 如果网络问题镜像拉取不下来,需要配置docker源,或者在Dockerfile的拉取镜像代码配置一次性源
    • 输入指令后运行docker ps,查看容器是否正常运行,如果一直restart再通过docker logs container_id查看报错及解决方案
  2. 如果报错'/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
    • 可以尝试docker system prune -a,这样会清楚掉服务器docker中未使用的镜像缓存,可能可以解决这个问题(我是这样解决的)
posted @   颜骏  阅读(443)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示