Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Atualização para subir containers

Imagem Dockerfile obsoleta, mysql obsoleto,java versão obsoleta.
O que tive que alterar para subir
database.sql

Removido  GRANT ... IDENTIFIED BY FLUSH PRIVILEGES;

application-prod.properties
Updated driver class to com.mysql.cj.jdbc.Driver.
Added connection options useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC to resolve SSL handshake failures.



spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://mysql-forum-api:3306/forum?createDatabaseIfNotExist=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
    
    

Dockerfile do app

FROM eclipse-temurin:8-jdk-alpine

RUN apk add --no-cache curl
RUN addgroup -S spring && adduser -S spring -G spring

USER spring:spring

ARG JAR_FILE=target/*jar
COPY ${JAR_FILE} app.jar

ENTRYPOINT ["java","-Xms128M","-Xmx128M","-XX:PermSize=64m","-XX:MaxPermSize=128m","-Dspring.profiles.active=prod","-jar","/app.jar"]
1 resposta

Olá, Pedro! Como vai?

Legal que você identificou as imagens obsoletas do ambiente e apresentou as correções necessárias para subir a stack, ajustando o Dockerfile, o script de banco e as propriedades da aplicação.

Chamou atenção o cuidado ao atualizar o driver JDBC para a versão atual do conector MySQL e ao incluir os parâmetros de conexão que resolvem a falha no handshake SSL, além da remoção do GRANT com sintaxe descontinuada. Diagnosticar esse tipo de incompatibilidade entre versões é uma habilidade valiosa, porque em observabilidade boa parte do trabalho começa exatamente aí: garantir que a aplicação suba de forma estável antes de coletar qualquer métrica.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Fixar versões de imagem: usar tags específicas em vez de latest evita que o ambiente quebre sozinho quando a imagem base for atualizada no registry.
  • Healthcheck e depends_on: declarar a verificação de saúde do banco no Compose garante que a API só inicie depois que o MySQL estiver realmente pronto para aceitar conexões.
  • Variáveis de ambiente: mover credenciais e URLs de conexão para fora do arquivo de propriedades facilita trocar de ambiente sem reconstruir a imagem.
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!