php - 如何从 docker-compose 文件启用 php 模块?
问题描述
我正在尝试加载 PHP 日历模块,但我遇到了一些问题。我尝试了 2 种方法,但似乎都不起作用。
第一个是在外部 Dockerfile-alternate 中添加模块,但 Dockerfile 似乎根本没有加载。
第二个是使用自定义 php.ini 文件加载它(这个文件实际上正在加载,因为如果我不加载它,SESSION 将不起作用。)在我的php.ini
文件中,我也添加extension=calendar.so
了。
码头工人-compose.yml
services:
php:
depends_on:
- mysql
build:
context: ./php
dockerfile: Dockerfile-alternate
args:
PHP_VERSION: ${PHP_VERSION}
ports:
- "8000:80"
volumes:
- ${PROJECT_ROOT}/:/var/www/html/
- ./config/php.ini:/usr/local/etc/php/conf.d/php.ini
container_name: php
/php/Dockerfile-alternate
FROM php:7.2.8-apache
COPY . var/www/html
COPY ./000-apache.conf /etc/apache2/others/000-default.conf
RUN chown -R www-data:www-data var/www/html \
&& a2enmod rewrite
# Comment
RUN echo 'testing' //I do not see this comment.
RUN docker-php-ext-install mysqli pdo pdo_mysql calendar
任何帮助将非常感激。
更新 得到这些错误。
php | PHP Warning: Module 'pdo_mysql' already loaded in Unknown on line 0
php | PHP Warning: PHP Startup: Unable to load dynamic library 'php_pdo_mysql.so' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/php_pdo_mysql.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/php_pdo_mysql.so: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/php_pdo_mysql.so.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/php_pdo_mysql.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
php | PHP Warning: PHP Startup: Unable to load dynamic library 'calendar.so' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/calendar.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/calendar.so: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/calendar.so.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/calendar.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
解决方案
搞定了,如果有人遇到这个问题,这可能会有所帮助
我跑了docker-compose build --no-cache
,这让我对正在发生的事情有了更多的了解。我认为真正的问题是它只是从缓存中构建的。
推荐阅读
- javascript - ServiceNow - 在中间服务器中更改文件名
- javascript - “错误:超时 - 在 jest.setTimeout 指定的 5000 毫秒超时内未调用异步回调。” 如何使我的测试用例独立?
- azure-iot-edge - IoT Edge 部署到 Kubernetes 并使用 Azure Arc 进行管理
- stripe-payments - 空优惠券 ID -STRIPE 的值
- git - 如何将分离的头部 git 项目签入新的远程 repp?
- node.js - 我尝试将包发布到 npm,但每次都会出现此错误。为什么?
- cmake - cmake 不包含 Gazebo 依赖项
- javascript - Vue JS - 组件中的反应性内容
- node.js - __Secure cookie 未在获取请求中发送
- angular - Angular Service Worker 从不完整的 url 中获取