【发布时间】:2017-06-18 16:17:12
【问题描述】:
这只发生在 minikube 内的 docker 上
使用 minikube docker eval (minikube docker-env)在主机上操作
尝试使用 Nginx 为单个文件构建基本设置:
conf.d/example.conf
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name localhost;
location /file.json { root /data/; }
}
数据/文件.json
{"a": 1}
使用 docker nginx 镜像运行:
docker run -it --rm -v "$(PWD)/conf.d:/etc/nginx/conf.d":ro -v "$(PWD)/data:/data":ro -p 8085:80 nginx
curl http://localhost/file.json 给我2017/02/01 19:07:39 [error] 6#6: *1 open() "/data/file.json" failed (13: Permission denied)...
无法弄清楚如何解决这个问题...需要帮助!
到目前为止我已经尝试过:
提供自定义命令,例如
chmod -R o+x /data && ls -la data && nginx -g "daemon off;"-rwxrwx--- 1 root 1013 11 Feb 1 13:08 /data/file.jsonchmod 似乎无法正常工作。 两者都没有 :($ docker run -it --rm -v "$(PWD):/etc/nginx/conf.d":ro -v "$(PWD)/data:/data" -p 8085:80 nginx bash -c 'chown -R nginx:nginx /data/ && ls -la /data/ && nginx -g daemon off;"' total 8 drwxrwx--- 1 root 1013 102 Feb 1 13:08 . drwxr-xr-x 1 root root 4096 Feb 1 19:50 .. -rwxrwx--- 1 root 1013 11 Feb 1 13:08 pub_key.json将 docker 用户设置为
nginx-
chmod -R 777 data在主机上$ ls -la data drwxrwxrwx 3 antonk staff 102 Feb 1 17:08 data $ docker run -it --rm -v "$(PWD):/etc/nginx/conf.d":ro -v "$(PWD)/data:/data" -p 8085:80 nginx bash -c 'ls -la /data/ && nginx -g "daemon off;"' total 8 drwxrwx--- 1 root 1013 102 Feb 1 13:08 . drwxr-xr-x 1 root root 4096 Feb 1 20:20 .. -rwxrwx--- 1 root 1013 11 Feb 1 13:08 pub_key.json$ docker 版本 客户: 版本:1.13.1-rc1 API版本:1.23 围棋版本:go1.7.4 Git 提交:2527cfc 建成:2017 年 1 月 28 日星期六 00:43:00 操作系统/架构:darwin/amd64
服务器: 版本:1.11.1 API 版本:1.23(最低版本) 围棋版本:go1.5.4 Git 提交:5604cbe 建成:2016 年 4 月 27 日星期三 00:34:20 操作系统/架构:linux/amd64 实验:错误
minikube 版本:v0.15.0
【问题讨论】:
-
您是在 /Users 文件夹下运行它吗?在主机上运行 chmod 后,请在主机上和容器内包含一长串目录。
-
是的,/Users/... 在我的 Mac 上
-
您提供的所有输出都是在容器内运行命令。没有任何 docker 命令,在主机上运行命令的输出在哪里?
-
echo $(PWD)输出什么? -
/Users/antonk/...
标签: nginx docker file-permissions