以前有个应用通过java容器调用另一个python容器的python应用,最开始直接使用docker run来执行,结果根本调不起来。然后就通过flask向外公布rest接口,再由flask去调用python命令。这样也很方便,但是每次python接口修改后又要去修改flask,又要修改java代码,搞得太麻烦。
今天就打算把java和python放一起,直接通过java runtime执行python命令。
先本来打算在java8镜像上安装python3.7,结果发现安装过程很复杂,就决定在python3.7基础上安装jdk,只需要设置环境变量就可以。结果恰恰认为很简单的设置环境变量搞了我一下午,最开始在/etc/profile中设置
export JAVA_HOME=/data/jdk1.8.0_171
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
结果启动java就识别不到,那我dockerfile中在/root/.bashrc中添加source /etc/profile
···
RUN cat "source /etc/profile">>/root/.bashrc
···
结果发现还是不行。
最后翻书发现需要在dockerfile中设置环境变量。
FROM python:3.7.3-stretch
MAINTAINER zedong.jiang zedong.jiang@sysssc.com
VOLUME /tmp
RUN pip3 install python-docx
RUN pip3 install bs4
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD ./jdk1.8.0_171 /data/jdk1.8.0_171
ENV JAVA_HOME /data/jdk1.8.0_171
ENV CLASSPATH .:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
ADD ./inspection-admin.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
网友评论