Docker卷MariaDB Windows

Dan*_*iel 6 mariadb docker docker-compose

我正在尝试Dockerize和Open Source我在大学二年级创建的项目,该项目使用MariaDB,phpMyAdmin和PHP/Yii Framework.

我的目标是准备好只使用一个简单的 docker-compose up 命令.

我设法获得phpMyAdmin和数据库工作之间的连接,现在我不得不试图让Docker拥有一个数据库卷的相对路径,以使其保持一致.

以下是关于音量安装的内容:

volumes:
  - './database/mysql/:/var/lib/mysql'
Run Code Online (Sandbox Code Playgroud)

这是将数据库文件存储在项目中,然后我可以忽略这些文件.gitignore .问题是当我docker-compose up使用此配置运行时,我得到:

Invalid volume specification: 'C:\Users\MySelf\coding\my_app\database\mysql:/var/lib/mysql:rw'

关于主机,我使用的是带有Docker Toolbox的Windows,但我希望docker-compose.yml无论操作系统如何都可以工作.

我看到其他类似的问题,但他们的错误来自Windows上的绝对路径问题,我不是在寻找.

编辑:添加正确的最终docker-compose.yml,希望它可以帮助

version: '2'
services:
  web_db:
    build: ./database/mysql
    command: "mysqld --innodb-buffer-pool-size=20M"
    volumes:
      - ./database/mysql/data/:/var/lib/mysql
      - ./database/mysql/initDB/create_tables.sql:/docker-entrypoint-initdb.d/create_tables.sql
    environment:
      MYSQL_ROOT_PASSWORD: 'YOURPASSWORD'
      MYSQL_DATABASE: 'support-technique'
      MYSQL_ROOT_HOST: '172.17.0.1'
    ports:
      - "3306:3306"
    container_name: web_db

  web:
    build: .
    depends_on:
      - web_db
    links:
      - web_db:db
    ports:
      - "80:80"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
      - web_db
    links:
      - web_db:mysql
    ports:
      - "8181:80"
    environment:
PMA_HOST: mysql
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 5

当您将主机目录挂载为数据卷时,文档说:

host-dir可以是绝对路径或名称值。如果您为 提供绝对路径host-dir,Docker 将绑定安装到您指定的路径。如果您提供一个名称,Docker 会通过该名称创建一个命名卷。

名称值必须以字母数字字符开头,后跟a-z0-9, _(下划线)、.(句点)或-(连字符)。
绝对路径以/(正斜杠)开头。

那解释了错误消息。

使用绝对路径将其链接到操作系统(这不是您想要的)

docker run -v c:\<path>:/c:\<container path>
docker run -v /c/<path>:/c:\<container path>
Run Code Online (Sandbox Code Playgroud)

“在 Windows 上运行 docker-compose“入门”示例导致“无效的卷规范”中所述,首先尝试设置此docker-compose 环境变量

.env在 docker-compose.yml 路径下创建文件,内容如下:

COMPOSE_CONVERT_WINDOWS_PATHS=1
Run Code Online (Sandbox Code Playgroud)

OP丹尼尔确认在评论.env包括COMPOSE_CONVERT_WINDOWS_PATHS,相对路径工作

我建议改用数据卷名称:它不依赖于主机路径名。