gm npm wrapper shells out to the gm/convert binary on every avatar upload; the builder stage had it but the final runtime stage did not, so every upload 500'd with 'gm convert binaries can't be found'.
Single-container avatar service: serve the resized files from outputDir so the frontend can GET /<md5(jid)>.jpg without a separate nginx.