Я использую Macbook Pro на M2 с настройкой Dev Container. Потребление памяти кажется очень высоким, это нормально? Я наблюдаю использование около 4 ГБ памяти ещё до запуска чего-либо, затем для успешной сборки требуется около 10 ГБ, а при полной работе приложения потребление составляет примерно 8 ГБ.
До того как была официально опубликована конфигурация Dev Container, у меня был свой файл devcontainer.json, в котором не использовался базовый образ discourse_dev. Мой контейнер потребляет всего 2 ГБ ОЗУ в простое и 6 ГБ при запуске Discourse, поэтому мне интересно, в чём может быть разница.
Базовый образ: mcr.microsoft.com/devcontainers/base:debian-12
с следующими “features”:
"features": {
"ghcr.io/rocker-org/devcontainer-features/apt-packages:1": {
"packages": "software-properties-common libpq-dev vim curl expect debconf-utils build-essential zlib1g-dev libssl-dev openssl libcurl4-openssl-dev libreadline6-dev libpcre3 libpcre3-dev imagemagick advancecomp jhead jpegoptim libjpeg-turbo-progs optipng pngcrush pngquant gnupg2"
},
"ghcr.io/devcontainers/features/ruby:1": {
"version": "3.3.4"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "18",
"pnpmVersion": "9"
},
"ghcr.io/devcontainers/features/rust:1": {
"version": "1.75.0"
},
"ghcr.io/itsmechlark/features/redis-server:1": {},
"ghcr.io/devcontainers/features/go:1": {},
"ghcr.io/azutake/devcontainer-features/go-packages-install:0": {
"PACKAGES": "github.com/mailhog/MailHog@latest"
},
},
а также дополнительный сервис базы данных в отдельном контейнере с образом postgres:14.
Официальный образ упрощает разработку, объединяя всё необходимое для бесшовного запуска Discourse, но требует больше оперативной памяти, тогда как ваша кастомная сборка обеспечивает тонкий контроль над версиями и установленными библиотеками.
Вы тоже видите, что образ разработчика использует около 8–10 ГБ ОЗУ?
Теперь после перезагрузки всех компонентов объём составляет около 6 ГБ, поэтому я предполагаю, что это «нормально», и буду винить всё, что превышает эту цифру, в возможной утечке памяти где-то в стеке разработки (скорее всего, в Docker Desktop).