Weird start command behaviour

does this override ENTRYPOINT or CMD in the dockerfile? i can't get it to work no matter what, it keeps returning ERROR Unknown command node /app/node_modules/saaskitty/build/production/main.js start --service=worker this is the default in the Dockerfile which is working fine in another service that doesn't configure Custom Start Command
ENTRYPOINT [ "node", "/app/node_modules/saaskitty/build/production/main.js" ]
CMD [ "start", "--service=server"]
ENTRYPOINT [ "node", "/app/node_modules/saaskitty/build/production/main.js" ]
CMD [ "start", "--service=server"]
followed the guide here https://docs.railway.app/reference/build-and-start-commands#start-command, but it seems not working?
Railway Docs
Build and Start Commands | Railway Docs
Documentation for Railway
No description
Solution:
perhaps, im not really sure whats causing it, but the fact that your app has started means this isnt exactly an issue with railway
Jump to solution
73 Replies
Cayter
Cayter3w ago
56e8d4c1-7369-4e6b-b4c1-159f7d94bfdd
Brody
Brody3w ago
when a dockerfile or image is in use that custom start command will overwrite the entrypoint and cmd can you share your entire dockerfile?
Cayter
Cayter3w ago
GitHub
starter/Dockerfile at main · saaskitty/starter
The starter template for quickly launching your full-stack web application. - saaskitty/starter
Brody
Brody3w ago
does this work if you omit the start command in the service settings?
Cayter
Cayter3w ago
yeah i have another service that doesn't have custom start command and it's working fine with this Dockerfile i run 2 services server -> fastify server with remix which is run via start --service=server worker -> bullmq which is run via start --service=worker
Brody
Brody3w ago
those two services seem like they wouldnt be using the same dockerfile either way, what runtime are you currently on?
Cayter
Cayter3w ago
distroless nodejs v22 i'm pretty sure Dockerfile doesn't have any issue, as i have compose.yml that uses the same and it's running fine locally
Brody
Brody3w ago
railway runtime, check your service settings
Cayter
Cayter3w ago
this?
No description
Brody
Brody3w ago
switch to legacy and see what happens
Cayter
Cayter3w ago
ok let me try now same error
Cayter
Cayter3w ago
No description
Cayter
Cayter3w ago
is there a way to know how railway apply Custom Start Command? 'cause ENTRYPOINT and CMD are pretty different and the docs is very ambiguous
Brody
Brody3w ago
i would have to ask a team member, and they are very busy at the moment so i dont want to disturb them. are you on the v2 builder or the legacy builder?
Cayter
Cayter3w ago
i tried both legacy and v2
Brody
Brody3w ago
builder, not runtime
Cayter
Cayter3w ago
would this affect anything?
No description
Brody
Brody3w ago
try disabling it
Cayter
Cayter3w ago
trying ok seems like this is the culprit, i'm seeing a different error that's not related to deployment
Brody
Brody3w ago
what error
Cayter
Cayter3w ago
No description
Brody
Brody3w ago
thats because you arent on the v2 runtime
Cayter
Cayter3w ago
do you mean my databases have to be on legacy if my services are on legacy?
Brody
Brody3w ago
no, your app should be on v2 your databases are on legacy regardless since they have a volume
Cayter
Cayter3w ago
let me try updating them to v2
Cayter
Cayter3w ago
both my services have the same env and v2 runtime (same as redis queue) but only server can connect to queue.railway.internal (private) and not the worker i remember bumping into the same 2 months back when i tried railways
No description
Cayter
Cayter3w ago
is private url only accessible by 1 service at a time? if yes, that's weird
Brody
Brody3w ago
thats not the case at all, something is misconfigured what error do you get from the worker
Cayter
Cayter3w ago
No description
Cayter
Cayter3w ago
the thing is that server is also connecting but not seeing the same error
Brody
Brody3w ago
is it on the v2 runtime?
Cayter
Cayter3w ago
yeah all databases and server/worker are on v2 runtime now
Brody
Brody3w ago
what kind of worker is the worker?
Cayter
Cayter3w ago
it's a bullmq node /app/node_modules/saaskitty/build/production/main.js start --service=worker this command runs bullmq underneath
Brody
Brody3w ago
how are you telling it to connect to redis?
Cayter
Cayter3w ago
environment variable
Brody
Brody3w ago
url or host, port, username, password?
Cayter
Cayter3w ago
https://github.com/saaskitty/starter/blob/main/.env.docker#L8 this is how i connect the server/worker when they all running in the docker compose cluster locally on railway, it's currently configured to the one in screenshot
No description
Brody
Brody3w ago
append ?family=0 to the end of the url the private network is ipv6 only but ioredis (what bullmq uses) defaults to only ipv4
Cayter
Cayter3w ago
ahhh ok oh man, this is finally working, i was wrong that server was able to connect to the queue as i configured it to connect lazily thanks a lot man!
Brody
Brody3w ago
there is still the issue of the new builder not working for you you wont be able to use the old builder forever so its best we sort that out sooner than later
Cayter
Cayter3w ago
yeah, but at least i can now demo to my co-founder to convince them to switch to railway, wish me luck
Brody
Brody3w ago
good luck! fwiw i deployed a direct fork of your repo with no changes and could not reproduce the issue, i of course get some missing environment variables error but the app does technically start
Cayter
Cayter3w ago
nice cool, i can finally create a template for it on railway
Brody
Brody3w ago
as long as you sort out the issue with the v2 builder
Cayter
Cayter3w ago
is v2 builder a new thing that needs some time to stabilize?
Brody
Brody3w ago
not quite
Cayter
Cayter3w ago
so basically v2 builder doesn't work well with custom start command at the moment
Brody
Brody3w ago
im trying to reproduce
Brody
Brody3w ago
v2 builder, v2 runtime, the same custom start command you used, the same repo you used, app crashed but it did start. am i missing anything?
No description
No description
No description
No description
Cayter
Cayter3w ago
oh we need postgres, 3 redis (for pubsub, cache, queue), and a SMTP url
Brody
Brody3w ago
well yeah but the point is the app did start, you where not able to have that happen with the v2 builder
Cayter
Cayter3w ago
let me try it now
Brody
Brody3w ago
im going to say that you have something misconfigured somewhere else
Cayter
Cayter3w ago
i'm also not sure, i'm using default mostly, is there any other configuration that we need to be aware of?
Brody
Brody3w ago
can you send me the full deploy logs - https://bookmarklets.up.railway.app/log-downloader/
Cayter
Cayter3w ago
crap arc doesn't have bookmark
Brody
Brody3w ago
L
Cayter
Cayter3w ago
No description
No description
No description
No description
Cayter
Cayter3w ago
No description
Brody
Brody3w ago
deploy logs please
Brody
Brody3w ago
where is (app v0.1.0) coming from?
Cayter
Cayter3w ago
it's a message printed from the app
Brody
Brody3w ago
then your app did indeed start
Cayter
Cayter3w ago
now that you mentioned it, it's possible that the process.argv is wrongly parsed by the library i'm using for building the CLI
Brody
Brody3w ago
yeah this isnt an issue with the v2 builder, but it is odd all the same
Cayter
Cayter3w ago
is this ur custom start command?
node /app/node_modules/saaskitty/build/production/main.js start --service=worker
node /app/node_modules/saaskitty/build/production/main.js start --service=worker
Brody
Brody3w ago
yep pasted it in and railway said there was no changes made
Cayter
Cayter3w ago
hmm i guess i probably need to pass -- in between
Solution
Brody
Brody3w ago
perhaps, im not really sure whats causing it, but the fact that your app has started means this isnt exactly an issue with railway
Cayter
Cayter3w ago
yeah thanks for all the help though!
Brody
Brody3w ago
no problem!