Implantações

Uma implantação (deploy) é uma versão da sua aplicação que a W8 Hub construiu e publicou. Nesta aba você acompanha o histórico dessas versões, conecta o GitHub para deploys automáticos a cada push e escolhe como a W8 Hub monta a imagem.

Como funciona o deploy

Cada implantação gera uma nova versão da instalação. No painel você acompanha o histórico e abre o detalhe de cada uma, com os logs de build e publicação.

A lista mostra só os commits que viraram implantação — não todo commit do repositório. Um commit só aparece aqui quando dispara um deploy. Se o deploy automático estiver ligado, cada push na branch conectada gera uma implantação; se estiver desligado, só aparecem os deploys que você disparar manualmente (ou ao reimplantar uma versão).
Histórico de implantações de uma instalação na W8 Hub, com commit, status (sucesso/falhou), autor, duração e acesso aos logs.
Histórico de implantações — cada versão com commit, status, autor, duração e logs.

Clique em uma implantação para abrir o detalhe: ali ficam os logs completos de build e publicação, o commit, a duração e as ações de reimplantar ou cancelar.

Detalhe de uma implantação na W8 Hub: logs completos de build e publicação em tempo real, commit, status, duração e ações de reimplantar e cancelar.
Detalhe da implantação — logs completos de build e publicação, com commit, duração e ações.

Conectar o GitHub

Conecte o GitHub à sua organização para fazer deploy de repositórios privados e sincronizar branches.

  1. Faça a integração do GitHub primeiro (obrigatório). Conecte e autorize a conta/organização do GitHub nas Integrações (via GitHub App). Sem essa integração, seus repositórios — sobretudo os privados — não aparecem na hora de criar a instalação.
  2. Escolha o repositório e a branch — a W8 Hub lê a árvore de arquivos e as branches direto do GitHub. A branch precisa já existir no repositório; a plataforma não cria branches para você.
  3. Crie a instalação a partir do repositório dentro de um projeto.
  4. Faça deploy a partir de uma branch/commit; a cada push naquela branch, um novo deploy roda automaticamente.
Pré-requisitos do GitHub: (1) integração do GitHub conectada e (2) a branch escolhida já existente no repositório. Faltando qualquer um, não dá para criar a instalação a partir do GitHub.
Configuração do GitHub na W8 Hub: repositório privado ou público, conta do GitHub App, seleção de repositório e branch.
Conectar o GitHub — repositório privado (via GitHub App) ou público, com escolha de repositório e branch.

Modos de build

Ao criar uma instalação a partir de um repositório, você escolhe o Build Pack (no passo Configurar do assistente de nova instalação) — é como a W8 Hub monta a imagem:

Build PackComo funcionaQuando usar
NixpacksDetecção automática de linguagem e framework — builda sem você escrever Dockerfile.A maioria dos apps (Node, Python, Go, Ruby, PHP…).
DockerfileUsa o Dockerfile existente no repositório.Quando você precisa de controle total do ambiente.
StaticServe um site estático (HTML, CSS, JS).Sites e landing pages já compilados.
Static SPASingle Page Application, com fallback de rotas para o index.React, Vue, Angular e afins.
O Build Pack (Nixpacks, Dockerfile, Static ou Static SPA) só aparece quando a origem da instalação é um repositório GitHub — é aí que a W8 Hub precisa montar a imagem. Em Imagem Docker a imagem já vem pronta (não há build) e em Template o build já vem configurado.

Ou seja: na maioria dos casos você não precisa de Dockerfile — o Nixpacks detecta e builda. O Dockerfile só é necessário quando você quer controle total do ambiente (e, novamente, apenas em instalações a partir do GitHub).

Seleção do Build Pack na W8 Hub: Nixpacks, Dockerfile, Static ou Static SPA, com detecção automática de linguagem e framework.
Build Pack — o Nixpacks detecta a stack e builda sem Dockerfile; ou use Dockerfile, Static ou Static SPA.

Exemplos de Dockerfile por stack

Ao escolher o Build Pack Dockerfile (origem GitHub), a W8 Hub builda a imagem a partir do arquivo Dockerfile na raiz do repositório. Em todos os exemplos, garanta que o container escute na mesma porta configurada na instalação. Alguns modelos por linguagem:

Node.js / Next.js

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

Python (Django, Flask ou FastAPI)

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
# WSGI (Django/Flask): gunicorn app:app
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

PHP / WordPress

FROM php:8.2-apache
RUN docker-php-ext-install pdo pdo_mysql
COPY . /var/www/html/
EXPOSE 80
# Para WordPress, basta a imagem oficial:
# FROM wordpress:php8.2-apache

Go (build multi-stage)

FROM golang:1.22-alpine AS build
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o /app/server .

FROM alpine:3.20
COPY --from=build /app/server /server
EXPOSE 8080
CMD ["/server"]

.NET

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app

FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app .
EXPOSE 8080
CMD ["dotnet", "MinhaApi.dll"]