Warum erhalte ich diesen Fehler? ERROR: In file './docker-compose.yml', volume 'mariavolume' must be a mapping not a string.
Meine Docker-Compose-Datei ist fast identisch mit dieser: 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
Leider gibt es keine solche Funktion.
Sie können in Docker-Compose keine Top-Level-Volumes zuordnen.
Hier sind die Optionen:
Erstellen Sie ein Volume außerhalb der Zusammenstellung (mit Zuordnung) und verwenden Sie es in Ihrer Zusammenstellung.
volumes:
maria_volume:
external:
name: volume-name
In meinem Fall war dies der Fall, weil ich es versäumt habe, einen :
nach dem Volume-Namen hinzuzufügen.
Anstatt:
volumes:
- mysqldata:
Ich hatte geschrieben:
volumes:
- mysqldata
docker-compose up
gab mir den gleichen Fehler wie oben.
versuche dies:
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume:
external:
name: ~/mariadb
Für mich funktioniert das:
In # docker_compose.yml:
volumes:
postgres_data: {}
static: { }
Versuche dies:
version: '2'
services:
...
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- ~/mariadb:/var/lib/mysql
Ich habe dieses Problem gerade selbst angegangen. Wenn Sie nur möchten, dass ein Volume Daten speichert, gehen Sie wie folgt vor. Dadurch wird ein Volume erstellt/wiederverwendet, das als Teil des Docker-Grafiktreibers auf der Festplatte verbleibt. Die nächste Frage ist, wo das ist. Sie finden es im Docker-Bild - Standardspeicherort - C:\Users\Public\Documents\Hyper-V\Virtual hard disks
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume:
Natürlich, wenn Sie ein Host-Verzeichnis dem Docker zuordnen, anstatt es im Docker-Grafiktreiber zu haben. Dann können Sie es wie folgt tun.
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
Beachten Sie, dass beim Zuordnen über Host-Verzeichnisse als Volume (zumindest unter Windows) Probleme mit Lese-/Schreibberechtigungen auftreten können, die ich selbst noch nicht gelöst habe.
Ich habe das gleiche Thema wie Sie selbst getroffen und als letzten Verzweiflungsversuch habe ich versucht zu setzen
volumes:
- maria_volume: /var/lib/mysql
vor
environment:
MYSQL_ROOT_PASSWORD: example
Ich bin mir nicht sicher, welche Art von Magie hier angewendet wurde, aber in meinem Fall hat es funktioniert
Gib mir Bescheid!