簡體   English   中英

在K8s集群上運行的Docker容器內調用特定的Java主類

[英]Call specific java main class inside of docker container running on K8s cluster

我正在嘗試使用Kubernetes調用包含主要方法的特定Java類。 但是,在創建容器時,我的部署yaml中的命令/參數的每個組合都以錯誤結尾。

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: reports
spec:
  replicas: 1
  selector:
    matchLabels:
      app: reports
  template:
    metadata:
      labels: 
        app: reports
    spec:
      containers:
      - name: reports
        command: ["java -cp reports.jar com.gswsa.is.reports.TestRunner"]
        image: blah/reports:latest
        volumeMounts:
        - mountPath: /tmp/logs/reports
          name: logvolume

Dockerfile

FROM openjdk:8-jdk-alpine
RUN apk add --no-cache tzdata
RUN apk --update add fontconfig ttf-dejavu
ENV TZ America/New_York
VOLUME /tmp/logs/reports
ARG JAR_FILE=target/reports-1.0.0.jar
COPY ${JAR_FILE} /reports.jar
#ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/reports.jar"]
#CMD ["/usr/bin/java", "-jar", "-Dspring.profiles.active=PROD", "/reports.jar"]

我希望能夠創建多個部署腳本並在需要時使用它們的特定參數來調用它們。 如果有更好的方法,我全神貫注! 謝謝

您可以指定僅在Dockerfile中在容器中啟動的命令行。 也就是說,它對於給定的容器圖像是固定的。 但是,您可以將環境變量從部署傳遞到容器,並使命令行的行為有所不同。

也就是說,您可以在Java中擁有一個單一的主類,並根據環境變量執行不同的操作。 或者,您可以在包裝文件中定義一個包裝程序外殼腳本作為Dockerfile的入口點,並使該腳本根據env變量使用特定的Java類執行Java命令行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM