php - 如何在官方 docker php 镜像上以非 root 用户身份运行 apt php

标签 php docker ubuntu

我试图以非 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 镜像上执行此操作吗?

最佳答案

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?

关于php - 如何在官方 docker php 镜像上以非 root 用户身份运行 apt php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68641407/

相关文章:

php - 警告:mysqli::query():无法获取 mysqli - PHP7.1 和 MySQL5.7

php - 如果数据库中的表不断变化,我应该如何更新

amazon-ec2 - ecs docker容器中celery worker的奇怪行为

linux - 任何包的 Build 和 Devel 文件夹的内容

php - 非二部图中最大权重完美匹配的良好近似算法?

javascript - 提交前ajax表单验证如何?

Windows 10 Enterprise 中的 docker 桌面显示错误

bash - Mac OS Xargs命令的行为异常

c# - Monodevelop 和 mongodb 驱动程序在 Ubuntu 上的开发服务器中抛出异常