【问题标题】:Dockerfile: Copy dependencies builded in slim base image to alpineDockerfile:将苗条基础映像中构建的依赖项复制到 alpine
【发布时间】:2021-10-05 07:50:20
【问题描述】:

我有一个 Dockerfile:

FROM python:3.8.7-slim AS builder

ENV POETRY_VIRTUALENVS_CREATE=false

WORKDIR /code

RUN apt-get update
RUN apt-get install -y --no-install-recommends libsasl2-dev libldap2-dev
RUN apt-get install -y --no-install-recommends gcc
RUN apt-get install -y --no-install-recommends graphviz-dev
COPY poetry.lock pyproject.toml ./
RUN pip install --upgrade pip && pip install --no-cache-dir poetry
RUN poetry install


FROM python:3.8.7-alpine3.13

# to make pytest (celery etc) be available and executable one must copy their executables directly
COPY --from=builder /usr/local/bin/celery /usr/local/bin/pytest /usr/local/bin/

# IF OVERWRITE python IN /usr/local/bin ANYTHING DOES NOT WORK
#COPY --from=builder /usr/local/bin /usr/local/bin

COPY --from=builder /usr/local/lib/python3.8/site-packages /usr/local/lib/python3.8/site-packages

WORKDIR /code
COPY pythonapline .

CMD ["pytest"]

回购:https://github.com/albertalexandrov/slim-to-alpine/

如您所见,我正在尝试在 python:3.8.7-slim 基础映像中构建依赖项,然后将所有构建的依赖项复制到 python:3.8.7-alpine3.13。

构建并运行:

docker build -t slim2alpine .
docker run slim2alpine

我发现如果我将整个文件夹 /usr/local/binbuilder 复制到 alpine 然后 python, pytest celery 二进制文件不可用:

但如果我复制到另一个苗条(不是高山),一切正常。

当我一个接一个地复制二进制文件COPY --from=builder /usr/local/bin/celery /usr/local/bin/pytest /usr/local/bin/ 时,它们可以工作。

我错过了什么?是否可以复制整个 /usr/local/bin 文件夹?

【问题讨论】:

    标签: python docker dockerfile


    【解决方案1】:

    Alpine 运行 musl libc,我不认为从 Debian(苗条的基础映像)批发复制二进制文件将是二进制兼容的。它们将需要不同的 libc,并且可能无法正确链接。

    【讨论】:

      猜你喜欢
      • 2021-08-26
      • 2021-12-11
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 2018-08-05
      • 2021-04-23
      相关资源
      最近更新 更多