如何使用python和Java运行Docker?

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

这是我的dockerfile:如果我不添加 *

#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包装器以我需要它运行的方式来运行文件。

回答:

我认为我的方法行不通,因为我没有基本的Linux版本。

所以它是这样的:

  1. 获得Linux(我使用Alpine是因为它是准系统)
  2. 通过包管理器获取Java
  3. 获取Python,PIP

:查找并设置JAVA_HOME

  1. 查找到JAVA_HOME的路径。也许有更好的方法来执行此操作,但是我通过运行容器来完成此操作,然后我使用来查看容器内部 docker exec -it [COINTAINER ID] bin/bash并找到了它。
  2. 设置JAVA_HOMEdockerfile并再次构建并再次运行

这是最终的Dockerfile(它应该与问题中的python代码一起使用):

### 1. Get Linux

FROM alpine:3.7

### 2. Get Java via the package manager

RUN apk update \

&& apk upgrade \

&& apk add --no-cache bash \

&& apk add --no-cache --virtual=build-dependencies unzip \

&& apk add --no-cache curl \

&& apk add --no-cache openjdk8-jre

### 3. Get Python, PIP

RUN apk add --no-cache python3 \

&& python3 -m ensurepip \

&& pip3 install --upgrade pip setuptools \

&& rm -r /usr/lib/python*/ensurepip && \

if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \

if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && \

rm -r /root/.cache

### Get Flask for the app

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

####

#### OPTIONAL : 4. SET JAVA_HOME environment variable, uncomment the line below if you need it

#ENV JAVA_HOME="/usr/lib/jvm/java-1.8-openjdk"

####

EXPOSE 81

ADD test.py /

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

我是Docker的新手,所以这可能不是最好的解决方案。我愿意提出建议。

以上是 如何使用python和Java运行Docker? 的全部内容, 来源链接: utcz.com/qa/420863.html

回到顶部