Estoy en un Macbook Pro M2 usando la configuración del contenedor de desarrollo. El uso de memoria parece muy alto, ¿es esto típico? Veo alrededor de 4 GB de uso de memoria antes de ejecutar nada, luego necesito alrededor de 10 GB para completar una compilación exitosa y la aplicación completa en ejecución con alrededor de 8 GB.
Antes de que se compartiera la configuración oficial de Dev Container, tenía mi propio devcontainer.json que no utilizaba la imagen base discourse_dev. Utiliza solo 2 GB de RAM en reposo y 6 GB mientras ejecuta Discourse, así que tengo curiosidad por saber cuál podría ser la diferencia.
Imagen base: mcr.microsoft.com/devcontainers/base:debian-12
con estas “características”:
"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"
},
},
incluyendo otro servicio de contenedor de base de datos que ejecuta la imagen postgres:14
La imagen oficial tiene como objetivo simplificar el desarrollo empaquetando todo lo necesario para ejecutar Discourse de manera fluida, a costa de mayores requerimientos de memoria, y tu configuración personalizada parece tener un control detallado sobre las versiones y las bibliotecas instaladas.
¿También ves que la imagen de desarrollo utiliza entre 8 y 10 GB de RAM?
Ahora está en torno a 6 GB después de reiniciar todas las cosas, así que voy a asumir que eso es “típico” y culpar por cualquier cosa que vaya más allá de eso a una posible fuga de memoria en algún lugar en la pila de desarrollo (probablemente Docker Desktop).