我的 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.
我到底做错了什么?我是码头工人的新手,也许我错过了一步。
额外细节
我的目标
我必须运行一个运行 Java 文件的 python 程序。我正在使用的 python 库需要指向 JAVA_HOME
的路径。
我的问题:
我不懂 Java,所以我无法正确运行该文件。
我的整个代码都在 Python 中,除了这个 Java 位
Python 包装器以我需要的方式运行文件。
原文由 pajamas 发布,翻译遵循 CC BY-SA 4.0 许可协议
好的,我花了一点时间才弄明白。我要感谢这个 答案。
我认为我的方法行不通,因为我没有基本版本的 Linux。
所以它是这样的:
可选:查找并设置 JAVA_HOME
docker exec -it [COINTAINER ID] bin/bash
查看容器内部并找到它。JAVA_HOME
并构建 + 再次运行它这是最终的 Dockerfile(它应该与问题中的 python 代码一起使用):
我是 Docker 的新手,所以这可能不是最好的解决方案。我愿意接受建议。
更新:常见问题
正如 Joabe Lucena 在 这里 指出的那样,Alpine 可能会遇到某些 python 包的问题。我建议您使用最适合您的 Linux 发行版,例如 centos。