Implantação Eficiente de Projetos em Produção

Planejamento da Implantação

Antes de implantar um projeto desenvolvido localmente, é necessário seguir uma série de etapas organizadas:

  1. Planejamento
  2. Instalação de dependências
  3. Implantação do backend
  4. Implantação do frontend
  5. Tratamento de problemas
  6. Testes e validação

Obtenção do Código Fonte

O projeto pode conter versões diferentes, como a versão open source e a versão com funcionalidades expandidas:

  • Versão open source: disponível no GitHub - liyupi/yudada, baseado em Vue 3, Spring Boot, Redis, ChatGLM, RxJava e SSE.
  • Versão expandida: contém mais funcionalidades no frontend e utiliza Redisson para locks distribuídos e Sharding JDBC para particionamento de bancos de dados.

Escolha da Plataforma de Implantação

  • Frontend: Plataforma Vercel – permite implantação gratuita, automação de builds, customização de domínios e rollback rápido.
  • Backend: Plataforma de Cloud Hosting do WeChat – permite implantação baseada em containers via Dockerfile, com HTTPS e monitoramento integrado.

Planejamento de Endereços

  • Frontend: https://{vercel-domain}
  • Backend: https://{wechat-cloud-domain}/api (porta 8101)
  • Banco de dados: porta 3306
  • Redis: porta 6379

Considerações sobre CORS

Como frontend e backend usam domínios diferantes, ocorre problema de CORS. Apesar do backend ter configuração global para CORS, cookies não são aceitos em requisições cross-origin, o que afeta o login do usuário.

Instalação de Dependências

O projeto requer as seguintes dependências:

  • MySQL: Pode ser hospedado via WeChat Cloud ou outro provedor.
  • Redis: Necessário apenas na versão expandida (para Redisson).
  • Armazenamento de Objetos: Chaves de acesso no painel de controle da Tencent Cloud.
  • ChatGLM AI: Chave de API obtida na plataforma Zhipu AI.

Implantação do Backend

Inicialização do Banco de Dados

Conecte-se ao banco de dados remoto via IDE e execute os seguintes arquivos SQL:

  • create_table.sql – cria as tabelas
  • init_data.sql – insere dados iniciais

Configuração de Ambiente de Produção


server:
  port: 8101
  servlet:
    session:
      cookie:
        same-site: none
        secure: true

spring:
  datasource:
    url: jdbc:mysql://{host}/yudada
    username: usuario
    password: senha
  redis:
    host: {redis-host}
    port: 6379
    password: {senha-redis}

Dockerfile para Build


FROM maven:3.8-jdk-8-slim as builder

RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone

WORKDIR /app
COPY pom.xml .
COPY src ./src

RUN mvn package -DskipTests

CMD ["java","-jar","/app/target/yudada-backend-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]

Desativação do Redis (Opcional)

Se estiver usando a versão expandida mas não quiser usar Redis, faça o seguinte:

  • Remova as anotações de @Configuration e @ConfigurationProperties em RedissonConfig.
  • Remova o uso de Redisson no código.
  • Adicione @SpringBootApplication(exclude = {RedisAutoConfiguration.class}) na classe principal.

Implantação no WeChat Cloud

Crie um novo serviço, selecione o repositório GitHub com o código, certifique-se de usar a porta correta (8101) e que o diretório raiz contém o Dockerfile.

Implantação do Frontend

Configuração de Ambiente

Modifique o arquivo request.ts para apontar para o backend:


const myAxios = axios.create({
  baseURL: isDev ? "http://localhost:8101" : "https://{backend-domain}",
  timeout: 60000,
  withCredentials: true,
});

Implantação no Vercel

  1. Faça upload do projeto no GitHub.
  2. Conecte-se ao Vercel, selecione o repositório e configure o diretório correto.
  3. Execute o deploy e aguarde a conclusão.

Tratamento de Problemas

Resolução de CORS e Cookies

Para permitir cookies em requisições cross-origin:

  • Defina SameSite=None e Secure=true no backend.
  • Atualize a configuração do Spring Boot:

server:
  servlet:
    session:
      cookie:
        same-site: none
        secure: true

Tags: Docker spring-boot vuejs vercel wechat-cloud

Publicado em 9-19 02:15