🔧 chore: Ajustando e reajustando os documentos para a realização do deploy com sucesso.

main
parent 97673fe67b
commit e27c63cb40

@ -41,4 +41,4 @@ EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD python -c "import httpx; httpx.get('http://localhost:8080/docs', timeout=5)" || exit 1 CMD python -c "import httpx; httpx.get('http://localhost:8080/docs', timeout=5)" || exit 1
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"] CMD ["sh", "-c", "uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-8080}"]

@ -7,48 +7,28 @@ steps:
args: args:
- "build" - "build"
- "-t" - "-t"
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$SHORT_SHA"
- "-t"
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:latest" - "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:latest"
- "-t"
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$BUILD_ID"
- "." - "."
waitFor: ["-"]
# Step 2: Push para Artifact Registry # Step 2: Push para Artifact Registry
- name: "gcr.io/cloud-builders/docker" - name: "gcr.io/cloud-builders/docker"
args: args:
- "push" - "push"
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$SHORT_SHA" - "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$BUILD_ID"
waitFor: ["0"]
# Step 3: Deploy para Cloud Run
- name: "gcr.io/cloud-builders/run"
args:
- "deploy"
- "${_IMAGE_NAME}"
- "--image=${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$SHORT_SHA"
- "--region=${_REGION}"
- "--platform=managed"
- "--memory=512Mi"
- "--cpu=1"
- "--timeout=3600"
- "--max-instances=10"
- "--allow-unauthenticated"
waitFor: ["1"]
# Step 4: Mostrar URL do serviço # Step 3: Mostrar URL da imagem (opcional, útil para debug)
- name: "gcr.io/cloud-builders/run" - name: "gcr.io/cloud-builders/gcloud"
entrypoint: "bash"
args: args:
- "services" - "-c"
- "describe" - "echo 'Imagem pronta: ${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$BUILD_ID'"
- "${_IMAGE_NAME}"
- "--region=${_REGION}"
- "--format=value(status.url)"
waitFor: ["2"]
# Configuração de imagens para armazenar no Artifact Registry # Configuração de imagens para armazenar no Artifact Registry
images: images:
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$SHORT_SHA"
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:latest" - "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:latest"
- "${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO_NAME}/${_IMAGE_NAME}:$BUILD_ID"
# Configurações de build # Configurações de build
options: options:

@ -56,18 +56,23 @@ gcloud builds submit \
--substitutions=_REGION="$REGION",_REPO_NAME="$REPO_NAME",_IMAGE_NAME="$SERVICE_NAME" --substitutions=_REGION="$REGION",_REPO_NAME="$REPO_NAME",_IMAGE_NAME="$SERVICE_NAME"
echo "✅ Build concluído" echo "✅ Build concluído"
# Passo 4: Configurar variáveis de ambiente # Passo 4: Deploy para Cloud Run com variáveis de ambiente
echo "" echo ""
echo "4️⃣ Atualizando variáveis de ambiente no Cloud Run..." echo "4️⃣ Realizando deploy para Cloud Run com variáveis de ambiente..."
# Ler variáveis do .env (excluindo comentários e linhas vazias) # Ler variáveis do .env (excluindo comentários e linhas vazias, e tratando espaços/caracteres especiais)
ENV_VARS="" ENV_VARS=""
while IFS='=' read -r key value; do while IFS= read -r line || [[ -n "$line" ]]; do
# Pular comentários e linhas vazias # Ignorar linhas vazias e comentários
[[ "$key" =~ ^#.*$ ]] && continue [[ "$line" =~ ^[[:space:]]*# ]] && continue
[[ -z "$key" ]] && continue [[ -z "${line// }" ]] && continue
# Adicionar à variável de deploy (sem espaços)
ENV_VARS="$ENV_VARS${key}=${value}," # Adicionar à string de variáveis (key=value) e remover \r (quebras de linha Windows)
if [[ "$line" == *"="* ]]; then
# Limpar caracteres de retorno de carro (\r) para evitar erros no Linux
clean_line=$(echo "$line" | tr -d '\r')
ENV_VARS="$ENV_VARS$clean_line,"
fi
done < .env done < .env
# Remover última vírgula # Remover última vírgula
@ -75,18 +80,31 @@ ENV_VARS="${ENV_VARS%,}"
if [ -z "$ENV_VARS" ]; then if [ -z "$ENV_VARS" ]; then
echo "⚠️ Nenhuma variável de ambiente encontrada em .env" echo "⚠️ Nenhuma variável de ambiente encontrada em .env"
# Deploy sem variáveis (pode falhar se a app exigir)
gcloud run deploy "$SERVICE_NAME" \
--image="$IMAGE_NAME:latest" \
--region="$REGION" \
--platform=managed \
--allow-unauthenticated
else else
gcloud run services update $SERVICE_NAME \ # Deploy com as variáveis coletadas
--region=$REGION \ gcloud run deploy "$SERVICE_NAME" \
--update-env-vars=$ENV_VARS \ --image="$IMAGE_NAME:latest" \
--quiet 2>/dev/null || echo "⚠️ Serviço pode não existir ainda. Será criado automaticamente." --region="$REGION" \
--platform=managed \
--set-env-vars="$ENV_VARS" \
--memory=512Mi \
--cpu=1 \
--timeout=3600 \
--max-instances=10 \
--allow-unauthenticated
fi fi
echo "✅ Variáveis de ambiente atualizadas" echo "✅ Deploy concluído com variáveis de ambiente"
# Passo 5: Sucesso # Passo 5: Sucesso
echo "" echo ""
echo "================================" echo "================================"
echo "✅ DEPLOY CONCLUÍDO COM SUCESSO!" echo "✅ PROCESSO FINALIZADO!"
echo "================================" echo "================================"
echo "" echo ""
echo "📋 Próximos passos:" echo "📋 Próximos passos:"

@ -22,3 +22,5 @@ google-cloud-aiplatform==1.70.0
google-generativeai==0.8.5 google-generativeai==0.8.5
httpx==0.27.2 httpx==0.27.2
psycopg2-binary==2.9.10 psycopg2-binary==2.9.10
sqlalchemy==2.0.38
pydantic-settings==2.13.0

Loading…
Cancel
Save