首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在云运行时用gcsfuse挂载桶

无法在云运行时用gcsfuse挂载桶
EN

Stack Overflow用户
提问于 2021-12-18 21:12:29
回答 1查看 1.9K关注 0票数 4

随着第二代运行时的Google运行,现在可以使用gcs引信挂载。

https://cloud.google.com/run/docs/tutorials/network-filesystems-fuse

python3示例运行良好。不幸的是,我一直在我的Dockerfile中得到这个错误:

代码语言:javascript
运行
复制
bin/fusermount: failed to open /dev/fuse: Permission denied
mountWithArgs: mountWithConn: Mount: mount: running /bin/fusermount: exit status 1

Dockerfile

代码语言:javascript
运行
复制
# https://github.com/chiaen/docker-gcsfuse
FROM golang:1.17.5-alpine as gcsfuse
RUN apk add --no-cache git
ENV GOPATH /go
RUN go get -u github.com/googlecloudplatform/gcsfuse

FROM composer:2 as vendor
COPY composer.json composer.json
COPY composer.lock composer.lock
RUN composer install --ignore-platform-reqs --no-interaction --prefer-dist

FROM craftcms/nginx:7.4

ENV MNT_DIR /mnt/gcs

USER root
RUN apk add --no-cache mysql-client postgresql-client ca-certificates fuse nano sudo tini bash

RUN mkdir -p $MNT_DIR
RUN chown www-data:www-data $MNT_DIR
USER www-data

COPY --chown=www-data:www-data --from=vendor /app/vendor/ /app/vendor/
COPY --chown=www-data:www-data . .
COPY --from=gcsfuse /go/bin/gcsfuse /usr/local/bin
COPY supervisor.conf /etc/supervisor/conf.d/supervisor.conf

由于有几个文件,我把所有的文件放到一个github回购。https://github.com/internetztube/cloud-run-persistent-storage-issue

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-21 02:25:48

更新:

我解决了在云运行中挂载 GCS桶和读取/写入对象的的问题,并做了以下更改:

  • Dockerfile:

代码语言:javascript
运行
复制
# https://github.com/chiaen/docker-gcsfuse
FROM golang:1.17.5-alpine as gcsfuse
RUN apk add --no-cache git
ENV GOPATH /go
RUN go get -u github.com/googlecloudplatform/gcsfuse

FROM composer:2 as vendor
COPY composer.json composer.json
COPY composer.lock composer.lock
RUN composer install --ignore-platform-reqs --no-interaction --prefer-dist

FROM craftcms/nginx:7.4

ENV MNT_DIR /mnt/gcs

USER root
RUN apk add --no-cache mysql-client postgresql-client ca-certificates fuse nano sudo tini bash
RUN mkdir -p $MNT_DIR
RUN chown www-data:www-data $MNT_DIR

COPY --chown=www-data:www-data --from=vendor /app/vendor/ /app/vendor/
COPY --chown=www-data:www-data . .
COPY --from=gcsfuse /go/bin/gcsfuse /usr/local/bin
COPY supervisor.conf /etc/supervisor/conf.d/supervisor.conf

  • gcsfuse.sh中添加了-file-mode=777 -dir-mode=777gcsfuse命令,以便在GCS桶:

的挂载目录中启用读/写

代码语言:javascript
运行
复制
gcsfuse -o rw,allow_other -file-mode=777 -dir-mode=777 --foreground --debug_http --debug_gcs --debug_fuse --implicit-dirs $DISK_BUCKET $MNT_DIR

web/index.php.文件中用于测试的路径(/mnt/gcs/demo.txt而不是../storage/demo.txt)的

  • 硬编码

屏幕输出:

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70407189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档