web-dev-qa-db-ja.com

エラー:ファイル './docker-compose.yml'では、ボリュームは文字列ではなくマッピングでなければなりません

なぜこのエラーが発生するのですか? 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
18
Richard

残念ながら、そのような機能はありません。

Docker-composeでトップレベルボリュームをマッピングすることはできません。

オプションは次のとおりです。

  • コンテナごとにボリュームを追加し、そこにマップします。 (ダニエルがやったように ここ
  • 作成の外にボリュームを作成し(マッピングを使用)、作成で使用します。

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

私の場合、:ボリューム名の後。

の代わりに:

volumes:
    - mysqldata:

私が入力した:

volumes:
    - mysqldata

docker-compose upは、上記と同じエラーを示しました。

6
Dhiraj Gupta

これを試して:

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

私にとってこれは機能します:

#docker_compose.ymlで:

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

これを試して:

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

私は自分でこの問題に取り組みました。ボリュームにデータを保存するだけの場合は、次のようにします。これにより、ドッカーグラフドライバーの一部としてディスクに保持されるボリュームが作成/再利用されます。次の質問はこれですDockerイメージ内で見つけることができます-デフォルトの場所-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:

もちろん、ホストディレクトリをdocker graphドライバー内に置くのではなく、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の場合)、読み取り/書き込み権限に問題が発生する可能性があることに注意してください。これはまだ解決していません。

0
JonWillis

自分と同じ問題にぶつかり、絶望の最後の行為として

volumes:
  - maria_volume: /var/lib/mysql

environment:
  MYSQL_ROOT_PASSWORD: example

ここでどのような魔法が適用されるのかわかりませんが、私の場合はうまくいきました

お知らせ下さい!

0
Daniel