将Docker链接到本地​​MySQL数据库[重复]

Posted

技术标签:

【中文标题】将Docker链接到本地​​MySQL数据库[重复]【英文标题】:Linking Docker to local MySQL database [duplicate] 【发布时间】:2018-08-01 04:47:19 【问题描述】:

我希望 Docker 连接到我在本地运行的预先存在的 mysql 数据库,而不是将 MySQL 数据库放在 Docker 或单独的卷中。

我使用的是 Laravel,因此是环境变量。

谁能帮忙?

这是我的 docker-compose.yml 文件:

version: '2'

services:
    web:
        image: nginx:latest
        ports:
            - "8080:80"
        volumes:
            - .:/code
            - .docker/nginx.conf:/etc/nginx/conf.d/default.conf
    php:
        build:
            context: .
            dockerfile: .docker/Dockerfile
        image: php:7-fpm
        volumes:
            - .:/code
        environment:
            DB_CONNECTION: mysql
            DB_PORT: 3306
            DB_HOST: mysql
            DB_DATABASE: website_development
            DB_USERNAME: website_username
            DB_PASSWORD: website_pA$£w0r6
            REDIS_HOST: redis
            SESSION_DRIVER: redis
            CACHE_DRIVER: redis
    mysql:
        image: mysql:5.7
        ports:
            - 13306:3306
        environment:
            MYSQL_DATABASE: website_development
            MYSQL_USER: website_username
            MYSQL_PASSWORD: website_pA$£w0r6
            MYSQL_ROOT_PASSWORD: root_pA$£w0r6
    redis:
        image: redis:4.0-alpine
        ports:
            - 16379:6379

【问题讨论】:

Docker to connect to my pre-existing MySQL 是什么意思? 你不需要mysql服务。您不想启动 mysql 容器。我假设您在 3360 上使用正确的用户/密码/数据库等本地运行 MySQL。您只需要调整 DB_CONNECTION 值并指向您的本地 IP,如 192.168.xx.xx(不是本地主机!)。或者对于 mac,您可以使用:docker.for.mac.localhost 作为主机 【参考方案1】:

如果您删除创建 MySQL 容器的 mysql 服务,您只需将环境变量更改为指向您的本地实例。

在 Mac 上,这可以通过连接到 docker.for.mac.localhost 或 docker.for.mac.host.internal 来完成,尽管现在首选后者。

【讨论】:

这在 Laravel ^5.6 中不再适用于我。我添加了DB_HOST=127.0.0.1 让它再次为我的 Docker MySQL 数据库工作。 谢谢,你拯救了我的一天!【参考方案2】:

您正在启动一个新的 mysql docker 容器,从您的问题中可以推断出这不是必需的。因此,mysql 服务部分应该从您的 composefile 中删除。

您的问题现在减少到如何从容器连接到本地计算机上运行的数据库。这个问题已经在From inside of a Docker container, how do I connect to the localhost of the machine? 中得到了彻底的解答,具体方法取决于运行 docker 的机器的操作系统。

【讨论】:

以上是关于将Docker链接到本地​​MySQL数据库[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将文件从本地文件系统添加到正在运行的 Docker 容器 [重复]

Window中的Docker 拉取Mysql镜像 并在本地Navicate链接

Window中的Docker 拉取Mysql镜像 并在本地Navicate链接

无法将 mysql docker 容器与 Spring Boot 应用程序链接 - 通信链接失败

xampp从连接在同一网络中的不同系统将数据发送到MySQL db到本地主机[重复]

将 Flyway 添加到 MySQL Docker 容器