2016-12-27 103 views
5

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

我的目标是让它准备好仅使用简单的 docker-compose up 命令。

我设法让phpMyAdmin和数据库之间的连接工作,现在我被困在试图让Docker有相对路径到数据库卷,以使其一致。

这里是我有一个关于体积安装:

volumes: 
    - './database/mysql/:/var/lib/mysql' 

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

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

至于主持人,我使用与码头工人工具箱Windows,但我想docker-compose.yml为w不管操作系统如何。

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

编辑:添加正确的最终泊坞窗,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 
+0

但'/ var/lib/mysql'这是一个Linux路径! – Hackerman

+0

@Hackerman'/ var/lib/mysql'是Docker容器中不在我的主机上的路径 – Daniel

回答

4

当你Mount a host directory as a data volume,该文件说:

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

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

解释错误信息。

使用绝对路径links it to the OS(这是不是你想要的)

docker run -v c:\<path>:/c:\<container path> 
docker run -v /c/<path>:/c:\<container path> 

正如在 “Running a docker-compose “Getting Started” example causes “Invalid volume specification” on Windows” 中提到,建议先设置此docker-compose environment variable

创建.env文件路径泊坞窗-撰写。YML被置于与以下内容:

COMPOSE_CONVERT_WINDOWS_PATHS=1 

OP Daniel确认in the comments.env包括COMPOSE_CONVERT_WINDOWS_PATHS,相对路径工作

我会建议使用data volume name改为:它不依赖于主机路径名。

+0

所以相对路径根本不是一个选项? – Daniel

+1

@Daniel正确:对于主机,没有相对路径:仅限绝对路径或vaolume名称。 – VonC

+0

实际相对路径工作!我只需要按照你的建议,并将'COMPOSE_CONVERT_WINDOWS_PATHS = 1'添加到.env!你能否更新你的答案,以便我可以给你赏金? – Daniel