parent
8ffbf7a635
commit
8e1dd24d23
@ -1,34 +1,14 @@ |
||||
# Stage that builds the application, a prerequisite for the running stage |
||||
FROM maven:3-openjdk-17-slim as build |
||||
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - |
||||
RUN apt-get update -qq && apt-get install -qq --no-install-recommends nodejs |
||||
|
||||
# Stop running as root at this point |
||||
RUN useradd -m myuser |
||||
WORKDIR /usr/src/app/ |
||||
RUN chown myuser:myuser /usr/src/app/ |
||||
USER myuser |
||||
|
||||
# Copy pom.xml and prefetch dependencies so a repeated build can continue from the next step with existing dependencies |
||||
COPY --chown=myuser pom.xml ./ |
||||
RUN mvn dependency:go-offline -Pproduction |
||||
|
||||
# Copy all needed project files to a folder |
||||
COPY --chown=myuser:myuser src src |
||||
COPY --chown=myuser:myuser frontend frontend |
||||
COPY --chown=myuser:myuser package.json ./ |
||||
|
||||
# Using * after the files that are autogenerated so that so build won't fail if they are not yet created |
||||
COPY --chown=myuser:myuser package-lock.json* pnpm-lock.yaml* webpack.config.js* ./ |
||||
|
||||
|
||||
# Build the production package, assuming that we validated the version before so no need for running tests again |
||||
RUN mvn clean package -DskipTests -Pproduction |
||||
|
||||
# Running stage: the part that is used for running the application |
||||
FROM openjdk:17-jdk-slim |
||||
COPY --from=build /usr/src/app/target/*.jar /usr/app/app.jar |
||||
RUN useradd -m myuser |
||||
USER myuser |
||||
EXPOSE 8080 |
||||
CMD java -jar /usr/app/app.jar |
||||
FROM adoptopenjdk:11-jre-hotspot as builder |
||||
ARG JAR_FILE=trainerinvoice*.jar |
||||
COPY ${JAR_FILE} application.jar |
||||
RUN java -Djarmode=layertools -jar application.jar extract |
||||
|
||||
FROM adoptopenjdk:11-jre-hotspot |
||||
RUN echo "Europe/Berlin" > /etc/timezone |
||||
COPY --from=builder dependencies/ ./ |
||||
COPY --from=builder snapshot-dependencies/ ./ |
||||
COPY --from=builder spring-boot-loader/ ./ |
||||
COPY --from=builder application/ ./ |
||||
ENV JAVA_OPTS="-Duser.language=de -Duser.country=DE -Duser.region=DE" |
||||
ENV TZ=Europe/Berlin |
||||
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"] |
||||
|
||||
@ -0,0 +1,32 @@ |
||||
version: '2' |
||||
services: |
||||
trainerinvoice: |
||||
image: markuskreth/trainerinvoice |
||||
container_name: trainerinvoice |
||||
build: . |
||||
restart: unless-stopped |
||||
expose: |
||||
- "<WUNSCH_PORT>" |
||||
networks: |
||||
- <nginx_Network> |
||||
environment: |
||||
- VIRTUAL_HOST=<Einstellungen für nginx und letsencrype> |
||||
- VIRTUAL_PORT=<WUNSCH_PORT> |
||||
- LETSENCRYPT_HOST=<Einstellungen für nginx und letsencrype> |
||||
- LETSENCRYPT_EMAIL=<Einstellungen für nginx und letsencrype> |
||||
- KEYCLOAK_AUTH-SERVER-URL=<Einstellungen für keycloak> |
||||
- KEYCLOAK_REALM=<Einstellungen für keycloak> |
||||
- KEYCLOAK_RESOURCE=<Einstellungen für keycloak> |
||||
- KEYCLOAK_CREDENTIALS_SECRET=<Einstellungen für keycloak> |
||||
- SERVER_PORT=<WUNSCH_PORT> |
||||
- SPRING_DATASOURCE_URL=jdbc:postgresql://<DBHOST>:<DBPORT>/<DBNAME> |
||||
- SPRING_DATASOURCE_USERNAME=<DBUSER> |
||||
- SPRING_DATASOURCE_PASSWORD=<DBPASSWORD> |
||||
- LANG=de_DE.UTF-8 |
||||
- LANGUAGE=de_DE:de |
||||
- LC_ALL=de_DE.UTF-8 |
||||
- logging.level.root=INFO |
||||
- logging.level.de.kreth=DEBUG |
||||
networks: |
||||
<nginx_Network>: |
||||
external: true |
||||
Loading…
Reference in new issue