我正在开发一个具有管理员容器的 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-compose.yaml
没有什么需要改变的。
如果你想改变它,你可以以 root 用户身份在容器中
exec
docker compose exec adminer ash
然后,您尝试编辑这些文件。
相反,你可以做的是:
docker compose exec --user root adminer ash
因此您将能够修改 root 拥有的那些文件。
这就是说,请记住 Docker 的哲学是容器应该是短暂的,因此您最好拥有自己的
来永久编辑该配置文件。另一种方法是在现有文件上挂载一个文件来更改配置。
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