Skip to content

Commit 346a306

Browse files
author
Guilherme Biff Zarelli
committed
Merge branch 'fix-spring-run' into main
2 parents 850c2cc + 8214ec0 commit 346a306

File tree

8 files changed

+143
-22
lines changed

8 files changed

+143
-22
lines changed

Dockerfile.spring

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
FROM openjdk:17.0.2
2+
3+
ARG RUN_JAVA_VERSION=1.3.8
4+
ENV FLYWAY_VERSION 7.5.2
5+
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en'
6+
7+
# Install java and the run-java script
8+
# Also set up permissions for user `1001`
9+
RUN microdnf update \
10+
&& microdnf install curl ca-certificates tar gzip \
11+
&& microdnf clean all \
12+
&& mkdir /deployments \
13+
&& mkdir /flyway \
14+
&& chown 1001 /deployments \
15+
&& chmod "g+rwX" /deployments \
16+
&& chown 1001:root /deployments \
17+
&& curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \
18+
&& chown 1001 /deployments/run-java.sh \
19+
&& chmod 540 /deployments/run-java.sh
20+
21+
# Install and configure Flyway
22+
RUN curl https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/${FLYWAY_VERSION}/flyway-commandline-${FLYWAY_VERSION}.tar.gz -o /flyway/flyway-commandline-${FLYWAY_VERSION}.tar.gz \
23+
&& tar -xzf /flyway/flyway-commandline-${FLYWAY_VERSION}.tar.gz --strip-components=1 -C /flyway \
24+
&& rm /flyway/flyway-commandline-${FLYWAY_VERSION}.tar.gz \
25+
&& chown 1001 /flyway/flyway \
26+
&& chmod 540 /flyway/flyway
27+
28+
COPY app/spring-app/target/*.jar /deployments/app.jar
29+
COPY resources/flyway/db/migration /flyway/sql
30+
31+
EXPOSE 8080
32+
USER 1001
33+
34+
ENTRYPOINT [ "/deployments/run-java.sh" ]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ Fornecendo toda infraestrutura necessária para o desenvolvedor.
7979

8080
### Requerido
8181

82-
- Java 11+
82+
- Java 17+
8383
- Maven 3+
8484
- docker
8585
- docker-compose

acceptance-test/pom.xml

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,27 @@
9090
</dependency>
9191
</dependencies>
9292

93+
<profiles>
94+
<profile>
95+
<id>quarkus</id>
96+
<activation>
97+
<activeByDefault>true</activeByDefault>
98+
</activation>
99+
<properties>
100+
<dockerfile>Dockerfile</dockerfile>
101+
</properties>
102+
</profile>
103+
<profile>
104+
<id>spring</id>
105+
<activation>
106+
<activeByDefault>false</activeByDefault>
107+
</activation>
108+
<properties>
109+
<dockerfile>Dockerfile.spring</dockerfile>
110+
</properties>
111+
</profile>
112+
113+
</profiles>
93114

94115
<build>
95116
<plugins>
@@ -112,7 +133,7 @@
112133
<alias>dockerfile</alias>
113134
<build>
114135
<contextDir>${project.parent.basedir}</contextDir>
115-
<dockerFile>${project.parent.basedir}/Dockerfile</dockerFile>
136+
<dockerFile>${project.parent.basedir}/${dockerfile}</dockerFile>
116137
</build>
117138
</image>
118139
</images>

acceptance-test/src/test/java/br/com/helpdev/atdd/DefaultContainerStarterTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ private static GenericContainer<?> buildAppContainer(final Startable... dependsO
6666
.withEnv("MYSQL_PASSWORD", "test")
6767
.withEnv("MYSQL_URL", "jdbc:mysql://testdb:" + MySQLContainer.MYSQL_PORT + "/test?autoReconnect=true&useSSL=false")
6868
.withExposedPorts(8080)
69+
//TODO: change to: '/actuator/health' if you use spring
6970
.waitingFor(Wait.forHttp("/q/health/ready").forStatusCode(200))
7071
.withLogConsumer(new Slf4jLogConsumer(LoggerFactory.getLogger("APP_CONTAINER")));
7172
}

app/spring-app/pom.xml

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@
3939
<groupId>org.springframework.boot</groupId>
4040
<artifactId>spring-boot-starter-jersey</artifactId>
4141
</dependency>
42+
<dependency>
43+
<groupId>org.springframework.boot</groupId>
44+
<artifactId>spring-boot-starter-aop</artifactId>
45+
</dependency>
4246
<dependency>
4347
<groupId>${project.groupId}</groupId>
4448
<artifactId>jaxrs-controller-v1</artifactId>
@@ -64,14 +68,24 @@
6468
<groupId>org.springframework.boot</groupId>
6569
<artifactId>spring-boot-starter-actuator</artifactId>
6670
</dependency>
71+
<dependency>
72+
<groupId>io.micrometer</groupId>
73+
<artifactId>micrometer-core</artifactId>
74+
</dependency>
6775
<dependency>
6876
<groupId>io.micrometer</groupId>
6977
<artifactId>micrometer-registry-prometheus</artifactId>
7078
</dependency>
79+
80+
<dependency>
81+
<groupId>ch.qos.logback</groupId>
82+
<artifactId>logback-core</artifactId>
83+
</dependency>
84+
7185
<dependency>
72-
<groupId>org.springframework.boot</groupId>
73-
<artifactId>spring-boot-starter-test</artifactId>
74-
<scope>test</scope>
86+
<groupId>net.logstash.logback</groupId>
87+
<artifactId>logstash-logback-encoder</artifactId>
88+
<version>${logstash-logback-encoder-version}</version>
7589
</dependency>
7690
</dependencies>
7791

@@ -81,22 +95,21 @@
8195
<plugin>
8296
<groupId>org.springframework.boot</groupId>
8397
<artifactId>spring-boot-maven-plugin</artifactId>
98+
<version>${spring-boot.version}</version>
8499
<configuration>
85100
<mainClass>br.com.helpdev.SpringSampleApplication</mainClass>
86101
<layers>
87102
<enabled>true</enabled>
88103
<configuration>${project.basedir}/src/layers.xml</configuration>
89104
</layers>
90105
</configuration>
91-
92106
<executions>
93107
<execution>
94108
<goals>
95109
<goal>repackage</goal>
96110
</goals>
97111
</execution>
98112
</executions>
99-
100113
</plugin>
101114
</plugins>
102115
</build>
Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,30 @@
11
package br.com.helpdev.config;
22

3+
import java.util.Objects;
4+
import java.util.stream.Collectors;
5+
import javax.ws.rs.Path;
6+
import javax.ws.rs.ext.Provider;
37
import org.glassfish.jersey.server.ResourceConfig;
4-
import org.springframework.stereotype.Component;
8+
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
9+
import org.springframework.context.annotation.Configuration;
10+
import org.springframework.core.type.filter.AnnotationTypeFilter;
11+
import org.springframework.util.ClassUtils;
512

6-
@Component
13+
@Configuration
714
public class WebJerseyConfiguration extends ResourceConfig {
815

916
public WebJerseyConfiguration() {
1017
packages("br.com.helpdev.controller");
18+
var scanner = new ClassPathScanningCandidateComponentProvider(false);
19+
scanner.addIncludeFilter(new AnnotationTypeFilter(Provider.class));
20+
scanner.addIncludeFilter(new AnnotationTypeFilter(Path.class));
21+
registerClasses(
22+
scanner.findCandidateComponents("br.com.helpdev.controller").stream()
23+
.map(
24+
beanDefinition ->
25+
ClassUtils.resolveClassName(
26+
Objects.requireNonNull(beanDefinition.getBeanClassName()),
27+
getClassLoader()))
28+
.collect(Collectors.toSet()));
1129
}
1230
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
<appender name="out-json" class="ch.qos.logback.core.ConsoleAppender">
4+
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
5+
<providers>
6+
<timestamp>
7+
<fieldName>ts</fieldName>
8+
<timeZone>UTC</timeZone>
9+
</timestamp>
10+
<loggerName>
11+
<fieldName>logger</fieldName>
12+
</loggerName>
13+
<logLevel>
14+
<fieldName>severity</fieldName>
15+
</logLevel>
16+
<threadName>
17+
<fieldName>thread</fieldName>
18+
</threadName>
19+
<mdc/>
20+
<arguments>
21+
<includeNonStructuredArguments>false</includeNonStructuredArguments>
22+
</arguments>
23+
<stackTrace>
24+
<fieldName>stack</fieldName>
25+
</stackTrace>
26+
<message>
27+
<fieldName>message</fieldName>
28+
</message>
29+
</providers>
30+
</encoder>
31+
</appender>
32+
<appender name="out-console" class="ch.qos.logback.core.ConsoleAppender">
33+
<encoder>
34+
<pattern>%d{HH:mm:ss.SSS} [%X{traceId},%X{spanId}] %X{external.id} [%t] %-5level %logger{36} - %msg%n</pattern>
35+
</encoder>
36+
</appender>
37+
<!-- Env: LOG_LEVEL options: debug, info, warn, error -->
38+
<root level="${LOG_LEVEL:-info}">
39+
<!-- Env: LOG_APPENDER options: out-json, out-console -->
40+
<appender-ref ref="${LOG_APPENDER:-out-console}"/>
41+
</root>
42+
</configuration>

pom.xml

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,11 @@
102102
<!-- Others -->
103103
<jersey.version>2.32</jersey.version>
104104
<lombok.version>1.18.20</lombok.version>
105-
<slf4j.version>1.7.30</slf4j.version>
105+
106+
<slf4j.version>1.7.36</slf4j.version>
107+
<logback-core.version>1.2.3</logback-core.version>
108+
<logstash-logback-encoder-version>6.6</logstash-logback-encoder-version>
109+
106110
<rest-assured.version>4.3.3</rest-assured.version>
107111
<jackson-databind.version>2.13.4.2</jackson-databind.version>
108112
<jackson-datatype.version>2.14.1</jackson-datatype.version>
@@ -292,18 +296,6 @@
292296
<version>${testcontainers.version}</version>
293297
<scope>test</scope>
294298
</dependency>
295-
<dependency>
296-
<groupId>com.jparams</groupId>
297-
<artifactId>to-string-verifier</artifactId>
298-
<version>${to-string-verifier.version}</version>
299-
<scope>test</scope>
300-
</dependency>
301-
<dependency>
302-
<groupId>nl.jqno.equalsverifier</groupId>
303-
<artifactId>equalsverifier</artifactId>
304-
<version>${equals-verifier.version}</version>
305-
<scope>test</scope>
306-
</dependency>
307299
<dependency>
308300
<groupId>com.github.javafaker</groupId>
309301
<artifactId>javafaker</artifactId>

0 commit comments

Comments
 (0)