从 Laravel Sail Dockerfile 添加到 PATH
Add to PATH from Laravel Sail Dockerfile
我正在尝试将 sqlpackage 添加到 Laravel Sail Docker。虽然这通常并不难,但 Sail 让它变得有点困难。
我的Docker文件
中有以下部分
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
)。但这是我能想到的最好的。欢迎提出任何建议。
我的第二个也是更重要的问题是我无法在安装时将回显添加到路径中 运行。安装脚本无法到达主路径。真的很想要一个解决方案。但是我得到这个错误:
cannot create /home/sail/.bashrc: Directory nonexistent
但是它存在。所以这是安装用户的权利问题。欢迎提出任何建议。
cannot create /home/sail/.bashrc: Directory nonexistent
看来用户sail不存在所以
之前
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。
First off, I'm not happy with the install path I've chosen
(/usr/local/bin). But it's the best I could think of. Any suggestions
are welcome.
/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
是用于安装非捆绑包的目录,这些包不是操作系统分发的一部分,但由独立来源提供。我通常将所有第 3 方包放在 /opt
我正在尝试将 sqlpackage 添加到 Laravel Sail Docker。虽然这通常并不难,但 Sail 让它变得有点困难。
我的Docker文件
中有以下部分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
)。但这是我能想到的最好的。欢迎提出任何建议。
我的第二个也是更重要的问题是我无法在安装时将回显添加到路径中 运行。安装脚本无法到达主路径。真的很想要一个解决方案。但是我得到这个错误:
cannot create /home/sail/.bashrc: Directory nonexistent
但是它存在。所以这是安装用户的权利问题。欢迎提出任何建议。
cannot create /home/sail/.bashrc: Directory nonexistent
看来用户sail不存在所以
之前
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。
First off, I'm not happy with the install path I've chosen (/usr/local/bin). But it's the best I could think of. Any suggestions are welcome.
/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
是用于安装非捆绑包的目录,这些包不是操作系统分发的一部分,但由独立来源提供。我通常将所有第 3 方包放在 /opt