Почему контейнер postgres отображает pd-данные с привилегиями root? - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть docker -compose.yml со следующим описанием базы данных

  database:
    container_name: k4fntr_database
    build: ./docker/postgres
    restart: always
    environment:
      ENV: ${APP_ENV}
      TESTING_DB: ${DB_DATABASE_TESTING}
      POSTGRES_DB: ${DB_DATABASE}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    ports:
      - "15432:5432"
    volumes:
    - ./docker/postgres/pg-data:/var/lib/postgresql/data
    networks:
      - backend-network

Моя проблема в том, что каталог pg-data создается с привилегиями, и когда я пытаюсь перестроить свой контейнер, я получаю ошибку

docker-compose up -d --build
Traceback (most recent call last):
  File "bin/docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 72, in main
  File "compose/cli/main.py", line 128, in perform_command
  File "compose/cli/main.py", line 1077, in up
  File "compose/cli/main.py", line 1073, in up
  File "compose/project.py", line 548, in up
  File "compose/service.py", line 351, in ensure_image_exists
  File "compose/service.py", line 1106, in build
  File "site-packages/docker/api/build.py", line 160, in build
  File "site-packages/docker/utils/build.py", line 30, in tar
  File "site-packages/docker/utils/build.py", line 49, in exclude_paths
  File "site-packages/docker/utils/build.py", line 214, in rec_walk
  File "site-packages/docker/utils/build.py", line 184, in rec_walk
PermissionError: [Errno 13] Permission denied: '/home/ubuntu/PhpstormProjects/fntr/docker/postgres/pg-data'
[8296] Failed to execute script docker-compose

1 Ответ

0 голосов
/ 27 февраля 2020

как сказано, ошибка - просто проблема с разрешением на запись

Сначала подтвердите, что ПОЛЬЗОВАТЕЛЬ, который запускает docker-compose up -d --build, получил правильное разрешение для папки /home/ubuntu/PhpstormProjects/fntr/docker/postgres/pg-data

Затем docker -композит. yml

database:
    container_name: k4fntr_database
    build: ./docker/postgres
    restart: always
    privileged: true    # <-- Add this
    environment:
      ENV: ${APP_ENV}
      TESTING_DB: ${DB_DATABASE_TESTING}
      POSTGRES_DB: ${DB_DATABASE}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    ports:
      - "15432:5432"
    volumes:
      - "./docker/postgres/pg-data:/var/lib/postgresql/data:rw" # <-- add :rw at the end
    networks:
      - backend-network
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...