我正在使用 nodejs 和自定义 nginx docker 映像 https://github.com/bunkerity/bunkerized-nginx 用于我使用 docker compose 的应用程序。
Nginx 映像具有自动 letencrypt 支持,我们可以绑定挂载文件夹来存储密钥文件。但是出于安全原因,它以 UID/GID 101 的非特权用户身份运行,并获得 /etc/letsencrypt 目录的权限错误.
我搜索了源代码,发现导致此错误的以下几行
# /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 权限。
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