我不想在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
答案 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来完成,尽管后者现在是首选。