尝试编辑 docker 容器文件时权限被拒绝

问题描述 投票:0回答:1

我正在开发一个具有管理员容器的 Docker 化项目。我需要增加在 /usr/local/etc/php/conf.d/0-upload_large_dumps.ini. 中找到的 post_max_size

的值。

我的问题是任何编辑文件的尝试都会导致“权限被拒绝”响应。通常,这将是通过使用 sudo 解决的问题,但我也得到了拒绝的许可。 以下是我尝试编辑的目录的输出,显示目标文件由 root 拥有:

/var/www/html $ cd /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d $ ls -l total 24 -rw-r--r-- 1 root root 113 Nov 18 22:10 0-upload_large_dumps.ini -rw-r--r-- 1 root root 23 Nov 18 22:11 docker-php-ext-pdo_dblib.ini -rw-r--r-- 1 root root 23 Nov 18 22:10 docker-php-ext-pdo_mysql.ini -rw-r--r-- 1 root root 22 Nov 18 22:11 docker-php-ext-pdo_odbc.ini -rw-r--r-- 1 root root 23 Nov 18 22:11 docker-php-ext-pdo_pgsql.ini -rw-r--r-- 1 root root 17 Nov 18 17:03 docker-php-ext-sodium.ini

docker-compose 的 adminer 部分如下:

adminer: image: adminer restart: always labels: - traefik.port=8080 - traefik.frontend.rule=Host:adminer

如何编辑 docker-compose 以便有权更新文件?

docker docker-compose permission-denied adminer
1个回答
1
投票
docker-compose.yaml

没有什么需要改变的。

如果你想改变它,你可以以 root 用户身份在容器中
exec
所以我想,现在你正在做

docker compose exec adminer ash

然后,您尝试编辑这些文件。

相反,你可以做的是:

docker compose exec --user root adminer ash

因此您将能够修改 root 拥有的那些文件。

这就是说,请记住 Docker 的哲学是容器应该是短暂的,因此您最好拥有自己的
Dockerfile

来永久编辑该配置文件。另一种方法是在现有文件上挂载一个文件来更改配置。

Dockerfile

中的适配示例: FROM adminer COPY ./0-upload_large_dumps.ini \ /usr/local/etc/php/conf.d/0-upload_large_dumps.ini ## ^-- copies a files from the folder where you build ## in order to override the existing configuration

然后在你的
docker-compose.yml

  adminer:
    build: .
    image: your-own-namespace/adminer
    restart: always
    labels:
      - traefik.port=8080
      - traefik.frontend.rule=Host:adminer

挂载文件覆盖配置文件示例:

adminer: image: adminer restart: always labels: - traefik.port=8080 - traefik.frontend.rule=Host:adminer volumes: - "./0-upload_large_dumps.ini:\ /usr/local/etc/php/conf.d/0-upload_large_dumps.ini" ## a local file `0-upload_large_dumps.ini` on your host ## will override the container ini file

© www.soinside.com 2019 - 2024. All rights reserved.