Browse docs

Deploy from a GitHub repository

Build and run a repository with a Dockerfile, with automatic redeploys on every push.

Updated

On this page

Connect a GitHub repository and BitQate builds it from its Dockerfile, runs it, and redeploys automatically whenever you push to the chosen branch.

1. Pick the repository

  1. Go to New deployment and pick GitHub Repository.
  2. Choose where the code comes from:
    • Your Repos: click Connect GitHub and authorise BitQate. You can then pick any repository your account (or its organisations) can access, including private ones, and we set up the webhook for automatic deploys.
    • Public: search for any public repository without connecting an account.
  3. Under Build Settings, set the Branch (pushes to it trigger deploys) and the Dockerfile Path if it isn't Dockerfile in the repository root.

No Dockerfile yet?

BitQate detects this and offers guided setup. It generates a starting Dockerfile for your project, which you can review and edit. We then commit it straight to the selected branch so the build can run.

2. Make your app listen on the right port

Inside the container, your app must listen on port 8000 on all interfaces (0.0.0.0). The PORT environment variable is set to 8000, so reading PORT is the most portable approach:

// Node.js (Express)
app.listen(process.env.PORT || 8000, '0.0.0.0');
# Python (gunicorn)
gunicorn app:app --bind 0.0.0.0:${PORT:-8000}

Apps that listen only on localhost/127.0.0.1, or on a hard-coded port like 3000, won't be reachable.

3. Deploy

Pick Resources and a Location, check the Manifest, and press and hold Hold to deploy repository. Every build runs through three visible phases:

  1. Clone repository
  2. Build image
  3. Start container

The build output streams live. If a phase fails, the log shows the exact error from git or docker build.

After the first deploy

  • Automatic deploys: every push to the branch rebuilds and restarts the app.
  • Git Deploy tab: build history, live build logs and manual redeploys.
  • Startup tab: add environment variables, such as DATABASE_URL or API keys, instead of committing them to the repository. Restart to apply.
  • Console: your app's runtime output.

Tips

  • Keep builds fast with a .dockerignore (for example node_modules, .git, build output) and by copying your dependency manifests before the rest of the source, so dependency installation is cached.
  • Keep state out of the container. Anything written inside it is lost when a new build replaces it. Use a database for persistent data.
  • Private repositories need the connected GitHub account to have access. If access is revoked, reconnect GitHub.

Still stuck?

Our team can look at your specific setup.