docs: add build step to Gitea Action and Dockerfile
Build and Push MkDocs Site / build-and-push (push) Successful in 13s
Build and Push MkDocs Site / build-and-push (push) Successful in 13s
This commit is contained in:
1 parent
1f95e3b2a6
commit
ea1a4375e2
1 file changed
+45
-37
@@ -33,77 +33,86 @@ sdk install kotlin
|
||||
|
||||
## Docker Setup (Oracle Linux 10)
|
||||
|
||||
Hier ist ein Beispiel für ein Dockerfile, das auf **Oracle Linux 10** basiert und **Java 25** sowie **Kotlin** installiert.
|
||||
Hier ist ein Beispiel für ein Dockerfile, das auf **Oracle Linux 10** basiert. Es verwendet einen **Multi-Stage Build**, um erst die Anwendung zu bauen und dann ein schlankes Runtime-Image zu erstellen.
|
||||
|
||||
```dockerfile
|
||||
# Basis-Image: Oracle Linux 10
|
||||
FROM oraclelinux:10
|
||||
# --- Stage 1: Build ---
|
||||
FROM oraclelinux:10 AS builder
|
||||
|
||||
# Metadaten
|
||||
LABEL maintainer="rwcloud.ch"
|
||||
LABEL description="Kotlin Development Environment on Oracle Linux 10 with Java 25"
|
||||
RUN dnf -y install tar gzip unzip curl && dnf clean all
|
||||
|
||||
# System-Updates und Installation von Abhängigkeiten
|
||||
RUN dnf -y update && \
|
||||
dnf -y install tar gzip unzip curl && \
|
||||
dnf clean all
|
||||
|
||||
# Installation von Java 25 (Beispielpfad/Download)
|
||||
# Hinweis: Da Java 25 zum Erstellungszeitpunkt noch neu ist,
|
||||
# muss hier ggf. die URL angepasst werden.
|
||||
# Java 25 für den Build
|
||||
RUN curl -L -o /tmp/openjdk.tar.gz https://download.java.net/java/GA/jdk25/archive/openjdk-25_linux-x64_bin.tar.gz && \
|
||||
mkdir -p /usr/java && \
|
||||
tar -xzf /tmp/openjdk.tar.gz -C /usr/java && \
|
||||
rm /tmp/openjdk.tar.gz
|
||||
|
||||
# Umgebungsvariablen setzen
|
||||
ENV JAVA_HOME=/usr/java/jdk-25
|
||||
ENV PATH=$JAVA_HOME/bin:$PATH
|
||||
|
||||
# Kotlin Compiler installieren
|
||||
ENV KOTLIN_VERSION=2.1.0
|
||||
RUN curl -L -o /tmp/kotlin-compiler.zip https://github.com/JetBrains/kotlin/releases/download/v${KOTLIN_VERSION}/kotlin-compiler-${KOTLIN_VERSION}.zip && \
|
||||
unzip /tmp/kotlin-compiler.zip -d /opt && \
|
||||
rm /tmp/kotlin-compiler.zip
|
||||
WORKDIR /build
|
||||
COPY . .
|
||||
|
||||
ENV PATH=$PATH:/opt/kotlinc/bin
|
||||
# Build der Applikation (angenommen es wird Gradle verwendet)
|
||||
# Falls kein Wrapper vorhanden ist, müsste Gradle hier installiert werden
|
||||
RUN ./gradlew build --no-daemon
|
||||
|
||||
# --- Stage 2: Runtime ---
|
||||
FROM oraclelinux:10
|
||||
|
||||
RUN dnf -y install tar gzip && dnf clean all
|
||||
|
||||
# Java 25 Runtime
|
||||
RUN curl -L -o /tmp/openjdk.tar.gz https://download.java.net/java/GA/jdk25/archive/openjdk-25_linux-x64_bin.tar.gz && \
|
||||
mkdir -p /usr/java && \
|
||||
tar -xzf /tmp/openjdk.tar.gz -C /usr/java && \
|
||||
rm /tmp/openjdk.tar.gz
|
||||
|
||||
ENV JAVA_HOME=/usr/java/jdk-25
|
||||
ENV PATH=$JAVA_HOME/bin:$PATH
|
||||
|
||||
# Arbeitsverzeichnis
|
||||
WORKDIR /app
|
||||
|
||||
# Beispiel-Anwendung kopieren (falls vorhanden)
|
||||
# COPY . /app
|
||||
# Nur die gebaute JAR aus dem Builder-Stage kopieren
|
||||
COPY --from=builder /build/build/libs/*.jar app.jar
|
||||
|
||||
# Test der Installation
|
||||
RUN java -version && kotlinc -version
|
||||
|
||||
CMD ["bash"]
|
||||
EXPOSE 8080
|
||||
CMD ["java", "-jar", "app.jar"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gitea Action (CI/CD)
|
||||
|
||||
Um das obige Docker-Image automatisch zu bauen und in eine Registry zu pushen, kannst du folgende Gitea Action (`.gitea/workflows/build-kotlin-image.yml`) verwenden.
|
||||
Um die Applikation automatisch zu bauen und das Docker-Image zu erstellen, kannst du folgende Gitea Action (`.gitea/workflows/build-and-deploy.yml`) verwenden. In diesem Beispiel nutzen wir die Action auch für den Test und Build vor dem Docker-Schritt.
|
||||
|
||||
```yaml
|
||||
name: Build and Push Kotlin Image
|
||||
name: Build and Push Kotlin App
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'Dockerfile'
|
||||
- '.gitea/workflows/**'
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up JDK 25
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '25'
|
||||
distribution: 'oracle'
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew build
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: actions/setup-buildx-action@v3
|
||||
|
||||
@@ -114,12 +123,11 @@ jobs:
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITEA_TOKEN }}
|
||||
|
||||
- name: Build and Push
|
||||
- name: Build and Push Docker Image
|
||||
uses: actions/docker-build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: |
|
||||
gitea.rwcloud.ch/${{ github.repository }}/kotlin-dev:latest
|
||||
gitea.rwcloud.ch/${{ github.repository }}/kotlin-dev:ol10-java25
|
||||
gitea.rwcloud.ch/${{ github.repository }}/kotlin-app:latest
|
||||
```
|
||||
Reference in new issue
Block a user