【问题标题】:How to run apt php as non root user on official docker php image如何在官方 docker php 映像上以非 root 用户身份运行 apt php
【发布时间】:2021-10-08 23:26:24
【问题描述】:

我试图以非 root 身份运行我的 php-fm ubuntu:20.04 但我不能。

Dockerfile

FROM ubuntu:20.04
ARG DEBIAN_FRONTEND noninteractive
ARG TZ=Europe/Paris

RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone \
 && apt-get update \
 && apt-get -y install php-apcu \
    php-bz2 \
    php-cas \
    php-cli \
    php-curl \
    php-fpm \
    php-gd \
    php-imap \
    php-intl \
    php-json \
    php-ldap \
    php-mbstring \
    php-memcache \
    php-mysql \
    php-pear \
    php-pspell \
    php-tidy \
    php-xml \
    php-xmlrpc \
    php-xsl \
    php-zip \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

COPY www.conf /etc/php/7.4/fpm/pool.d/www.conf

CMD /etc/init.d/php7.4-fpm start \
&& bash

您知道如何在 ubuntu 或官方 docker php 映像上执行此操作吗?

【问题讨论】:

    标签: php docker ubuntu


    【解决方案1】:

    在 SO 上已经有很多类似的问题了,这可能会有所帮助:

    Switching users inside Docker image to a non-root user

    USER 指令的 Dockerfile 参考也非常方便,应该可以帮助您:

    https://docs.docker.com/engine/reference/builder/#user

    编辑:

    从您的回复和进一步阅读 Dockerfile 来看,这似乎不是您要解决的根本问题

    值得注意的是,php-fpm 是一个守护进程,如果它消失到后台,它不会保持容器打开,我想你可能已经尝试通过添加 && bash 来缓解这种情况,但如果 bash 没有接收到,它将退出输入。

    使用supervisord 之类的东西非常值得,它允许您定义从容器开头开始的进程。它还可以让您在容器中启动一个可以与 fpm 很好地通信的 Web 服务器: How can I start php-fpm in a Docker container by default?

    【讨论】:

    • 是的,但是我的用户无法使用 CMD 启动守护程序 php-fpm。我不知道我可以更改哪个权限。而且用官方的php docker镜像很难安装扩展。
    • 解释一下你做了什么,你看到了什么行为会很有用(docker run 输出,什么都没有,等等)。您是否遇到过默认 php 镜像提供的 docker-php-ext-install 实用程序?他们也许可以帮助安装 php 扩展:hub.docker.com/_/php 我在原始答案中添加了一个关于使用主管的小注释,也许它会帮助你保持正在运行的进程打开,恐怕我不得不猜测你的问题因为目前的行为还不清楚
    猜你喜欢
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 2019-06-24
    相关资源
    最近更新 更多