diff --git a/.gitea/workflows/deploy-docker.yaml b/.gitea/workflows/deploy-docker.yaml deleted file mode 100644 index 8accfb8..0000000 --- a/.gitea/workflows/deploy-docker.yaml +++ /dev/null @@ -1,50 +0,0 @@ -name: Deploy Next.js with Docker -on: - push: - branches: - - main - workflow_dispatch: - -jobs: - build-and-deploy: - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to Container Registry - uses: docker/login-action@v3 - with: - registry: ${{ secrets.REGISTRY_URL }} - username: ${{ secrets.REGISTRY_USERNAME }} - password: ${{ secrets.REGISTRY_PASSWORD }} - - - name: Build and push Docker image - uses: docker/build-push-action@v5 - with: - context: . - file: ./Dockerfile.production - push: true - tags: | - ${{ secrets.REGISTRY_URL }}/portal-dias-rota:latest - ${{ secrets.REGISTRY_URL }}/portal-dias-rota:${{ github.sha }} - cache-from: type=registry,ref=${{ secrets.REGISTRY_URL }}/portal-dias-rota:buildcache - cache-to: type=registry,ref=${{ secrets.REGISTRY_URL }}/portal-dias-rota:buildcache,mode=max - - - name: Deploy to server - uses: appleboy/ssh-action@v1.0.3 - with: - host: ${{ secrets.DEPLOY_HOST }} - username: ${{ secrets.DEPLOY_USER }} - key: ${{ secrets.DEPLOY_SSH_KEY }} - port: ${{ secrets.DEPLOY_PORT || 22 }} - script: | - cd ${{ secrets.DEPLOY_PATH }} - docker pull ${{ secrets.REGISTRY_URL }}/portal-dias-rota:latest - docker-compose down - docker-compose up -d - docker image prune -f diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml deleted file mode 100644 index a1c6380..0000000 --- a/.gitea/workflows/deploy.yaml +++ /dev/null @@ -1,58 +0,0 @@ -name: Deploy Next.js Application -on: - push: - branches: - - main - workflow_dispatch: - -jobs: - build-and-deploy: - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Build Next.js application - run: npm run build - env: - ORACLE_USER: ${{ secrets.ORACLE_USER }} - ORACLE_PASSWORD: ${{ secrets.ORACLE_PASSWORD }} - ORACLE_CONNECTION_STRING: ${{ secrets.ORACLE_CONNECTION_STRING }} - ORACLE_POOL_MIN: ${{ secrets.ORACLE_POOL_MIN }} - ORACLE_POOL_MAX: ${{ secrets.ORACLE_POOL_MAX }} - ORACLE_POOL_INCREMENT: ${{ secrets.ORACLE_POOL_INCREMENT }} - ORACLE_QUEUE_TIMEOUT: ${{ secrets.ORACLE_QUEUE_TIMEOUT }} - ORACLE_INACTIVITY_TIMEOUT: ${{ secrets.ORACLE_INACTIVITY_TIMEOUT }} - - - name: Deploy to production server - uses: appleboy/scp-action@v0.1.7 - with: - host: ${{ secrets.DEPLOY_HOST }} - username: ${{ secrets.DEPLOY_USER }} - key: ${{ secrets.DEPLOY_SSH_KEY }} - port: ${{ secrets.DEPLOY_PORT || 22 }} - source: ".next,package.json,package-lock.json,public,src,.env.production" - target: ${{ secrets.DEPLOY_PATH }} - strip_components: 0 - - - name: Restart application - uses: appleboy/ssh-action@v1.0.3 - with: - host: ${{ secrets.DEPLOY_HOST }} - username: ${{ secrets.DEPLOY_USER }} - key: ${{ secrets.DEPLOY_SSH_KEY }} - port: ${{ secrets.DEPLOY_PORT || 22 }} - script: | - cd ${{ secrets.DEPLOY_PATH }} - npm ci --production - pm2 restart portal-dias-rota || pm2 start npm --name "portal-dias-rota" -- start diff --git a/.gitea/workflows/renovate.yaml b/.gitea/workflows/renovate.yaml deleted file mode 100644 index c6e1263..0000000 --- a/.gitea/workflows/renovate.yaml +++ /dev/null @@ -1,15 +0,0 @@ -name: Renovate Manual -on: - workflow_dispatch: - -jobs: - renovate: - runs-on: ubuntu-latest - steps: - - name: Self-hosted Renovate - uses: docker://renovate/renovate:latest - env: - RENOVATE_PLATFORM: 'gitea' - RENOVATE_ENDPOINT: 'http://git.jurunense.com/api/v1' - RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }} - RENOVATE_AUTODISCOVER: 'true' \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index edc4271..77f3f6a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,9 @@ -# Etapa 1: Build FROM node:20-alpine AS builder WORKDIR /app -# Instalar dependências necessárias para Oracle Instant Client RUN apk add --no-cache libaio libnsl libc6-compat curl unzip -# Baixar e instalar Oracle Instant Client RUN mkdir -p /opt/oracle && \ cd /opt/oracle && \ curl -o instantclient-basiclite.zip https://download.oracle.com/otn_software/linux/instantclient/2340000/instantclient-basiclite-linux.x64-23.4.0.24.05.zip && \ @@ -17,59 +14,43 @@ RUN mkdir -p /opt/oracle && \ echo /opt/oracle/instantclient_23_4 > /etc/ld.so.conf.d/oracle-instantclient.conf && \ ldconfig -# Configurar variáveis de ambiente do Oracle ENV LD_LIBRARY_PATH=/opt/oracle/instantclient_23_4:$LD_LIBRARY_PATH -# Copiar arquivos de dependências COPY package*.json ./ -# Instalar dependências RUN npm ci -# Copiar código fonte COPY . . -# Build da aplicação Next.js RUN npm run build -# Etapa 2: Runtime FROM node:20-alpine AS runner WORKDIR /app -# Instalar dependências necessárias para Oracle Instant Client RUN apk add --no-cache libaio libnsl libc6-compat -# Copiar Oracle Instant Client do builder COPY --from=builder /opt/oracle/instantclient_23_4 /opt/oracle/instantclient_23_4 -# Configurar LD_LIBRARY_PATH RUN echo /opt/oracle/instantclient_23_4 > /etc/ld.so.conf.d/oracle-instantclient.conf && \ ldconfig ENV LD_LIBRARY_PATH=/opt/oracle/instantclient_23_4:$LD_LIBRARY_PATH -# Criar usuário não-root RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs -# Copiar arquivos necessários do builder COPY --from=builder /app/public ./public COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/.next/static ./.next/static -# Definir permissões RUN chown -R nextjs:nodejs /app -# Mudar para usuário não-root USER nextjs -# Expor porta EXPOSE 3003 -# Variáveis de ambiente ENV NODE_ENV=production ENV PORT=3003 -# Comando de inicialização CMD ["node", "server.js"]