You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行docker-compose up后MySQL容器立即退出的问题求助

问题:Docker Compose启动MySQL服务时因Unix套接字被占用退出

执行sudo docker-compose up命令时,MySQL服务启动失败并立即退出,报错提示有其他进程占用Unix套接字文件。已尝试重新配置MySQL和Docker、重装MySQL,问题仍未解决,但同一配置在其他机器可正常运行。

docker-compose.yml配置文件

version: '3'
services:
    app:
        build:
            context: ./
            dockerfile: Dockerfile
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '8080:80'
            - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
            - redis
            - mailhog
    mysql:
        image: 'mysql/mysql-server:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: "%"
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 1
        volumes:
            - 'sail-mysql:/var/lib/mysql'
            - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
            retries: 3
            timeout: 5s
    redis:
        image: 'redis:alpine'
        ports:
            - '${FORWARD_REDIS_PORT:-6379}:6379'
        volumes:
            - 'sail-redis:/data'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "redis-cli", "ping"]
            retries: 3
            timeout: 5s
    mailhog:
        image: 'mailhog/mailhog:latest'
        ports:
            - '${FORWARD_MAILHOG_PORT:-1025}:1025'
            - '${FORWARD_MAILHOG_DASHBOARD_PORT:-8025}:8025'
        networks:
            - sail
networks:
    sail:
        driver: bridge
volumes:
    sail-mysql:
        driver: local
    sail-redis:
        driver: local

终端报错信息

ech-hub-api-mysql-1    | 2023-01-26T06:43:34.458966Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
tech-hub-api-mysql-1    | 2023-01-26T06:43:34.460098Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.32) starting as process 1
tech-hub-api-mysql-1    | 2023-01-26T06:43:34.465939Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
tech-hub-api-mysql-1    | 2023-01-26T06:43:34.562068Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
tech-hub-api-mysql-1    | 2023-01-26T06:43:34.743847Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
tech-hub-api-mysql-1    | 2023-01-26T06:43:34.743907Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
tech-hub-api-mysql-1    | 2023-01-26T06:43:34.744467Z 0 [ERROR] [MY-010259] [Server] Another process with pid 62 is using unix socket file.
tech-hub-api-mysql-1    | 2023-01-26T06:43:34.744489Z 0 [ERROR] [MY-010268] [Server] Unable to setup unix socket lock file.
tech-hub-api-mysql-1    | 2023-01-26T06:43:34.744503Z 0 [ERROR] [MY-010119] [Server] Aborting
tech-hub-api-mysql-1    | 2023-01-26T06:43:36.299171Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.32)  MySQL Community Server - GPL.
tech-hub-api-mysql-1 exited with code 1
解决建议
  • 检查并停止宿主机本地MySQL进程
    执行以下命令查看是否有本地MySQL进程在运行:

    ps aux | grep mysqld
    

    如果存在相关进程,执行命令停止服务:

    sudo systemctl stop mysql
    # 或使用service命令(根据系统选择)
    sudo service mysql stop
    

    停止后重新运行sudo docker-compose up。

  • 清理Docker相关的MySQL残留进程与资源
    先停止所有相关容器:

    sudo docker-compose down
    

    清理残留的MySQL容器:

    sudo docker rm -f $(sudo docker ps -aq --filter name=mysql)
    

    清理Docker无效资源(包括僵尸进程、未使用的镜像/卷):

    sudo docker system prune -f
    

    完成后重新启动服务。

  • 修改MySQL容器的Unix套接字路径
    在docker-compose.yml的mysql服务中添加命令,指定自定义套接字路径,避免与宿主机冲突:

    mysql:
        # 保留原有配置
        command: --socket=/tmp/mysql.sock
    

    同时可添加临时卷挂载套接字目录,确保权限正常:

    mysql:
        volumes:
            # 保留原有卷配置
            - '/tmp/mysql-socket:/tmp'
    
  • 重置Docker MySQL数据卷
    如果数据卷中存在损坏的锁文件,可删除现有数据卷(注意:此操作会丢失所有MySQL数据,请提前备份):

    sudo docker volume rm sail-mysql
    

    重新运行sudo docker-compose up,系统会自动创建新的数据卷并初始化MySQL。

  • 检查宿主机套接字文件权限
    如果宿主机存在/var/run/mysqld/mysqld.sock文件,临时调整其权限测试:

    sudo chmod 777 /var/run/mysqld/mysqld.sock
    

    若问题解决,可考虑调整Docker容器的用户权限(如添加user: root到mysql服务配置),但需注意安全风险。


内容的提问来源于stack exchange,提问作者Lasha Lilu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:30:53