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

2 years ago

How will I do this?

49 Replies

geongeorge
PROOP

2 years ago

N/A


brody
EMPLOYEE

2 years ago

is this a shared or isolated monorepo?


geongeorge
PROOP

2 years ago

Shared. I have common packages


brody
EMPLOYEE

2 years ago

are you using something like turbo or nx?


geongeorge
PROOP

2 years ago

Nop, simple pnpm


geongeorge
PROOP

2 years ago

I can use turbo if it helps


brody
EMPLOYEE

2 years ago

pnpm workspaces?


geongeorge
PROOP

2 years ago

Yes


geongeorge
PROOP

2 years ago

I have
app/remix
app/nest

then
lib/auth
lib/db


geongeorge
PROOP

2 years ago

libs are shared


brody
EMPLOYEE

2 years ago

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


geongeorge
PROOP

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

brody
EMPLOYEE

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


geongeorge
PROOP

2 years ago

I can add them, but its essentially

migrate -> nest build -> nest start

migrate -> remix build -> remix start


geongeorge
PROOP

2 years ago

How do I do it is I had

build:nest
start:nest

and

build:remix
start:remix


brody
EMPLOYEE

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


geongeorge
PROOP

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


geongeorge
PROOP

2 years ago

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


brody
EMPLOYEE

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


geongeorge
PROOP

2 years ago

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


brody
EMPLOYEE

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


brody
EMPLOYEE

2 years ago

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


geongeorge
PROOP

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


brody
EMPLOYEE

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


brody
EMPLOYEE

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


geongeorge
PROOP

2 years ago

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


geongeorge
PROOP

2 years ago

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


brody
EMPLOYEE

2 years ago

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


brody
EMPLOYEE

2 years ago

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


brody
EMPLOYEE

2 years ago

what are your current build times like for either app?


geongeorge
PROOP

2 years ago

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


geongeorge
PROOP

2 years ago

Why docker file?


brody
EMPLOYEE

2 years ago

gives you far greater control over every step of the build


geongeorge
PROOP

2 years ago

I dont have complaints about control atm.


brody
EMPLOYEE

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


brody
EMPLOYEE

2 years ago

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


geongeorge
PROOP

2 years ago

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


brody
EMPLOYEE

2 years ago

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


geongeorge
PROOP

2 years ago

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


brody
EMPLOYEE

2 years ago

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


brody
EMPLOYEE

2 years ago

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


geongeorge
PROOP

2 years ago

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


brody
EMPLOYEE

2 years ago

when do you run it with nixpacks?


geongeorge
PROOP

2 years ago

During the start command


brody
EMPLOYEE

2 years ago

perfect, do the same


geongeorge
PROOP

2 years ago

Here my start command is the docker file itself

Start the server using the production build

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


geongeorge
PROOP

2 years ago

Thanks, I will try


geongeorge
PROOP

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


geongeorge
PROOP

2 years ago

I solved it nvm. Skill issue with docker files


Loading...