build native image

This commit is contained in:
Valentin CZERYBA 2022-10-15 11:34:22 +02:00
parent 8cb5c78497
commit c944982d19
6 changed files with 84 additions and 0 deletions

View File

@ -132,6 +132,7 @@
<profiles> <profiles>
<profile> <profile>
<id>native</id> <id>native</id>
<activation> <activation>
<property> <property>
<name>native</name> <name>native</name>
@ -161,6 +162,8 @@
</plugins> </plugins>
</build> </build>
<properties> <properties>
<quarkus.package.type>native</quarkus.package.type>
<quarkus.native.additional-build-args>-H:ResourceConfigurationFiles=resources-config.json</quarkus.native.additional-build-args>
<quarkus.package.type>native</quarkus.package.type> <quarkus.package.type>native</quarkus.package.type>
</properties> </properties>
</profile> </profile>

View File

@ -0,0 +1,57 @@
####
# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode.
#
# Before building the container image run:
#
# ./mvnw package -Pnative
#
# Then, build the image with:
#
# docker build -f src/main/docker/Dockerfile.multistage -t quarkus/covas-quarkus .
#
# Then run the container using:
#
# docker run -i --rm -p 8080:8080 quarkus/covas-quarkus
#
###
## Stage 1 : build with maven builder image with native capabilities
FROM quay.io/quarkus/ubi-quarkus-native-image:22.2.0-java17 AS build
COPY --chown=quarkus:quarkus mvnw /code/mvnw
COPY --chown=quarkus:quarkus .mvn/ /code/.mvn
COPY --chown=quarkus:quarkus pom.xml /code/
USER quarkus
WORKDIR /code
RUN ./mvnw -B org.apache.maven.plugins:maven-dependency-plugin:3.1.2:go-offline
COPY --chown=quarkus:quarkus src/ /code/src
ENV POSTGRES_PASSWORD toto
ENV POSTGRES_USER toto
ENV POSTGRES_DB toto
ENV POSTGRES_URL db.valczeryba.ovh
ENV POSTGRES_PORT 54321
ENV REDIS_URL redis.valczeryba.ovh
ENV REDIS_PORT 63791
RUN ls -l src/*/*/*/
RUN ./mvnw package -Pnative
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.5
WORKDIR /work/
COPY --from=build /code/target/*-runner /work/application
RUN chown 1001 /work \
&& chmod "g+rwX" /work \
&& chown 1001:root /work
EXPOSE 8080
USER 1001
ENV POSTGRES_PASSWORD toto
ENV POSTGRES_USER toto
ENV POSTGRES_DB toto
ENV POSTGRES_URL db.valczeryba.ovh
ENV POSTGRES_PORT 54321
ENV REDIS_URL redis.valczeryba.ovh
ENV REDIS_PORT 63791
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]

View File

@ -15,12 +15,14 @@ import javax.ws.rs.core.Response;
import com.covas.Entity.UsersEntity; import com.covas.Entity.UsersEntity;
import io.quarkus.mailer.MailTemplate; import io.quarkus.mailer.MailTemplate;
import io.quarkus.qute.Location;
import io.quarkus.redis.client.RedisClient; import io.quarkus.redis.client.RedisClient;
@Path("mail") @Path("mail")
public class MailRessource { public class MailRessource {
@Inject @Inject
@Location("mailer")
private MailTemplate mailer; private MailTemplate mailer;
@Inject @Inject

View File

@ -1,5 +1,7 @@
smallrye.jwt.sign.key.location=privateKey.pem smallrye.jwt.sign.key.location=privateKey.pem
quarkus.native.additional-build-args =-H:ResourceConfigurationFiles=resources-config.json
mp.jwt.verify.publickey.location=publicKey.pem mp.jwt.verify.publickey.location=publicKey.pem
mp.jwt.verify.issuer=https://example.com/issuer mp.jwt.verify.issuer=https://example.com/issuer

View File

@ -0,0 +1,20 @@
{
"resources": [
{
"pattern": ".*\\.pem$"
},
{
"pattern": "templates/mailer.txt"
},
{
"pattern": "application.properties"
},
{
"pattern": "quarkus-runtime-config-defaults.properties"
},
{
"pattern": ".*\\.json$"
}
]
}