gpt4 book ai didi

docker - Dockerfile:如何获取Anaconda

转载 作者:行者123 更新时间:2023-12-02 20:40:43 24 4
gpt4 key购买 nike

我正在尝试使用AWS Batch设置Anaconda环境
这是我的Dockerfile中的片段

#: Download Anaconda
COPY Anaconda3-2019.10-Linux-x86_64.sh /setup/
RUN bash Anaconda3-2019.10-Linux-x86_64.sh -b -p /home/ec2-user/anaconda3
RUN echo 'export PATH=$PATH:/home/ec2-user/anaconda3/bin' >>~/.bashrc \
&& /bin/bash -c "source ~/.bashrc"
ENV PATH $PATH:/home/ec2-user/anaconda3/bin

# Create the environment:
COPY environment.yml .
RUN conda env create -f environment.yml

# Make RUN commands use the new environment:
SHELL ["conda", "run", "-n", "solver_env", "/bin/bash", "-c"]
当我访问容器并进行一些简单的测试时,出现错误
conda: command not found
即使我已经获取了我的bashrc文件的路径。
另外当尝试访问我的bashrc文件时,我得到
cat ~.bashrc: No such file or directory
cat: //.bashrc: No such file or directory
关于我可能在哪里出错/在哪里检查的任何想法?
编辑:
我的Dockerfile中激活venv并启动脚本的最后一行是:
ENTRYPOINT ["conda", "run", "-n", "solver_env", "/bin/bash", "/usr/local/bin/fetch_and_run.sh"]
构建镜像并将其部署到AWS ECR后,我将启动一个批处理作业,该作业实际上运行以下shell脚本:
#!/bin/bash
date
echo "Args: $@"
env
echo "script_path: $1"
echo "script_name: $2"
echo "path_prefix: $3"
echo "jobID: $AWS_BATCH_JOB_ID"
echo "jobQueue: $AWS_BATCH_JQ_NAME"
echo "computeEnvironment: $AWS_BATCH_CE_NAME"

mkdir /tmp/scripts/
aws s3 cp $1 /tmp/scripts/$2
python3 /tmp/scripts/${@:2}

最佳答案

您似乎忘记了命令中的斜线:

cat ~.bashrc: No such file or directory
它应该是:
cat ~/.bashrc
同样,您在Dockerfile中使用 .bashrc所做的一切都是毫无意义的。不仅如@Itamar在其回答中指出的那样, .bashrc仅在 interactive non-login shells中执行,而且每个 RUN命令都使用其自己的Bash进程,甚至使用单独的进程手动进行源化,这实际上意味着您启动了Bash,先得到 .bashrc,然后丢弃该Bash实例,并丢弃所有更改。
我已经对 SuperUser回答了类似的问题,该解决方案也适用于此。实际上,它更简单,因为您想将Docker镜像与Docker一起使用,而不是与Singularity一起使用,并且您希望以root用户身份运行。
COPY Anaconda3-2019.10-Linux-x86_64.sh /setup/Anaconda3-2019.10-Linux-x86_64.sh
COPY environment.yml /setup/environment.yml
RUN bash /setup/Anaconda3-2019.10-Linux-x86_64.sh -b -p /home/ec2-user/anaconda3 && \
rm /setup/Anaconda3-2019.10-Linux-x86_64.sh && \
ln -s /home/ec2-user/anaconda3/bin/conda /usr/bin/conda && \
conda env create -f /setup/environment.yml && \
rm /setup/environment.yml

CMD ["conda", "run", "-n", "solver_env", "/bin/bash"]
如果要在创建环境后运行更多的conda命令,则应将它们附加到现有的 RUN指令中,如下所示:
COPY Anaconda3-2019.10-Linux-x86_64.sh /setup/Anaconda3-2019.10-Linux-x86_64.sh
COPY environment.yml /setup/environment.yml
RUN bash /setup/Anaconda3-2019.10-Linux-x86_64.sh -b -p /home/ec2-user/anaconda3 && \
rm /setup/Anaconda3-2019.10-Linux-x86_64.sh && \
ln -s /home/ec2-user/anaconda3/bin/conda /usr/bin/conda && \
conda env create -f /setup/environment.yml && \
rm /setup/environment.yml && \
conda run -n solver_env python -V

CMD ["conda", "run", "-n", "solver_env", "/bin/bash"]

关于docker - Dockerfile:如何获取Anaconda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63996860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com