docker postgres无法更改pgdata权限

时间:2020-04-26 15:52:33

标签: postgresql docker google-cloud-storage google-compute-engine gcsfuse

我有一个项目,我在其中使用Google计算引擎托管我的应用程序,并使用docker对其进行容器化。

我有一个postgres图像,我想在重新启动容器时使用卷使数据持久化。此外,我希望将数据库数据存储在Google存储中。所以我有一个Google存储桶,我已经在Google计算引擎中挂载了一个目录。具体来说,我所做的是mkdir /home/vetter_leo/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

我已经在网上搜索过,但到目前为止,我仍无法找到解决问题的方法。任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

我最终使用了@ mebius99表示的persistendend磁盘,它可以正常工作,所以不再有问题。