FROM python:3.10-slim as build
RUN apt-get update
RUN apt-get install -y --no-install-recommends \
build-essential gcc
WORKDIR /usr/app
RUN python -m -venv /usr/app/venv
ENV PATH="/usr/app/venv/bin:$PATH"
[HERE YOU COPY YOUR CONFIGURATION FILES WITH CREDENTIALS]
COPY requirements.txt
RUN pip install -r requirements
FROM python:3.10-slim
WORKDIR /usr/app
COPY --from=build /usr/app/venv ./venv
[HERE YOU COPY YOUR SOURCE CODE INTO YOUR CURRENT WORKDIR]
ENV PATH="/usr/app/venv/bin:$PATH"
ENTRYPOINT ["python", "whatever.py"]
2条答案
按热度按时间iklwldmw1#
我理解您希望在构建时提供这些凭据,然后在构建后将其丢弃。
那么,使用
pip
处理此问题的最安全方法是使用多阶段构建过程。首先,您需要声明一个初始的
build-image
,其中包含文件配置和下载/编译所需包所需的任何依赖项;不要担心恢复这些文件的可能性,因为您只会在构建过程中使用它们。然后定义不带构建依赖项的最终映像,并仅复制要从项目运行的源代码和构建映像中的依赖项。生成的映像将没有配置文件,并且不可能恢复它们,因为它们从未存在过。
字符串
blpfk2vs2#
此外,还有一个Docker BuildKit功能,可以将带有secret的文件作为绑定挂载传递到Dockerfile,而无需将其存储在层中。
这样的绑定挂载可以在
RUN
指令中定义如下字符串
在
docker build
上,源值可以这样传递型