From a64f848461c7e42692e03f62507871b767d63081 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Fri, 17 Mar 2023 17:33:54 +0100 Subject: [PATCH] Refactor build scripts and Docker image --- ci-scripts/build.sh | 47 ++++++++++++++++++++++++++++++ docker/Dockerfile | 33 ++++----------------- docker/create_image.sh | 16 +++++----- docker/docker-compose.override.yml | 2 +- 4 files changed, 62 insertions(+), 36 deletions(-) create mode 100755 ci-scripts/build.sh diff --git a/ci-scripts/build.sh b/ci-scripts/build.sh new file mode 100755 index 0000000..4effceb --- /dev/null +++ b/ci-scripts/build.sh @@ -0,0 +1,47 @@ +#!/bin/bash -x +set -eu -o pipefail + +############################################################# +# Any function offered by this file assume that the path is # +# located at the root of repository classroom-demo # +############################################################# + +# CI flags +BUILD_FRONT=false +BUILD_BACK=false + +# Environment variables +if [[ -n ${1:-} ]]; then + case "${1:-}" in + --build-front) + BUILD_FRONT=true + ;; + --build-back) + BUILD_BACK=true + ;; + *) + echo "Unrecognized method $1" + exit 1 + ;; + esac +else + echo "Must provide a method to execute as first parameter when calling the script" + exit 1 +fi + +# ------------- +# Build front +# ------------- +if [[ "${BUILD_FRONT}" == true ]]; then + rm -rf src/main/resources/static/* + cd src/angular/frontend + npm install --force + npx ng build --output-path ../../../src/main/resources/static +fi + +# ------------- +# Build back +# ------------- +if [[ "${BUILD_BACK}" == true ]]; then + mvn clean compile package +fi diff --git a/docker/Dockerfile b/docker/Dockerfile index ea0e832..74ad1bd 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,37 +1,16 @@ -FROM node:lts-alpine3.12 as frontend-build - -WORKDIR /classroom-demo - -RUN apk update && \ - rm -rf /var/cache/apk/* - -COPY ./pom.xml pom.xml -COPY ./src src - -RUN cd src/angular/frontend && \ - npm install && \ - npx ng build --output-path ../../main/resources/static - - -FROM maven:3.6.3 as backend-build -WORKDIR /classroom-demo -COPY --from=frontend-build /classroom-demo/pom.xml pom.xml -COPY --from=frontend-build /classroom-demo/src/main src/main - -RUN mvn clean install -RUN mvn -o package -RUN mv /classroom-demo/target/classroom-demo-*.war /classroom-demo/target/classroom-demo.war - -FROM alpine:3.11 +FROM alpine:3.17 +# Install Java and MySQL RUN apk update && \ apk add openjdk11-jre && \ apk add mysql mysql-client && \ rm -rf /var/cache/apk/* +# Copy Java application RUN mkdir -p /opt/classroom-demo -COPY --from=backend-build /classroom-demo/target/classroom-demo.war /opt/classroom-demo/classroom-demo.jar -# Entrypoint +COPY ../target/classroom-demo-*.war /opt/classroom-demo/classroom-demo.jars + +# Copy entrypoint COPY ./docker/entrypoint.sh /usr/local/bin RUN chmod +x /usr/local/bin/entrypoint.sh diff --git a/docker/create_image.sh b/docker/create_image.sh index 8a00b74..48091ff 100755 --- a/docker/create_image.sh +++ b/docker/create_image.sh @@ -1,9 +1,9 @@ -#!/bin/bash -if [ $# -eq 0 ]; then - echo "No version argument provided. Usage: \"./create_image.sh \"" - exit 1 -fi - -pushd ../ +#!/bin/bash -x -docker build -f docker/Dockerfile -t "$1" . \ No newline at end of file +VERSION=$1 +if [[ ! -z $VERSION ]]; then + cd .. + docker build --pull --no-cache --rm=true -f docker/Dockerfile -t openvidu/openvidu-classroom-demo:$VERSION . +else + echo "Error: You need to specify a version as first argument" +fi diff --git a/docker/docker-compose.override.yml b/docker/docker-compose.override.yml index 72817cd..4d08934 100644 --- a/docker/docker-compose.override.yml +++ b/docker/docker-compose.override.yml @@ -8,4 +8,4 @@ services: environment: - SERVER_PORT=5442 - OPENVIDU_URL=http://localhost:5443 - - OPENVIDU_SECRET=${OPENVIDU_SECRET} \ No newline at end of file + - OPENVIDU_SECRET=${OPENVIDU_SECRET}