
Sergey
13.05.2018
10:30:18
.dist это что-то типа балванки. Подразумевается что у тебя в твоем окружении будет свой parameters.yml
который будет чисто под энв

Andrey
13.05.2018
10:30:28
спасибо, но я не вижу там упоминания этого файла

Sergey
13.05.2018
10:30:28
а .dist используется как шаблон

Google

Sergey
13.05.2018
10:30:52
ты можешь его назвать хоть env_config.yml хоть yolo.yaml
главное что бы он импортился где-то в конфигах которые точно юзаются (config.yml какой)
никакой магии

Andrey
13.05.2018
10:31:41
это я примерно понял. Также я вижу, что запуск composer install/update как-то преобразует parameters.yml.dist в parameters.yml - где можно почитать, по какому алгоритму это делается?

Sergey
13.05.2018
10:32:16
и там есть некий parameters handler
вот его выкоси

$iD
13.05.2018
10:32:31
https://packagist.org/packages/incenteev/composer-parameter-handler

Sergey
13.05.2018
10:32:33
и вообще, какого хрена ты делаешь composer install не на CI?)

$iD
13.05.2018
10:32:45
эта либа занимается модификацией ямла
обычно

Andrey
13.05.2018
10:33:55

Google

Andrey
13.05.2018
10:34:34
а потом это всё будет дёргаться через jenkins/ansible

Sergey
13.05.2018
10:36:14

Andrey
13.05.2018
10:36:18
вот его выкоси
мне девелоперы выдали инструкцию по сборке, в которой сначала руками правится dist, потом запускается composer. К ним идти боюсь, наору ещё за то, что они сами в своих инструментах не шарят нихера

Sergey
13.05.2018
10:36:47
с docker parameters.yml не то что не нужен - он будет сильно мешать
придется какие-то кастыли типа волумов делать
вшивать же креды в образ чет не ок

Andrey
13.05.2018
10:37:46

Sergey
13.05.2018
10:38:41

Andrey
13.05.2018
10:38:50

Sergey
13.05.2018
10:39:02
yaml файлики не умеют интерполировать env переменные сами по себе

Andrey
13.05.2018
10:39:25
не умеют

Sergey
13.05.2018
10:39:32
ты можешь записать там значения вида %env(PARAM)%

Andrey
13.05.2018
10:39:45
хм
это вариант
спасибо

Sergey
13.05.2018
10:39:56
https://symfony.com/blog/new-in-symfony-3-2-runtime-environment-variables

Andrey
13.05.2018
10:40:22
а не, не вариант
это значит, мне надо будет искать это в config*.yml файлах и заменять

Google

Andrey
13.05.2018
10:41:27
это задача разработчиков, мне нужен простой список параметров
но это то, к чему мы рано или поздно придём

Sergey
13.05.2018
10:43:53
временно хотя бы
но да, плетью разработчиков что бы чето делали
2018-ый год

Andrey
13.05.2018
10:46:34
проблема в том, что код даётся в виде библиотеки, потом создаётся приложение через symfony new. То есть у меня на руках файлов вообще никаких нет, всё надо динамически sed'ом и такой-то матерью делать. Ещё какие-то бандлы в AppKernel.php прописывать. Жуть, в-общем
если ещё принять во внимание, что с PHP моё общение закончилось в 2005-м ... :)
благодарю за помощь

Sergey
13.05.2018
10:51:39

Andrey
13.05.2018
10:51:44
кстати, доп. вопрос со звёздочкой. В PHP/symfony есть общепринятый способ делать reproducible builds? C учётом того, что приложение может зависить от сторонних библиотек, которые ставятся через composer? Ну или best practices какие-нибудь?

Sergey
13.05.2018
10:52:01
CI

Sergey
13.05.2018
10:52:16
ну то есть по поводу composer - у него есть lock файл
потому composer install будет ставить только те версии которые уже ставились
я вообще composer install делаю в Dockerfile)

Andrey
13.05.2018
10:53:18
там только версии закрепить можно. Оно ещё всякий кэш и динамический код вроде может генерить
тот же secret в параметрах
хотя да, мы же договорились, что это на этапе запуска будет

Sergey
13.05.2018
10:55:29

Google

Sergey
13.05.2018
10:55:41

Andrey
13.05.2018
10:55:47
symfony new? понятно тогда

Sergey
13.05.2018
10:55:55
если у тебя все на env переменных то можно кэш в dockerfile даже делать
если нет - то при старте контейнера чистить будешь
вся кодогенерация там в целом идемпотентна, то есть если код не менялся то и кэш будет такой же (ну хэши могут отличаться)

Andrey
13.05.2018
10:56:54
у меня multi-stage сборка, в одном контейнере до composer install доводится, результат переносится в чистый контейнер на базе php

Sergey
13.05.2018
10:59:04
если ты беспокоишься за кэш - делай это отдельным стэпом
тебе всеравно надо кэш чистить если что-то поменялось

Admin
ERROR: S client not available

Sergey
13.05.2018
10:59:25
за кэш докера*

Andrey
13.05.2018
11:00:04
речь про контрольную сумму файлов сборки.
расписывать зачем нужны reproducible builds думаю не надо :)

Sergey
13.05.2018
11:04:53
ну то есть блин
кэш это кэш, либо его тебе docker cache закэшит либо у тебя что-то в коде поменялось и кэш в любом случае будет отличаться
это не то из-за чего надо заморачиваться, так как при построении кэша не используется ничего стороннего. Завязано только на текущее время разве что но это влияет только на инвалидацию кэша (которая отключены в prod окружении)

Google

Sergey
13.05.2018
11:07:46
единственный нюанс - доктрина может захотеть слазить в базу версию проверить, но это можно в конфиге указать и тогда лазить она не будет
(типа ей надо знать версию СУБД)

Andrey
13.05.2018
11:08:13
беда-беда-огорчение. Значит разраб мне в доке херню написал? Сначал пишет, что надо в parameters.dist.yaml что-то добавить, потом composer install, потом config*.yml, потом миграции, потом запуск.

Sergey
13.05.2018
11:08:38
ну то есть....

Andrey
13.05.2018
11:09:00
это отдельный вопрос, но я понял, о чём ты

Sergey
13.05.2018
11:09:14
у меня деплой прмиерно так:
docker-compose pull ...
docker-compose run --rm bin/console doctrine:migration:migrate -n
docker-compose up -d
ну или чем ты там все стартуешь
могли бы делать проще

Andrey
13.05.2018
11:10:29
у нас это в swarm, у нас нет отдельного шага, в который можно запихнуть инит/миграции. Всё это перед стартом делается в entrypoint.sh
но это не вина разработчиков, конечно

Sergey
13.05.2018
11:11:10
ну если миграции быстрые то не так страшно, у меня они по часу бывают частенько потому мне важно что бы контейнер не падал пока миграции не закончатся

Andrey
13.05.2018
11:11:21
они нам дали команды для миграции, просто мы их (пока) не отделили
миграции быстрые, да, там мелкие сервисы. И в базе у них хранятся промежуточные данные, которые можно дропнуть в любой момент
проблемно, но не критично
в идеале, хотелось бы, чтоб всей этой херней они занимались, мне разбираться в symfony/composer не совсем интересно :)
мне бы архивчик и команды для сборки/теста/инициализации/запуска
понял я, composer.json берётся не из кода библиотеки, а создаётся во время symfony new, а там есть эти скрипты обработки paramerters.dist.yml. Разраб на это и рассчитывает и в доках эти шаги и указывает..

Антон
13.05.2018
18:35:17
И сеттеры и геттеры это про доменные модели
Вернее их отсутствие

Artem
13.05.2018
18:45:42
Laravel
В a href написал session:flush
Почему он при обновлении страницы сессию очищает
А не при нажатии на ссылку?