laravel - 从 Laravel Sail Dockerfile 添加到 PATH
问题描述
我正在尝试将 sqlpackage 添加到 Laravel Sail Docker。虽然这通常并不难,但 Sail 有点难。
我的 Dockerfile 中有以下部分
RUN curl -L https://go.microsoft.com/fwlink/?linkid=2157202 -o /usr/local/bin/sqlpackage.zip
RUN mkdir /usr/local/bin/sqlpackage
RUN unzip /usr/local/bin/sqlpackage.zip -d /usr/local/bin/sqlpackage
RUN rm /usr/local/bin/sqlpackage.zip
RUN echo "export PATH=\"\$PATH:$HOME/usr/local/bin/sqlpackage\"" >> /home/sail/.bashrc
RUN chmod a+x /usr/local/bin/sqlpackage/sqlpackage
首先,我对我选择的安装路径不满意 ( /usr/local/bin
)。但这是我能想到的最好的了。欢迎任何建议。
我的第二个也是更重要的问题是我无法在安装时将运行 echo 添加到路径中。安装脚本无法到达主路径。真的很想解决这个问题。但我得到这个错误:
cannot create /home/sail/.bashrc: Directory nonexistent
然而它存在。所以这是安装用户的权利问题。欢迎任何建议。
解决方案
无法创建 /home/sail/.bashrc:目录不存在
看起来用户风帆不存在所以
前
RUN echo "export PATH=\"\$PATH:$HOME/usr/local/bin/sqlpackage\"" >> /home/sail/.bashrc
创建如下用户
# add user
RUN useradd sail
# and then
RUN echo "export PATH=\"\$PATH:/usr/local/bin/sqlpackage\"" >> /home/sail/.bashrc
$HOME
也不是必需的,因为在构建期间它
变成export PATH="$PATH:/root/usr/local/bin/sqlpackage"
在终端上尝试以下(例如我是 root 用户):
$ echo "export PATH=\"\$PATH:$HOME/usr/local/bin/sqlpackage\""
export PATH="$PATH:/root/usr/local/bin/sqlpackage"
在构建过程中的类似方式将使用当前用户,即 root。
首先,我对我选择的安装路径 (/usr/local/bin) 不满意。但这是我能想到的最好的了。欢迎任何建议。
/usr/local/bin
是您添加到系统中的所有附加可执行文件的位置,以供所有用户用作公共系统文件。本地安装的软件必须放在/usr/local
.
# Used for non-system libraries and executables
/usr/local/bin
usr
代表用户系统资源。这是存储系统程序和库的位置。
local
表示标准发行版中未附带的资源,并且通常在每个站点的基础上进行编译和维护。
bin
表示二进制编译的可执行文件。
所以记住这三个
/usr/bin
: 用户命令。/usr/sbin
:系统管理命令。/usr/local/bin
: 本地定制软件。
/opt
是一个用于安装非捆绑包的目录,这些包不是操作系统发行版的一部分,而是由独立来源提供的。我通常将所有 3rd 方包放入/opt
推荐阅读
- swift - 对许多初始化变量 Swift 进行排序
- transactionscope - 在我的 Rebus 处理程序中,我正在执行数据库操作,然后将命令发送到其他三个处理程序
- angular - 无法从 Angular 8 应用程序访问 webapi
- java - 无意义的“服务已泄露 ServiceConnection”消息
- python - 如何将同一行附加到列的每个元素,创建二维数组?
- laravel - Laravel Spatie 角色获取当前用户角色
- sql - 如何将多个输入变量从 Excel 传递到 SQL?需要的建议
- ruby-on-rails - 保存前从活动存储附件中读取
- facebook - 脚本编辑器未在 Spark AR Studio 中打开
- selenium-webdriver - 无法在字段集中找到输入字段