Docker build failing when using gcsfuse to mount google storage

I have been trying to mount SQL and a storage bucket to my docker WordPress container. It appears to succeeding in mounting SQL, but failing mounting the bucket. The instance is based of of this post.

I have attached the Docker file and error below, as well as my build command.

  • Issues with artifactory Docker
  • Docker with shared X11 socket: Why can it “start” Firefox outside of the container?
  • Which file stores the docker image dependencies?
  • How can I have nginx in one container and php-fpm in another?
  • understanding parameters passed to -v in Docker
  • Kube-DNS not works
  • Build command:

    docker build -t ic/spm .


    FROM wordpress
    MAINTAINER Gareth Williams <>
    # Move login creds locally
    ADD ./creds.json /creds.json
    # install sudo, wget and gcsfuse
    ENV GCSFUSE_REPO=gcsfuse-jessie
    RUN   apt-get update && \
          apt-get -y install sudo && \
          apt-get install -y curl ca-certificates && \
          echo "deb $GCSFUSE_REPO main" > /etc/apt/sources.list.d/gcsfuse.list && \
          curl | apt-key add - && \
          apt-get update && \
          apt-get install -y gcsfuse wget && \
          apt-get remove -y curl --purge && \
          apt-get autoremove -y && \
          rm -rf /var/lib/apt/lists/*
    # Config fuse
    RUN chmod a+r /etc/fuse.conf
    RUN perl -i -pe 's/#user_allow_other/user_allow_other/g' /etc/fuse.conf
    # Setup sql proxy
    RUN sudo mkdir /cloudsql
    RUN sudo chmod 777 /cloudsql
    ADD cloud_sql_proxy.linux.amd64
    RUN mv cloud_sql_proxy.linux.amd64 cloud_sql_proxy && chmod +x ./cloud_sql_proxy
    RUN ./cloud_sql_proxy -dir=/cloudsql -fuse -credential_file=/creds.json &
    # mysql -u icroot -S /cloudsql/[INSTANCE_CONNECTION_NAME]
    # Perform Cloud Storage FUSE mounting for uploads folder
    RUN mkdir /mnt/uploads
    RUN chmod a+w /mnt/uploads
    #RUN chown www-data:www-data -R /mnt && groupadd fuse && gpasswd -a www-data fuse && chmod g+rw /dev/fuse
    USER www-data
    RUN gcsfuse --key-file /creds.json \
      --debug_gcs --debug_http --debug_fuse --debug_invariants \
      --dir-mode "777" -o allow_other spm-bucket /mnt/uploads


    Step 17 : RUN gcsfuse --key-file /creds.json   --foreground --debug_gcs --debug_http --debug_fuse --debug_invariants   --dir-mode "777" -o allow_other spm-bucket /mnt/uploads
     ---> Running in 7e3f31221bee
    Using mount point: /mnt/uploads
    Opening GCS connection...
    Opening bucket...
    gcs: Req              0x0: <- ListObjects()
    http: ========== REQUEST:
    GET HTTP/1.1
    User-Agent: gcsfuse/0.0
    Authorization: Bearer ya29.ElrQAw8oxClKt8YGvtmxhc7z2Y2LufvL0fBueq1UESjYYjRrdxukNTQqO1qfM8e8h-rqfbOWNSjVK2rCRXVrEDla-CiUVhHwT6X71Y1Djb0jDJg7z3KblgNQPrc
    Accept-Encoding: gzip
    http: ========== RESPONSE:
    HTTP/2.0 200 OK
    Content-Length: 31
    Alt-Svc: quic=":443"; ma=2592000; v="35,34"
    Cache-Control: private, max-age=0, must-revalidate, no-transform
    Content-Type: application/json; charset=UTF-8
    Date: Wed, 11 Jan 2017 09:19:05 GMT
    Expires: Wed, 11 Jan 2017 09:19:05 GMT
    Server: UploadServer
    Vary: Origin
    Vary: X-Origin
    X-Guploader-Uploadid: AEnB2UpTqXhtHW906FFDTRsz4FjHjFu_E84wYhvt0zhaVFuMpqSY1fsd1XcrEcpsYBBwX1mqf0ZXRVWJH05ThtDQIfFKHd4PFw
     "kind": "storage#objects"
    http: ====================
    gcs: Req              0x0: -> ListObjects() (1.793169206s): OK
    Mounting file system...
    mountWithArgs: mountWithConn: Mount: mount: running fusermount: exit status 1
    fusermount: failed to open /dev/fuse: Operation not permitted

  • How to run multiple times a Docker container with different parameters in Kubernetes?
  • Docker Base Simple image : Cannot start container XXX: exec: “cat”: executable file not found in $PATH
  • Can run ARM/rpi images in Docker on Windows but not linux
  • docker linux container doesn't support driver development?
  • replicas of a service in docker swarm remain 0/1 forever
  • Parsing a string to an array output from command line
  • 2 Solutions collect form web for “Docker build failing when using gcsfuse to mount google storage”

    If you’re running your container on GKE, and you want to use gcsfuse, permissions should automatically be inherited in your account locally. Also…there is a caveat that you need to make sure that the cluster your running needs to have storage access. So make sure your cluster has the storage permissions set to full access. That way gcsfuse can mount your buckets on GCS within the container without having to worry about passing credential files and all that stuff…making the implementation pretty straight forward.

    In your docker file…make sure you’re doing your apt commands to get and install the gcsfuse application.

    I personally made a shell script that I call once the instance is up, that mounts my directories that I needed.

    Something like this…

    Docker Entry

    ENTRYPOINT ["/opt/"] script example

    gcsfuse [gcs bucket name] [local folder to mount as]

    When generating your GKE cluster, make sure to add the storage scope

    gcloud container clusters create [your cluster name] --scopes storage-full

    Hope this helps you.

    your www-data have permission problem in the dockerfile:

    #RUN chown www-data:www-data -R /mnt && groupadd fuse && gpasswd -a www-data fuse && chmod g+rw /dev/fuse

    uncomment this line

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.