web-dev-qa-db-fra.com

ERREUR: dans le fichier './docker-compose.yml', le volume doit être un mappage et non une chaîne

Pourquoi ai-je cette erreur? ERROR: In file './docker-compose.yml', volume 'mariavolume' must be a mapping not a string.

Mon fichier docker-compose est presque identique à celui-ci: 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
8
Richard

Malheureusement, cette fonctionnalité n'existe pas.

Vous ne pouvez pas mapper un volume de niveau supérieur dans docker-compose.

Voici les options:

  • Ajout de volume par conteneur et mappez-le. (comme ce que Daniel a fait ici )
  • Créez un volume en dehors de la composition (avec mappage) et utilisez-le dans votre composition.

    volumes:
       maria_volume: 
           external:
               name: volume-name
    
6
DaNeSh

Dans mon cas, cela se produisait car j'avais oublié d'ajouter un : après le nom du volume.

Au lieu de:

volumes:
    - mysqldata:

J'avais tapé:

volumes:
    - mysqldata

docker-compose up m'a donné la même erreur que ci-dessus.

3
Dhiraj Gupta

essaye ça:

    volumes:
        - maria_volume: /var/lib/mysql
volumes:
    maria_volume: 
        external:
            name: ~/mariadb
1
Mohsen ZareZardeyni

Pour moi cela fonctionne:

Dans # docker_compose.yml:

volumes:
  postgres_data: {}
  static: { }
0
Deepak Sharma

Essaye ça:

version: '2'
services:
  ...
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - ~/mariadb:/var/lib/mysql
0
wildloop

Je courais dans le même problème que vous et comme dernier acte de désespoir, j'ai essayé de

volumes:
  - maria_volume: /var/lib/mysql

avant

environment:
  MYSQL_ROOT_PASSWORD: example

Je ne suis pas sûr du type de magie appliqué ici, mais dans mon cas, cela a fonctionné

Faites le moi savoir!

0
Daniel