###################################################################################### ## ## buyilding-end install applications: ## ###################################################################################### FROM archlinux:base-devel AS builder # update system RUN pacman -Syu --noconfirm && pacman-db-upgrade \ && pacman -S --noconfirm jdk-openjdk maven pnpm \ && pacman -Scc --noconfirm ENV PATH /workspace/node_modules/.bin:$PATH WORKDIR /workspace ###################################################################################### ## ## Build back: ## ###################################################################################### FROM builder AS buildBack COPY back/pom.xml back/Formatter.xml ./ COPY back/src ./src/ RUN mvn clean compile assembly:single ###################################################################################### ## ## Build front: ## ###################################################################################### FROM builder AS buildFront RUN echo "@kangaroo-and-rabbit:registry=https://gitea.atria-soft.org/api/packages/kangaroo-and-rabbit/npm/" > /root/.npmrc ADD front/package.json \ front/karma.conf.js \ front/protractor.conf.js \ ./ # install and cache app dependencies RUN pnpm install ADD front/e2e \ front/tsconfig.json \ front/tslint.json \ front/angular.json \ ./ ADD front/src ./src # generate build RUN ng build --output-path=dist --configuration=production --base-href=/karso/ --deploy-url=/karso/ karso ###################################################################################### ## ## Production area: ## ###################################################################################### FROM bellsoft/liberica-openjdk-alpine:latest # add wget to manage the health check... RUN apk add --no-cache wget ENV LANG=C.UTF-8 COPY --from=buildBack /workspace/out/maven/*.jar /application/application.jar COPY --from=buildFront /workspace/dist /application/front/ WORKDIR /application/ EXPOSE 80 # To verify health-check: docker inspect --format "{{json .State.Health }}" YOUR_SERVICE_NAME | jq HEALTHCHECK --start-period=30s --start-interval=5s --interval=30s --timeout=5s --retries=10 \ CMD wget --no-verbose --tries=1 --spider http://localhost:80/karso/api/health_check || exit 1 CMD ["java", "-Xms64M", "-Xmx1G", "-cp", "/application/application.jar", "org.kar.karso.WebLauncher"]