如何使用 start 在 alpine docker 容器中加载 shell 别名

2024-01-03

我编写了一个 DOCKER 文件,它使用私有改编的 alpine 图像作为图像,其中包含 nginx 服务器。 注意:alpine 使用 zsh,而不是 bash。

当我在容器中工作时,我喜欢有一些可用的 shell 别名,当它们丢失时,它会让我抓狂。因此,我将一个准备好的小文件复制到 /root/.profile,这有效。我可以查看该文件及其内容。但仅当我手动加载时,该文件才不会加载。 ~/.profile 在容器中,然后我就有了可用的别名。

我需要做什么,才能在启动容器并连接到它的 shell 后自动加载我的配置文件?

FROM myprivatealpineimage/base-image-php:7.4.13

ARG TIMEZONE

COPY ./docker/shared/bashrc /root/.profile

COPY ./docker/shared/ /tmp/scripts/
RUN chmod +x -R /tmp/scripts/ \
    && /tmp/scripts/set_timezone.sh ${TIMEZONE}\
    && apk update\
    && apk add --no-cache git

RUN install-ext pecl/apcu pecl/imagick pecl/zip pecl/redis
RUN apk add --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing gnu-libiconv
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php

WORKDIR /var/www

默认情况下,docker 启动一个非登录 shell。 要读取 .profile 文件,您需要一个登录 shelldocker exec -it <container> ash -l.

要每次读取 /etc/profile (或其他启动文件),您必须设置 ENV 变量。

Dockerfile 示例

ARG PHPVERSION=7.4
FROM php:$PHPVERSION-fpm-alpine

ARG PHPVERSION=7.4
ENV PHPVERSION_ENV=$PHPVERSION

# copy composer from official image
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

#set $ENV
ENV ENV=/etc/profile
#copy aliases definition
COPY /assets/alias.sh /etc/profile.d/alias.sh


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 start 在 alpine docker 容器中加载 shell 别名 的相关文章

随机推荐

  • 将Raspberry pi上用.Net Core C#录制的音频保存到Wav文件

    我发现很难找到一种方法将使用 OpenTk NetStandard 捕获的音频存储到 NetCore C 中正确的 WAV 文件中 我正在寻找一种在 Raspberry pi 上运行时有效的解决方案 因此 NAudio 或任何 Window
  • 假设我的访问者启用了 JavaScript 是否合理?

    我知道服务器端验证是绝对必要的 以防止恶意用户 或只是选择禁用 JavaScript 的用户 绕过客户端验证 但这主要是为了保护您的应用程序 而不是为那些运行禁用 JavaScript 的浏览器的人提供价值 假设访问者启用了 JavaScr
  • 何时何地使用 LINQ to Objects?

    在什么情况下我应该使用 LINQ to Objects 显然我可以在没有 LINQ 的情况下完成所有事情 那么在哪些操作中 LINQ 实际上可以帮助我编码shorter and or 更具可读性 这个问题由此引发 https stackov
  • ruby/rails:如何确定是否包含模块?

    在这里扩展我的问题 ruby rails 扩展或包含其他模块 https stackoverflow com questions 28575328 ruby rails extending or including other module
  • 创建示例 Qt 应用程序时无法打开包含文件:'stddef.h' 找不到此类文件或目录错误

    stddef h 文件位于已安装的诺基亚 Qt SDK 包含文件夹中 但在运行 Qt Simulator 时仍然出现编译错误 有任何想法吗 提前致谢 当我尝试使用 VS2008 版本的 Qt 为 Windows 进行编译时 出现了此错误消息
  • 谷歌云计算实例更新

    我有一个使用 google 计算实例内的 docker 映像部署的网站 我无法使用新映像更新谷歌云实例 使用新的 docker 映像更新计算实例并运行容器不会改变任何内容 以下是我更新谷歌计算实例所采取的步骤 docker build t
  • 使用异步调用时实体框架挂起

    我是使用异步的新手 这似乎让我不知道原因或问题是什么 当我尝试加载网页时 异步调用似乎挂起并且页面从未加载 我这里的实现是错误的吗 控制器 public ActionResult Index var model partyAddOnServ
  • 是否有在 JSP 上显示数据库更改的最佳实践

    我们需要在 JSP 页面上显示数据库更改 数据库中的信息由旧系统更改 因此我没有任何更改来获取数据更改事件 所以问题是保持数据库信息和 JSP 页面同步 我们的第一个方法是轮询数据库并将数据与应用程序 bean 同步 如果数据发生了变化 我
  • 设置 Nimbus 按钮的“背景”

    我正在开发一个使用 Nimbus 外观和感觉的应用程序 有一个表 一列包含按钮 使用Rob Camick 的表格按钮列 http tips4java wordpress com 2009 07 12 table button column
  • Mac 终端无法识别波形符

    我在运行 OS X Lion 的 Mac 上遇到了这种奇怪的情况 其中 波形符 不会进入我的用户目录 相反 当我输入 cd 时 我得到 bash cd No such file or directory 关于如何解决这个问题有什么建议吗 将
  • 远程 Neo4j Web 控制台

    我在 Cent OS 机器上使用 Neo4j 2 0 服务器 这需要从基于 Web 的远程控制台进行访问 在数据库中 服务器数据位置指向包含数据的文件夹 当我启动数据库并尝试从远程计算机访问它时 数据不显示 这可能是什么原因 我在 Wind
  • 为什么 FOR 循环中的 connect by 表达式只执行一次?

    我刚刚发现 PLSQL 与 Oracle 中的 SQL 的行为有点出乎我的意料 如果我在 SQLDeveloper 上运行此查询 我会得到 5 个结果 select level lvl from dual connect by level
  • 还有一个无法加载文件或程序集“EntityFramework”

    现在 我保证我已经用谷歌搜索过这个 堆栈溢出大约有 4 或 5 个解决方案来解决这个问题 尽管如此 它们似乎都不起作用 我正在将 EntityFramework 5 4 4 与 MVC 3 项目一起使用 过去这工作得很好 但自从我打开该项目
  • UITextField SecureEntryText 颜色更改

    我有一个子类UITextField我将文本颜色设置为白色 我将此子类用于电子邮件字段和密码字段 void drawRect CGRect rect super drawRect rect self clearButtonMode UITex
  • 基于 Javascript 的重定向:会损害 SEO 吗?

    我最近实施了一项修复 根据用户是否启用了 JavaScript 来创建单独的登陆页面 基本上它的工作方式是这样的 默认页面是没有 javascript 的 HTML 页面 网站的基本版本 登陆后 有一个脚本显示如果启用了 javascrip
  • 如何使用盆地跳跃写入参数范围?

    我很难在其中写入参数的界限basinhopping x0 a b c a 0 100 b 0 0 100 c 0 10 from scipy optimize import basinhopping minimizer kwargs met
  • 使用 clang 内置函数与标准函数的优点

    Clang 和 GCC 定义了一堆内置函数 我将在这里使用余数的示例 builtin sqrt x 然而 标准 C99 定义了以下内容math h sqrt x clang 为已经存在的方法定义内置函数有什么意义 我本以为常见的数学函数 例
  • 使用函子派生类函数的广义新类型

    我正在开发一个表示键 值映射的类 并且我有一个基本上类似于alterF https hackage haskell org package containers 0 5 11 0 docs Data Map Strict html v al
  • 小数或空白的正则表达式

    很抱歉这个可能很愚蠢的问题 但我正在尝试整理一个正则表达式 该表达式允许 小数点前有 1 或 2 个数字 小数点后有 0 6 个数字 但是 如果需要的话 我还需要允许该字段为空 有效示例 0 952321 1 20394 12 12 25
  • 如何使用 start 在 alpine docker 容器中加载 shell 别名

    我编写了一个 DOCKER 文件 它使用私有改编的 alpine 图像作为图像 其中包含 nginx 服务器 注意 alpine 使用 zsh 而不是 bash 当我在容器中工作时 我喜欢有一些可用的 shell 别名 当它们丢失时 它会让