Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php docker映像中启用pdo_mysql_Php_Mysql_Docker - Fatal编程技术网

如何在php docker映像中启用pdo_mysql

如何在php docker映像中启用pdo_mysql,php,mysql,docker,Php,Mysql,Docker,我有一个基本的Dockerfile,其中包含以下内容: FROM php:7.1-apache RUN apt-get update && docker-php-ext-install pdo_mysql COPY . /var/www EXPOSE 80 我有一个docker-compose.yml文件 version: "3" services: app: build: . ports: - "80:80" volumes:

我有一个基本的
Dockerfile
,其中包含以下内容:

FROM php:7.1-apache
RUN apt-get update && docker-php-ext-install pdo_mysql
COPY . /var/www
EXPOSE 80
我有一个docker-compose.yml文件

version: "3"
services:
  app:
    build: .
    ports:
      - "80:80"
    volumes:
      - .:/var/www
    depends_on:
      - mysql
  mysql:
    image: mysql:8
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: "app"
      MYSQL_USER: "app"
      MYSQL_PASSWORD: "app"
      MYSQL_ROOT_PASSWORD: "test"
然后我运行了
docker build-t应用程序docker在项目的根目录下编写
。一切似乎都构建正确,但在输出
phpinfo
时,我看不到mysql_pdo扩展


我是否缺少任何步骤?

我使用的docker文件是

FROM php:7.1-apache
COPY apache2.conf /etc/apache2
RUN docker-php-ext-install mysqli pdo pdo_mysql
请注意其中的mysqli和pdo,以允许pdo/mysql位。

有一个:

事实证明,我需要删除旧图像并再次重建它们

因为我下载了图像,然后编辑了它。因此,我需要删除旧图像并重建它,以便应用更改

docker rm仅移除容器。请确保在删除之前也删除了图像

还应检查a是否更可靠/完整:

# PHP extensions
RUN \
    docker-php-ext-configure pdo_mysql --with-pdo-mysql=mysqlnd \
    && docker-php-ext-configure mysqli --with-mysqli=mysqlnd \
    && docker-php-ext-install pdo_mysql \
    ...

我正在使用这个,对我来说效果很好

RUN apt-get update \
 && apt-get install -y git zlib1g-dev \
 && docker-php-ext-install pdo pdo_mysql zip

如果它对你的工作不起作用。请附上docker build output以供审阅。

以启用PHP PDO和mysqli扩展以连接MySQL 加载项Dockerfile:

RUN docker-php-ext-install pdo pdo_mysql
# for mysqli if you want
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

更多关于如何创建该模块的信息请访问此

我仍然会遇到与额外模块相同的问题included@Tom你是否已经移除了容器并从头开始,这只是在容器第一次启动时建立的。是的,我想是的。我停止了活动容器,然后运行
docker rm$(docker ps-a-q)
Sorry-配置基于它从基本映像构建的映像。因此,请使用
docker images
查找php的图像(我创建的'docker_php'),然后使用
docker rmi IMAGEID
(将其替换为列表中的图像)。然后重新启动docker,这将使用新选项重建映像。@NigelRen我使用
docker stop$(docker ps-a-q)和&docker rm$(docker ps-a-q)以及&docker rmi-f$(docker images-q)
命令进行了尝试,但仍然存在上述问题。有趣的是,
mysql
有效,
pdo_-mysql
不起作用。你有没有对它进行过排序?这一个在@VonC工作,参考