From 033138b67df33c2143b5bf2ae78bfea66ba6f593 Mon Sep 17 00:00:00 2001 From: Rodrigo Martins Date: Thu, 10 Apr 2025 23:53:32 -0300 Subject: [PATCH] Add docker support - reload Signed-off-by: Rodrigo Martins --- Dockerfile | 21 ++++++++++++--------- docker-entrypoint.sh | 40 +++++++++++++++++++++++++++++++++++----- package.json | 2 +- 3 files changed, 48 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index 88efc91..2cae6d4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,6 @@ -# Use uma versão LTS do Node.js FROM node:20-slim -# Instalar dependências do sistema necessárias +# Instalar dependências do sistema RUN apt-get update && apt-get install -y \ chromium \ libgconf-2-4 \ @@ -15,16 +14,20 @@ WORKDIR /usr/src/app COPY package*.json ./ COPY prisma ./prisma/ -# Instalar dependências +# Instalar dependências do projeto RUN npm install -# Copiar o resto dos arquivos da aplicação +# Instalar dependências globais necessárias +RUN npm install -g concurrently vite +RUN npm install @rollup/rollup-linux-arm64-gnu + +# Copiar o resto dos arquivos COPY . . -# Gerar o cliente Prisma +# Gerar cliente Prisma RUN npx prisma generate -# Expor as portas necessárias +# Expor portas EXPOSE 3000 EXPOSE 5000 @@ -32,11 +35,11 @@ EXPOSE 5000 ENV NODE_ENV=production ENV PORT=5000 ENV FRONTEND_PORT=3000 +ENV VITE_HOST=0.0.0.0 +ENV HOST=0.0.0.0 # Script de inicialização COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh -# Comando para iniciar a aplicação -ENTRYPOINT ["docker-entrypoint.sh"] -CMD ["npm", "run", "dev:full"] \ No newline at end of file +ENTRYPOINT ["docker-entrypoint.sh"] \ No newline at end of file diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 11ba747..9fccb9c 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,16 +1,46 @@ #!/bin/bash set -e +echo "🚀 Iniciando o processo de inicialização..." + +# Verificar variáveis de ambiente necessárias +if [ -z "$DATABASE_HOST" ] || [ -z "$DATABASE_PORT" ] || [ -z "$DATABASE_USER" ]; then + echo "❌ Erro: Variáveis de ambiente necessárias não estão definidas" + exit 1 +fi + # Aguardar o PostgreSQL estar disponível +echo "⏳ Verificando conexão com o PostgreSQL..." until pg_isready -h $DATABASE_HOST -p $DATABASE_PORT -U $DATABASE_USER do - echo "Aguardando PostgreSQL inicializar..." - sleep 2 + echo "🔄 Aguardando PostgreSQL inicializar..." + sleep 2 done +echo "✅ PostgreSQL está pronto!" + +# Instalar dependências caso necessário +if [ ! -d "node_modules" ]; then + echo "📦 Instalando dependências..." + npm install +fi + +# Gerar cliente Prisma +echo "🔧 Gerando cliente Prisma..." +npx prisma generate # Executar migrações do Prisma -echo "Executando migrações do banco de dados..." +echo "🔄 Executando migrações do banco de dados..." npx prisma migrate deploy -# Executar o comando passado para o container -exec "$@" \ No newline at end of file +# Verificar se as migrações foram bem sucedidas +if [ $? -eq 0 ]; then + echo "✅ Migrações concluídas com sucesso!" +else + echo "❌ Erro durante as migrações" + exit 1 +fi + +# Iniciar a aplicação com npm run dev:full +echo "🚀 Iniciando a aplicação..." +echo "📝 Executando: npm run dev:full" +exec npm run dev:full --host \ No newline at end of file diff --git a/package.json b/package.json index fe20b0c..37fcf7c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "src/index.tsx", "type": "commonjs", "scripts": { - "dev": "vite", + "dev": "vite --host 0.0.0.0", "build": "tsc && vite build", "preview": "vite preview", "prisma:generate": "prisma generate",