【发布时间】: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/bin 从 builder 复制到 alpine 然后 python, pytest ,celery 二进制文件不可用:
但如果我复制到另一个苗条(不是高山),一切正常。
当我一个接一个地复制二进制文件COPY --from=builder /usr/local/bin/celery /usr/local/bin/pytest /usr/local/bin/ 时,它们可以工作。
我错过了什么?是否可以复制整个 /usr/local/bin 文件夹?
【问题讨论】:
标签: python docker dockerfile