Как мне установить JAVA_HOME, используя Dockerfile и python? - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь настроить Dockerfile для своего проекта и не уверен, как установить JAVA_HOME в контейнере.

FROM python:3.6
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Define environment variable
ENV NAME Netflow
# Run netflow.py
CMD ["python", "netflow.py"]

В файле require.txt у меня есть ...

numpy
pandas
kafka
pyspark
log

Мой файл netflow.py: ...

import pandas, math, re, log
from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext


conf = SparkConf().setAppName("building a warehouse")
sc = SparkContext(conf=conf)
df=pandas.read_csv(r'TestDataSet.csv') 

Вывод в терминале после попытки запустить его ...

JAVA_HOME is not set
Traceback (most recent call last):
  File "netflow.py", line 7, in <module>
    sc = SparkContext(conf=conf)
  File "/usr/local/lib/python3.6/site-packages/pyspark/context.py", line 115, in __init__
    SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
  File "/usr/local/lib/python3.6/site-packages/pyspark/context.py", line 298, in _ensure_initialized
    SparkContext._gateway = gateway or launch_gateway(conf)
  File "/usr/local/lib/python3.6/site-packages/pyspark/java_gateway.py", line 94, in launch_gateway
    raise Exception("Java gateway process exited before sending its port number")

Я искалдля решения, но никто не работал до сих пор.

Я попытался

ENV JAVA_HOME /Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home

, и я пытался использовать отдельную команду

docker run -e "JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home" project env

Я все еще получаю ту же ошибку

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

На самом деле вам нужно установить Java внутри вашего контейнера, но я бы посоветовал найти образ докера Pyspark или добавить Python к образам Openjdk, чтобы вам не приходилось связываться со слишком большим количеством переменных среды

В частности, JAVA_HOME=/Library/Java/JavaVirtualMachines - это единственный доступный путь к вашему Mac, и не следует ожидать, что он будет работать внутри контейнера Linux

Однако, неясно, зачем вам нужен Pyspark, когда numpy является единственнымвещь на самом деле читает ваши данные

0 голосов
/ 21 ноября 2018

Чтобы установить переменные окружения, вы можете объявить их в файле Docker следующим образом:

ENV JAVA_HOME="foo"

или

ENV JAVA_HOME foo

Фактически вы уже установили переменную окружения в примере, который выопубликовано.

Подробнее см. документация .

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