获取Docker链接容器localhost指向主机localhost

时间:2015-12-09 10:34:22

标签: php networking docker dockerfile hosts

因此,在我的主机环境中,我在端口10000上运行此tomcat服务,因此我可以访问办公室内部服务。

我有一个Windows主机条目:

localhost developer.mycompany.com

所以我可以访问端点developer.mycompany.com:10000/some/url,如果成功则返回json响应。

我还有一个Docker compose文件,它已经启动了nginx和php-fpm容器,并将它们链接起来运行基于Linux的PHP开发环境。

我想要实现的是使docker容器知道developer.mycomoany.com主机条目。因此,当我的linke容器上的PHP代码向http://developer.mycompany.com:10000/some/url发送POST请求时,它知道主机条目并且能够达到该终点。

我尝试过配置net=host,但这不适用于链接容器。

PHP应用程序错误消息:

  

{“result”:{“success”:false,“message”:“创建资源时出错:[message] fopen():php_network_getaddresses:getaddrinfo failed:名称或服务未知\ n [file] / srv / http /vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php\n[line] 282 \ n [message] fopen(http://developer.mycompany.com:10000/app/register):无法打开流:php_network_getaddresses :getaddrinfo失败:名称或服务未知\ n [file] /srv/http/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php\n[line] 282“}}

如何在我的链接容器上启用我的PHP应用程序以与主机developer.mycompany.com(localhost)条目通信?

这是我的docker-compose:

app:
  image: linxlad/docker-php-fpm
  tty: true
  ports:
   - "9000:9000"
  volumes:
   - ./logs/php-fpm:/var/log/php-fpm
   - ~/Development/Apps/php-hello-world:/srv/http
web:
  image: linxlad/docker-nginx
  ports:
   - "8080:80"
  volumes:
   - ./conf/nginx:/etc/nginx/conf.d
   - ./logs/nginx:/var/log/nginx
   - ~/Development/Apps/php-hello-world:/srv/http
  links:
   - app

编辑:

她是我的docker机器的ifconfig输出。

enter image description here

由于

1 个答案:

答案 0 :(得分:0)

我找到了我的docker机器的IP,并在我的主机nginx代理配置中使用了它,然后将其重定向到我的docker容器中的nginx位置配置。

主持人nginx:

location /apps/myapp/appversion {
    proxy_pass   http://192.168.99.100:8080;
} 

Docker Nginx容器配置:

location /apps/myapp/appversion {
    try_files $uri $uri/ /index.php?args;
    if (!-e $request_filename) {
        rewrite ^/(.*)$ /index.php last;
    }
}