javascript - 如何使用 docker compose 更改 docker 容器内的文件夹权限?
问题描述
我正在使用 nodejs 和自定义 nginx docker 映像https://github.com/bunkerity/bunkerized-nginx用于使用 docker compose 的应用程序。
Nginx 映像具有自动 Letencrypt 支持,我们可以绑定挂载一个文件夹来存储密钥文件。但是出于安全原因,它以 UID/GID 101 的非特权用户身份运行,并获得 /etc/letsencrypt 目录的权限错误。
我搜索了源代码,发现导致此错误的以下行
docker 镜像检查的条件
# /etc/letsencrypt
if [ ! -w "/etc/letsencrypt" ] || [ ! -r "/etc/letsencrypt" ] || [ ! -x "/etc/letsencrypt" ] ; then
echo "[!] ERROR - wrong permissions on /etc/letsencrypt"
exit 1
fi
我现在想要的是将上述目录的所有者设置为 root 或使用 docker compose/Docker 文件授予 777 权限。
我的 Docker 撰写文件
version: '3'
services:
bunkerized_nginx:
image: bunkerity/bunkerized-nginx
restart: always
depends_on:
- express-app
ports:
- 80:8080
- 443:8443
volumes:
- ./nginx-bunkerized/:/etc/letsencrypt:rw
#command:
#- chown root:root /etc/letsencrypt
#- chmod 777 /etc/letsencrypt
environment:
- SERVER_NAME=www.dasun123.ml
- USE_REVERSE_PROXY=yes
- REVERSE_PROXY_URL=/
- AUTO_LETS_ENCRYPT=yes
- REDIRECT_HTTP_TO_HTTPS=yes
- REVERSE_PROXY_HOST=http://express-app:3000
express-app:
build: .
environment:
- PORT=3000
解决方案
推荐阅读
- ios - 如何让用户通过使用 iOS 应用设置中的开关来更改他们的广告同意(个性化或非个性化)?
- reactjs - 自定义材质 UI 工具提示
- excel - 在excel vba中检查多个文件名
- html - 谷歌表:类 google.script.run 不起作用
- flutter - 如何在 Dart 字符串中插入字符?
- html - 为什么“font-family”属性中的字体名称是黄色而不是蓝色?
- machine-learning - 几乎不变的特征怎么办?
- numpy - 如何从张量中选择子张量
- javascript - 使用图像对 javasript 中的数据进行排序
- python - 通过 Python 与 USB 仪器(AlphaLab Gaussmeter)进行串行通信时出现问题