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
followed the guide here https://docs.railway.app/reference/build-and-start-commands#start-command, but it seems not working?Solution:Jump to 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
73 Replies
56e8d4c1-7369-4e6b-b4c1-159f7d94bfdd
when a dockerfile or image is in use that custom start command will overwrite the entrypoint and cmd
can you share your entire dockerfile?
GitHub
starter/Dockerfile at main · saaskitty/starter
The starter template for quickly launching your full-stack web application. - saaskitty/starter
does this work if you omit the start command in the service settings?
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
those two services seem like they wouldnt be using the same dockerfile
either way, what runtime are you currently on?
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
railway runtime, check your service settings
this?
switch to legacy and see what happens
ok let me try now
same error
is there a way to know how railway apply
Custom Start Command
?
'cause ENTRYPOINT and CMD are pretty different and the docs is very ambiguousi 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?
i tried both legacy and v2
builder, not runtime
would this affect anything?
try disabling it
trying
ok seems like this is the culprit, i'm seeing a different error that's not related to deployment
what error
thats because you arent on the v2 runtime
do you mean my databases have to be on legacy if my services are on legacy?
no, your app should be on v2
your databases are on legacy regardless since they have a volume
let me try updating them to v2
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
is private url only accessible by 1 service at a time? if yes, that's weird
thats not the case at all, something is misconfigured
what error do you get from the worker
the thing is that server is also connecting but not seeing the same error
is it on the v2 runtime?
yeah all databases and server/worker are on v2 runtime now
what kind of worker is the worker?
it's a bullmq
node /app/node_modules/saaskitty/build/production/main.js start --service=worker
this command runs bullmq underneath
how are you telling it to connect to redis?
environment variable
url or host, port, username, password?
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
append
?family=0
to the end of the url
the private network is ipv6 only but ioredis (what bullmq uses) defaults to only ipv4ahhh 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!
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
yeah, but at least i can now demo to my co-founder to convince them to switch to railway, wish me luck
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
nice cool, i can finally create a template for it on railway
as long as you sort out the issue with the v2 builder
is v2 builder a new thing that needs some time to stabilize?
not quite
so basically v2 builder doesn't work well with custom start command at the moment
im trying to reproduce
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?
oh we need postgres, 3 redis (for pubsub, cache, queue), and a SMTP url
well yeah but the point is the app did start, you where not able to have that happen with the v2 builder
let me try it now
im going to say that you have something misconfigured somewhere else
i'm also not sure, i'm using default mostly, is there any other configuration that we need to be aware of?
can you send me the full deploy logs - https://bookmarklets.up.railway.app/log-downloader/
crap arc doesn't have bookmark
L
deploy logs please
where is
(app v0.1.0)
coming from?it's a message printed from the app
then your app did indeed start
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
yeah this isnt an issue with the v2 builder, but it is odd all the same
is this ur custom start command?
yep
pasted it in and railway said there was no changes made
hmm i guess i probably need to pass
--
in betweenSolution
perhaps, im not really sure whats causing it, but the fact that your app has started means this isnt exactly an issue with railway
yeah thanks for all the help though!
no problem!