猿问

如何使用python和Java运行Docker?

我需要在docker容器中同时使用java和python来运行一些代码。


这是我的dockerfile:如果我不添加FROM openjdk:slim,它可以正常工作


#get python

FROM python:3.6-slim


RUN pip install --trusted-host pypi.python.org flask


#get openjdk


FROM openjdk:slim



COPY . /targetdir

WORKDIR /targetdir


# Make port 81 available to the world outside this container

EXPOSE 81


CMD ["python", "test.py"]

并且test.py应用程序位于同一目录中:


from flask import Flask


import os

app = Flask(__name__)



@app.route("/")


def hello():

    html = "<h3>Test:{test}</h3>"

    test = os.environ['JAVA_HOME']


    return html.format(test = test)



if __name__ == '__main__':

    app.run(debug=True,host='0.0.0.0',port=81)

我收到此错误:


D:\MyApps\Docker Toolbox\Docker Toolbox\docker.exe: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"python\": executable file not found in $PATH": unknown.

我到底在做什么错?我是Docker的新手,也许我错过了一步。

额外细节

我的目标

我必须运行一个运行Java文件的python程序。我正在使用的python库需要使用的路径JAVA_HOME

我的问题:

  • 我不懂Java,所以无法正确运行文件。

  • 我的整个代码都是用Python编写的,除了Java之外

  • Python包装器以我需要它运行的方式来运行文件。


紫衣仙女
浏览 262回答 3
3回答

波斯汪

解决上述问题的一种更简单的解决方案是使用多阶段docker容器,您可以在其中将内容从一个容器复制到另一个容器。在上述情况下,您可以将其openjdk:slim作为基本容器,然后使用python容器中的内容复制到该基本容器中,如下所示:FROM openjdk:slimCOPY --from=python:3.6 / /...&nbsp;<normal instructions for python container continues>...此功能自Docker 17.05起可用,使用多阶段构建可以做更多的事情,例如仅将所需的内容从一个复制到另一个。
随时随地看视频慕课网APP

相关分类

Python
我要回答