Deploying from GitHub
WeekendBuilder can deploy any public or private GitHub repo, as long as it has a Dockerfile at the root.
Requirements
- A
Dockerfilein the root of your repo - The branch you want to deploy (defaults to
main) - Your app must listen on a configurable port (default
3000)
How to deploy
- Open the dashboard and select the GitHub Repo tab
- Paste your repo URL — e.g.
https://github.com/you/my-api - Set the Branch field (defaults to
main) - Enter a Project name — this becomes your subdomain (
my-api.weekendbuilder.io) - Set the Port your app listens on (default
3000) - Click Deploy
The engine clones your repo, runs docker build, then starts the container behind HTTPS.
Private repos
WeekendBuilder uses your GitHub OAuth token to clone private repos. The token is stored encrypted and is only used during builds. You don’t need to add any deploy keys or secrets to your repo.
Writing a Dockerfile
Your Dockerfile just needs to start your server and expose the port. A minimal Node.js example:
FROM node:20-alpineWORKDIR /appCOPY package*.json ./RUN npm ci --omit=devCOPY . .EXPOSE 3000CMD ["node", "server.js"]A minimal Go example:
FROM golang:1.22-alpine AS buildWORKDIR /appCOPY . .RUN go build -o server .
FROM alpine:3.19COPY --from=build /app/server /serverEXPOSE 8080CMD ["/server"]Build logs
Once a build is running you can watch it live. Click the Build Logs button on the project card. Logs stream in real time and are saved so you can review them after the build finishes.
Build caching
WeekendBuilder caches your Docker layers between builds. Subsequent deploys are faster because unchanged layers are reused. To get the most from caching:
- Copy
package.json/go.modbefore copying the rest of your source, so the dependency layer is only rebuilt when deps change - Keep
RUN npm install/RUN go mod downloadas early as possible in yourDockerfile
If you push a commit with the exact same git SHA as a previous build, WeekendBuilder skips the build entirely and reuses the existing image.
Automatic redeploys
Set up a webhook so every push to your branch triggers a redeploy automatically. Without a webhook you can always trigger a manual redeploy from the dashboard.
Deploying a specific commit
Webhooks trigger on every push to the configured branch. To redeploy a specific commit, push it to that branch (e.g. via git push --force-with-lease or a revert commit).
Switching branches
Delete the project and create a new one pointing at the new branch. In-place branch switching is not supported yet.