在docker构建过程中,我尝试使用以下dockerfile安装arduino-cli (一个自制软件包)。
docker镜像似乎构建正确,但当在我的web服务器上运行时,我在日志中得到以下输出。
请注意,这个问题似乎与Installing homebrew packages during Docker build类似,但公认的答案似乎对我没有帮助。
这是否表明arduino-cli没有正确安装,或者只是路径没有正确链接?
FileNotFoundError: [Errno 2] No such file or directory: 'arduino-cli': 'arduino-cli'FROM python:3.6
RUN apt-get update && apt-get install -y git curl binutils clang make
RUN git clone https://github.com/Homebrew/brew ~/.linuxbrew/Homebrew \
&& mkdir ~/.linuxbrew/bin \
&& ln -s ../Homebrew/bin/brew ~/.linuxbrew/bin \
&& eval $(~/.linuxbrew/bin/brew shellenv) \
&& brew --version \
&& brew install arduino-cli \
&& arduino-cli version
ENV PATH=~/.linuxbrew/bin:~/.linuxbrew/sbin:$PATH
RUN mkdir -p /opt/services/djangoapp/src
WORKDIR /opt/services/djangoapp/src
RUN pip install gunicorn django psycopg2-binary whitenoise
COPY . /opt/services/djangoapp/src
EXPOSE 8000
COPY init.sh /usr/local/bin/
RUN chmod u+x /usr/local/bin/init.sh
ENTRYPOINT ["init.sh"]发布于 2021-02-04 20:51:39
这很可能是$PATH的问题。上面提到的答案不适用于您的原因是,您正在尝试在$PATH尚未更改的情况下使用arduino-cli。这应该会让它工作:
RUN git clone https://github.com/Homebrew/brew ~/.linuxbrew/Homebrew \
&& mkdir ~/.linuxbrew/bin \
&& ln -s ../Homebrew/bin/brew ~/.linuxbrew/bin \
&& eval $(~/.linuxbrew/bin/brew shellenv) \
&& brew --version \
&& brew install arduino-cli
# first change PATH
ENV PATH=~/.linuxbrew/bin:~/.linuxbrew/sbin:$PATH
# then run
RUN arduino-cli version
# not vice-versa发布于 2021-02-04 21:34:57
这听起来可能很疯狂,但我建议您使用多级dockerfile。这将消除容器上的缺陷,并减少安全访问点。
FROM homebrew/brew:latest AS brew
RUN brew update
RUN brew install arduino-cli
# RUN brew list ardunio-cli
FROM python:3.6
COPY --from=brew /usr/local/Cellar /user/local
ENV PATH=~/.linuxbrew/bin:~/.linuxbrew/sbin:$PATH
RUN mkdir -p /opt/services/djangoapp/src
WORKDIR /opt/services/djangoapp/src
RUN pip install gunicorn django psycopg2-binary whitenoise
COPY . /opt/services/djangoapp/src
EXPOSE 8000
COPY init.sh /usr/local/bin/
RUN chmod u+x /usr/local/bin/init.sh
ENTRYPOINT ["init.sh"]要使brew文件正常工作,可能还需要进行一些额外的象征性操作,但您的终端容器会更轻巧,使用起来也更安全。
https://stackoverflow.com/questions/66040170
复制相似问题