docker - 使用 Dockerfile 安装自制软件
问题描述
我正在尝试使用 Dockerfile 安装自制软件,但我无法这样做。我有以下声明(基于https://docs.brew.sh/Homebrew-on-Linux上的替代安装步骤):
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)
RUN brew --version
最后一行抛出一个错误,提示“未找到 brew 命令”。
我能够使用 ENTRYPOINT 并指定一个 bash 文件来运行相同的确切步骤。
对此的任何帮助将不胜感激。
解决方案
eval
发生在第一个语句RUN
中,但不会持续到下一个语句。你想加入两者。
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
一般来说,您在 shell 实例中执行的任何环境更改都将在该实例终止后立即丢失。
推荐阅读
- django - 在 Django 中实现具有许多重叠字段的模型的最佳方法?
- c# - 如何向 CompareTo 方法添加另一个参数?
- playframework - 使用 H2 玩 Slick(2.6.x):找不到表
- r - 将函数应用于变量引用而不是 R 中的副本
- python - Altair 中的交互式绘图选择不会突出显示点
- firebase - Firebase 动态链接
.page.link 不启动应用程序 - firebase - 如何使用嵌套的 get() 调用创建 Firestore 安全规则?
- scala - Scala 等价于 Kotlins groupingBy
- python - Django Admin 静态文件不再工作:“您是否忘记注册或加载此标签?”
- node.js - 关于node/JS请求包请求结束的问题