2016-12-27 80 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