docker-compose.ymlでvolumes_fromが使えない時


結論

docer compose ver3ではvolumes_fromが廃止されているのでトップレベルでvolumesを定義すると同じことが実現できます。

volumes_fromは何をやっているか?

docker-compose.ymlには複数のコンテナを定義する場合があります。この別のコンテナのボリュームを持ってきたい、マウントしたいという場面でvolumes_fromを使用すると実現できます。

前提・状況

dockerのwp-cliを使用したい場面があり、検索していたらvolumes_fromを使用しているサイトが出てきました。

ソース

参考にしたものdocker-compose.yml一部抜粋

  wordpress:
    depends_on:
      - mysql
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html

  cli:
    image: wordpress:cli
    container_name: cli
    volumes_from:
      - wordpress
  
    volumes:
      wordpress_data:

これだとエディタ(PHPstorm)で編集している時点で赤く警告を出してくれていました。
以下のように編集して自分の環境では使うことができました。

  wordpress:
    depends_on:
      - mysql
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html

  cli:
    image: wordpress:cli
    volumes: wordpress_data
  
    volumes:
      wordpress_data:

※【参考】遭遇したエラー

最初以下のように設定したらエラーがでました。

  wordpress:
    depends_on:
      - mysql
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html

  cli:
    image: wordpress:cli
    container_name: cli
    volumes: wordpress
  
    volumes:
      wordpress_data:

volumesにコンテナ名を指定しているので当然ですが(汗

Error response from daemon: invalid mount config for type "volume": invalid mount path: 'wordpressimage' mount path must be absolute

参考サイト

とても助かりました。感謝です。

docker compose公式バージョン3では廃止されています。