Search code examples
laraveldockerpngjpegdocker-volume

Docker volume usage for storing jpg


So, i built a small application to test how docker works, is a small laravel app that registers users with its profile image. Everything is working properly but the profile image is not being display.

I assume this is because how docker works (ephemeral, unchange, etc), so i was reading a bit about volumes but unfortunately i was not able to make it work.

The images are stored inside a folder called uploads within public folder (laravel structure).

In my docker-compose.yml file i have the following volumes defined:

    volumes:
      - mysql-data:/var/lib/mysql

So i tried to add the one that i need, something like this:

    volumes:
      - mysql-data:/var/lib/mysql
      - user-images:/app/public/uploads
    volumes:
      mysql-data:
      user-images:

I also tried with bind mounts but i think this can only be used using docker container run (not quite sure).

Any idea on how could i fix this?

Thanks


Solution

  • user-images:/app/public/uploads would be a named volume, defined in /var/lib/docker/volumes

    If you want to use a bind mount, that is mounting an host folder as a volume, use a path:

    volumes:
      - "./user-images:/app/public/uploads"
    

    See also "Laravel + Docker" and its part 2 for a more complete example.