Aleksandr Khristenko
Ну да, оно работает что-то типа стрима. Т.е. все что ты будешь писать в volume будет видно снаружи. Но вендор же у тебя создается в момент билда образа.
#lest
Понял, спасибо
Aleksandr Khristenko
Ну вот, день прожит не зря, узнал что-то новое.
Юра
Я думаю это полезное поведение представь что ты установил какой-то софт который создал папку и закинул туда какие-то файлы и ты хочешь это в вольюм чтобы персистить
Юра
Например хз бд какая-то
Юра
Если бы такого поведения не было бы то прога не стартарула бы так как пустой вольюм перекрыл бы все
Юра
С другой стороны получается что если ты маунтишь пустой вольюм в директорию которая есть в контейнере и весит 10 гигов, то судя по доке все эти 10 гигов скопируются и станет 20 гигов
Павел
Но это не противоречит Александру. Если мы установили вендор либы при билде имейджа, то снаружи их видно не будет при старте контейнера. А если мы еще прокинул волюм пустой папки извне, на то, что сделали при билде - то наверное даже и перетрет данные при старте.
Павел
Волюм прокидывает при старте данные с хоста внуть контейнера, а уже во время работы двунаправленно. Т.е. не получится прокинуть из имейджа данные на хост без хаков
Павел
Насколько я понял эту документацию, что если мы монтируем пустую директорию поверх непустой, то данные автоматом будут туда скопированы
Надо протестировать... Просто уже несколько раз обсуждали эту тему, и вроде как из имейджа нельзя копировать на хост
Павел
@ibxth Да, папка перетерается. (у меня вендор билдится в имейдже и я замаунтил пустую папку vendor c хоста) Тогда не понятно что имеется ввиду в доке.
Aleksandr Khristenko
а ты именно пустую папку пробовал?
Павел
Ну попробую вообще дроп
Павел
Аналогично как с пустой
Павел
может надо именно маунтить
Павел
А не волюм кидать, и это отдельное
Aleksandr Khristenko
может надо именно маунтить
Скорее наоборот, надо вольюм подключать а не монтировать локальную директорию
Павел
Скорее наоборот, надо вольюм подключать а не монтировать локальную директорию
Да, с новым волюмом не перетерает содержимой, видимо в этом смысл.
Юра
Но там явно вроде написано empty volume а не new
Юра
Может ещё разница быть named или нет вольюм..
Aleksandr Khristenko
Да пофиг. Главное что это именно с volume работает. А человек изначально хотел через монтирование дирректории.
Юра
Короче мне этот вопрос до конца не понятен
Ivan
Всем привет! Кто-нибудь реализовывал механизм авторизации сразу в несколько аккаунтов, а затем переключение между аккаунтами? По типу Яндекс, Гугл. Есть примеры реализации под symfony? Я бы наверное в еще одной Куке, доступной только бэкенду, хранил список этих аккаунтов с remember me куками под каждой из них, и переключал бы переключением значения этой куки.
Viktor
Всем привет! Кто-нибудь реализовывал механизм авторизации сразу в несколько аккаунтов, а затем переключение между аккаунтами? По типу Яндекс, Гугл. Есть примеры реализации под symfony? Я бы наверное в еще одной Куке, доступной только бэкенду, хранил список этих аккаунтов с remember me куками под каждой из них, и переключал бы переключением значения этой куки.
Бесит такой подход, в моем понимании Яндекс и Гугл - это очень плохие примеры, а переключение аккаунтов - это костыль, чтобы хоть как-то исправить положение. Если вы пишете свое, делайте лучше 1 физический человек = 1 пользователь. А дальше допустим в разные организации (ну или что там у вас, почтовый ящик или что-то еще) можно предоставлять доступы. И переключать не аккаунты, а допустим организации / почтовые ящики ... . Но при этом у тебя как у человека всего одна учетка, один профиль и один пароль, а не десятки.
Ivan
Все конечно же по многочисленным просьбам пользователей.
Viktor
Переключение основных сущностей внутри аккаунта уже есть. Но пришло ТЗ, сделать возможность входить в несколько аккаунтов и переключаться между ними -)
Ну, я бы тогда это в localStorage засунул в виде json. Токены доступа, и какую-то инфу, типа логина / ФИО, чтобы было понятно из чего выбираешь. В принципе к беку отношения не имеет вообще никакого, не очень понимаю причем тут Симфони, но я сам ее и не использую для фронтенда вообще, только REST API...
Viktor
А, ну у меня обычно и API всегда Stateless. А если у вас используются сессии, то наверно придется помучаться.
Viktor
Спасибо! Ну это аналог того, что это будет храниться в куке. Авторизация завязана на symfony куках, поэтому и вопрос так стоял.
Не совсем аналог. Во-первых у кук есть ограничения. Во-вторых они гоняются на сервер вместе с запросами, а зачем там они?
Павел
Спасибо! Ну это аналог того, что это будет храниться в куке. Авторизация завязана на symfony куках, поэтому и вопрос так стоял.
По сути есть механизмы логаута и авторизации. Не нужно даже о куках думать. Просто текущего логаут, а второго авторизовать
Viktor
По сути есть механизмы логаута и авторизации. Не нужно даже о куках думать. Просто текущего логаут, а второго авторизовать
Это если сессионный API, а если stateless - то ничего вообще делать на беке не надо, достаточно просто на фронте научиться помнить несколько токенов.
Ivan
Тут функционал завязан на бэк, на сессии. Только бэк сможет что-то переключать.
Ivan
Поэтому нужно где-то хранить список пользователей авторизованных, имя и токен авторизации, а потом уже на основе этой информации переключать.
Павел
Я видимо не понял задачу первоначальную, не о том рассуждал. Ну чисто теоретически можно в сессии хранить список юзеров авторизованных и мануальную авторизацию, меняя текущего юзера.
Viktor
Тут функционал завязан на бэк, на сессии. Только бэк сможет что-то переключать.
Есть еще такая штука. Я делал авторизацию под другими юзерами, если ты админ, из админки. Но может и для твоего кейса может подойти. https://symfony.com/doc/current/security/impersonating_user.html
Anton
Всем привет! Хотел обсудить одну вещь. При релизах мы вносим изменения в структуру базы данных. Для этого мы используем миграции. Также иногда есть необходимость внести изменения в состав базы данных (добавить/изменить сущности). Каким образом вы делаете это на своих проектах?
Павел
Всем привет! Хотел обсудить одну вещь. При релизах мы вносим изменения в структуру базы данных. Для этого мы используем миграции. Также иногда есть необходимость внести изменения в состав базы данных (добавить/изменить сущности). Каким образом вы делаете это на своих проектах?
Тема полухоливар. Что то быстрое - в миграциях. Что то долгое - в командах / запрос в бд. Но это имхо. Опять же вопрос в самом релизе, на сколько это ломает не ломает что то, что может подождать до ручного запуска
Павел
Про команды. Т.е. перед релизом создаём команду новую, заполняем ее логикой добавления и при деплое запускаем?
Ну или после, зависит от логики. Например нужно создат новую колонку, в нее заполнить данные из старой. в 1 релизе: Миграция на новую колонку + команда на ее обновление (а она может и час работать и больше/меньше) в 2 релизе: миграция на удаление старой колонки Ну вообще ситуационно. На истину не претендую, описываю как вижу и делаю
Михаил
Всем привет! Хотел обсудить одну вещь. При релизах мы вносим изменения в структуру базы данных. Для этого мы используем миграции. Также иногда есть необходимость внести изменения в состав базы данных (добавить/изменить сущности). Каким образом вы делаете это на своих проектах?
Миграция про структуру Так же в миграцию можно вынести базовое наполнение без чего сервис стартовать не сможет (да - это можно вынести и в сиды, но кмон, сложно) Есть какая штука как one-shot команды. Обычно когда сервис расскатался мы их выполняем и потом удаляем. В этих командах можно чинить записи, удалять что-то. Короче если нет доступа к продовской бд, а её надо пожмакать С one-shot командами есть проблема, что иногда их нужно стартовать так же, как и миграции - в момент раскатки. Но думаю тоже решаемо
Юра
Обычно есть какой-то юай или доступ на прод (в небольших командах) где можно запустить команду. Пишем консольную команду и запускаем
Михаил
Короче, есть такой тонкий кейс, когда при релизе надо изменить состав бд, иначе новый код начнёт ломаться. Это нельзя сделать ДО или нельзя сделать ПОСЛЕ - оба случая приведёт к отказу. Тогда делайте one-shot команды которые приложение для деплоя выполнит автоматом после деплоя на одном из новых инстансов.
Михаил
В случае такого кейса, если это ЧИСТО sql - можно в миграцию, а потом эту миграцию просто удалить. Это стабильно. Но миграцию можно и оставить, если она будет полезна допустим при чистой раскатки (для разработки) Для всего остального есть one-shot команды и развитый деплой
Михаил
Короче, есть такой тонкий кейс, когда при релизе надо изменить состав бд, иначе новый код начнёт ломаться. Это нельзя сделать ДО или нельзя сделать ПОСЛЕ - оба случая приведёт к отказу. Тогда делайте one-shot команды которые приложение для деплоя выполнит автоматом после деплоя на одном из новых инстансов.
А и, прошу прощения. Желательно выполнять не после развёртывания а, допустим во время переключения трафика в B/G стратегии кубера. Или при достижении 50% в канареечном. Короче тогда, когда это станет выгодным
Михаил
А, ну можно конечно код написать так, что бы он умел работать с разными версиями данных. Простой пример - миграция хранения аватарок у пользователей. Изначально они хранятся как текстовое поле в котором path, в конечном json с урлом и некоторыми метаданными. Ну и да, тут можно просто написать такой код, который работает и с json и просто с path
Евгений
Привет! Посоветуйте пожалуйста, как реализовать поиск на сайте с использованием symfony. У меня есть контроллер, который выводит список книг. На странице вывода этих книг, кроме пагинации, есть инпут и кнопка Поиск по имени. Когда я ввиду имя и нажму кнопку, запрос на получение книг должен измениться. Пагинация и поиск передаются в запрос через параметры запроса. Спасибо.
Павел
Я не использую фронт отдельно, я использую twig
Можете попробовать через симфони формы.
Павел
А можно и нативно. Дейсвтитлеьно не понятно в чем проблема
Pavel
Я не использую фронт отдельно, я использую twig
А разница какая? Контроллер в любом случае принимает Request, в котором лежит запрос. А на фронте как тебе удобнее, хочешь ajax запрос кидай, хочешь формы используй.
Anton
Я не использую фронт отдельно, я использую twig
Получить из объекта реквеста данные и отфильтровать по ним
Anton
Проблема с получением данных в контроллере с фронта или в фильтрации?
Евгений
Форма куда должна отправлять запрос?
Pavel
в контроллер
Павел
Форма куда должна отправлять запрос?
а вы точно изучаете симфони?)
Евгений
Павел
как будто пару уроков перепрыгнули)
Anton
Пытаюсь, а что?
В контроллере можно принять объект Request в котором будут лежать данные, которые мы отправляем на бэк
Павел
Человек уже вроде пару лет изучает, странный даунгрейд
Павел
по мне так как будто хочет сделать тестовое задание))
Юра
Это тот случай когда лучше спросить у чатгпт
Kirill
Но вообще, ответ: "куда угодно"
Pavel
Форма куда должна отправлять запрос?
Откройте документацию по symfony формам, там все более чем ясно написано по использованию и рендерингу формы в twig
Kirill
вдруг не надо вообще никуда отправлять
Павел
Евгений Напишите в твиге обычную форму (без симфони форм) и запрос отправьте на ту же страницу (не прописывайте action у формы), где паказываете - это просто вариант чтобы разобраться. То что отправили должно будет отобразиться в браузерной строке. Ищите это потом в Request->query->all() Чисто для понимания что как "летает". Вообще это не симфони тема, а обычного web
Viktor
Всем привет! Ребят, может кто сталкивался или подскажет куда копнуть. У нас есть symfony messenger, который консьюмит сообщения из RMQ. И до недавнего времени все было прекрасно. Все работало хорошо не менее года. Но почему-то начал происходить какой-то затык в рассасывании очереди. То есть в RMQ видим, например, 30 неразобранных сообщений, видим, что воркер работает, но не берет сообщения. А через, например, 4-5 минут начинает брать. Кто виноват и что делать?) Заранее спасибо!