Dockerfile:多阶段构建不起作用,而且没有现成的Python3 + Alpine + Java镜像可用。
Dockerfile:多阶段构建不起作用,而且没有现成的Python3 + Alpine + Java镜像可用。
我正在将一个组件容器化。它需要Linux + Python和Java。
Linux + Python - 我正在使用Alpine 3.5和Python 3.5镜像。
这是我的Docker文件。
Dockerfile:
# # 健康监控 Docker 文件 # #ARG JAVA_BASE=1.0 #FROM csf-docker-delivered.repo.lab.pl.alcatel-lucent.com/java_base:17.6-1 #WORKDIR /etc/alternatives #RUN CGO_ENABLED=0 FROM registry1-docker-io.repo.lab.pl.alcatel-lucent.com/python:3.5-alpine #COPY --from=build /etc/alternatives/* . #RUN rm -rf /var/cache/apk/* && \ # rm -rf /tmp/* # #RUN apk update # #RUN apk add --update --no-cache\ # build-base \ # openjdk8-jre \ # && pip install virtualenv \ # && rm -rf /var/cache/apk/* #RUN apk update && apk upgrade && \ # apk add openjdk8 && \ # mkdir /tmp/tmprt && \ # cd /tmp/tmprt && \ # apk add zip && \ # unzip -q /usr/lib/jvm/default-jvm/jre/lib/rt.jar && \ # apk add zip && \ # zip -q -r /tmp/rt.zip . && \ # apk del zip && \ # cd /tmp && \ # mv rt.zip /usr/lib/jvm/default-jvm/jre/lib/rt.jar && \ # rm -rf /tmp/tmprt /var/cache/apk/* bin/jjs bin/keytool bin/orbd bin/pack200 bin/policytool \ # bin/rmid bin/rmiregistry bin/servertool bin/tnameserv bin/unpack200 COPY ./jdk-8u201-linux-x64.tar.gz / RUN tar xf /jdk-8u201-linux-x64.tar.gz ENV JAVA_HOME=/jdk1.8.0_201/bin ENV NGDB_HOME /opt/nsn/ngdb #RUN yum -y install openjdk-8-jdk-headless #RUN apt-get install openjdk-8-jdk-headless #COPY ./openjdk-8_8u181-b13.orig.tar.gz / #RUN tar xf /openjdk-8_8u181-b13.orig.tar.gz RUN mkdir -p /opt/nsn/ngdb/monitoring/scripts RUN mkdir -p /opt/nsn/ngdb/monitoring/utils RUN mkdir -p /var/local/monitoring/output RUN mkdir -p /var/local/monitoring/work RUN for directory in boundaryStatus postgresUsersCount backlogHadoop tableCount_Usage Dimension_Count tableCount_Day tableCount_Week tableCount_Month sendSummaryReport; do mkdir -p $directory;done COPY ./utils/* /opt/nsn/ngdb/monitoring/utils/ COPY ./scripts/* /opt/nsn/ngdb/monitoring/scripts/ COPY ./conf/* /opt/nsn/ngdb/monitoring/conf/ COPY ./postgresql-9.2-1004.jdbc4.jar /opt/nsn/ngdb/monitoring/utils/ RUN mkdir -p /opt/nsn/ngdb/monitoring/python-dependencies COPY ./html3-1.17.tar.gz /opt/nsn/ngdb/monitoring/python-dependencies COPY ./py4j-0.10.8.1.zip /opt/nsn/ngdb/monitoring/python-dependencies #RUN tar xf /opt/nsn/ngdb/monitoring/python-dependencies/html3-1.17.tar.gz #WORKDIR /html3-1.17/ #RUN python /html3-1.17/setup.py install RUN unzip /opt/nsn/ngdb/monitoring/python-dependencies/py4j-0.10.8.1.zip WORKDIR /py4j-0.10.8.1 RUN python /py4j-0.10.8.1/setup.py install
但是,如果我尝试使用"FROM"添加Java镜像和Python Alpine镜像,我只能得到一个东西放在我的容器中。
当我搜索时,我了解到了多阶段构建,但是当我像下面这样做时,它会抛出一个错误"Unknown flag: from"。
FROM csf-docker-delivered.repo.lab.pl.alcatel-lucent.com/java_base:17.6-1 WORKDIR /etc/alternatives FROM registry1-docker-io.repo.lab.pl.alcatel-lucent.com/python:3.5-alpine COPY --from=0 /etc/alternatives/* .
有人可以帮助我吗?
此外,
我正在尝试安装py4j作为一个外部模块,通过它我调用Java类。
我设置了WORKDIR,然后安装py4j模块进行顺利。
然后,如果我尝试将WORKDIR设置为其他模块,例如:html,并尝试
RUN python setup.py install
它会报错"找不到文件或目录"。
你能帮助我吗?