Вместо того, чтобы иметь базу данных MySQL в Docker или в отдельном томе, я бы хотел, чтобы 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
Если вы удалите службу mysql, которая создает контейнер MySQL, вы можете просто изменить env vars, чтобы указать на ваш локальный экземпляр.
На mac это можно сделать, подключившись к docker.for.mac.localhost или docker.for.mac.host.internal, хотя последнее теперь предпочтительнее.
DB_HOST=127.0.0.1
чтобы он снова DB_HOST=127.0.0.1
для моей базы данных Docker MySQL.
Вы запускаете новый контейнер для докеров mysql, который не нужен, как можно сделать из вашего вопроса. Таким образом, часть сервиса mysql
должна быть удалена из вашего composefile.
Теперь вы задаете вопрос о том, как подключиться из контейнера к базе данных, запущенной на локальном компьютере. На этот вопрос был дан ответ полностью изнутри контейнера Docker, как я могу подключиться к локальному хосту машины? и способ сделать это зависит от ОС машины, на которой работает докер.
Docker to connect to my pre-existing MySQL
?docker.for.mac.localhost
качестве хоста