Postgresql 为什么postgres容器更改文件夹的所有者(docker compose)
我的docker-compose.yml是Postgresql 为什么postgres容器更改文件夹的所有者(docker compose),postgresql,docker,docker-compose,Postgresql,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_US
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——构建
使用用户“70”和组“root”的错误权限创建了名为pg data的文件夹
此权限不允许我执行任何操作,例如查看文件夹内部。此外,当我尝试用
docker compose up-d——构建
我犯了一个错误
PermissionError:[Errno 13]权限被拒绝:
“/home/ubuntu/PhpstormProjects/fntr/docker/postgres/pg data”[5262]
无法执行脚本docker compose
我以用户ubuntu:ubuntu的身份运行docker compose
当我在运行之前创建文件夹时,情况发生了一点变化
docker compose up-d——构建
在本例中,文件夹组为“ubuntu”,但所有者仍然为“70”
但是没有任何影响,所有问题都存在Postgres在启动容器时运行入口点文件 此函数用于更改docker容器内目录的权限。由于此目录也装载在主机文件系统上,因此权限会反映在那里 在您的系统上,检查当前映射到uid-999的用户。你可以从那里得到线索。避免在此处发布/etc/passwd或/etc/shadow文件 您需要在docker compose中传递用户
请参见->任意--用户注释请为图像添加Dockerfile。最有可能的情况是,容器正在以用户70的身份运行,并且正在使用此文件创建文件夹。在容器内,用户70可以通过
/etc/passwd
解析,但不能在主机上解析。我有dockerfile,但postgres中没有一些有趣的东西:10.5-alpine COPY/docker-entrypoint-initdb.d//docker-entrypoint-initdb.d/cat/etc/passwd | grep 999 guest sdklnd:x:999:guest:/tmp/guest sdklnd:/bin/bashI不能懂Postgres在容器中这样做,但我的文件系统有问题