Php 在没有服务的情况下是否可以启动docker容器?
我有一个php容器,每次启动容器时都需要启动php fpm。现在,由于php fpm配置文件中的配置错误,fpm无法启动,所以容器无法启动。我是否可以在没有php fpm的情况下启动容器,以便修复配置文件? 容器错误如下所示: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
[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