Php 在没有服务的情况下是否可以启动docker容器?

Php 在没有服务的情况下是否可以启动docker容器?,php,docker,containers,Php,Docker,Containers,我有一个php容器,每次启动容器时都需要启动php fpm。现在,由于php fpm配置文件中的配置错误,fpm无法启动,所以容器无法启动。我是否可以在没有php fpm的情况下启动容器,以便修复配置文件? 容器错误如下所示: [04-Sep-2020 13:47:30] ERROR: [/usr/local/etc/php-fpm.conf:7] value is NULL for a ZEND_INI_PARSER_ENTRY [04-Sep-2020 13:47:30] ERROR: f

我有一个php容器,每次启动容器时都需要启动php fpm。现在,由于php fpm配置文件中的配置错误,fpm无法启动,所以容器无法启动。我是否可以在没有php fpm的情况下启动容器,以便修复配置文件? 容器错误如下所示:

[04-Sep-2020 13:47:30] ERROR: [/usr/local/etc/php-fpm.conf:7] value is NULL for a ZEND_INI_PARSER_ENTRY

[04-Sep-2020 13:47:30] ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'

[04-Sep-2020 13:47:30] ERROR: FPM initialization failed

有两种方法可以修复图像。因为我找不到image
digitalocean/php
,所以在我的示例中我将使用
php:7.4-fpm

第一种方式: 从容器中复制文件并使用它构建您自己的映像:

创建Dockerfile:

FROM php:7.4-fpm

COPY ./php-fpm.conf /usr/local/etc/php-fpm.conf
然后:

然后根据固定图像运行容器


第二种方式:

使用损坏的映像运行shell,修复文件并使用shell容器创建新映像

docker run -it --name php php:7.4-fpm bash
# Edit /usr/local/etc/php-fpm.conf
# If you install any additional tools remember to remove them afterwards
# and clean any cache's
# Once you're done exit the shell, thus stopping the container
docker commit -a "you" -m "/usr/local/etc/php-fpm.conf fix" php myphp-fpm
docker stop php
docker rm -v php
docker run --detach --name php myphp-fpm
同样,您可以根据固定图像运行容器


当然,您可以在开始时以任何方式运行原始图像来运行新图像


我建议使用第一种方法,因为在容器外部编辑文件更容易。

我通常会使用复制到容器中的正确文件重新创建容器。这意味着,当我需要复制或删除容器时,我使用的过程可以正常工作,而无需手动更改。谢谢您的评论,但是除了重新创建容器之外,没有其他方法吗?上的一些信息可能有助于访问容器中的外壳。您现在如何启动容器?图像是基于什么的?您可以在启动时重写主容器命令(例如,获取交互式调试shell)。将主容器命令设置为
bash
sh
,而不是图像中的
php fpm
默认值。你现在怎么启动集装箱?
docker run -it --name php php:7.4-fpm bash
# Edit /usr/local/etc/php-fpm.conf
# If you install any additional tools remember to remove them afterwards
# and clean any cache's
# Once you're done exit the shell, thus stopping the container
docker commit -a "you" -m "/usr/local/etc/php-fpm.conf fix" php myphp-fpm
docker stop php
docker rm -v php
docker run --detach --name php myphp-fpm