python - 不使用 BuildKit 时 Docker 'Permission denied'
问题描述
问题陈述
我有以下内容Dockerfile
:
ARG BASE_IMAGE=python:3.9-slim
FROM $BASE_IMAGE as base
RUN apt update && \
apt install --yes --no-install-recommends \
build-essential \
libsasl2-dev && \
apt clean
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
RUN pip install --upgrade --no-cache-dir pip && \
pip install --no-cache-dir dbt-spark[PyHive]==0.20.1
FROM $BASE_IMAGE as runtime
RUN apt update && \
apt install --yes --no-install-recommends \
ca-certificates \
git \
tini && \
apt clean
ENV PATH="/opt/venv/bin:$PATH"
COPY --from=base /opt/venv /opt/venv
RUN useradd dbt --user-group --home-dir /home/dbt
USER dbt
WORKDIR /home/dbt
COPY --chown=dbt:dbt . .
ENV DBT_PROFILES_DIR=/home/dbt
RUN dbt deps
ENTRYPOINT [ "tini", "--", "dbt" ]
当我使用 BuildKit ( DOCKER_BUILDKIT=1
) 时,图像成功构建。
当我不使用 BuildKit 时,我收到以下错误:
[Errno 13] Permission denied: 'logs'
The command '/bin/sh -c dbt deps' returned a non-zero code: 2
我试图理解为什么。
额外细节
我曾经strace
跟踪导致错误的系统调用,结果如下:
stat("logs", 0x7ffcdbcd46b0) = -1 ENOENT (No such file or directory)
mkdir("logs", 0777) = -1 EACCES (Permission denied)
解决方案
推荐阅读
- batch-file - 使用 .bat 命令对 .txt 文件的值求和
- javascript - 可以解码这个字符串吗?
- json - 无法使用 JSON.net 反序列化 Xamarin 表单中的 JSON 对象
- php - 使用 php 将数据插入 MS SQL Server 时出现错误
- java - isLetter 方法在 Java 中不起作用
- java - 如何将 JSON 分配给 Java 中的变量
- java - Java 餐厅 EPOS 系统 - 固定电话集成
- c++ - gcc -fsanitize 多维数组
- python - 训练 Keras 深度学习模型时出现异常的损失进展
- powershell - 表单中的空白条目 - 不接受,继续 - powershell