Где на самом деле лежит моя бд, которую я развернул в docker-compose?

Решил я поднять MySQL в докере, решил, что делов на пару минут.
Есть такой docker-compose:
version: '3.3'
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: 'db'
      # So you don't have to use root, but you can if you like
      MYSQL_USER: 'user'
      # You can use whatever password you like
      MYSQL_PASSWORD: 'password'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'password'
    ports:
      # <Port exposed> : < MySQL Port running inside container>
      - '3306:3306'
    expose:
      # Opens port 3306 on the container
      - '3306'
      # Where our data will be persisted
    volumes:
      - my-db:/var/lib/mysql
# Names our volume
volumes:
  my-db:

Сделал docker-compose up. После чего решил я в Laravel указать в .env файле вот эти конфигурации для БД:
DB_HOST=127.0.0.1
DB_PORT=3306
Когда я делаю php artisan migrate, то оно мне пишет
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists

Но самая странность, что когда я смотрю в бд, то таблиц в базе данных нет вообще. Как Laravel понимает, что таблица уже есть, если я смотрю через тот же phpmyadmin, и там пустота?
  • Вопрос задан
  • 1041 просмотр
Решения вопроса 1
koyard
@koyard
PHP Developer
В терминале, из папки с проектом выполни docker-compose exec db bash
Так ты попадешь в контейнер с бд.
Затем выполни mysql -uroot -p
Так ты попадешь в mysql.
Затем выполни SHOW DATABASES;
Так ты увидишь список баз в твоем mysql.
Затем выполни USE имя_нужной_тебе_базы;
Так ты выберешь базу.
Затем выполни SHOW TABLES;
Так ты увидишь список таблиц которые находятся в выбраной тобой базе.
Это поможет тебе понять что лара действительно подключилась к mysql в докере.

Далее, если ты хочешь удалить базу и создать снова.
Выполни DROP DATABASE имя_нужной_тебе_базы;
Это удалит базу и все данные в ней, восстановить их будет нельзя, погугли эту команду и убедись что ты точно понимаешь что ты делаешь.
Затем выполни CREATE DATABASE имя_базы_которую_ты_удалил;
Это создаст новую пустую базу.
Теперь ты можешь выполнить миграции.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@q2digger
никого не трогаю, починяю примус
База этого контейнера должна была сохранится в volume: /var/lib/docker/volumes/my-db/_data
Ответ написан
@metajiji
docker volume ls
По умолчанию вольюмы хранятся в
/var/lib/docker/volumes/
Ответ написан
vasilyevmn
@vasilyevmn
DevOps
Не на том интерфейсе открыт порт, быстрее всего повесить на локалхост так:

ports:
- "127.0.0.1:3306:3306"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы