Подтвердить что ты не робот

ОШИБКА: В файле "./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
4b9b3361

Ответ 1

К сожалению, такой функции нет.

Вы не можете отобразить объем верхнего уровня в компоновке docker.

Вот варианты:

  • Добавление объема на контейнер и его отображение. (например, что Даниэль сделал здесь)
  • Создайте том за пределами компоновки (с отображением) и используйте его в своей компоновке.

    volumes:
       maria_volume: 
           external:
               name: volume-name
    

Ответ 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