我需要下载一个oracle客户端,将其放在一个文件夹中,并将该文件夹的路径设置为环境变量。到目前为止我到达这里:
ENV ORACLE_DRIVER_PATH=test_value
RUN wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip -P /opt/oracle/
RUN unzip /opt/oracle/instantclient*.zip -d /opt/oracle/ && rm /opt/oracle/instantclient*.zip
RUN echo temp=$(find /opt/oracle -name "instantclient*")
ENV ORACLE_DRIVER_PATH=$temp
但这样变量 ORACLE_DRIVER_PATH 结果为空:如果我运行,sudo docker exec <container_id> env
我会看到ORACLE_DRIVER_PATH=
.
我缺少什么?我希望看到/opt/oracle/instantclient_21_13
。
该值需要是动态的,因为它可能会发生变化。
您无法设置
ENV
命令的结果,并且RUN export
不会持续超出当前RUN
指令。一般来说,你想要做的事情的模式是困难的。由于您预计映像中只有一个版本的库,因此您可以做的一件事就是使用
RUN
指令将其重命名为固定路径。然后您可以在 DockerfileENV
指令中使用该固定路径。看起来您正在下载的 URL 会生成一个可变版本,因此您的图像可能具有不同的库和不同的行为,具体取决于其构建时间。如果有一个提供固定版本的下载 URL,您可以将版本号指定为 build-time
ARG
,现在您将知道每个需要它的地方都有一个固定路径。