Can we build a monorepo and create 2 services using nixpack toml file?

geongeorgePRO

a year ago

How will I do this?

0 Replies

geongeorgePRO

a year ago

N/A


a year ago

is this a shared or isolated monorepo?


geongeorgePRO

a year ago

Shared. I have common packages


a year ago

are you using something like turbo or nx?


geongeorgePRO

a year ago

Nop, simple pnpm


geongeorgePRO

a year ago

I can use turbo if it helps


a year ago

pnpm workspaces?


geongeorgePRO

a year ago

Yes


geongeorgePRO

a year ago

I have
app/remix
app/nest

then
lib/auth
lib/db


geongeorgePRO

a year ago

libs are shared


a year ago

sounds good, can you share your scripts object of your root package.json please


geongeorgePRO

a year ago

    "test": "echo \"Error: no test specified\" && exit 1",
    "build:libs": "pnpm --filter '@astral/*' build",
    "predev": "pnpm run build:libs",
    "prebuild": "pnpm run build:libs",
    "dev": "dotenv -- shopify app dev --no-color",
    "dev-remix": "dotenv -- pnpm run --filter=remix-app dev",
    "dev-nest": "dotenv -- pnpm run --filter=nest-app start:dev",
    "test:nest": "dotenv -- pnpm run --filter=nest-app test:watch",
    "migrate": "dotenv -- pnpm run --filter=@astral/db migrate",
    "generate": "dotenv -- pnpm run  --filter=@astral/db generate",
    "studio": "dotenv -- pnpm run --filter=@astral/db studio",
    "shopify": "shopify",
    "config:link": "shopify app config link",
    "config:use": "shopify app config use",
    "deploy": "shopify app deploy",
    "codegen": "pnpm run --filter=remix-app graphql-codegen"

a year ago

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?


geongeorgePRO

a year ago

I can add them, but its essentially

migrate -> nest build -> nest start

migrate -> remix build -> remix start


geongeorgePRO

a year ago

How do I do it is I had

build:nest
start:nest

and

build:remix
start:remix


a year ago

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


geongeorgePRO

a year ago

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


geongeorgePRO

a year ago

Can I have 2 nixpack files and 2 services build from 2 files?


a year ago

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


geongeorgePRO

a year ago

Aah understood. Thats what I'm doing now. But would really love if there is a way to write as code.


a year ago

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


a year ago

but if you would rather do it that way, id be happy to help


geongeorgePRO

a year ago

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


a year ago

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


a year ago

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 section


geongeorgePRO

a year ago

Amazing. I didn't know you could pick a file. Thank you


geongeorgePRO

a year ago

Also Can I get your recomendation on build speed? Docker, nixpack, something else?


a year ago

if it was me, i would go with a Dockerfile and pair it with railway's beta v2 builder


a year ago

but if you arent having any issues with nixpacks yet there isnt a good need to switch


a year ago

what are your current build times like for either app?


geongeorgePRO

a year ago

Somewhere around 15 mins for this project 6d0f799e-be59-4388-899d-f00456f30667


geongeorgePRO

a year ago

Why docker file?


a year ago

gives you far greater control over every step of the build


geongeorgePRO

a year ago

I dont have complaints about control atm.


a year ago

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


a year ago

what part of your builds take the longest? build or publish?


geongeorgePRO

a year ago

Oh Yeah that makes sense. If I remember correctly the build takes more time


a year ago

would you happen to know what stage of the build takes the longest? there should be timestamps printed throughout the logs


geongeorgePRO

a year ago

I'm not sure, going back and looking the recent builds seems faster. I do remember I had to wait around 15 mins


a year ago

i dont know much about your project but 15 minutes is a very long time


a year ago

though you also could have been caught up in a builder incident


geongeorgePRO

a year ago

Hi @Brody When we run build using docker files when do we run the migrate command?


a year ago

when do you run it with nixpacks?


geongeorgePRO

a year ago

During the start command


a year ago

perfect, do the same


geongeorgePRO

a year ago

Here my start command is the docker file itself

Start the server using the production build

CMD ["pnpm", "run", "--filter=remix-app", "start"]


geongeorgePRO

a year ago

Thanks, I will try


geongeorgePRO

a year ago

What do I do. I'm using docker file to build. The docker image has pnpm but I think railway does not use that

1248559928113762300


geongeorgePRO

a year ago

I solved it nvm. Skill issue with docker files


Can we build a monorepo and create 2 services using nixpack toml file? - Railway Help Station