繁体   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