docker-compose.yml
web:
build: ./docker-images/nginx
ports:
- "8080:80"
volumes:
- ./:/var/www/
- ./docker-conf/vhost.conf:/etc/nginx/sites-enabled/vhost.conf
links:
- php
php:
image: nmcteam/php56
volumes:
- ./docker-conf/php-fpm.conf:/etc/php5/fpm/php-fpm.conf
- ./:/var/www
nginx vhost.conf
server {
listen 80;
index index.php index.html;
server_name myapi.dev;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/myapi/public;
location / {
try_files $uri /index.php?$args;
}
location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
server {
listen 80;
index index.php index.html;
server_name mywebapp.dev;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/mywebapp/public;
location / {
try_files $uri /index.php?$args;
}
location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
windows主机文件
192.168.99.2 mywebapp.dev
192.168.99.2 myapi.dev
docker vm ip
$ docker-machine ip default
192.168.99.2
好吧,您已经看到了上面的代码块和配置。。。
我尝试使用Guzzle从mywebapp中向myapi.dev/resource?apikey=myapikey
位置发出GET请求。我尝试过google.com
,所以我知道它有效,我只是不知道应该如何在本地请求。
我尝试过的其他一些域都没有用:
127.0.0.1/resource?...
192.168.99.2/resource?...
0.0.0.0/resource?...
172.17.0.2/resource?...
我知道代码是有效的,因为我用过xampp,它有效,但没有上面的docker配置。
如果我理解你所写的内容是正确的,那么你已经将myapi.dev添加到了windows主机文件中,但没有将docker vm添加到其中?如果你的网站在docker VM中运行,你需要在那里添加代码,否则它将无法解析你使用的自定义DNS(我假设你实际上没有用于全局DNS目的的域)。
因为你的nginx配置使用了特定的名称,所以你不能使用本地IP地址,因为它们不会被解析为那些nginx服务器条目。如果定义了一个默认的nginx服务器,那么您最终会得到一个。