为什么postgres容器以root特权映射pd数据?

时间:2020-02-26 14:40:59

标签: docker docker-compose

我有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 :(得分:0)

如前所述,错误只是写许可问题

首先确认启动docker-compose up -d --build的USER对文件夹/home/ubuntu/PhpstormProjects/fntr/docker/postgres/pg-data拥有正确的权限

然后docker-compose.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