ОШИБКА: В файле "./docker-compose.yml" том должен быть отображением не строки
Вопрос:
Почему я получаю эту ошибку?
ОШИБКА. В файле "./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
Ответы
Ответ 1
К сожалению, такой функции нет.
Вы не можете отобразить объем верхнего уровня в компоновке docker.
Вот варианты:
Ответ 2
В моем случае это происходило потому, что я пропустил добавление :
после имени тома.
Вместо:
volumes:
- mysqldata:
Я набрал:
volumes:
- mysqldata
docker-compose up
дал мне ту же ошибку, что и выше.
Ответ 3
попробуйте следующее:
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume:
external:
name: ~/mariadb
Ответ 4
Я только что решил эту проблему сам. Если вы просто хотите, чтобы том сохранял данные, выполните следующие действия. Это создаст/повторно использует 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
. Тогда вы можете сделать это следующим образом.
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
, что мне еще предстоит решить самостоятельно.
Ответ 5
Я столкнулся с тем же вопросом, что и вы, и как последний акт отчаяния я попытался поставить
volumes:
- maria_volume: /var/lib/mysql
перед
environment:
MYSQL_ROOT_PASSWORD: example
Я не уверен, какую магию применил здесь, но в моем случае он работал
Сообщите мне!
Ответ 6
Для меня это работает:
В # docker_compose.yml:
volumes:
postgres_data: {}
static: { }
Ответ 7
Попробуй это:
version: '2'
services:
...
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- ~/mariadb:/var/lib/mysql