Первый рабочий день 2022: Docker и web-server

Говорят: «понедельник — день тяжёлый». Всё потому, что понедельник — первый день рабочей недели. Ну ты понимаешь, снова начать работать после выходных — та ещё ерунда. Ну а у нас нынче первый понедельник года. Перед этим я отдыхал 30 дней (отпуск + каникулы).

Ещё говорят: «я работы не боюсь». Так вот, не в эту смену. Я боюсь этой работы до усрач…. очень. Но… глаза боятся, а руки… тоже. Тем не менее, работа не волк, в лес не уйдёт, а значит придётся с ней разбираться на месте.

Для начала — встать. Это самое простое. Видимо, организм что-то такое чувствует, а потому проснулся за час до будильника и никак не засыпает. И это не смотря на то, что уснул как минимум в 2 часа ночи.

Т.е. 5 часов поспал и типа хватит. Ну ок.

Кто куда, а я первым делом на кухню. Сыпанул корма котикам, заварил чаю себе и Л., зашёл в комнату.

Тут темно, чуть не навернулся пока искал настольную лампу с двумя чашками в руках.

Осветил рабочее место, расставил кружки по местам. Включил компьютер.

Смотрим рабочий чат. Тут уже поджидает задачка на актуализацию. Правда прошлогодняя и закрытая. Ну да ничего. Клонировал, поменял название, закинул обратно в чат. Создал подзадачу. Созвон ожидается через 2 часа. Видимо там все вводные и получим.

Попытался запустить автотесты. Все зафейлились. Какая-то ерунда с авторизацией. То-ли тестовый стенд за время праздников «наелся и спит», то-ли «концепция поменялась». Не хочу гадать. Через 7 минут стартую подзадачу. Ну а пока две вещи.

  1. Посмотреть, какие методы добавились в общие классы, пока меня не было.
  2. Попытаться поднять web-сервер на докере.

Приступаю.

Пока всё это писал — закончился чай. Нужно срочно заварить ещё. Но сначала — стартую подзадачу.

Оказывается, вода в чайнике закончилась. Пришлось кипятить ещё. Пока заливал, пока поджигал, вспомнил ещё одну поговорку: «Любишь кататься — люби и саночки возить».

Правда потом её переделали какие-то острословы. Теперь она звучит как: Любишь кататься — люби и самочек возить. А ещё: Любишь кататься — люби и катайся. Но… не мой случай, а потому, ванильная версия рулит.

Будем считать, что этот отпуск был тем самым весёлым спуском с горки на попе. Теперь, весь оставшийся год, предстоит натужно подниматься для нового спуска.

Чайник вскипел. Чай заварен. Первый автотест — прошёл успешно.

Так, а это что? Письмо от регистратора подъехало. Нужно доменчик продлить. Захожу в личный кабинет и офигеваю удивляюсь. Ну надо-же! Два домена просрочены и ещё несколько нужно продлить. Итого, минус 1240 руб.

Эх…. Потрачено. «Плачу и плАчу, плАчу и плачу».

Теперь, примерно сутки на то, чтобы просрочка восстановилась. Ещё несколько часов на то, чтобы перегенерировать сертификаты. Радует то, что эти конкретные домены — не самые важные. Они мне дороги как память. В остальном, это чистой воды расходы.

Ух ты! Кажется солнце встаёт. Просыпаться в темноте — отвратительно. Именно поэтому я всегда радуюсь увеличению светового дня.

Сегодня предрассветные сумерки должны были начаться в 07:13:34, а сам рассвет в 09:53:53. Однако, сейчас 09:28 и уже светло, а ведь буквально в конце декабря в 10 утра всё ещё стояла темень.

Да, я ищу поводы для радости. Даже такие. Потому, что моё настроение сказывается на трудоспособности, а трудоспособность, в конечном итоге, на доходах.

И пока сьют по порядку запускает автотесты, а чай остывает, пришло время заняться докером. Как минимум, поискать нужную информацию.

Оказывается начальник скинул не ту ссылку. Пришлось закрывать подзадачу и открывать новую от другой задачи. Это не проблема. Это — техническая накладка.

С ужасом ожидаю созвона. Возвращение из отпуска — это всегда сюрпризы. Ими сотрудника как-бы наказывают за отдых. Помню, вернулся с моря, а в офисе сделали перестановку. Мой рабочий стол уехал куда-то… в уютный закуток. Этот сюрприз, к слову, был приятным.

Созвон состоялся. Правда не в намеченное время, а позже… на пару часов. При этом, у меня внезапно издох микрофон. Мои заполошные включения-выключения сего девайса и дёргание его за провод привели к тому, что оно включилось и я даже сумел вставить свои пять копеек в диалог. Однако, судя по симптомам, провод доживает свои последние дни (часы, минуты, а может даже секунды).

Что касается темы обсуждения, то всё что шло после поздравления с праздниками, напомнило каноничный пожар в борд… доме культуры во время наводнения. Впрочем, там по другому и не бывает. Просто успел отвыкнуть.

Сейчас прихожу в себя, смотрю как один за другим запускаются автотесты, допиливаю веб-сервер, который поднял через Докер.

Почти поднял. База данных непрерывно перезагружается и вылетает с ошибкой. Но зато PHP-FPM и Nginx работают. Я даже сумел расшарить папку проекта и конфиги. Так что дело сдвинулось процентов на 10.
Но начало положено, а дальше, по слухам, будет только лучше.

Тем временем близится обед.

Обед вышел так-себе. Оладьи вроде и не еда вовсе, а так… баловство. Но мне сегодня сойдёт и такое.

Тесты продолжают запускаться. Их реально много и они долгие. Я уже писал про то от чего и почему. Не хочу повторяться.

Докер вызывает приступы ненависти на фоне паники. Я перелопатил десятки гайдов, но ни один не помог. База — работает. Сервер — работает. PhpMyadmin работать отказывается. Аааааарррррррр!

Уверен, что в итоге я его допинаю. Меня одно бесит: какого лешего мне не попалось ни одного docker-compose.yml, чтобы скоприровать, забилдить и спокойно работать? Что? Неужели ни один разраб не пользуется локальным веб-сервером для развёртывания проектов.

Да не может такого быть! Не в этой вселенной! Как минимум 15% разрабов пользуют Докер как раз для этого. Так какого лешего яндекс не выдаёт адекватного поста на эту тему с готовыми конфигами?

Фуууууххххх. Лааааадно. Хорошо. Надо чаю заварить. Да, меня снова бомбит. Зато я вспомнил что хотел изменить в своей работе. Мне нужно работать спокойно. Иначе сдохну гораздо раньше чем положено.

А тут ещё и комп тормозит! Сво… Всё, всё, всё. Вдох, пауза, выыыыыдох. Вдох, пауза, выыыыыдох.

Нафиг чай! Велотренажёр! Сажусь и проезжаю 2.5 км. Иначе никогда до него не дойду.

Проехал? Сколько? 2 км 600 м? Нормально. Вот теперь — чай.

А пока чай закипал — у меня наконец получилось настроить phpMyAdmin.

Вот такой получился docker-compose.yml для моего веб-сервера.

version: "4.0"

services:

  web_server:
    build:
      context: ./web-server/
      args:
        buildno: 1
    container_name: web_server
    restart: always
    environment:
      TZ: "Europe/Moscow"
    ports:
      - 80:80
    volumes:
      - ./html:/usr/share/nginx/html
      - ./web-server/Nginx/core/nginx:/etc/nginx
      - ./web-server/Nginx/Logs:/var/log/nginx
      - ./web-server/php/php-fpm.conf:/etc/php-fpm.conf
      - ./web-server/php/php.ini:/etc/php.ini

  maria_db:
    image: mariadb
    container_name: maria_db
    restart: always
    command: --default-authentication-plugin=mysql_native_password
    command: --innodb_use_native_aio=0
    environment:
      TZ: "Europe/Moscow"
      MYSQL_ROOT_PASSWORD: lw430890ldfltLD&343
      MYSQL_DATABASE: app_db
      MYSQL_USER: db_user
      MYSQL_PASSWORD: <password>
    ports:
      - 3306:3306
    volumes:
      - ./mysql:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: pma
    links:
      - maria_db
    environment:
      PMA_HOST: maria_db
      PMA_PORT: 3306
      PMA_ARBITRARY: 1
    restart: always
    ports:
      - 8081:80
    volumes:
      - ./mysql:/var/lib/mysql

 

Конечно он сырой и всё-такое, но зато полностью рабочий.

Батник для билда образа:

cd C:\Projects\ucprogress_centos\
docker-compose build

Батник для ребилда обаза:

cd C:\Projects\ucprogress_centos\
docker-compose up --force-recreate --build -d

Батник для рестарта контейнеров:

cd C:\Projects\ucprogress_centos\
docker stop web_server maria_db pma
docker start web_server maria_db pma

Батник для старта контейнеров:

cd C:\Projects\ucprogress_centos\
rem docker-compose up -d
docker start web_server maria_db pma

Батник для остановки контейнеров:

cd C:\Projects\ucprogress_centos\ docker stop web_server maria_db pma
docker stop web_server maria_db pma

Судя по всему, чтобы контейнеры нормально останавливались и запускались, каждому новому проекту придётся менять имя контейнера (container_name) на уникальное, и в батниках (старт, стоп, рестарт) их прописывать.

В папке ucprogress_centos лежат папки:

  • html (тут находятся файлы сайта, которые можно редактировать),
  • mysql (здесь файлы базы данных, которые база создаёт сама при билде),
  • web-server (а вот тут конфиги веб-сервера в папках, которые я, чтобы не расписывать, скопировал и запихал в архив, чтобы не мучиться с выкачиванием и менять по мере надобности).

Это на случай, если вдруг понадобится.

Не скажу что в ходе этих разборок освоил Докер, но нужный инструмент получил.

Эх… Сюда бы ещё Git запихать… А это мысль!

Теперь докерфайл в папке веб-сервера выглядит вот так.

FROM centos:8

MAINTAINER Alex Cube<lexium@lexium.ru>

ENV TZ=Europe/Moscow

RUN dnf update -y
RUN dnf install -y nginx php php-fpm php-mysqli
RUN dnf install -y mc && dnf install -y wget && dnf install -y curl && dnf install -y git
RUN dnf clean all
#RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN mkdir /run/php-fpm

CMD php-fpm -D ; nginx

EXPOSE 80

В архиве менять уже не стал. Мне и так нормально, а больше на этот блог всё-равно никто не заходит.

Ссылка на phpMyAdmin после старта контейнеров http://localhost:8081/

Ссылка на сайт — http://localhost/

Всё! Теперь можно и чаю выпить.

Следующим этапом нужно продумать как быстро копировать сайты на этот локальный сервер, а затем синхронизировать с помощью Git’а. Желательно с миграциями.

Чем ближе вечер, тем сильнее накрывает лень. Я прям физически ощущаю как она конденсируется, чтобы атаковать. Жуткое зрелище.

При этом, тесты продолжают выполняться. Они уже 9-й час идут один за одним. А ведь те что упали нужно будет проанализировать.

Комп тормозит всё сильнее. Дурацкий гуглохром не выгружается из памяти после закрытия браузера. Это или косяк, или намеренное вредительство. Мне не важно, эффект от этого не меняется.

Через 10 минут рабочий день закончится, но комп останется занят до упора. Возможно даже до утра. Так что, для лени прям все условия.

Вот что! На моём столе лежат 3 древних сотовых телефона. Самый новый из них Самсунг. Остальные два: Nokia 2210 и Nokia 11oo. Аккумуляторы у них давно издохли и по-хорошему устройства давно должны были оказаться на помойке. Но мне хочется сделать сотовый телефон на батарейках.

Иногда бывают ситуации, когда батарейки есть, а розетки для зарядки — нет. В принципе, есть девайсы, поздаряжающие от батареек. Проблема в том, что современные смартфоны жрут электричество в огромных количествах. Батареек на такие  не напасёшься.

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

Преобразователь 5V в 3.3V китайцы уже доставили. Мне кажется, пришло время экспериментов. И начну я с Nokia 1100.

Он был рекордсменом по автономной работе. Да и размеры у него меньше чем у 3310.

Ага. Планы, планы, планы, плаааааныыыы, ааааа-ааааа…

В магазин за продуктами надо? Надо! На почту сходить (а вдруг там мало народу и можно получить посылку) надо? Надо! А заказы забрать из пункта выдачи? А просто ноги размять? А с собакой погулять?

Надо, надо, надо!

Остаток вечера залёг смотреть видосики и нашёл один, который дико понравился.

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

В общем, человек-самородок.

В данном видео показано как он разводит пчёл, и это гениально.

Но вот приходит полночь, а значит — пора готовиться ко сну.

=== Заметки ===

Ночью надо спать. Выключай смартфон. Сейчас!

Пришло время носить очки во время чтения))
#очкарик

Как превратить работу в увлекательную игру? Кто-нибудь пробовал? Как успехи?

Ещё...

Напишите комментарий

Введите имя

Введите адрес электронной почты

Введите адрес вашего сайта

Нажмите эту кнопку, чтобы отправить комментарий.

Введите текст комментария