我正在尝试构建一个 Docker 映像来帮助从 Google Protocol Buffers 规范文件自动生成代码。
我当前的 Dockerfile:
FROM alpine:latest
WORKDIR /protobuf
VOLUME /dst
RUN apk update \
&& apk add --no-cache bash \
&& apk add --virtual .build-deps curl unzip \
&& curl -k -L https://github.com/google/protobuf/releases/download/v3.6.0/protoc-3.6.0-linux-x86_64.zip -o protoc.zip \
&& unzip protoc.zip \
&& rm protoc.zip \
&& chmod +x ./bin/protoc \
&& apk --purge del .build-deps
COPY . spec/
RUN chmod +x spec/entrypoint.sh
ENV SRC_DIR=/usr/src/protoc/spec DST_DIR=/dst PATH=/protobuf/bin:${PATH}
ENTRYPOINT [ "/bin/bash" ]
当我在启用 TTY 的情况下构建并运行它时,它运行没有问题。然而,容器内的外壳不知何故无法看到/protobuf/bin/protoc
二进制文件,即使它应该能够:
bash-4.4# echo $PATH
/protobuf/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
bash-4.4# ls -l /protobuf/bin
total 4444
-rwxr-xr-x 1 root root 4548312 Jun 15 23:40 protoc
bash-4.4# protoc
bash: /protobuf/bin/protoc: No such file or directory
这里可能是什么问题?