将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 应用程序链接 - 通信链接失败