gpt4 book ai didi

php - 找不到docker-compose pdo-mysql驱动程序

转载 作者:行者123 更新时间:2023-12-02 19:16:02 33 4
gpt4 key购买 nike

我正在尝试对我的项目(PHP MYSQL和PDO)进行Dockerize。即使我添加了脚本来将扩展安装到我的Dockerfile,并且每次构建它都在安装它们时,我仍然得到:“找不到驱动程序”。我 checkin 了phpinfo(),但驱动程序不存在。我删除了所有从头开始构建的图像和容器。结果相同。有任何想法吗?在我的docker文件中,我有以下内容:

FROM php:7.4-apache
RUN apt-get update && apt-get upgrade -y
RUN docker-php-ext-install pdo pdo_mysql
EXPOSE 80
和我的docker-compose.yaml文件:
version: '3.3'
services:
web:
build:
context: ./php
dockerfile: Dockerfile
container_name: php74
depends_on:
- db
links:
- db
volumes:
- ./php:/var/www/html/
ports:
- 8008:80
db:
container_name: mysql8
command: --default-authentication-plugin=mysql_native_password
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: realDE
MYSQL_USER: khaldoun
MYSQL_PASSWORD: password
ports:
- 6033:3306

最佳答案

对于我执行的测试,我做了以下工作:
Dockerfile-

FROM php:7.4-apache
RUN apt-get update && apt-get upgrade -y
RUN docker-php-ext-install pdo pdo_mysql

COPY $PWD/index.php /var/www/html

EXPOSE 80

# start Apache2 on image start
CMD ["/usr/sbin/apache2ctl","-DFOREGROUND"]
index.php
<?php
phpinfo();
?>
运行命令(我将图像命名为pdo-test):
docker run --name=pdo-test -p 8080:80  -d pdo-test
启动容器后,我导航到HTTP:// localhost:8080 / index.php并看到已加载PDO驱动程序:
enter image description here
请注意,我的Dockerfile和您的Dockerfile之间的唯一区别是,我将一个PHP页面复制到 /var/www/html中,并添加了一个命令,该命令将在容器运行时启动Apache。
您应检查的事项:
  • 是您要装入的卷正确./php:/var/www/html
  • ,因为您没有执行Apache的命令,请确认它在容器中已正确启动。我对这两种方法都进行了测试,并且每次都开始,但是您应该猛击容器,并确保Apache能够按预期运行。

  • 编辑我从容器中复制了一个php.ini文件
    docker cp pdo-test:usr/local/etc/php/php.ini-production php.ini
    并取消注释PDO驱动程序:
    ;extension=openssl
    ;extension=pdo_firebird
    extension=pdo_mysql
    ;extension=pdo_oci
    ;extension=pdo_odbc
    extension=pdo_pgsql
    ;extension=pdo_sqlite
    ;extension=pgsql
    然后,我重建了容器,复制到更新的php.ini文件中:
    FROM php:7.4-apache
    RUN apt-get update && apt-get upgrade -y
    RUN docker-php-ext-install pdo pdo_mysql

    COPY $PWD/index.php /var/www/html
    COPY $PWD/php.ini /usr/local/etc/php

    EXPOSE 80

    # start Apache2 on image start
    # CMD ["/usr/sbin/apache2ctl","-DFOREGROUND"]
    我现在可以在 phpinfo()中看到php.ini文件
    enter image description here

    关于php - 找不到docker-compose pdo-mysql驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63468046/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com