[英]MacOS - In file './docker-compose.yml', volume must be a mapping, not an array
[英]ERROR: In file './docker-compose.yml', volume must be a mapping not a string
問題:為什么會出現此錯誤?
錯誤:在文件“./docker-compose.yml”中,卷“mariavolume”必須是映射而不是字符串。
我的 docker-compose 文件幾乎與這個相同: https : //docs.docker.com/compose/wordpress/
version: '2'
services:
wordpress:
image: wordpress:latest
restart: always
depends_on:
- db
ports:
- 8080:80
environment:
WORDPRESS_DB_PASSWORD: example
WORDPRESS_DB_HOST: 3306
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume: ~/mariadb
在我的情況下,發生這種情況是因為我錯過了在卷名后添加:
。
代替:
volumes:
- mysqldata:
我輸入了:
volumes:
- mysqldata
docker-compose up
給了我與上面相同的錯誤。
不幸的是,沒有這樣的功能。
您無法在 docker-compose 中映射頂級卷。
以下是選項:
在撰寫之外創建一個卷(帶映射)並在你的撰寫中使用它。
volumes: maria_volume: external: name: volume-name
我剛剛自己解決了這個問題。 如果您只是想要一個卷來存儲數據,請執行以下操作。 這將創建/重用作為Docker
圖形驅動程序的一部分持久保存到磁盤的volume
。
下一個問題是這是哪里? .
您可以在 docker 鏡像中找到它 - 默認位置 -
C:\\Users\\Public\\Documents\\Hyper-V\\虛擬硬盤
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume:
當然,如果您將主機目錄映射到 docker 而不是將它放在Docker
圖形驅動程序中。 然后你可以按如下方式進行。
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume:
driver: local
driver_opts:
o: bind
type: none
device: /C/mariadb
請注意,在將主機目錄映射為卷(至少在 Windows 上)時,您可能會遇到read/write
權限問題,這是我自己尚未解決的問題。
嘗試這個:
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume:
external:
name: ~/mariadb
卷的正確語法是volumes: first:
其中 first 只是用於音量的占位符名稱
嘗試這個:
version: '2'
services:
...
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- ~/mariadb:/var/lib/mysql
我遇到了和你一樣的問題,作為最后的絕望行為,我試着把
volumes:
- maria_volume: /var/lib/mysql
前
environment:
MYSQL_ROOT_PASSWORD: example
我不確定這里應用了什么樣的魔法,但就我而言,它奏效了
讓我知道!
試試這個,它對我有用
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume:
drive: local
對我來說這有效:
在#docker_compose.yml 中:
volumes:
postgres_data: {}
static: { }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.