我需要在docker容器中同时使用java和python来运行一些代码。这是我的dockerfile:如果我不添加FROM openjdk:slim,它可以正常工作#get pythonFROM python:3.6-slimRUN pip install --trusted-host pypi.python.org flask#get openjdkFROM openjdk:slimCOPY . /targetdirWORKDIR /targetdir# Make port 81 available to the world outside this containerEXPOSE 81CMD ["python", "test.py"]并且test.py应用程序位于同一目录中:from flask import Flaskimport osapp = 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包装器以我需要它运行的方式来运行文件。
3 回答
波斯汪
TA贡献1811条经验 获得超4个赞
解决上述问题的一种更简单的解决方案是使用多阶段docker容器,您可以在其中将内容从一个容器复制到另一个容器。在上述情况下,您可以将其openjdk:slim作为基本容器,然后使用python容器中的内容复制到该基本容器中,如下所示:
FROM openjdk:slim
COPY --from=python:3.6 / /
...
<normal instructions for python container continues>
...
此功能自Docker 17.05起可用,使用多阶段构建可以做更多的事情,例如仅将所需的内容从一个复制到另一个。
添加回答
举报
0/150
提交
取消