插件窝 干货文章 Docker Compose 部署 MySQL 时出错:如何解决依赖版本不一致?

Docker Compose 部署 MySQL 时出错:如何解决依赖版本不一致?

MySQL Docker Compose 版本 647    来源:    2025-03-31

解决 Docker Compose 部署 MySQL 时的依赖版本不一致问题

当使用 Docker Compose 部署 MySQL 时遇到依赖版本不一致的问题,通常有以下几种解决方案:

常见错误表现

  1. ERROR: for mysql Cannot create container for service mysql: Conflict. The container name "/mysql" is already in use
  2. ERROR: pull access denied for mysql, repository does not exist or may require 'docker login'
  3. ERROR: no matching manifest for linux/amd64 in the manifest list entries

解决方案

1. 指定明确的 MySQL 版本

docker-compose.yml 中明确指定 MySQL 版本,避免使用 latest 标签:

services:
  mysql:
    image: mysql:8.0  # 指定具体版本
    environment:
      MYSQL_ROOT_PASSWORD: example

2. 清理旧容器和卷

# 停止并删除旧容器
docker-compose down

# 删除未使用的卷
docker volume prune

3. 检查平台兼容性

如果使用 Apple Silicon (M1/M2) 芯片,可能需要指定平台:

services:
  mysql:
    image: mysql:8.0
    platform: linux/amd64  # 强制使用amd64架构
    environment:
      MYSQL_ROOT_PASSWORD: example

4. 检查网络和代理设置

# 测试能否拉取镜像
docker pull mysql:8.0

# 如有必要,配置Docker代理

5. 完整示例配置

version: '3.8'

services:
  mysql:
    image: mysql:8.0.33
    platform: linux/amd64
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: yourpassword
      MYSQL_DATABASE: yourdb
      MYSQL_USER: user
      MYSQL_PASSWORD: userpassword
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
    restart: unless-stopped

volumes:
  mysql_data:

排查步骤

  1. 检查 docker-compose.yml 文件语法是否正确
  2. 运行 docker-compose config 验证配置
  3. 查看详细日志:docker-compose up --build
  4. 检查端口是否被占用:netstat -tulnp | grep 3306

如果问题仍然存在,请提供具体的错误信息以便进一步分析。