Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как объединить структуру внутри структуры?

Лучший ответ:
Как вариант:
cat_goods_dict = defaultdict(list)

for d in data[0]['sub_cats'] + data[1:]:
	  cat_goods_dict[d['cat_name']] += d['goods_inside']

new_data = [
	  {'cat_name': cat_val, 'goods_inside': goods_val}
	  for cat_val, goods_val in cat_goods_dict.items()
]

Худший ответ:
import itertools
struct_resale = struct.pop(0)

lst = []
for x, y in itertools.product(struct, struct_resale['sub_cats']):
    if x['cat_name'] == y['cat_name']:
        c = x.copy()
        c.update(y)
        c['goods_inside'] = x['goods_inside'] + y['goods_inside']
        lst.append(c)

print(lst)

Вроде как работает. Но не знаю, может есть вариант получше?
Вопрос: Как написать функцию пересчета значений одной шкалы в другую?

Лучший ответ:
Через 3 точки можно провести параболу, тогда не придется работать с диапазонами.
Посмотрите например интерполяцию Лагранжа.
https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D...
Для вашего кейса Y =1250*X*(X+3.8)
X - Это исходная шкала
Y - Это новая шкала
Y(0)    = 0
Y(0.2) = 1000
Y(1)    = 6000

Худший ответ:
Это в школе называется - построить уравнение прямой по двум точкам.
Вопрос: Какой знак поставить при нахождении ускорения?

Лучший ответ:
Ускорение --- это не число, а вектор.
Модуль (величина) вектора равен 0.1 м/c^2.

Худший ответ:
В данном случае смысл минуса такой:
отрицательный знак ускорения - значит что оно направлено против начальной скорости
А вообще, нарисуйте векторы и сделайте проекции. ИМХО, первое что нужно сделать в решении почти любой задачи по физике - это рисунок/схему/график.
Вопрос: О чем говорит результат запрса? Или какой вывод можно сделать?

Лучший ответ:
О чем говорит state = active - запрос до сих пор не завершился
О том что запрос выполняется.

О чем говорит wait = lock и wait_event = transaction_id?
Ожидаем результат другой транзакции.

которая обновляет некоторые данные
транзакция 1 обновила строку но ещё не завершилась.
транзакция 2 хочет обновить ту же самую строку. Но какие данные она увидит? Те которые ещё не подтвердила транзакция 1 - нельзя. Вдруг транзакция 1 будет rollback? Те которые были до прихода транзакции 1 - тем более нельзя. Потому ждём пока не закончится транзакция 1.

Найдите начало этого хвоста, например вот таким запросом

Худший ответ:
Очевидно, вам нужно ознакомиться с документацией к соответствующей вьюхе.
Вопрос: Как скачать Плейлист с YouTube?

Лучший ответ:
Всем, увы, вынужден поставить "неуд" - самый простой, легально бесплатный и безопасный способ никто не посоветовал. Это программа под Windows - Download Master. Сам нашел. Только перед закачкой надо в настройках указать папку, куда будет качать и снять все чекбоксы со Splash-скринов, а то замучаетесь с ними. Программе указывается ссылка на ЮТьюбовский плейлист, как обычная закачка, а дальше она сама все разбирает и выкачивает. Вот так.

Худший ответ:
JDownloader jdownloader.org (при установке откажитесь от Оперы и антивируса!)
OpenSource и бесплатно, и баннеров нет
Можно скачивать с описаниями и превью видео
Использует FFmpeg
Интерфейс GTK, для чайников не пойдет, много опций и шаблонов, разобраться и настроить можно
Вопрос: Как разработать веб-приложение?

Лучший ответ:
Суть следующая: посетитель заходит в приложение и в поле вводит номер своей виртуальной "скидочной" или просто "персонифицированной" карты (тем самым регистрируя или активируя её). Номера для карт должны генерироваться и выдаваться менеджерам для привлечения новых клиентов.Вот это требование нужно продумать и от этого плясать дальше.
Прежде нужно понять бизнес-процессы.
В качестве менеджера (роль пользователя в БД) я захожу туда-то, делаю X и получаю Y.
В качестве клиента (роль пользователя в БД) я захожу туда-то, делаю X и получаю Y.
Расписываешь действия, которые выполняет пользователь, что видит на экране, как взаимодействует через интерфейс и т.д. 

Строишь макет интерфейса.
https://careerfoundry.com/en/blog/ux-design/how-to...
https://uxplanet.org/basic-ui-ux-design-concept-di...
Старайся сделать всё просто, минимально и при этом функционально. Не нужно гнаться за JS-фреймворками - они обычно лишь добавляют сложности. Если на странице простая форма для ввода данных с валидацией полей, то ничего не нужно добавлять, а использовать разве что какие-то библиотеки для облегчения труда. Если есть несложная логика интерфейса, возможно достаточно какого-то движка шаблонов типа Handlebars.

Номер карты обычно считывается с магнитной полосы или чипа. Нужно генерировать номера карт. Для этого нужно знать что представляет из себя этот номер и есть ли какие-то правила для его генерации.
Если просто произвольная последовательность цифр, то это тривиально.
Продумай какой тип данных нужен для хранения в СУБД, что будет находиться в таблице, при разных сценариях как будет использоваться (находиться).

Для работы с СУБД берется ORM, например SQLAlchemy или другой.

Худший ответ:
FRONT (PWA):

Разработка: https://habr.com/ru/company/ruvds/blog/421349/, 
Демо: https://github.com/gokulkrishh/demo-progressive-web-app
Manifest: https://www.w3.org/TR/appmanifest/
Service Worker: https://googlechrome.github.io/samples/service-worker/


Back-End:
Тут все понятно... Python + Django/Flask + PgSQL
Вопрос: Правильно ли я пониманию, что архитектура «битрикс управление сайтом» несколько кривая?

Лучший ответ:
Я бы сказал - своеобразная.
Там насколько мне помнится, написано что компонент - контроллер, а его шаблон это вьювер. 
Да, формально, если разобраться, так и есть.
На практике у этого подхода есть как недостатки, так и преимущества.
Ну к примеру мы говорим что якобы все три части у нас независимы, но на самом деле View всегда связаны с Controller, а Controller почти всегда связан с Model.  В Битриксе не стали делать вид что это не так - компоненты это части модулей, а шаблоны не отделимые, хотя и сменяемые части  компонентов. В большинстве случаев это соответствует практическим кейсам.
Но никто не заставляет вас следовать этим рекомендациям. За свою жизнь разработчиком я видел многое и чаще всего это были какие-то попытки реализовать отдельные модели поверх Bitrix API, я и сам не однократно так делал и даже предпринял попытку обобщить этот опыт, пока не завершенную.
Но я видел так же например и ZendFramewormk поверх Bitrix и вполне классическим MVC.
Поэтому архитекутра Битрикс не приговор.
А ноги такой архитектуры растут из  попытки сделать CMS с которой, хотя бы в теории, мог справится человек совсем без подготовки. Надо же что-то показывать на презентациях. Но это не значит что вы обязаны делать и свои продукты для презентаций.
Рекомендации же делать именно так нужны для того, что бы вы делали проект, максимально привычный для любого битрикс-разраба. Когда я впервые столкнулся со связкой Bitrix-Zend я честно говоря опешил, и если бы не опыт с дргуими фреймворками и CMS долго бы тупил...

Худший ответ:
Я бы сказал - своеобразная.
Там насколько мне помнится, написано что компонент - контроллер, а его шаблон это вьювер. 
Да, формально, если разобраться, так и есть.
На практике у этого подхода есть как недостатки, так и преимущества.
Ну к примеру мы говорим что якобы все три части у нас независимы, но на самом деле View всегда связаны с Controller, а Controller почти всегда связан с Model.  В Битриксе не стали делать вид что это не так - компоненты это части модулей, а шаблоны не отделимые, хотя и сменяемые части  компонентов. В большинстве случаев это соответствует практическим кейсам.
Но никто не заставляет вас следовать этим рекомендациям. За свою жизнь разработчиком я видел многое и чаще всего это были какие-то попытки реализовать отдельные модели поверх Bitrix API, я и сам не однократно так делал и даже предпринял попытку обобщить этот опыт, пока не завершенную.
Но я видел так же например и ZendFramewormk поверх Bitrix и вполне классическим MVC.
Поэтому архитекутра Битрикс не приговор.
А ноги такой архитектуры растут из  попытки сделать CMS с которой, хотя бы в теории, мог справится человек совсем без подготовки. Надо же что-то показывать на презентациях. Но это не значит что вы обязаны делать и свои продукты для презентаций.
Рекомендации же делать именно так нужны для того, что бы вы делали проект, максимально привычный для любого битрикс-разраба. Когда я впервые столкнулся со связкой Bitrix-Zend я честно говоря опешил, и если бы не опыт с дргуими фреймворками и CMS долго бы тупил...
Вопрос: Существует ли java runtime для андроида?

Лучший ответ:
Для вас шоком будет, наверное, что он там не просто есть, он намертво запаян в систему и все android-программы работают именно на нём. И вторая новость: Android - это Linux.

Худший ответ:
Есть, довольно старая версия, но есть, если установить отдельно иксы, то джава приложения с гуем пойдут.

https://4pda.ru/forum/index.php?showtopic=599714
Вопрос: Как оформить сайт в поисковой выдаче?

Лучший ответ:
Микроразметка (семантическая разметка) Schema.org

Худший ответ:
Поисковые системы генерируют выдачу самостоятельно. Невозможно напрямую задать в каком-нибудь «Вебмастере» вид своего сайта в поиске. «Яндекс» и Google даже описание могут сгенерировать сами, не обращая внимания на ваш метатег description!
Однако можно попробовать повлиять на то, как поисковик показывает ваш сайт в выдаче.
Ссылки на статьи справа могут появиться, если на вашем сайте есть микроразметка Schema.org.
Например, вот микроразметка на моем сайте (в формате ld+json):
<script type="application/ld+json">
{
  "@context" : "http://schema.org",
  "@type" : "Article",
    "url" : "https:// названиесайта ",
  "publisher":{
      "@type":"Organization",
      "name":" названиесайта ",
      "logo":{"@type":"ImageObject","url":"https://названиесайта.info/img/metro.jpg"
      }
   },
   "author":{
      "@type":"Organization",
      "name":" названиесайта ",
      "logo":{"@type":"ImageObject","url":"https://названиесайта /img/metro.jpg"
      }
   },
   "headline": "заголовок страницы",
   "mainEntityOfPage": "https:// названиесайта ",
   "articleBody": "описание страницы
.",
   "image":[
      "https:// названиесайта /img/metro.jpg"
   ],
   "datePublished":"2020-03-01T08:59:59+03:00",
   "dateModified":"2020-03-01T08:59:59+03:00"
}
</script>
Вам придется разобраться, какую разметку нужно создать на сайте, чтобы получить красивую выдачу. А потом подождать месяцев шесть, пока выдача изменится.
Кстати, кажется, пока «Яндекс» не поддерживает формат ld+json. Для него придется реализовывать микроразметку другим образом, а ld+json подходит только для Google.
Что касается дополнительных ссылок (расширенного сниппета), которые появляются в выдаче снизу, например, с контактами и прочим, их можно получить, если на вашем сайте есть меню. 
В «Яндексе» есть подробные указания на этот счет. Самое главное: нужно, чтобы на сайте было меню основных разделов, в ссылках меню должен быть атрибут alt, который должен отражать их назначение.
Тексты внутренних ссылок, которые ведут на эти разделы, должны совпадать с title и h1 разделов и т. д. Вот тут есть все подробности https://yandex.ru/support/webmaster/search-results...
Вопрос: Как запретить убивать процесс автоматически?

Лучший ответ:
Конечно искать проблему и утечки памяти, можно добавить своп, в ситуациях когда процессы это допускают, это может помочь.

Можно форкать в момент когда процесс убивают (наверное имеет смысл если причина убийства не физический конец памяти а некоторые комбинации настроек лимитов), предварительно освободив занятую память конечно. Т.е. ваш процесс конечно умрет, но перед самой смертью он родит клона, с меньшим потреблением памяти.
p.s. не делайте так, это только от безысходности.

тут как раз обсуждали как отловить момент

Худший ответ:
Нужно разбираться с утечкой памяти и грамотно разграничивать ресурсы, а не отключать OOM-killer.
Вопрос: Насколько сильно различаются мосты от коммутаторов при построений сетей?

Лучший ответ:
Насколько сильно различаются мосты от коммутаторов при построений сетей?Не имеют ничего общего.

Худший ответ:
Мосты используют для объединения сетей с разными технологиями/топологиями.
Вопрос: Почему переопределение встроенных в браузеры стилей это плохо?

Лучший ответ:
С чего вы взяли что это плохо? Откуда тогда берутся reset.css и normalize.css?

Худший ответ:
Плохо для некоторых элементов, а не всех. К примеру select, существует куча плагинов на js которые позволяют переопределить стиль, но во многих из них не реализована нативная поддержка селектов для различных устройств, мобильных в частности. Не говоря уже о поддержке скринридеров.
Вопрос: Как определить номер сети, номер узла и широковещательный адрес?

Лучший ответ:
Даёте в лоб преподавателю и объясняете, что без маски подсети/CIDR вопрос неоднозначен.

Худший ответ:
Если речь про классовую адресацию, тогда это сеть клааса С (/24), так как первые три бита адреса 110

Network 109.126.49.0
Broadcast 109.126.49.255

Номер узла получается 37
Вопрос: Как обработать ответ командной строки стандартными средствами?

Лучший ответ:
program > file
program > file 2>&1
program | program2
program | program2 2>&1
1. Стандартный вывод команды перенаправить в файл.
2. Стандартный вывод и вывод ошибок перенаправить в файл.
3. Стандартный вывод программы направить на стандартный ввод программы2, для обработки.
4. Стандартный вывод и вывод ошибок направить на ввод программы2, для обработки.

Худший ответ:
program > file
program > file 2>&1
program | program2
program | program2 2>&1
1. Стандартный вывод команды перенаправить в файл.
2. Стандартный вывод и вывод ошибок перенаправить в файл.
3. Стандартный вывод программы направить на стандартный ввод программы2, для обработки.
4. Стандартный вывод и вывод ошибок направить на ввод программы2, для обработки.
Вопрос: Как сделать ромбовидный div?

Лучший ответ:
гугли "rhombus layout codepen"
https://codepen.io/fafi/pen/cqDCu
https://codepen.io/imhvost/pen/KmweVp

Худший ответ:
вот так:
https://jsfiddle.net/litdon/rovk468d/2/
Вопрос: Как найти источник загрузки сторонней рекламы в браузерах?

Лучший ответ:
Баннер отображается только на сайтах с http
Это однозначно провайдер. В саппорт тут особо без толку, они могут и не в курсе быть. Пров видит http соединение и врезается в него.

Худший ответ:
Технически  есть 3 варианта появления такой рекламы:
1. провайдер
Обычно вставляет на http-страницы. Реклама появляется во всех браузерах компа.
Проверьте есть ли реклама на https-страницах, может ваш провайдер ещё и MItM SSL зафигачил.

Проверить провайдера можно путём установки VPN - в него провайдер вмешаться не сможет.

2. браузерные плагины и расширения
Вставляют рекламу даже на https-страницы, и на любом VPN, так работают с уже расшифрованной странице в браузере.
Реклама появляется только в браузере с установленным плагином.
Особо пакостные (типа mail.ru агента) устанавливаются на уровне операционки и гадят во всех браузерах одновременно.

3. Вирус
Тоже может вставлять рекламу во все браузеры.

Судя по тому, что у вас показывается приличная реклама - это проделки провайдера. Вирусы и браузерные плагины вам бы показывали что-нибудь непотребное.
Вопрос: Можно ли подменить dll сборку в .Net?

Лучший ответ:
Да - можно положить рядом с екзешником, например. Но с mscorlib такое, скорее всего, не прокатит, тк это подписанная сборка и приложение будет искать конкретную сборку

Худший ответ:
Может положить его рядом с файлом .ехе.
Вопрос: Почему не работает React-проект посли заливки на хостинг?

Лучший ответ:
Когда ваше приложение готово к развёртыванию в продакшене, запуск команды npm run build создаст оптимизированную сборку вашего приложения в папке build.reactjs.org

Худший ответ:
В зависимости от настройки npm-скриптов и вашего сборщика команды из прошлых ответов могут не работать. Если я правильно понимаю, то ваш сборщик собирает бандл в папку public (и там же лежит ваш index.html) и именно ее содержимое нужно выгружать на хостинг. Весь прочий код до сборки не нужен, потому что сборщик все равно собирает его в бандл. Самое главное чтобы именно index.html лежал в корне, сервер по умолчанию отправляет именно его браузеру, после чего браузер выкачивает все файлы, которые  описаны в индексном файле.
Вопрос: Что прописать нужно чтобы файл html автоматически чистилcя в кэше браузера и показывал последние изменения?

Лучший ответ:
клиент как только обновит страницу, у него больше не показывалась старая информация, а показывалась новая.
Неправильный ответ - прописать заголовки кеширования на короткое время, магия, чистка кэша и вот это все
Правильный ответ - не использовать файлы с одинаковыми именами для динамически меняющегося контента. 
Поясню: файлы js, css, изображения и прочие элементы дизайна и функционала должны кешироваться, они не являются динамической информацией и не должны часто меняться. Отключать кеширование для них - глупо и чаще всего бесполезно(вы же не храните прайс в js файле надеюсь?). Информация же динамическая (в вашем случае прайс) либо в виде текста лежит(что вообще не кешируется по умолчанию), либо лежит у вас в виде файла типа price.xls. И вот во втором случае уже будут проблемы. И тут есть 2 нормальных решения: первое - делать уникальные имена для прайсов(например добавлять дату изменения, что логично и удобно как вам так и клиенту), либо после ссылки на файл добавлять уникальный гет параметр, в итоге ссылка файла будет выглядеть как price.xls?date=220519. Тоже приемлемый вариант, но уникальное имя лучше/удобнее.

Худший ответ:
Вам нужно не смотреть в сторону кеша браузера, а использовать подконтрольный разработчику кеш - например, localStorage. Вашему сайту бесплатно доступно 5Мб на стороне пользователя. Теоретически можно даже превысить этот лимит, побеспокоив пользователя.
Соответственно, сайт выдаёт сводную инфу и крохотный скрипт, который проверяет, устарели данные или нет. Если устарели, то очищает сохраненные данные и загружает новые.
Можно даже по-умному это всё делать. Например, так:
1) Мини скрипт проверяет актуальность базы (когда она была загружена).
2) Дальше шлет мини запрос (ajax) на сервер с указанием этой даты.
3) Сервер проверяет, что изменилось с той даты.
4) Сервер высылает новые данные только с изменениям. Например: товар 555 удалить, товар 777 добавить, товар 999 изменить цену на 14.99
5) Клиент принимает небольшую порцию данных и актуализирует локальную базу в localStorage
Вопрос: Вход в почту без взлома на яндексе?

Лучший ответ:
обратиться в службу поддержки Яндекс

Худший ответ:
А ПК c которого меняли пароль проверяли на предмет вирусов, троянов ?
Вопрос: Программирование в. VR шлеме — удобно или глупость?

Лучший ответ:
Глаза посадишь %-()

Худший ответ:
сейчас гораздо популярнее тренд на рабочие места, когда можно за минуту перевести в режим работы стоя. ну и собственно, большую часть времени так и работать
ps есть варианты даже стоя-сидя-лежа.. но дорогие )) и в любом случае, длительный VR пока что опаснее и для зрения, и даже для жизни
не смотря на то что в выборке, первой же идет критичная статья о работе стоя, в ней сразу подтверждается вред длительной "сидячести" (лежка будет не лучше). а так же, по большей части критикуются сами исследования По мнению авторов сравнительного исследования качество доказательной базы оказалось низким, исследования были плохо проработаны и имели небольшое количество участников.
Вопрос: Зачем создавать циклы и ветвления с названием переменной в условии?

Лучший ответ:
Смысл в том чтобы не нагружать DOM пустыми тегами.

Худший ответ:
Смысл в шаблонизации
Вопрос: Изменение поведения Vim в зависимости от типа файла?

Лучший ответ:
Возможно, пример:
function Set_python_settings()
    "Настройки табов для Python, согласно рекоммендациям
    set tabstop=4
    set shiftwidth=4
    set smarttab
    set expandtab "Ставим табы пробелами
    set softtabstop=4 "4 пробела в табе
    set smartindent
    set tags=tags
"   set tags=tags.da,python.tags,twisted.tags,tags
"   set path+=~/work/da/python/**
endfunction

function Unset_python_settings()
  set tags=tags;/
endfunction

autocmd BufNewFile,BufEnter *.{py} call Set_python_settings()
autocmd BufLeave *.{py} call Unset_python_settings()

Худший ответ:
Возможно, пример:
function Set_python_settings()
    "Настройки табов для Python, согласно рекоммендациям
    set tabstop=4
    set shiftwidth=4
    set smarttab
    set expandtab "Ставим табы пробелами
    set softtabstop=4 "4 пробела в табе
    set smartindent
    set tags=tags
"   set tags=tags.da,python.tags,twisted.tags,tags
"   set path+=~/work/da/python/**
endfunction

function Unset_python_settings()
  set tags=tags;/
endfunction

autocmd BufNewFile,BufEnter *.{py} call Set_python_settings()
autocmd BufLeave *.{py} call Unset_python_settings()
Вопрос: Ip адрес 192.168.0.10 можно задать,сетевому устройству или сеть с нуль-ом нельзя??

Лучший ответ:
Можно

Худший ответ:
В пятницу? Вечером? Нуль-ом сеть? 
Да, нет, наверное!!!
Вопрос: Как плавно развернуть div?

Лучший ответ:
Способ с max-height: 0, а потом max-height: *какое-то число* тоже не подходит так как со временем в div будут добавляться новые элементы и высота будет изменяться.

Можно обернуть контент блока, у этой обёртки мы будем брать clientHeight и присваивать это значение в max-height родителя

Вот, можно посмотреть здесь, возможно код не очень хороший, но суть уловить можно
https://codepen.io/Kirill9011/pen/BajEwBJ?editors=0010

Худший ответ:
Если в проекте используется jquery, то через .slideToggle() или аналог jQuery slideToggle на чистом Javascript
Вопрос: Как сделать выбор значений из списка, через foreach?

Лучший ответ:
Если работаете с формой, используйте submit  и дайте селекту имя . <select name="nameOfYourVariable">
Тогда при отправке этой формы,  на сервере выбранное из селекта значение будет доступно как  :$_GET['nameOfYourVariable'];

Худший ответ:
чет не очень понятно что вообще вы делаете
Сначала вы создаете форму, в ней селектор и потом (внезапно) ссылку с гет параметрами... 
Вероятно там просто вместо ссылки должна быть кнопка типа submit, тогда все будет логично.
Вопрос: Как настроить Google Ads на точное фразовое соответствие?

Лучший ответ:
Попробуйте добавить "+" перед названием города. В дополнение к квадратным скобкам.

Худший ответ:
Есть такая утилита, которая сильно облегчает работу большим объемом ключей: https://tools.yaroshenko.by/matchtypes.php
Вопрос: Компонент не вмонтирован?

Лучший ответ:
class Rate extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            date: '',
            currencyRat: {},
        }
        this.currency = ['USD', 'RUB', 'CAD'];
    }
    componentDidMount() {
        this.getRate(); // не в конструкторе надо вызывать, а в componentDidMount
    }
    getRate() {
        fetch('https://api.exchangeratesapi.io/latest')
            .then(data => {
                return data.json(); // забыли вызвать функцию
            })
            .then(data => {
                console.log(data)
                this.setState({ date: data.date })
            })
    }

Худший ответ:
Не могу понять почему ошибку выдает.Потому что вызываете setState в конструкторе, по сути.

нужно запустить через componentDidMount но это тоже не сработалоА должно было. Но поскольку код вы не показали, в чём там был подвох нам неизвестно. Скорее всего, вы просто добавили вызов в componentDidMount, но не убрали его из конструктора.
Вопрос: Код просто не работает, ввожу число и все, но максимальную цифру в числе не выводит(?

Лучший ответ:
Учитесь пользоваться debug


10 Как пример, просто пройдитесь дебагом  и поймете чето к чему

Худший ответ:
Учитесь пользоваться debug


10 Как пример, просто пройдитесь дебагом  и поймете чето к чему
Вопрос: Подходит ли докер для личного vps с self-hosted-проектами?

Лучший ответ:
Насколько подходит для этого докер?
вполне подходит

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

- NextCloud - PHP7, FPM
отдельная папка с docker-compose, который стартует контейнеры этого проекта

- YOURLS (сокращатель ссылок) - PHP7, FPM
отдельная папка с docker-compose, который стартует контейнеры этого проекта

и т.д.
...

- Nginx, раскидывающий запросы с поддоменов на весь этот зооапрк, + Certbot для SSL
ну - nginx можно снаружи оставить чтобы запросы в соответствующие контейнеры прокидывать

Худший ответ:
А что мешает взять Ansible и просто с его помощью разворачивать всю эту инфраструктуру где угодно?