将Docker链接到本地​​MySQL数据库

时间:2018-02-21 14:43:27

标签: mysql docker

我不想在Docker中或在单独的卷中使用MySQL数据库,而是希望Docker连接到我在本地运行的已存在的MySQL数据库。

我使用的是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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

如果删除正在创建MySQL容器的mysql服务,则只需将env vars更改为指向本地实例。

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