我试图以非 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/