09.09.2017 10:10

#4.1 Blog - Laravel и база данных Docker-Mysql | Миграции | Создание блога | Docker | Laravel 5.5 |

Содержание:

Установка Docker:

Вы можете ознакомиться с инструкцией на сайте:

https://docs.docker.com/

Для Ubuntu мы покажем вам сами процесс установки:
Настроим репозиторий:

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Теперь мы можем установить докер из репозитория:

sudo apt-get update
sudo apt-get install docker-ce

Для проверки можете запустить команду:

sudo docker run hello-world

Установка Docker-Compose:

Инструкция расположена по адресу:

https://docs.docker.com/compose/install/#install-compose

Для ubuntu мы будем устанавливать сейчас:

sudo -i
curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

Настроим привилегии:

sudo chmod +x /usr/local/bin/docker-compose

И проверим как он успешно был установлен:

docker-compose --version

Создадим директорию в домашней папке нашего пользователя, для удобства:

cd ~
mkdir docker

В ней создадим директорию с именем проекта:

cd ~/docker
mkdir mysql

Перейдём в данную директорию. Создадим файл с именем, это обязательно:

docker-compose.yml

Cодержимое будет следующим:

version: '2'

services:
  mariadb:
    image: 'bitnami/mariadb:latest'
    environment:
      - MARIADB_ROOT_PASSWORD=laravelpass
    ports:
      - '3307:3306'
    volumes:
      - /home/dkadevelop/docker/mysql/db:/bitnami

В директиве volumes:
dkadevelop измените на имя своего пользователя или поменяйте путь /home/dkadevelop/docker/mysql/db на свой.

Перейдем в директорию с нашим проектом и файлом docker-compose.yml

Напишем команду:

sudo docker-compose up

Для запуска docker в фоне, как демон, можете использовать данную команду:

docker-compose up -d

Создание базы данных в контейнере docker-mariadb:

Команда для подключения через терминал к серверу:

mysql -u root -h 127.0.0.1 -P 3307 -p

Запускаем команду создания базы данных:

CREATE DATABASE `laravel_blog` CHARACTER SET utf8 COLLATE utf8_general_ci;

Выход:

exit;

Laravel настройка подключения, запуск миграций и известная ошибка:

Теперь пропишем эти настройки в наш laravel:

* параметры сервера: порт и имя пользователя отличаются от настройки в видео #4, будьте внимательны.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3307
DB_DATABASE=laravel_blog
DB_USERNAME=root
DB_PASSWORD=laravelpass

Каждый раз как вы меняете настройки в файле .env или config/app.php

Необходимо сбрасывать кэш конфига, иначе изменения не вступят в силу.

php artisan config:cache

Теперь после настройки подключения в первую очередь нужно запустить миграции.

php artisan migrate

Если возникла ошибка вида:

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Для решения данной проблемы на старых mysql серверах или mariadb необходимо добавить две строки в сервис провайдер AppServiceProvider.php:

Schema::defaultStringLength(191);

use Illuminate\Support\Facades\Schema;

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);
    }

И запускайте миграции снова.

Подписывайтесь на наш канал в YouTube, ждите продолжения!