我有一个简单的docker-composeconfigurationPHP-fpm和Nginx,我看不到任何PHP文件。 当我去本地主机,它显示文件未find。
我尝试了一切,我可以在网上find,但我所尝试的一切都失败了。 它工作正常的HTML,但不是PHP文件。 似乎是一个path问题,或类似的东西。
我在docker-compose logs遇到这个错误:
project3-PHP_1 | 172.17.0.5 - 29/Mar/2016:13:29:12 +0000 "GET /index.PHP" 404 project3-front_1 | 172.17.0.1 - - [29/Mar/2016:13:29:12 +0000] "GET / HTTP/1.1" 404 27 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/48.0.2564.116 Safari/537.36" project3-front_1 | 2016/03/29 13:29:12 [error] 8#8: *3 FastCGI sent in stderr: "Primary script unkNown" while reading response header from upstream,client: 172.17.0.1,server: localhost,request: "GET / HTTP/1.1",upstream: "fastcgi://172.17.0.2:9000",host: "localhost"
这是我的docker组成:
无法将泊坞窗图像推送到artifactory
在Docker-compose的命令键中使用容器的环境variables
在Windows下是否可以使用docker镜像访问硬件设备?
Docker生产准备好了PHP-fpm和Nginxconfiguration
supervisor.sock在docker集装箱中拒绝连接
project3-front: image: Nginx ports: - "80:80" links: - "project3-PHP:project3-PHP" volumes: - ".:/home/docker" - "./Nginxdir/default.conf:/etc/Nginx/conf.d/default.conf" - "./html:/usr/share/Nginx/html" project3-PHP: build: PHPdir volumes: - ".:/home/docker:rw" - "./html:/var/www/html" ports: - "9000:9000" working_dir: "/home/docker"
然后我的dockerfile为PHP:
FROM PHP:5.6-fpm EXPOSE 9000
我的Nginx的default.conf:
server { listen 80; server_name localhost; index index.PHP index.html; error_log /var/log/Nginx/error.log warn; access_log /var/log/Nginx/access.log; root /usr/share/Nginx/html; location ~ .PHP$ { fastcgi_pass project3-PHP:9000; fastcgi_index index.PHP; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
主文件夹的pwd是:
/media/revenge/share/PROJECTS/docker_images/PHP7-Nginx
文件层次结构是:
├── docker-compose.yml ├── html │ ├── index.PHP ├── Nginxdir │ ├── default.conf ├── PHPdir │ ├── dockerfile │ └── PHP.ini
整个文件夹是chmod 777
任何想法将不胜感激。 我确定有一些我没有得到的东西。 提前致谢。
在Windows上保存Docker容器状态
来自CoreOS的Docker和Rocket有什么区别?
在Windows主机上从Docker卷映射filebeat.yml权限
什么是在OpenShift中运行Nginx docker容器的正确方法?
如何在使用Docker运行Nginx时禁用Nginxcaching
终于找到它了:
我在Docker-compose的PHP部分中缺少这一行:
“./html:/usr/share/Nginx/html”
这里是docker-compose的样子:
project3-front: image: Nginx ports: - "80:80" links: - "project3-PHP:project3-PHP" volumes: - ".:/home/docker" - "./Nginxdir/default.conf:/etc/Nginx/conf.d/default.conf" - "./html:/usr/share/Nginx/html" project3-PHP: build: PHPdir volumes: - ".:/home/docker:rw" - "./html:/var/www/html" ports: - "9000:9000" working_dir: "/home/docker"
在Nginx的default.conf文件中的绝对根目录(这里是“/ usr / share / Nginx / html”)也必须在docker-compose的PHP部分中设置(仅在Nginx之前)
那是一种解脱 ;)
以下是你如何找到问题
泊坞窗,compose.yml
web: image: Nginx volumes: - "~/www/project:/var/www" - "~/www/project/vhost.conf:/etc/Nginx/conf.d/site.conf" # Add this row: command: [Nginx-debug,'-g','daemon off;']
编辑你的“ site.conf ”文件(在这个例子中是~/www/project/vhost.conf文件)通过error_log打开调试模式(在末尾添加“debug”字):
error_log "/var/log/Nginx/error.log" debug;
(重新)启动“网络”容器:
docker-compose stop web docker-compose up -d web
测试容器,所有容器都在运行吗?
docker-compose ps
在浏览器中测试
“连接”并查看或下载( http://blog.dcycle.com/blog/ae67284c/docker-compose-cp )并查看/var/log/Nginx/error.log文件。
在大多数情况下的问题
你还没有设置,或者你在“web”和“PHP-fpm”中使用不同的目录结构。 如果你想使用不同的结构,你必须在fastcgi_param SCRIPT_FILENAME处设置“fpm结构”,如下所示:
泊坞窗,compose.yml
PHPfpm: image: PHP:fpm volumes: - "~/www/project:/var/www/html/user/project"
“site.conf”
fastcgi_param SCRIPT_FILENAME /var/www/html/user/project$fastcgi_script_name;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。