Вызвать определенный основной класс Java внутри контейнера Docker, работающего в кластере K8s - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь вызвать определенный класс Java, который содержит основные методы, используя Kubernetes. Однако каждая комбинация команд / аргументов в моем развертывании yaml заканчивается ошибкой при создании контейнера.

deploy.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"]

Я ожидаю, что смогу создать несколько сценариев развертывания и вызывать их всякий раз, когда захочу, с их конкретными аргументами. Если есть лучший способ, я все уши! Спасибо

1 Ответ

1 голос
/ 29 мая 2019

Вы можете указать командную строку для запуска в контейнере только в Dockerfile. То есть это исправлено для данного изображения контейнера. Однако вы можете передать переменные среды в свой контейнер из развертывания, и ваша командная строка будет вести себя по-другому.

То есть вы можете иметь один единственный основной класс в Java, который может выполнять разные действия в зависимости от переменной среды. Или у вас может быть сценарий оболочки-оболочки, который вы определяете как точку входа в ваш Dockerfile, и этот сценарий выполняет командную строку java с определенным классом Java на основе переменной env.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...