Kodebasen består af 2 selvstændige kode-projekter, som er beskrevet uafhængigt af hinanden nedenfor.
Der ligger en InnoSetup fil i Installer folderen i dette kode-projekt. Den kan anvendes af InnoSetup til at bygge en installations EXE fil, indeholder alle de relevante filer. Den sørger samtidig for at installere komponenten som en Windows Service når man kører EXE filen.
Man kan også anvende andre værktøjer til at danne en EXE/MSI installer, men der er kun udarbejdet scripts til InnoSetup. Man kan tage et kig i InnoSetup iss filen for at se hvilke filer der skal kopieres ind under installationen, og hvad der skal afvikles i Post-Install (installation af Windows Service). Scriptet er simpelt og nemt at overskue.
Bemærk! man skal formodentligt tilpasse iss filen, så stier m.m. passer til der hvor man har kildekoden placeret på den maskine hvor man bygger EXE installeren.
OS2autoproces er en Java applikation, der er afhænging af konfigurationsfiler samt certifikat/keystore filer i forbindelse med deployment. Byggeprocessen for OS2autoproces sikrer at applikationen og dens framework afhængigheder pakkteres i en fed JAR fil, så til deployment har man alene brug for
- Den fede JAR file
- En konfigurationsfil
- En keystore fil
Man kan udelade konfigurationsfilen hvis man blot tilføjer alle konfigurationsparametre som miljøvariable i et Docker deployment. Dette kan gøres som beskrevet nedenfor
Man kan bygge og pakktere OS2autoproces i en Docker container på følgende måde
- Kompiler OS2autoproces til en fed JAR fil
- Kopier den fede JAR fil ind i en folder ved navn "deploy"
- Lav en tekst fil ved navn "run.sh" og kopier den ind i "deploy" folderen
- Byg en Docker container med indholdet af "deploy" folderen
- Start Docker containeren vha Docker Compose, Kubernetes eller andet Docker deployment værktøj
JAR filen kan kompileres vha Maven og en terminal vindue som vist nedenfor
$ mvn clean install
Start med at lave en deploy folder, og kopier så JAR filen derind som vist nedenfor
$ mkdir Deploy $ cp target/os2autoproces-backend-1.0.0.jar deploy/
Vi har brug for et shell script der kan starte OS2autoproces. Lav en tekst-fil ved navn run.sh og kopier den ind i "deploy" folderen. Filen skal have følgende indhold
#!/bin/bash java -Dloader.path=config/* -jar os2autoproces-backend-1.0.0.jar
Når både JAR og run.sh fil ligger i "deploy" folderen, kan man bygge en container vha en Dockerfile. Lav en fil ved navn Dockerfile, og giv den følgende indhold
FROM openjdk:8-jreWORKDIR /home COPY /deploy /home RUN chmod +x /home/run.sh EXPOSE 9090
ENTRYPOINT ["/bin/bash", "run.sh"]
Man bygger efterfølgende containeren via følgende kommandolinje. Dette forudsætter at man har Docker installeret.
docker build -t os2autoproces:latest .
Docker containeren kan nu startes i produktionsmiljøet (hvordan man får containeren til produktionsmiljøet er udenfor scope af denne vejledning, men Dockerhub kunne være en mekanisme til dette). Til dette formål kan man bruge forskellige Docker værktøjer. Et sådan værktøj er Docker Compose, og der er nedenfor vist en simpel docker-compose.yml fil, som indeholder de fornødne opsætninger til at starte containeren. Bemærk at "environment" sektionen indeholder alt konfigurationen, og at der mountes en "config" folder, som skal indeholder certifikatet der refereres til i SAML opsætningen.
version: "2.4" services: backend: image: os2autoproces:latest ports: - 9090:9090 environment: dataSource.url: "jdbc:mysql://localhost:3306/ap?useSSL=false" dataSource.username: "root" dataSource.password: "Test1234" scheduled.enabled: "true" ... osv ... volumes: - ./config:/home/config
Der bør laves en "config" folder, hvor man kan kopiere keystore filen ind, så den kan læses af Docker containeren. Man kan også vælge at have hele environment sektionen i en application.propeties fil, som så placeres i "config" folderen.
Man kan evt starte med en kopi af indholdet af application.properties filen fra kodebasen, og så tilpasse efter behov.