Can we build a monorepo and create 2 services using nixpack toml file?
How will I do this?
37 Replies
Project ID:
N/A
N/A
is this a shared or isolated monorepo?
Shared. I have common packages
are you using something like turbo or nx?
Nop, simple pnpm
I can use turbo if it helps
pnpm workspaces?
Yes
I have
app/remix
app/nest
then
lib/auth
lib/db
libs are shared
sounds good, can you share your scripts object of your root package.json please
looks like you have the applicable scripts to start remix and nest in dev mode, but are missing the scripts to start them in production mode?
I can add them, but its essentially
migrate -> nest build -> nest start
migrate -> remix build -> remix start
How do I do it is I had
build:nest
start:nest
and
build:remix
start:remix
yep please add build and start scripts like you just mentioned for both apps that are geared to running the two apps in a production environment
I can add them, but can you continue what to do next?
Imagine I have
pnpm run build:nest
pnpm run start:nest
pnpm run build:remix
pnpm run start:remix
How do I configure in nixpack file for 2 services
Can I have 2 nixpack files and 2 services build from 2 files?
of course! you would need two railway services, but at this time im not thinking that you would need any nixpacks.toml files, you would just set the applicable build and start scripts in the given service setting
Aah understood. Thats what I'm doing now. But would really love if there is a way to write as code.
you definitely could define them in separate nixpacks.toml or railway.json files, but you would then need to configure your railway services to use those config files, so in the end you still configure something in the service settings
but if you would rather do it that way, id be happy to help
How do I setup 2 railway.toml file?
A followup question, which one is better? nixpack /railway. I'm thinking in terms of speed of build
i would personally go with a railway.json files instead of railway.toml or nixpacks.toml since the railway.json file has built in schema validation with your code editor
you would have two files like
nest_railway.json
and remix_railway.json
and then in the applicable service you would set the correct file in the service settings under the config-as-code sectionAmazing. I didn't know you could pick a file. Thank you
Also Can I get your recomendation on build speed? Docker, nixpack, something else?
if it was me, i would go with a Dockerfile and pair it with railway's beta v2 builder
but if you arent having any issues with nixpacks yet there isnt a good need to switch
what are your current build times like for either app?
Somewhere around 15 mins for this project 6d0f799e-be59-4388-899d-f00456f30667
Why docker file?
gives you far greater control over every step of the build
I dont have complaints about control atm.
thats fair but im more so meaning you could likely hand craft a Dockerfile thats going to be leaner than the Dockerfile nixpacks makes, you could also most definably end up with a smaller container image
what part of your builds take the longest? build or publish?
Oh Yeah that makes sense. If I remember correctly the build takes more time
would you happen to know what stage of the build takes the longest? there should be timestamps printed throughout the logs
I'm not sure, going back and looking the recent builds seems faster. I do remember I had to wait around 15 mins
i dont know much about your project but 15 minutes is a very long time
though you also could have been caught up in a builder incident
Hi @Brody When we run build using docker files when do we run the migrate command?
when do you run it with nixpacks?
During the start command
perfect, do the same
Here my start command is the docker file itself
Start the server using the production build
CMD ["pnpm", "run", "--filter=remix-app", "start"]
Thanks, I will try
What do I do. I'm using docker file to build. The docker image has pnpm but I think railway does not use that
Solution
I solved it nvm. Skill issue with docker files
glad you where able to figure it out! (I was asleep)