Docker MySQL 5.7 через docker-compose и использование на Ubuntu 14.04

Установку Docker и docker-compose рассматривали здесь и здесь.

Все сервисы для контейнера будем тянуть с docker hub.

1. Создание рабочей директории:

Первым делом создадим рабочую директорию, в которой будет содержаться docker-compose.yml с правилами для установки контейнера с mysql 5.7.

mkdir /var/www/docker/mysql5.7

2. Создание docker-compose.yml:

В /var/www/docker/mysql5.7 создаем файл docker-compose.yml, в котором будет содержаться правило установки нужной версии mysql.

version: '3.1'

services:

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: new_base
    ports:
      - 3308:3306

version - указывается версия схемы. В предыдущих версиях docker и docker-compose были разные структуры описания сервисов в контейнере. По этому версия указывается для распознания структуры файла yml.

services - описываются сервисы, которые будут в нашем контейнере. Их может быть несколько, сейчас рассматриваем только один.

db - имя сервиса в контейнере.

image - указываем что в этом сервисе. В нашем случае mysql с версией 5.7. Подробнее на hub, теги, параметры.

restart - насколько я понял, это действие сервиса после docker-compose down. То есть перезагружается после закрытия контейнера.

environment - думаю тут понятно, пароль и создаваемая автоматом база.

ports - вот тут внимательно! 3308 - порт который будет доступен для подключения к сервису в контейнере, 3306 - стандартный порт mysql, на котором будет работать в контейнере. Если поставить 3306:3306 и если уже локально (не в докере) работает mysql, то будет ошибка, так как порт 3306 уже занят.

3. Поднимаем Docker контейнер:

Напомню, что мы работае в директории /var/www/docker/mysql5.7. Поднять контейнер можно в фоновом режиме и без фонового режима. Используем 1 из способов.

Команда для запуска в фоне (Чтобы дальше работать в окне этой же консоли):

sudo docker-compose up -d

docker-compose up -d

Просто запуск контейнера не в фоне (Будет висеть в консоли выводя логи):

sudo docker-compose up

docker-compose up

4. Проверка и подключение:

Если все прошло без ошибок и MySQL 5.7 поднялся, то подключиться к нему уже не составит труда.

mysql -uroot -proot -h127.0.0.1 -P3308

В схеме описаной в пункте (2) испольузется:

-P3308 - порт 3308

-uroot - логин поумолчанию root

-proot - пароль root

-h127.0.0.1 - ip локалоного mysql контейнера.

создана уже автоматически база данных new_base.

Видим версию 5.7 и созданную нами базу.

docker-compose mysql5.7

5. Подключение на Php сайте:

<?php

$mysqli = mysqli_init();
if (!$mysqli) {
    die('mysqli_init завершилась провалом');
}

if (!$mysqli->real_connect('127.0.0.1', 'root', 'root', 'new_base', '3308')) {
    die('Ошибка подключения (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

$sql = "CREATE TABLE IF NOT EXISTS `logs` ( ".
  "`id` int(11) NOT NULL AUTO_INCREMENT, ".
  "`user_id` int(11) NOT NULL, ".
  "PRIMARY KEY (`id`)".
  ") ENGINE=Innodb  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;";

$mysqli->query($sql);

$result = $mysqli->query("SHOW Tables;");
while ($row = $result->fetch_object()){
    var_dump($row);    
}


$mysqli->close();

real_connect('127.0.0.1', 'root', 'root', 'new_base', '3308') - само подключение.

Подтверждение удачного подключения то, что var_dump() выдаст созданную нами таблицу.

object(stdClass)#3 (1) { ["Tables_in_new_base"]=> string(4) "logs" }

6. Завершение работы:

Находясь в директории, где docker-compose.yml

sudo docker-compose down

Если не завершить работу контейнера и запустить его снова, будет ошибка.

16050 0

Комментарии

Пока нет ни одного отзыва. Оставьте отзыв первым
Только авторизованные пользователи могут оставлять комментарии Вход