首页 > 解决方案 > 从 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

然而它存在。所以这是安装用户的权利问题。欢迎任何建议。

标签: laraveldockerdockerfilelaravel-sail

解决方案


无法创建 /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


推荐阅读