なぜこのエラーが発生するのですか? 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
残念ながら、そのような機能はありません。
Docker-composeでトップレベルボリュームをマッピングすることはできません。
オプションは次のとおりです。
作成の外にボリュームを作成し(マッピングを使用)、作成で使用します。
volumes:
maria_volume:
external:
name: volume-name
私の場合、:
ボリューム名の後。
の代わりに:
volumes:
- mysqldata:
私が入力した:
volumes:
- mysqldata
docker-compose up
は、上記と同じエラーを示しました。
これを試して:
volumes:
- maria_volume: /var/lib/mysql
volumes:
maria_volume:
external:
name: ~/mariadb
私にとってこれは機能します:
#docker_compose.ymlで:
volumes:
postgres_data: {}
static: { }
これを試して:
version: '2'
services:
...
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- ~/mariadb:/var/lib/mysql
私は自分でこの問題に取り組みました。ボリュームにデータを保存するだけの場合は、次のようにします。これにより、ドッカーグラフドライバーの一部としてディスクに保持されるボリュームが作成/再利用されます。次の質問はこれです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の場合)、読み取り/書き込み権限に問題が発生する可能性があることに注意してください。これはまだ解決していません。
自分と同じ問題にぶつかり、絶望の最後の行為として
volumes:
- maria_volume: /var/lib/mysql
前
environment:
MYSQL_ROOT_PASSWORD: example
ここでどのような魔法が適用されるのかわかりませんが、私の場合はうまくいきました
お知らせ下さい!