当我们进行java开发的时候,会使用到各种各样的技术,其中就有使用使用python读取文件的技术,今天不去讨论如何在java文件中读取脚本,而是要做好另一件事
当我们项目完成以后,需要对项目进行进行打包镜像,同时将python文件也和我们的项目文件一起镜像,但是在容器运行的时候,java该如何读取python文件的,在本地运行的时候,我们只需要下载python解释器就可以了,但是镜像的时候可没有下载python解释器ython文件就无法读取,所以针对这种情况,提出两个办法
1.直接在镜像的时候,下载python解释器及其相关组件
这个时候我们只需要在DockerFile里面添加相应的下载指令就可以,在镜像的时候就会自动下载这些组件
DockerFile文件
FROM openjdk:8-jre-slimMAINTAINER xuxueliENV PARAMS=""ADD target/xxl-job-admin-*.jar /app.jar# 更新软件源RUN apt-get update# 安装 Python 解释器和 pip 包管理器RUN apt-get install -y python3 python3-pipRUN apt-get update && \apt-get install -y python3 python3-pip && \pip3 install --no-cache-dir pandas pymysql chardet openpyxlCOPY ./target/classes/application.properties /apps/application.propertiesCOPY ./health/ /apps/python/health/WORKDIR /appsEXPOSE 7090ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]
其中下载python解释器及其相关组建的指令是
# 更新软件源RUN apt-get update# 安装 Python 解释器和 pip 包管理器RUN apt-get install -y python3 python3-pipRUN apt-get update && \apt-get install -y python3 python3-pip && \pip3 install --no-cache-dir pandas pymysql chardet openpyxl
在此要注意,如果缺少RUN apt-get update和RUN apt-get install -y python3 python3-pip,镜像过程 可能会报错,可以换成国内镜像源
这种办法属于笨方法,可以完成镜像,下载python解释器及其组件,但是速度非常慢
2.将python解释器及相关组件做成镜像,然后应用到我们的项目文件中
首先我们编辑好dockerFile
# 更新软件源
RUN apt-get update# 安装 Python 解释器和 pip 包管理器
RUN apt-get install -y python3 python3-pip# 安装 Python 解释器和 pip 包管理器
RUN apt-get update && \
apt-get install -y python3 python3-pip && \
pip3 install --no-cache-dir pandas pymysql chardet openpyxl requests urllib3 && \
apt-get clean
DockerFile里面的指令就是我们所需要的 Python 解释器和 pip 包管理器及其相关组件
构建python文件的镜像,这样我们在打包的时候,直接下载构建好的python镜像,不需要从镜像源拉取,相当于直接从自己的本地获取python镜像文件,时间可以缩短到秒级别
下面讲一下进行镜像的过程,在本机虚拟机操作
①本地新建文件夹
②导入DockerFile
文件夹中只需要Dockerfile,因为这个镜像的文件是从镜像源下载而来的,不需要本地文件
dockerfile包含了安装Python解释器和pip包管理器的步骤,并且安装了一些Python依赖库
③对python进行镜像
docker build -f Dockerfile -t baseos .
④打tag
docker tag baseospy:latest www.cncloud.cn/yx/baseos:v1
---------------------------------------------------------------------------------------------------------
docker tag {镜像名称}:{版本名称} www.cncloud.cn/yx/baseos:{版本名称}
baseospy:latest` 是你本地的 Docker 镜像的名称和标签(tag)
`www.cncloud.cn/yx/baseos:v1` 是要为镜像打的新标签。
推送到云
docker push www.cncloud.cn/yx/baseos:v1
到此位置就完成了python文件及其相关组件的镜像
现在再对项目进行镜像,就会省时很多
项目的dockerFile
FROM www.cncloud.cn/yx/baseos:v1
MAINTAINER xuxueli
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeENV PARAMS=""
ADD target/xxl-job-admin-*.jar /app.jarCOPY ./target/classes/application.properties /apps/application.properties
COPY ./waf/ /apps/python/health/
WORKDIR /apps
EXPOSE 7090
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]
现在就可以from www.cncloud.cn/yx/baseos:v1了