Сайт на Laravel. Урок 2. Docker

cover

Привет! В предыдущей статье мы начали работать с Laravel 8. Продолжим настраивать нашу окружающую среду. Сегодня установим виртуальную машину и необходимые для работы Laravel сервисы с помощью docker.

Docker

Для работы веб сайта нам понадобятся многие вещи. Веб сервер, база данных, файловое хранилище. PHP интерпретатор, или какой-то другой, если мы используем другой язык программирования.

Если мы работаем над одним проектом, то все это можно установить на нашу рабочую машину и работать на ней локально. А когда проект готов, загрузить файлы на сервер или хостинг.

Однако, так сильно разработчикам везет редко. Чаще бывает, что после разработки одного проекта или сайта, нам приходит заказ на другой сайт. Потом на третий и так далее. Кроме того, мы можем работать над несколькими сайтами параллельно.

Хорошо, если все проекты используют одинаковое окружение. Один веб сервер, например, apache. И один интерпретатор языка, например, php 7.2

Однако, такая ситуация почти невозможна. В реальности нам нужно использовать свое окружение для каждого отдельного проекта. Как удобнее организовать рабочий процесс в такой ситуации? Существует много вариантов, но мы сразу рассмотрим самый популярный, а именно — Docker.

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации, контейнеризатор приложений. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть развёрнут на любой Linux-системе с поддержкой cgroups в ядре, а также предоставляет набор команд для управления этими контейнерами. Изначально использовал возможности LXC, с 2015 года начал использовать собственную библиотеку, абстрагирующую виртуализационные возможности ядра Linux — libcontainer. С появлением Open Container Initiative начался переход от монолитной к модульной архитектуре.

Установка Docker

К сожалению, docker имеет проблемы с корректной работой в операционной системе windows. Это не страшно, и даже, логично. Нам, как разработчикам, также следует привыкнуть работать с докером и другими инструментами веб разработки в среде linux.

Однако, возможно, вам привычнее пользоваться windows в качестве рабочей станции, и использовать IDE для написания кода из windows как и мне. В таком случае придется использовать виртуальную машину. В таком подходе тоже нет ничего необычного, ведь наш сайт в итоге будет работать на сервере. А большая часть сервером работает на ос linux. Значит мы уже работаем по такой схеме. Разрабатываем приложение локально, а затем деплоим его на удаленную машину с linux. Кстати, эта удаленная машина вполне может быть виртуальной.

На моем хостинге установлена операционная система CentOS 7. Следовательно, на виртуальную машину я также установлю эту ос. Для виртуализации использую Oracle VM VirtualBox 5.2.20

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

Когда виртуальная машина готова и мы залогинились в систему, можно приступать к установке docker. Хорошо, что это возможно сделать из официального репозитория.

Но, сначала, проверим, что в системе установлен пакет yum-utils.

yum install yum-utils

yum install yum-utils

Подключим репозиторий для docker.

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo Loaded plugins: fastestmirror adding repo from: https://download.docker.com/linux/centos/docker-ce.repo grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo repo saved to /etc/yum.repos.d/docker-ce.repo

После этого все готово к установке.

yum install docker-ce docker-ce-cli containerd.io

Через несколько минут Docker установлен и готов к запуску. Запустим и добавим его в автозагрузку.

systemctl enable --now docker

Проверим

systemctl status docker

Запуск веб сервера в докер контейнере

Для проверки запустим контейнер с apache и попробуем обратиться к нему с нашей хост машины. Для контейнера с вебсервером apache уже существует официальный образ. Используем его. Тем более, что на сайте hub.docker.com уже есть готовая команда для загрузки и запуска этого контейнера.

docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4

Проверим, что контейнер запустился

docker ps

docker ps

Создадим файл index.html с текстом <h1>Hello</h1> и откроем адрес нашей виртуальной машины в браузере на хост машине. Не забудьте указать порт 8080, так как мы указали докеру открыть именно этот порт для вебсервера.

192.168.0.107:8080

Таким образом мы убедимся, что сервер работает корректно.

Заключение

На этом сегодня закончим. В следующий раз поговорим о docker compose. И о том как настроить готовое окружение для нашего laravel проекта.

До того, как вы уйдете, посмотрите наши статьи и уроки про Ардуино. Например, подключение OLED дисплея к Ардуино.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *