我需要在容器启动之前处理来自 k8s Statefulset 的 ENV
Dockerfile
。:
RUN echo CREDENTIALS: $CREDENTIALS
ARG user="${CREDENTIALS%/*}"
ARG password="${CREDENTIALS#*/}"
ENV USER $user
ENV PASSWORD $password
Statefulset
环境:
env:
- name: CREDENTIALS
valueFrom:
secretKeyRef:
name: app-secret
key: CREDENTIALS
当我使用 运行时d run -dt -e CREDENTIALS="user/P@$$w0rd" myimage:latest
,PASSWORD
丢失了。
您误解了 Dockerfile ARG 和 ENV 的工作原理。这些值在构建时都嵌入到容器映像中。您需要修改容器的入口点以拆分
$CREDENTIALS
为单独的 USER 和 PASSWORD 变量,例如使用一个小脚本: