• 0 Posts
  • 3 Comments
Joined 2 years ago
cake
Cake day: June 1st, 2023

help-circle
  • Or just something as simple as using a SMB/CIFS share for your data. Instead of mounting the share before running your container, you can make Docker do it by specifying it like this:

    services:
      my-service:
        ...
        volumes:
          - my-smb-share:/data:rw
    
    volumes:
      my-smb-share:
        driver_opts:
          type: "smb3"
          device: "//mynas/share"
          o: "rw,vers=3.1.1,addr=192.168.1.20,username=mbirth,password=supersecret,cache=loose,iocharset=utf8,noperm,hard"
    

    For type you can use anything you have a mount.<type> tool available, e.g. on my Raspberry this would be:

    $ ls /usr/sbin/mount.*
    /usr/sbin/mount.cifs*  /usr/sbin/mount.fuse3*       /usr/sbin/mount.nilfs2*  /usr/sbin/mount.ntfs-3g@  /usr/sbin/mount.ubifs*
    /usr/sbin/mount.fuse@  /usr/sbin/mount.lowntfs-3g@  /usr/sbin/mount.ntfs@    /usr/sbin/mount.smb3@
    

    And the o parameter is everything you would put as options to the mount command (e.g. in the 4th column in /etc/fstab). In the case of smb3, you can run mount.smb3 --help to see a list of available options.

    Doing it this way, Docker will make sure the share is mounted before running the container. Also, if you move the compose file to a different host, it’ll just work if the share is reachable from that new location.