Weird start command behaviour
cayter
TRIALOP

2 years ago

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"]

followed the guide here https://docs.railway.app/reference/build-and-start-commands#start-command, but it seems not working?

89 Replies

cayter
TRIALOP

2 years ago

56e8d4c1-7369-4e6b-b4c1-159f7d94bfdd


2 years ago

when a dockerfile or image is in use that custom start command will overwrite the entrypoint and cmd


2 years ago

can you share your entire dockerfile?



2 years ago

does this work if you omit the start command in the service settings?


cayter
TRIALOP

2 years ago

yeah i have another service that doesn't have custom start command and it's working fine with this Dockerfile


cayter
TRIALOP

2 years ago

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


2 years ago

those two services seem like they wouldnt be using the same dockerfile


2 years ago

either way, what runtime are you currently on?


cayter
TRIALOP

2 years ago

distroless nodejs v22


cayter
TRIALOP

2 years ago

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


2 years ago

railway runtime, check your service settings


cayter
TRIALOP

2 years ago

this?

1253390840097931300


2 years ago

switch to legacy and see what happens


cayter
TRIALOP

2 years ago

ok let me try now


cayter
TRIALOP

2 years ago

same error


cayter
TRIALOP

2 years ago

1253391824614199600


cayter
TRIALOP

2 years 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


2 years 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
TRIALOP

2 years ago

i tried both legacy and v2


2 years ago

builder, not runtime


cayter
TRIALOP

2 years ago

would this affect anything?

1253392727916413000


2 years ago

try disabling it


cayter
TRIALOP

2 years ago

trying


cayter
TRIALOP

2 years ago

ok seems like this is the culprit, i'm seeing a different error that's not related to deployment


2 years ago

what error


cayter
TRIALOP

2 years ago

1253393409725694000


2 years ago

thats because you arent on the v2 runtime


cayter
TRIALOP

2 years ago

do you mean my databases have to be on legacy if my services are on legacy?


2 years ago

no, your app should be on v2


2 years ago

your databases are on legacy regardless since they have a volume


cayter
TRIALOP

2 years ago

let me try updating them to v2


cayter
TRIALOP

2 years 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

1253396354651263000


cayter
TRIALOP

2 years ago

is private url only accessible by 1 service at a time? if yes, that's weird


2 years ago

thats not the case at all, something is misconfigured


2 years ago

what error do you get from the worker


cayter
TRIALOP

2 years ago

1253397071583514600


cayter
TRIALOP

2 years ago

the thing is that server is also connecting but not seeing the same error


2 years ago

is it on the v2 runtime?


cayter
TRIALOP

2 years ago

yeah all databases and server/worker are on v2 runtime now


2 years ago

what kind of worker is the worker?


cayter
TRIALOP

2 years ago

it's a bullmq


cayter
TRIALOP

2 years ago

node /app/node_modules/saaskitty/build/production/main.js start --service=worker

this command runs bullmq underneath


2 years ago

how are you telling it to connect to redis?


cayter
TRIALOP

2 years ago

environment variable


2 years ago

url or host, port, username, password?


cayter
TRIALOP

2 years 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

1253397996188598300


2 years ago

append ?family=0 to the end of the url


2 years ago

the private network is ipv6 only but ioredis (what bullmq uses) defaults to only ipv4


cayter
TRIALOP

2 years ago

ahhh ok


cayter
TRIALOP

2 years ago

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


cayter
TRIALOP

2 years ago

thanks a lot man!


2 years ago

there is still the issue of the new builder not working for you


2 years ago

you wont be able to use the old builder forever so its best we sort that out sooner than later


cayter
TRIALOP

2 years ago

yeah, but at least i can now demo to my co-founder to convince them to switch to railway, wish me luck


2 years ago

good luck!


2 years ago

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
TRIALOP

2 years ago

nice cool, i can finally create a template for it on railway


2 years ago

as long as you sort out the issue with the v2 builder


cayter
TRIALOP

2 years ago

is v2 builder a new thing that needs some time to stabilize?


2 years ago

not quite


cayter
TRIALOP

2 years ago

so basically v2 builder doesn't work well with custom start command at the moment


2 years ago

im trying to reproduce


2 years 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?

1253402135790354400
1253402136210047200
1253402136520298500
1253402136734204000


cayter
TRIALOP

2 years ago

oh we need postgres, 3 redis (for pubsub, cache, queue), and a SMTP url


2 years ago

well yeah but the point is the app did start, you where not able to have that happen with the v2 builder


cayter
TRIALOP

2 years ago

let me try it now


2 years ago

im going to say that you have something misconfigured somewhere else


cayter
TRIALOP

2 years ago

i'm also not sure, i'm using default mostly, is there any other configuration that we need to be aware of?


2 years ago

can you send me the full deploy logs -


cayter
TRIALOP

2 years ago

crap arc doesn't have bookmark


2 years ago

L


cayter
TRIALOP

2 years ago

1253405269258670000
1253405269615050800
1253405269933686800
1253405270256914700


cayter
TRIALOP

2 years ago

1253405354986049800


2 years ago

deploy logs please


cayter
TRIALOP

2 years ago


cayter
TRIALOP

2 years ago


2 years ago

where is (app v0.1.0) coming from?


cayter
TRIALOP

2 years ago

it's a message printed from the app


2 years ago

then your app did indeed start


cayter
TRIALOP

2 years 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


2 years ago

yeah this isnt an issue with the v2 builder, but it is odd all the same


cayter
TRIALOP

2 years ago

is this ur custom start command?

node /app/node_modules/saaskitty/build/production/main.js start --service=worker

2 years ago

yep


2 years ago

pasted it in and railway said there was no changes made


cayter
TRIALOP

2 years ago

hmm i guess i probably need to pass -- in between


2 years 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
TRIALOP

2 years ago

yeah thanks for all the help though!


2 years ago

no problem!


Loading...