Rex-ray AWS S3 настройка внешнего тома (docker-compose не работает)

#docker #amazon-s3 #docker-compose #s3fs #rexray

#docker #amazon-s3 #docker-compose #s3fs #rexray

Вопрос:

Я пытаюсь использовать postgres и pgadmin с внешним томом rex-ray на AWS S3. Я сделал:

 Docker plugin install rexray/s3fs:0.11.4 S3FS_ACCESSKEY=XXXXXXXXXXXXX S3FS_SECRETKEY=XXXXXXXXXXXXXXXXX
  

А затем я создал два тома (для postgres и pgadmin):

 Docker volume create --driver rexray/s3fs:0.11.4 myrexvol1-1234
Docker volume create --driver rexray/s3fs:0.11.4 myrexvol2-1234
  

И я вижу тома при запуске docker volume ls .

Теперь я пытаюсь использовать эти внешние тома S3 в docker-compose, но это не работает, и в S3 ничего не создается:

 version: "3.8"
services:
  pgAdmin:
    restart: always
    container_name: pgadmincontainer
    image: dpage/pgadmin4:4.25
    ports:
      - "8000:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: email@admin.com
      PGADMIN_DEFAULT_PASSWORD: 1234
    volumes:
      - myrexvol1-1234:/var/lib/pgadmin
  postgres:
    image: postgres
    container_name: databasecontainer
    restart: always
    environment:
      POSTGRES_USER: me
      POSTGRES_PASSWORD: password
      POSTGRES_DB: database
    ports:
      - 5432:5432
    volumes:
      - ./sqlscripts:/docker-entrypoint-initdb.d
      - myrexvol2-1234:/var/lib/postgresql/data
volumes:
  myrexvol1-1234:
    name: myrexvol1-1234
    external: true
  myrexvol2-1234:
    name: myrexvol2-1234
    external: true
  

Что я делаю не так? Как ни странно, я могу вручную создать что-то внутри контейнера, а затем оно отражается внутри корзины S3, т.Е. :

 docker container run -it -v myrexvol2-1234:/myvol centos
  ...inside the container here...
# cd /myvol
# date >mydate
# ls -l
  

Ответ №1:

В каталоге entrypoint script PGDATA попробуйте изменить на пользовательские postgres.

 find "$PGDATA" ! -user postgres -exec chown postgres '{}'  
  

Он также пытается изменить права доступа :

 chmod 700 "$PGDATA" || :
  

Поскольку изменить владельца точки соединения томов невозможно, добавьте следующую переменную среды в определение службы postgres :

 PGDATA: "/var/lib/postgresql/data/pgdata"