Curso de Spring Boot | Subir aplicación a render.com 1

Curso de Spring Boot
Subir aplicación a render.com

Curso de Spring Boot | Subir aplicación a render.com 2

Crear una base de datos online y gratuita

1. Creamos una base de datos MySQL en https://railway.app/

2. Vinculamos los datos de conexión (root, password, public url ) al fichero application.properties de nuestra aplicación de SpringBoot.

3. Nuestra base de datos provisional durará 24 horas. Si queremos que dure más tiempo habrá que hacer un claim, que nos dará 5 dólares de créditos para usarla.

Publicar en render.com

Ten en cuenta que esta configuración de Docker está pensada para usar:

  • Java 17 , que es la versión que deberíamos tener en el pom.xml.
  • SpringBoot 3.*
<description>Demo project for Spring Boot</description>
<properties>
 <java.version>17</java.version>
</properties>

1. Dentro de Spring Tool Suite haremos botón derecho sobre nuestro proyecto → Run AsMaven cleanMaven install → tomamos nota del nombre del war que se genera en la carpeta target y lo ponemos en el siguiente fichero de Dockerfile, donde pone cambiar-esto.

2. En nuestro proyecto de springboot, tendremos el siguiente Dockerfile en la raíz:

# Use an official Maven image as the base image
FROM maven:3.8.3-openjdk-17-slim AS build
# Set the working directory in the container
WORKDIR /app
# Copy the pom.xml and the project files to the container
COPY pom.xml .
COPY src ./src
# Build the application using Maven
RUN mvn clean package -DskipTests
# Use an official OpenJDK image as the base image
FROM openjdk:17-alpine 

# Set the working directory in the container
WORKDIR /app
# Copy the built JAR file from the previous stage to the container
COPY --from=build /app/target/cambiar-esto-0.0.1-SNAPSHOT.war app.war
# Set the command to run the application
CMD ["java", "-jar", "app.war"]

2. Subimos nuestro código a un repositorio en github.com

3. Crearemos una cuenta en render.com.

4. Seleccionamos la opción: Crear un nuevo Web service → En Language debemos tener seleccionado Docker.

5. Enlazamos con nuestro repositorio de github.

6. En la página de render.com, dentro de nuestro proyecto, pulsaremos en el botón de Manual deploy → Deploy latest commit.

Permitir acceso desde producción

Debemos añadir la url de producción en el SecurityConfig.

@EnableWebSecurity
@Configuration
public class SecurityConfig {

    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOriginPatterns(List.of("*")); // permite cualquier origen
        configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
        configuration.setAllowedHeaders(List.of("*"));
        configuration.setAllowCredentials(true);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
    ...
}

Además, en el security config tendremos que habilitar CORS:

@Bean
    SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http
        .csrf(csrf -> csrf.disable())
        .cors(cors -> cors.configurationSource(corsConfigurationSource()))