我有一个项目,我使用谷歌计算引擎来托管我的应用程序和 docker 来容器化它。
我有一个 postgres 映像,我想在重新启动容器时使用一个卷来使我的数据持久化。此外,我希望将数据库数据存储在谷歌存储中。所以我有一个谷歌存储桶,我已经在我的谷歌计算引擎中安装了一个目录到这个存储桶。具体来说,我所做的是mkdir /home/vetter_leo/data
data 是我想用作卷的文件夹,然后我使用gcsfuse --dir-mode 777 --file-mode 777 -o allow_other --implicit-dirs artifacts.helenos-273112.appspot.com /home/vetter_leo/data/
.
我的 postgres 图像的 dockerfile 是这样的:
FROM postgres:latest
USER postgres
ENV POSTGRES_USER helenos
ENV POSTGRES_PASSWORD helenos
ENV POSTGRES_DB helenos
ENV PGDATA /var/lib/postgresql/data/pgdata
COPY init_helenos_schema.sql /docker-entrypoint-initdb.d/
EXPOSE 5432
我的 docker-compose 文件是这样的:
version: "3.5"
services:
postgres:
container_name: postgres
image: postgres
build:
context: .
dockerfile: ./postgres.prod.dockerfile
volumes:
- /home/vetter_leo/data:/var/lib/postgresql/data
networks:
default:
external:
name: helenos-network
这样做时,docker-compose -f docker-compose.yml up -d --build
我最终没有启动容器并显示此错误chmod: changing permissions of '/var/lib/postgresql/data/pgdata': Operation not permitted
。
我已经在网上搜索过,但到目前为止我还没有找到解决我的问题的方法。任何帮助将不胜感激。谢谢。