首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google : Python在带有Docker的Flex环境中无法识别的JAVA命令(在这个Python过程中找不到‘JAVA’命令)

Google : Python在带有Docker的Flex环境中无法识别的JAVA命令(在这个Python过程中找不到‘JAVA’命令)
EN

Stack Overflow用户
提问于 2021-06-06 20:50:23
回答 1查看 94关注 0票数 1

我在上部署了一个Python项目。由于项目依赖于Java,所以我使用了一个Docker容器来配置两个环境: Python + Java。

但是,当我在GAE中调用我的"java服务时,从这个Python过程中找不到java**命令,请确保安装了并为错误设置了路径*。

在构建Docker文件的过程中,我能够在安装Java之后访问它。但是在API执行期间,Python无法识别它。

"app.yaml“文件使用:

代码语言:javascript
运行
复制
runtime: custom
env: flex
entrypoint: gunicorn -w 4 -k uvicorn.workers.UvicornWorker src.main:app

下面是部署中使用的Docker文件:

代码语言:javascript
运行
复制
### 1. Get Linux
FROM alpine:3.7
    
# Default to UTF-8 file.encoding
ENV LANG C.UTF-8

### 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

#### 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"
RUN export JAVA_HOME
ENV PATH $PATH:$JAVA_HOME/bin
RUN export PATH
RUN find / -name "java"
RUN java -version  

FROM python:3.7
EXPOSE 8080

ENV APP_HOME /src
WORKDIR /src

COPY requirements.txt ./requirements.txt
RUN pip3 install -r requirements.txt

COPY . /src
CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8080"]

下面是部署过程中RUN java -version命令的打印输出:运行java -version命令

有人知道为什么即使Python和Java运行在happening上相同的服务上也会发生错误吗?是否缺少其他设置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-06 22:07:28

您正在一个Dockerfile中使用两个FROM,所以您实际上是在进行多阶段 Docker构建,但是您做错了。一个多阶段的构建应该是这样的:

代码语言:javascript
运行
复制
### 1. Get Linux
FROM alpine:3.7 as build
# here you install with apk and build your Java program

FROM python:3.7
EXPOSE 8080 
...
# here you copy what you need from the previous Docker build, though 
# since it was Java, which is not installed here anymore because it is
# a python image, you need to consider if you really need a multi-stage 
# build 
COPY --from=builder /src /src

否则,只需删除第二个FROM python:3.7并使用apk安装它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67863595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档