Suisse
Suisse

Reputation: 3613

Host path not allowed as volume source, you need to reference an Azure File Share defined in the 'volumes' section

My simple docker-compose.yaml file:

version: '3'
services:
  website:
    image: php:7.4-cli
    container_name: php72
    volumes:
      - .hi:/var/www/html
    ports:
      - 8000:80

in folder hi/ I have just an index.php with a hello world print in it. (Do I need to have a Dockerfile here also?)

Now I just want to run this container with docker compose up:

$ docker compose up
host path ("/Users/xy/project/TEST/hi") not allowed as volume source, you need to reference an Azure File Share defined in the 'volumes' section

What has "docker compose" up to do with Azure? - I don't want to use Azure File Share at this moment, and I never mentioned or configured anything with Azure. I logged out of azure with: $az logout but got still this strange error on my macbook.

Upvotes: 6

Views: 3498

Answers (2)

soarwing52
soarwing52

Reputation: 39

I was testing to deploy docker compose on Azure and I faced the same problem as yours

then I tried to use docker images and that gave me the clue:

it says: image command not available in current context, try to use default

so I found the command "docker context use default"

and it worked!

so Azure somehow changed the docker context, and you need to change it back

https://docs.docker.com/engine/context/working-with-contexts/

Upvotes: 3

Ethan Lim
Ethan Lim

Reputation: 31

I've encountered the same issue as you but in my case I was trying to use an init-mongo.js script for a MongoDB in an ACI. I assume you were working in an Azure context at some point, I can't speak on that logout issue but I can speak to volumes on Azure.

If you are trying to use volumes in Azure, at least in my experience, (regardless if you want to use file share or not) you'll need to reference an Azure file share and not your host path.

Learn more about Azure file share: Mount an Azure file share in Azure Container Instances

Also according to the Compose file docs:

The top-level volumes key defines a named volume and references it from each service’s volumes list. This replaces volumes_from in earlier versions of the Compose file format.

So the docker-compose file should look something like this

docker-compose.yml

version: '3'

services:
  website:
    image: php:7.4-cli
    container_name: php72
    volumes:
      - hi:/var/www/html
    ports:
      - 8000:80
      
volumes:
    hi:
      driver: azure_file
      driver_opts:
          share_name: <name of share>
          storage_account_name: <name of storage account>



 

Then just place the file/folder you wanted to use in the file share that is driving the volume beforehand. Again, I'm not sure why you are encountering that error if you've never used Azure but if you do end up using volumes with Azure this is the way to go.

Let me know if this helps!

Upvotes: 3

Related Questions