【问题标题】:Dockerfile permissions not taking effectDockerfile 权限未生效
【发布时间】:2021-04-30 23:53:02
【问题描述】:

我的目标是让 /ssc/bin/put-and-submit.sh 成为可执行文件。我看了另一个问题,但认为它不适用。

FROM perl:5.20

ENV PERL_MM_USE_DEFAULT 1
RUN cpan install Net::SSL inc:latest
RUN mkdir /ssc
COPY /ssc /ssc
RUN chmod a+rx /ssc/bin/*.sh
ENTRYPOINT ["/ssc/bin/put-and-submit.sh"]
 stat /ssc/bin/put-and-submit.sh
  File: '/ssc/bin/put-and-submit.sh'
  Size: 1892            Blocks: 8          IO Block: 4096   regular file
Device: 7ah/122d        Inode: 293302      Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2021-01-27 04:14:43.000000000 +0000
Modify: 2021-01-27 04:14:43.000000000 +0000
Change: 2021-01-27 04:52:44.700000000 +0000
 Birth: -

我阅读了下面的问题,并认为情况是添加另一层时,它会覆盖前一层。就我而言,我从一个 Perl 映像开始,添加一些 CPAN 库,复制一些文件,然后要求它更改权限。

Dockerfile "RUN chmod" not taking effect

【问题讨论】:

    标签: docker


    【解决方案1】:

    我记得我也遇到过这个问题,它基本上只有在我替换默认的/usr/local/bin/docker-php-entrypoint 而不触发 ENTRYPOINT 命令(使用自定义入口点脚本)时才有效。 因此,在您的情况下,您必须找出 perl 正在使用的默认入口点文件(也必须在 /usr/local/bin 中)并可能替换它。 抱歉,这不是确切的“正确”解决方案,但在我的情况下,它运行良好且足够好。

    所以我为我的 PHP-FPM 容器做的事情如下(注意 ENTRYPOINT 被注释掉了):

    COPY docker-entrypoint.sh /usr/local/bin/docker-php-entrypoint
    RUN chmod +x /usr/local/bin/docker-php-entrypoint
    # ENTRYPOINT ["/usr/local/bin/docker-php-entrypoint"]
    

    以防万一,我的 sh 脚本如下所示(仅启动主管):

    #!/bin/sh
    set -e
    
    echo "Starting supervisor service"
    exec supervisord -c /etc/supervisor/supervisord.conf
    

    我希望这能让你找到朋友,干杯

    【讨论】:

    • 所以通过注释掉它实际工作的入口点?我想我认为这是必需的,但我是构建 docker 文件的新手。
    • 我将文件复制到 /tmp 对这些文件进行了 chmod,然后将 shell 脚本复制到我想要的位置。它有效,但我没有标记这是我的答案,因为我不喜欢我必须这样做。
    • 是的,所以基本上当您将其注释掉时,它仍然使用 ENTRYPOINT 但默认的 ENTRYPOINT(除非您触发 CMD 而不是 ENTRYPOINT)。但是,是的,我不完全知道为什么,但正如我所说,我只是用我的覆盖了默认入口点脚本,瞧 :) 但确实必须有一种方法
    • @谢谢雷。请在 Perl 容器上查看我的另一个问题。 :)
    • 另外,Docker 旁注,您可以只使用CMD(而不是ENTRYPOINT)在启动该服务时运行单个命令。我使用我的 ENTRYPOINT 脚本来运行多个服务(例如 Supervisor),而 CMD 只能运行一个(除非你使用 AND ;))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2021-12-20
    • 2021-10-10
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多