Me sale error al liberar imagen
2021-04-07T06:30:58.443089+00:00 heroku[web.1]: Starting process with command `node index.js` 2021-04-07T06:31:01.899268+00:00 app[web.1]: Error: Exec format errorVolví al código node.js más simple que solo requiere Express. No puedo entender lo que podría estar mal.
La configuración es la siguiente:
WORKDIR /app COPY package.json . RUN npm install COPY index.js . CMD ["node", "index.js"] { "name": "SigningV2", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "express": "^4.17.1" } } web: npm start - PORT: 3000 - USE_NPM_INSTALL: TRUE (also tried without, same result)pd: cuando se ejecuta la web local de heroku, funciona
Ok, encontré una solución de trabajo. Es Apple M1 el que está rompiendo esta configuración estándar (otra vez) :(
Necesitamos forzar la plataforma correcta para que sea compatible con Heroku. Para hacer esto, vamos a usar Docker buildx. Tenga en cuenta que no use Heroku: container push porque, hasta donde yo sé, eso no admite el forzado de diferentes plataformas.
Lo que funcionó para mí es la siguiente secuencia:
# replace signingv2 with your own tag docker buildx build --platform linux/amd64 -t signingv2 . # make sure to use the name of your Heroku app docker tag signingv2 registry.heroku.com/signingv2/web # use docker push to push it to the Heroku registry docker push registry.heroku.com/signingv2/web # then use heroku release to activate heroku container:release web -a signingv2Espero que Docker para Apple M1 sea compatible pronto con varias plataformas.
En mi caso resolví el problema cambiando el Dockerfile.
Lo actualicé para extraer la imagen del nodo para linux/amd64:
FROM --platform=linux/amd64 node:14.17.0-alpineReconstruir, empujar a heroku y debería funcionar bien entonces.
La solución Jinxvar funciona. Tuve un problema diferente después
"message": "no pg_hba.conf entry for host "xxx", user "xxx", database "xxx", SSL off"Si usa Postgres para la base de datos y obtiene el error de salida, asegúrese de incluir esto en su configuración de pg.
"ssl": true, "extra": { "ssl": { "rejectUnauthorized": false } },Sin embargo, esta ruta probablemente no sea segura para ejecutarse en producción. Cuando esté listo para la producción, cambie la configuración anterior a
"SSL": { "ca": process.env.<your-SSL-cert-var>,}