Nesta página

Configuracao de Build

Quando voce deploya a partir de um repositorio GitHub, o Guara Cloud precisa construir uma imagem de container da sua aplicacao. Existem dois metodos de build disponiveis: Dockerfile e Buildpack.

Metodos de build

Dockerfile

Com esse metodo, voce fornece um Dockerfile no seu repositorio. Voce tem controle total sobre o ambiente de build: sistema operacional base, dependencias, comandos de instalacao e configuracao do runtime.

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

Buildpack

Com Buildpack, voce nao precisa de um Dockerfile. O Guara Cloud detecta automaticamente a linguagem e o framework da sua aplicacao e constroi a imagem para voce. Buildpacks suportam as linguagens e frameworks mais comuns, como Node.js, Python, Go, Java e Ruby.

Como o metodo e detectado

O Guara Cloud detecta automaticamente qual metodo usar:

SituacaoMetodo usado
Existe um Dockerfile no diretorio raizDockerfile
Nao existe Dockerfile no diretorio raizBuildpack

Para monorepos, a deteccao considera o diretorio raiz configurado para o servico. Se voce configurou /apps/api como diretorio raiz, o Guara Cloud procura por apps/api/Dockerfile.

Monorepo

Em repositorios monorepo, o build utiliza apenas o diretorio raiz configurado para o servico. Por exemplo, se o diretorio raiz e /apps/api, o Guara Cloud:

  • Procura o Dockerfile em apps/api/Dockerfile
  • Define o contexto de build como o diretorio apps/api/
  • Ignora arquivos fora desse diretorio para fins de build

Isso garante que cada servico em um monorepo tenha builds independentes e eficientes.

Cache de build

O Guara Cloud utiliza cache de camadas para acelerar builds subsequentes. Quando voce faz um novo deploy, apenas as camadas que mudaram sao reconstruidas. Isso reduz significativamente o tempo de build na maioria dos casos.

Para aproveitar ao maximo o cache com Dockerfile, organize suas instrucoes da mais estavel para a menos estavel:

# Camadas estaveis (mudam raramente)
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

# Camadas dinamicas (mudam a cada deploy)
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]