Связывание Docker с локальной базой данных MySQL

0

Вместо того, чтобы иметь базу данных 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
  • 0
    Что вы подразумеваете под Docker to connect to my pre-existing MySQL ?
  • 1
    Вам не нужен сервис MySQL. Вы не хотите запускать MySQL-контейнер. Я предполагаю, что у вас есть MySQL, работающий локально на 3360 с нужным пользователем / passwd / db и т. Д. Вам нужно будет только адаптировать значение DB_CONNECTION и указать свой локальный IP-адрес, например 192.168.xx.xx (не localhost!). Или для Mac вы можете использовать: docker.for.mac.localhost качестве хоста
Теги:
docker

2 ответа

0
Лучший ответ

Если вы удалите службу mysql, которая создает контейнер MySQL, вы можете просто изменить env vars, чтобы указать на ваш локальный экземпляр.

На mac это можно сделать, подключившись к docker.for.mac.localhost или docker.for.mac.host.internal, хотя последнее теперь предпочтительнее.

  • 0
    Это больше не работает для меня в Laravel ^ 5.6. Я добавил DB_HOST=127.0.0.1 чтобы он снова DB_HOST=127.0.0.1 для моей базы данных Docker MySQL.
  • 0
    спасибо, ты спас мой день!
1

Вы запускаете новый контейнер для докеров mysql, который не нужен, как можно сделать из вашего вопроса. Таким образом, часть сервиса mysql должна быть удалена из вашего composefile.

Теперь вы задаете вопрос о том, как подключиться из контейнера к базе данных, запущенной на локальном компьютере. На этот вопрос был дан ответ полностью изнутри контейнера Docker, как я могу подключиться к локальному хосту машины? и способ сделать это зависит от ОС машины, на которой работает докер.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню