как делать миграции не заходя в контейнер?

Всем привет, я продолжаю постигать докер. В этот раз не могу понять, как увязать mysql в контейнере и тот, что стоит у меня на компе. А теперь по порядку. Через боль и страдания я всё-таки смог создать проект laravel на docker, у которого стабильно работают все контейнеры и ничего даже почти не отваливается. Вот, собственно часть docker-compose с контейнером БД:

  db:
    image: mysql:8.0.33
    restart: always
    volumes:
      - ./tmp/db:/var/lib/mysql
    environment:
      MYSQL_DATABASE: dockervel
      MYSQL_ROOT_PASSWORD: root 
    ports:
      - 8880:3306
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    container_name: project_db

А вот файл .env с настройками подключения к БД

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=dockervel
DB_USERNAME=root
DB_PASSWORD=root

И всё вроде бы работает неплохо, но есть нюанс: когда я пытаюсь сделать миграцию, мне приходится заходить в контейнер приложения и делать её оттуда, а потом с помощью sudo chmod 777 -R ./ настраивать права доступа, чтобы я в этой самой миграции мог хоть что-то изменить. В противном случае (если я пытаюсь сделать миграцию не заходя в контейнер) я получаю следующую ошибку:

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for db failed: Name or service not known (Connection: mysql, SQL: select * from information_schema.tables where table_schema = dockervel and table_name = migrations and table_type = 'BASE TABLE')

Это ужасно не удобно и мне с трудом верится, что хоть один уважающий себя прграммист выполняет эту нехитрую, но весьма утомляющую махинацию каждый раз, когда хочет создать новую миграцию. А отсюда собственно напрашивается мой вопрос: что и как я могу сделать, чтобы создавать миграции не заходя в контейнер? Версии mysql, которые установлены на моём компьютере и в контейнере совпадают.

UPD: Dockerfile:

FROM php:8.1-fpm

RUN apt-get update && apt-get install -y \
      apt-utils \
      libpq-dev \
      libpng-dev \
      libzip-dev \
      zip unzip \
      git && \
      docker-php-ext-install pdo_mysql && \
      docker-php-ext-install bcmath && \
      docker-php-ext-install gd && \
      docker-php-ext-install zip && \
      apt-get clean && \
      rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

COPY ./_docker/app/php.ini /usr/local/etc/php/conf.d/php.ini

# Install composer
ENV COMPOSER_ALLOW_SUPERUSER=1
RUN curl -sS https://getcomposer.org/installer | php -- \
    --filename=composer \
    --install-dir=/usr/local/bin

WORKDIR /var/www

docker-compose.yml

version: '3'

services:
  nginx:
    image: nginx:latest
    volumes:
      - ./:/var/www/
      - ./_docker/nginx/conf.d/:/etc/nginx/conf.d/
    ports:
      - 8800:80
    depends_on:
      - app
    container_name: project_nginx
      
  app:
    build:
      context: .
      dockerfile: _docker/app/Dockerfile
    volumes:
      - ./:/var/www/
    depends_on:
      - db
    container_name: project_app

  db:
    image: mysql:8.0.33
    restart: always
    volumes:
      - ./tmp/db:/var/lib/mysql
    environment:
      MYSQL_DATABASE: dockervel
      MYSQL_ROOT_PASSWORD: root 
    ports:
      - 8880:3306
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    container_name: project_db

Ответы (0 шт):