#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"