我的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
我的Dockerfile是
FROM postgres:10.5-alpine
COPY /docker-entrypoint-initdb.d/ /docker-entrypoint-initdb.d/
RUN chmod 0755 -R /docker-entrypoint-initdb.d/
我跑步时遇到问题
docker-compose up -d --build
使用用户“ 70”和组“ root”的错误权限创建了一个名为pg-data的文件夹
此权限不允许我执行任何操作,例如查看文件夹内部。另外,当我尝试用
重建容器时docker-compose up -d --build
我遇到错误
PermissionError:[Errno 13]权限被拒绝: '/ home / ubuntu / PhpstormProjects / fntr / docker / postgres / pg-data'[5262] 无法执行脚本docker-compose
我以ubuntu:ubuntu用户身份运行docker-compose。
在运行之前创建文件夹时,情况有所改变
docker-compose up -d --build
在这种情况下,文件夹的组为“ ubuntu”,但所有者仍为“ 70”
但没有任何效果,所有问题都存在
答案 0 :(得分:0)
Postgres在启动容器时运行入口点文件。
https://github.com/docker-library/postgres/blob/master/10/docker-entrypoint.sh#L36
此功能可更改docker容器内目录的权限。由于此目录也安装在主机文件系统上,因此权限反映在该文件系统上。
在系统上,检查当前映射到uid-999的用户。您可以从那里获得线索。避免在此处发布/ etc / passwd或/ etc / shadow文件
您需要在docker-compose中传递用户
请参见https://hub.docker.com/_/postgres->任意-用户说明