Builds
How Raseef turns a commit into an image, with your Dockerfile or without one.
With or without a Dockerfile
For each build Raseef decides how to build, in this order:
- If the service has a Dockerfile path, it builds with that file.
- Otherwise, if the service's root directory holds a
Dockerfile, it builds with it. - Otherwise it builds automatically: it detects the language and framework, installs dependencies, builds and sets the start command.
Automatic builds detect common stacks, including Node.js (Next.js, Nuxt, Remix, Astro, SvelteKit, Angular, NestJS, Express, Fastify, Hono, Vite and others), Python (including Django), Go, Ruby, PHP, Rust, Java, Elixir and Deno. When detection fails, the build log says why. A Dockerfile always gives you full control.
Images run on linux/amd64
Builds produce linux/amd64 images, and services run on linux/amd64. A Dockerfile must not pin another platform.
Variables during the build
The service's variables are available to the build:
- in automatic builds, to the build steps;
- with a Dockerfile, as build secrets and as build arguments. Declare the ones you use with
ARG:
ARG NEXT_PUBLIC_API_URL
RUN npm run buildValues of variables are masked in the build log. A change of variables builds the service again on its next deploy.
The port
A service built from GitHub listens on port 8080 by default, and Raseef sets PORT to the service's port. If the
image declares exactly one port with EXPOSE and the service is still on 8080, the service switches to the declared
port.
Limits
| Limit | |
|---|---|
| Build time | 30 minutes |
| Source archive | 200 MB |
| Image size | 4 GB |
| Build resources | up to 4 vCPU and 8 GiB memory |
| Platform | linux/amd64 |
Build logs
Builds shows each build's log live, updated every two seconds. A build keeps up to 4,000 lines, each cut at 1,000 characters, for 30 days. The service lists its last 50 builds.
Build minutes are counted from the start of the build until the image is uploaded.