![](/img/trans.png)
[英]Passing cmd arguments to java app in docker container via k8s Job file
[英]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.