Curso de Spring Boot
Subir aplicación a render.com
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 As → Maven clean → Maven 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()))