为什么会出现此错误? ERROR: In file './docker-compose.yml', volume 'mariavolume' must be a mapping not a string.
我的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
答案 0 :(得分:7)
不幸的是,没有这样的功能。
您无法在docker-compose中映射顶级卷。
以下是选项:
在撰写之外创建一个卷(使用映射)并在您的撰写中使用它。
(select s.title from allsongs s
join beatles a ON s.id = a.songid)
union all
(select s.title from allsongs s
join elvis a ON s.id = a.songid);
答案 1 :(得分:6)
在我的情况下,这种情况发生了,因为我错过了在卷名后添加:
。
而不是:
volumes:
- mysqldata:
我打字了:
volumes:
- mysqldata
docker-compose up
给了我同样的错误。
答案 2 :(得分:1)
试试这个:
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume:
external:
name: ~/mariadb
答案 3 :(得分:0)
我遇到了与你自己相同的问题,并且作为绝望的最后一幕,我试着把
volumes:
- maria_volume: /var/lib/mysql
前
environment:
MYSQL_ROOT_PASSWORD: example
我不确定这里应用了什么样的魔法,但在我的情况下,它起作用了
让我知道!
答案 4 :(得分:0)
对我而言,这有效:
#docker_compose.yml:
volumes:
postgres_data: {}
static: { }
答案 5 :(得分:0)
尝试一下:
version: '2'
services:
...
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- ~/mariadb:/var/lib/mysql
答案 6 :(得分:0)
我刚刚亲自解决了这个问题。如果您只想让卷存储数据,请执行以下操作。这将创建/重复使用作为docker graph驱动程序一部分持久化到磁盘的卷。下一个问题是这在哪里。您可以在docker映像中找到它-默认位置-$jsonFile1 = '{"val1":"ValueOne","val2":"ValueSecond","val3":"ValueThree","val4":"4","val5":"ValueFive","val6":"ValueSix"}';
$jsonFile2 = '{"0":"3","1":"5"}';
$first = json_decode($jsonFile1);
$second = json_decode($jsonFile2, true);
foreach ($first as $key => $firstvalue) {
if (in_array(substr($key, -1),$second)) {
echo "<strong>". $firstvalue . "</strong><br>";
} else {
echo "<em>". $firstvalue . "</em><br>";
}
}
C:\Users\Public\Documents\Hyper-V\Virtual hard disks
当然,如果您是将主机目录映射到Docker之后,而不是将其包含在docker graph驱动程序中。然后,您可以按照以下步骤进行操作。
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume:
请注意,当以卷的形式在主机目录上映射时(至少在Windows上),您可能会遇到读/写权限问题,这是我尚未解决的问题。
答案 7 :(得分:0)
正确的音量语法是
volumes:
first:
,其中第一个只是用于体积的占位符名称
答案 8 :(得分:0)
试试这个,它对我有用
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume:
drive: local