php - 无论如何要在没有服务的情况下启动 docker 容器吗?
问题描述
我有一个 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
然后:
docker run --detach --name php php:7.4-fpm tail -f /dev/null
docker cp php:/usr/local/etc/php-fpm.conf php-fpm.conf
docker stop php
docker rm -v php
# Edit php-fpm.conf
docker build --tag myphp-fm .
docker run --detach --name php myphp-fpm
并且您可以根据固定图像运行容器。
第二种方式:
使用损坏的映像运行 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
然后你再次获得基于固定图像的运行容器。
当然,您可以在开始时以任何方式运行原始图像来运行新图像。
我推荐第一种方式,因为它更容易在容器外编辑文件。
推荐阅读
- sql - 在 Order by | 中使用 Case 表达式时的不同之处 SQL
- android - 从日期和时间 Android 获取时间戳
- html - 为什么图片加载不出来?
- localization - 如何使用反应路由器和 i18 直接从 url 配置本地化作为语言参数?
- html - 页面右侧的空间
- python - 为什么 pop 方法不打破这个例子中的 while 循环?
- pandas - 应用 DateFormatter 和 WeekdayLocator 后,时间序列中的条形图超出最后一个日期
- python - 将函数应用于 DataFrame 中的每个单元格并包含来自特定列的值
- python - UpdateRemotePlugins 不做任何事情 | nvim python 插件
- google-sheets - 在 Google 表格中使用 IMPORTHTML 导入数百个表格是否有更有效的方法?