Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Can´;t从Docker容器访问外部数据库_Macos_Docker_Networking - Fatal编程技术网

Macos Can´;t从Docker容器访问外部数据库

Macos Can´;t从Docker容器访问外部数据库,macos,docker,networking,Macos,Docker,Networking,我有一个简单的用于PHP和Nginx的Docker Compose文件。 PHP应用程序需要访问外部数据库(不在Docker中) docker-compose.yml: version: '3' services: nginx: image: nginx:latest container_name: nginx ports: - "80:80" - "443:443

我有一个简单的用于PHP和Nginx的Docker Compose文件。 PHP应用程序需要访问外部数据库(不在Docker中)

docker-compose.yml:

version: '3'

services: 
    nginx:
        image: nginx:latest
        container_name: nginx
        ports: 
            - "80:80"
        - "443:443"
        volumes:
            - ./docker/nginx/core:/etc/nginx/conf.d
            - ./:/var/www/
            - ./docker/nginx/logs:/var/log/nginx/
        links:
            - php

    php:
        build: .
        container_name: php-fpm
        environment:
            XDEBUG_CONFIG: remote_host=host.docker.internal remote_enable=1
        volumes:
            - ./:/var/www/
            - ./docker/php/logs:/var/log/
我们的数据库访问受到IP的限制。Docker主机(我的Mac)可以正常访问


如果我在主机上创建ssh隧道,并使用容器中的主机IP地址,则一切正常。但是我不想使用SSH隧道(我们在不同的项目上有许多数据库)。

我认为问题可能与每个Docker容器都有自己的内部IP地址有关,并且您的DBMS可能会将其检测为连接源(而不是主机IP)。有几种网络设置和模式,如“主机”模式,docker在其中共享主机网络()。我认为问题可能与以下事实有关:每个Docker容器都有自己的内部IP地址,而您的DBMS可能将其检测为连接源(而不是主机IP)。有几种网络设置和模式,如“主机”模式,docker在其中共享主机网络()。也许这些模式中的一种可以帮助你。