【问题标题】:docker for windows & mysql official containerdocker for windows & mysql 官方容器
【发布时间】:2019-06-11 15:11:10
【问题描述】:

我在最新的官方 MySQL docker 容器中运行 MySQL。 主机是Windows 10。

我正在使用“docker-compose up mysql”来启动以下服务:

version: '3.4'

services:
  mysql:
    image: mysql/mysql-server:latest
    container_name: sqlstore
    ports:
     - '3306:3306'
    expose:
     - '3306'
    env_file:
     - ./sqlconfig.env  
    volumes:
     - ./data:/var/lib/mysql

我遇到的问题是当 MySQL 数据库文件驻留在主机的卷上时,MySQL 无法运行并且我不断收到以下错误消息: "你是否已经在套接字上运行了另一个 mysqld 服务器:"/var/lib/mysql/mysql.sock""

值得注意的是,我确实确保该端口没有被其他进程使用,并且 MySQL 的文件确实正在写入主机上的 ./data 目录。

但是,当 MySQL 文件不在主机上而是在 docker 内部时,一切都会正常运行。

【问题讨论】:

    标签: mysql docker docker-compose dockerfile


    【解决方案1】:

    我遇到了同样的问题。如果您使用的是 Linux 容器,则问题很可能与 MySQL 容器和 Windows 主机所具有的不同文件系统类型有关。使用命名卷,即some-data:/var/lib/mysql 可能会解决此问题。工作示例:

    version: '3.4'
    
    services:
      mysql:
        image: mysql/mysql-server:latest
        container_name: sqlstore
        ports:
         - '3306:3306'
        expose:
         - '3306'
        env_file:
         - ./sqlconfig.env
        volumes:
         - datavol:/var/lib/mysql
    volumes:
      datavol:
    

    【讨论】:

    • 实际上,我确实尝试过这条路线,但是,我一直收到错误消息:撰写文件'.\docker-compose.yml'无效,因为:services.volumes 的配置选项不受支持:' datavol' mysql: image: mysql/mysql-server:latest container_name: sqlstore env_file: - ./sqlconfig.env volumes: - datavol:/var/lib/mysql volumes: datavol:
    • 添加了工作示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 2017-10-15
    • 2017-03-24
    • 1970-01-01
    • 2017-02-25
    • 2017-05-23
    相关资源
    最近更新 更多