Sto usando un Macbook Pro M2 con la configurazione Dev Container. L’utilizzo della memoria sembra molto elevato, è normale? Vedo circa 4 GB di utilizzo della memoria prima di eseguire qualsiasi cosa, poi ne servono circa 10 GB per completare una build riuscita e l’intera app in esecuzione a circa 8 GB.
Prima della condivisione della configurazione ufficiale di Dev Container, avevo il mio devcontainer.json che non utilizzava l’immagine di base discourse_dev. Utilizza solo 2 GB di RAM a riposo e 6 GB durante l’esecuzione di Discourse, quindi sono curioso di sapere quale potrebbe essere la differenza.
immagine di base: mcr.microsoft.com/devcontainers/base:debian-12
con queste “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"
},
},
incluso un altro servizio di container db che esegue l’immagine postgres:14
L’immagine ufficiale mira a semplificare lo sviluppo raggruppando tutto il necessario per eseguire Discourse senza intoppi, a fronte di requisiti di memoria più elevati, e la tua configurazione personalizzata sembra offrire un controllo preciso su versioni e librerie installate.
Stai anche riscontrando che l’immagine dev utilizza circa 8-10 GB di RAM?
Ora è diminuito a circa 6 GB dopo aver riavviato tutto, quindi suppongo che sia “tipico” e incolpo qualsiasi aumento superiore a quello a una potenziale perdita di memoria da qualche parte nello stack di sviluppo (probabilmente Docker Desktop).