Apple M1, эмуляция Docker arm64

Где указать --platform linux/arm64 в последовательности ./launcher rebuild app?

Мне нужно протестировать Discourse/Docker локально на M1.

Было бы здорово установить это до тех пор, пока сборка для ARM не будет полностью реализована.

С наилучшими пожеланиями,
Уокер

В данный момент Discourse не работает на архитектуре arm64, поэтому в лаунчере для неё нет переключателя.

Мы активно работаем над этим, и у нас уже есть несколько членов команды, использующих его на M1, но всё ещё требуется ветка libv8, которая является транзитивной зависимостью, приходящей из miniracer.

Спасибо, Рафаэль.

Вы все супер.

С наилучшими пожеланиями,
Уокер

Можно попробовать параметр docker args, который поддерживает лаунчер — возможно, это сработает.

Как обстоят дела с производительностью в разработке?

Невероятная производительность для однопоточных задач Rails, таких как создание темы или просмотр темы. Однако в многопоточных сценариях или при операциях, затрагивающих ввод-вывод диска, она всё ещё значительно уступает любым современным решениям на архитектуре x86_64.

Понял. Спасибо за эту информацию. Думаю, что программная поддержка M1 потребует времени, чтобы стать полноценной, но будущее выглядит многообещающим.

Звучит странно, но меня немного радует, что моё недавно купленное устройство внезапно не стало устаревшим. :wink:

Если это не поможет, можно использовать переменную окружения DOCKER_DEFAULT_PLATFORM. У меня сейчас в профиле zsh прописано:

export DOCKER_DEFAULT_PLATFORM=linux/amd64

При работе с Docker я почти всегда хочу, чтобы архитектура совпадала с архитектурой продакшн-систем.

По сравнению с MacBook предыдущего поколения это значительное улучшение, хотя проблемы с производительностью файловой системы всё ещё сохраняются. Тем не менее, высокопроизводительный настольный ПК на Linux всё равно будет быстрее.

Например, я могу запустить bin/turbo_rspec на ядре примерно за 2 минуты 50 секунд (M1 MacBook Pro, с Discourse, Redis и Postgres, запущенными нативно). Участники команды на высокопроизводительных настольных ПК с Linux делают это примерно за 1 минуту.

Каков план перехода этого в статус stable?

Нам нужно выпустить новый мини-рейсер / v8 gem, точных сроков пока нет, в данный момент мы тестируем альфа-версии

@sam, как продвигаются тесты? Я крайне заинтересован в версии, совместимой с M1.

Это не так уж плохо по времени… есть люди (разработчики), которые даже близко не подходят к таким результатам…

Для разработки Discourse на M1 вы можете найти информацию на форуме Rails: Tips and tricks for developing Rails applications on Apple Silicon - rubyonrails-talk - Ruby on Rails Discussions. Несколько человек из нашей команды используют это в повседневной работе, и всё работает.

Однако я не рекомендую запускать продакшн-сервер Discourse на M1.

Если так, то почему вы не выпускаете это в GA?

Я бы не рекомендовал запускать продакшн-сервер Discourse на M1.

Почему?

@david

Это просто восхитительно. Не хватает слов, чтобы поблагодарить вас за это. Отличная работа.

Кстати, достаточно ли хорош MacBook Air на M1 для разработки под Discourse?

Думаю, да :slight_smile:

Это абсолютно восхитительно. Я не нахожу слов, чтобы выразить вам благодарность за это. Отличная работа.

Думаю, достаточно будет просто рассказать об этом другим о Discourse…

Я не совсем понимаю… всё это общедоступно, вы можете самостоятельно следовать этим инструкциям и запустить всё.

Наши инструкции для продакшн-установок предназначены для запуска на хосте с архитектурой AMD64 под Linux. Возможно, вам удастся запустить его на других ОС или архитектурах, используя советы в этой теме, но гарантий нет.

Безусловно. У меня версия Pro, но у нас также есть люди, использующие MacBook Air и Mac Mini на M1. Судя по нашим бенчмаркам разработки, разница в производительности между ними практически отсутствует.

где? в официальном публичном репозитории?

В статье, на которую я дал ссылку:

Мы не вносили никаких изменений в Discourse, которые находятся в какой-либо частной ветке разработки, если вы об этом спрашивали. Вы можете заставить Discourse работать на системе M1, установив ARM64-версии зависимостей, которые мы используем; это описано в руководстве, которое выше опубликовал Дэвид.

Мы все хотели бы, чтобы официальный репозиторий работал с новым оборудованием, верно :wink: а не какой-то код, спрятанный в шкафу.