I have tried to start Node.js. server using Docker and custom add-on.
This is my Dockerfile
ARG BUILD_FROM
FROM $BUILD_FROM
ENV LANG C.UTF-8
ADD package.json /
RUN apk add --no-cache nodejs-npm jq && \
npm install --save
EXPOSE 8000
# Copy data for add-on
COPY run.sh /
COPY server.js /
COPY .env /
RUN chmod a+x /run.sh
CMD [ "/run.sh" ]
And this is my run.sh
#!/usr/bin/with-contenv bashio
node server.js
When I start the add-on it starts successfully and this is the log
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] done.
[services.d] starting services
[services.d] done.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm64"})
+ [email protected]
added 1 package from 1 contributor, removed 1 package, updated 1 package and audited 469 packages in 22.268s
33 packages are looking for funding
run `npm fund` for details
found 34 vulnerabilities (17 low, 2 moderate, 15 high)
run `npm audit fix` to fix them, or `npm audit` for details
Express listening on port 8000!
This is the config.json
{
"name": "Hello world",
"version": "1",
"slug": "hello_world",
"description": "My first real add-on!",
"arch": ["armhf", "armv7", "aarch64", "amd64", "i386"],
"startup": "application",
"boot": "auto",
"options": {},
"schema": {},
"ports": {
"8000/tcp": 8000
}
}
But when I open http://my-local-home-assistant-ip:8000/
, I got
This site can’t be reached
While when I run the same command on my mac and open http://localhost:8000/
it’s working successfully.