微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

构建时无法在 docker 中获得 asdf-direnv 工作

如何解决构建时无法在 docker 中获得 asdf-direnv 工作

我正在尝试在 docker 中使用 asdf-direnv。遵循 asdf-direnvREADME,我制作了这个 Dockerfile

FROM nvidia/cuda:10.2-devel-ubuntu18.04

RUN chsh -s /bin/bash
SHELL ["/bin/bash","-ic","-l"]

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update
    # Python
RUN apt-get install -y make build-essential libssl-dev zlib1g-dev \
    libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
    libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
    # Utils
RUN apt-get install -y git
RUN apt-get clean

workdir /venv

RUN git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.1
RUN echo ". $HOME/.asdf/asdf.sh" >> ~/.bashrc
RUN echo ". $HOME/.asdf/completions/asdf.bash" >> ~/.bashrc

RUN asdf plugin add direnv
RUN asdf install direnv 2.28.0
RUN asdf local direnv 2.28.0
RUN echo "eval \"\$(asdf exec direnv hook bash)\"" >> ~/.bashrc
RUN echo "direnv() { asdf exec direnv \"\$@\"; }" >> ~/.bashrc

RUN mkdir -p ~/.config/direnv/
RUN echo "source \"\$(asdf direnv hook asdf)\"" >> ~/.config/direnv/direnvrc
RUN echo "export DIRENV_LOG_FORMAT=" >> ~/.config/direnv/direnvrc

RUN asdf plugin add python
RUN asdf install python 3.8.7
RUN asdf local python 3.8.7

RUN echo "use asdf" >> .envrc
RUN echo "layout python" >> .envrc
RUN direnv allow
RUN echo $(which python)

CMD ["/bin/bash"]

问题是,RUN echo $(which python) 行在我运行时可以正常工作,但在构建映像时却无法正常工作。我得到了

  • /root/.asdf/shims/python 构建时 docker build . -t venv-gpu -f docker-gpu/Dockerfile
  • /venv/.direnv/python-3.8.7/bin/pythondocker run --gpus all -it venv-gpu

我该如何解决这个问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。