我为android找到了一个dockerfile
FROM openjdk:8
RUN apt-get update && \
apt-get install -y openjdk-8-jdk wget unzip && \
rm -rf /var/lib/apt/lists/*
ENV ANDROID_HOME /opt/android-sdk-linux
RUN mkdir -p ${ANDROID_HOME} && \
cd ${ANDROID_HOME} && \
wget -q https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -O android_tools.zip && \
unzip android_tools.zip && \
rm android_tools.zip
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools
RUN yes | sdkmanager --licenses我连接到码头图像。Apk大楼运转良好。
但我的项目需要不同的依赖项。另一个dockerfile内容如下:
FROM python:3.7-alpine
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt它适用于pyhton应用程序。
但是,我如何组合这些文件呢?
以下设置不起作用:
FROM openjdk:8
RUN apt-get update && \
apt-get install -y openjdk-8-jdk wget unzip && \
rm -rf /var/lib/apt/lists/*
ENV ANDROID_HOME /opt/android-sdk-linux
RUN mkdir -p ${ANDROID_HOME} && \
cd ${ANDROID_HOME} && \
wget -q https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -O android_tools.zip && \
unzip android_tools.zip && \
rm android_tools.zip
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools
RUN yes | sdkmanager --licenses
FROM python:3.7-alpine
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt我连接码头图像。Apk生成失败。错误在这里:
错误:没有设置JAVA_HOME,在您的路径中找不到'java‘命令。
发布于 2019-06-02 17:25:30
当使用docker多阶段构建时,每个阶段都从FROM开始,并且不积累以前阶段的文件(以及两个环境变量),您必须手动复制所需的文件。例如,在下一个Dockerfile中,构建的映像将与openjdk:8相同,不会有应用程序或python。
FROM python:3.7-alpine
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
FROM openjdk:8要复制上一阶段的文件,需要提到要复制的文件和要复制的阶段:
FROM python:3.7-alpine AS python
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
FROM openjdk:8
WORKDIR /app
COPY --from=python /app .如果您只需要编译过程,而不是最终的映像,则多阶段构建通常使用。它允许您使用映像和构建中需要的依赖项,然后将它们抛在后面,只使用运行时所需的最终产品和依赖项。
对于您的Dockerfile,如果您同时需要python和java多阶段构建不会有帮助,您应该查找包含这两种内容的基本映像,或者从一个映像(比如java)开始,然后手动安装另一个映像(python)。
https://stackoverflow.com/questions/56417008
复制相似问题