Почему php ремесленник мигрировать не работает с Docker? - PullRequest
2 голосов
/ 06 марта 2020

Я использую docker и делаю laravel new blog, после этого я делаю php artisan migrate и получаю эту ошибку:

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

Так что я делаю не так?

Это мой docker -compose.yml, я использую mariaDB и adminer вместо phpmyadmin

version: '3'

services:

  web:
    build: ./web
    environment:
      - APACHE_RUN_USER=#1000
    volumes:
      - ${APP_PATH_HOST}:${APP_PATH_CONTAINER}
      - ./web/php.ini:/usr/local/etc/php/php.ini
    ports:
      - 8080:80
    working_dir: ${APP_PATH_CONTAINER}

  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 12345
    volumes:
      - ${DB_PATH_HOST}:/var/lib/mysql

  adminer:
    image: adminer
    restart: always
    ports:
      - 6080:8080

  composer:
    image: composer:1.6
    volumes:
      - ${APP_PATH_HOST}:${APP_PATH_CONTAINER}
    working_dir: ${APP_PATH_CONTAINER}
    command: composer install

1 Ответ

1 голос
/ 06 марта 2020

В вашем контейнере БД добавьте:

ports:
  - "3306:3306"
environment:
  MYSQL_ROOT_USER: root
  MYSQL_ROOT_PASSWORD: secret
  MYSQL_DATABASE: databaseName
  MYSQL_USER: root
  MYSQL_PASSWORD: secret
  SERVICE_TAGS: dev
  SERVICE_NAME: mysql

Затем go внутри вашего контейнера, используя:

docker exec -it web bash

Это откроет консоль вашего контейнера laravel и там запустите

php artisan optimize 

Чтобы использовать переменные вашего файла env.

Перед этим необходимо создать шаг к созданию базы данных внутри docker, используя mysql верстак или подобный инструмент. .

Вы можете подключиться, используя следующие учетные данные:

Host: 0.0.0.0
username : root
password : secret
port : 3306

И затем создать пустую базу данных, используя имя вашей базы данных, которое вы используете в файле env и в docker_compose* 1018. *

Ваш файл env laravel должен быть немного изменен, чтобы он загружал контейнер mysql.

DB_CONNECTION=mysql
DB_HOST=db //This is the container name you use
DB_PORT=3306
DB_DATABASE=myDatabaseName
DB_USERNAME=root
DB_PASSWORD=secret

Комментарий Ответ:

Ошибка в вашем комментарии означает, что вы пропустили расширение gd. Внутри вашего docker файла используйте следующие строки:

RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
RUN docker-php-ext-install gd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...