我是Docker的新手,但我不完全确定为什么会这样。
我尝试编写没有提供给--user
的pip3
参数的dockerfile来安装我的requirements.txt
文件,但是由于某些原因,将设置输出从${INSTALL}
目录复制到${APP}
目录对我不起作用。
如何编写此代码,这样我就不必依赖--user
提供的pip3
参数了?
现在使用所说的参数是可行的,但这只是让我烦恼的是,我无法做到这一点。
我使用以下命令构建镜像:
docker image build --no-cache -t apptest .
Dockerfile FROM python:3.8-alpine as base
ENV APP="/app"
ENV INSTALL="/install"
ENV LOC="/root/.local"
ENV LOCBIN="${LOC}/bin"
ENV PATH $PATH:${LOC}:${LOCBIN}
FROM base as builder
WORKDIR ${INSTALL}
COPY ./requirements.txt requirements.txt
#install all dependencies
RUN apk add --no-cache curl python3 pkgconfig python3-dev openssl-dev libffi-dev musl-dev make gcc
RUN pip3 install --user --no-cache-dir -r requirements.txt
FROM base
COPY --from=builder ${LOC} ${LOC}
COPY --from=builder ${LOCBIN} ${LOCBIN}
COPY ./src/ ${APP}
COPY ./src/Cogs/ ${APP}/Cogs
COPY ./src/Documentation/ ${APP}/Documentation
COPY ./src/Models/ ${APP}/Models
COPY ./src/OneNight/ ${APP}/OneNight
WORKDIR ${APP}
#start the service
ENTRYPOINT [ "python3", "service.py" ]
最佳答案
--user
或virtualenv,或复制许多不同的目录。参见https://pythonspeed.com/articles/multi-stage-docker-python/切换到基于Debian的基础镜像(
python:3.8-slim-buster
)很有可能使您无需编译器即可安装所有内容。参见https://pythonspeed.com/articles/alpine-docker-python/
关于python - 多级dockerfile:如何在不使用--user pip3参数的情况下进行安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64111201/