micro
micro copied to clipboard
v9.4.1 breaks in nodejs12 especially node:12-alpine
I am not able to pin point the problem why it breaks in node:12-alpine image. When I log into the container I do see process listening on port 3000. But curl http://localhost:3000/ishealthy
gets stuck and was failing even while running inside the pod using exec. Nginx reports connection refused to this container.
/app # ps
PID USER TIME COMMAND
1 root 0:00 node /opt/yarn-v1.22.5/bin/yarn.js run prod
28 root 0:00 /usr/local/bin/node /app/node_modules/.bin/cross-env NODE_ENV=production micro -p 3000 dist/serverIndex.js
35 root 0:00 /usr/local/bin/node /app/node_modules/.bin/micro -p 3000 dist/serverIndex.js
42 root 0:00 sh
50 root 0:00 ps
/app # netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 :::3000 :::* LISTEN
tcp 0 0 ::ffff:192.168.118.138:3000 ::ffff:192.168.110.232:40688 TIME_WAIT
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] STREAM CONNECTED 275190742
unix 3 [ ] STREAM CONNECTED 275190743
Our fix was to revert to 9.4.0 which works fine. I thought I would post it incase someone else faces this problem. Meanwhile we are trying to upgrade to node16 to see if 9.4.1 works there.
Update: Node 16 also did not work so we are back to 9.4.0
When you run it locally what kind of errors do you get?
This is reproduceable even in local laptop environment
docker pull public.ecr.aws/docker/library/node:16.16-alpine
docker run -dit
Open a terminal and log into container:
docker exec
Run inside container npm i [email protected]
I took the below examples from documentation.
~ # cat > test.js
module.exports = () => {
console.log('server accepted connection');
'Welcome to Micro';
}
node_modules/.bin/micro test.js
Open another terminal and run curl localhost:3000
it gets stuck, even the console log 'server accepted connection' does not gets printed. . If curl is not installed by default run apk add curl
.
Some more hint into the issue - If I kill the micro server at this point, then curl says empty response returned from server:
/ # curl http://localhost:3000
curl: (52) Empty reply from server
Another example same symptoms.
~ # cat send.js
const {send} = require('micro')
module.exports = async (req, res) => {
const statusCode = 400
const data = { error: 'Custom error message' }
send(res, statusCode, data)
}
Same thing happens if you run node_modules/.bin/micro send.js
.
If you want to compare against 9.4.0 both of the above examples runs fine in 9.4.0. Just run npm i [email protected] and try rest of the steps they all passes.
Note: I ran docker using docker desktop and I have windows 10 machine, but that should not matter.
I think I found why it isn't working. There was a recent PR that reverted some changes wrongfully, which was was got applied to 9.4.1. You can stick to 9.4.0 or wait until there's a new major release in the coming days/weeks.
It should be resolved in the next 9.5 release.
This isn't just alpine related. I've tried micro with Node.js v14, v16 and v18 on macOS. Non of them worked with 9.4.1. Downgrading to 9.4.0 fixes the issue. This even effects simple code examples from the README (module.exports = () => 'Welcome to Micro';
) when you use the micro CLI.
@electerious As I said in the previous comment, there's an issue with 9.4.1 and I wouldn't recommend using it. Stick to 9.4.0 for the moment 😄
I seem to run into the same issue with 9.4.0 with NodeJS v12. Could anyone please share an example of a Dockerfile to ensure I have it right?
Running curl localhost:3000
gets stuck in the pod. Please help.
Hi @ranrao,
I do not have the exact dockerfile now as I have changed my laptop after I
moved to India. But what I remember is that, we use node14 images of alpine
linux, and for this experiment I exec'd into the container and ran npm install ***@***.*** version
.
On Sat, Nov 5, 2022 at 12:35 AM ranrao @.***> wrote:
@samarjit https://github.com/samarjit could you please share a sample of your Dockerfile please? I seem to have the same issue with v9.4.0.
— Reply to this email directly, view it on GitHub https://github.com/vercel/micro/issues/463#issuecomment-1304413381, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAEUAH5M5DBJCWMNOASEP23WGXW23ANCNFSM55MYTACQ . You are receiving this because you were mentioned.Message ID: @.***>
The code has been significantly changed with v10. Please reopen or create a new issue with a reproduction is you are still seeing this issue on v10. Thanks!