如何在php docker镜像中启用pdo_mysql

Tom*_*Tom 12 php mysql docker

我有一个基本Dockerfile的以下内容:

FROM php:7.1-apache
RUN apt-get update && docker-php-ext-install pdo_mysql
COPY . /var/www
EXPOSE 80
Run Code Online (Sandbox Code Playgroud)

我有一个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"
Run Code Online (Sandbox Code Playgroud)

然后我跑到docker build -t app . && docker-compose up项目的根部.一切似乎都正确构建,但在输出时phpinfo我没有看到mysql_pdo扩展名.

在此输入图像描述

我有什么步骤吗?

Nig*_*Ren 11

我使用的docker文件是......

FROM php:7.1-apache
COPY apache2.conf /etc/apache2
RUN docker-php-ext-install mysqli pdo pdo_mysql
Run Code Online (Sandbox Code Playgroud)

注意那里的mysqli和pdo也允许PDO/mysql位.


Von*_*onC 5

在 docker php 问题 62 中也有类似的错误

事实证明,我需要删除旧图像并重新构建它们。

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

docker rm 只删除容器。确保之前也删除了图像。

还要检查像这样Dockerfile是否可能更健壮/完整:

# 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 Code Online (Sandbox Code Playgroud)


Ahm*_*ush 5

启用 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
Run Code Online (Sandbox Code Playgroud)

有关如何创建访问此页面的更多信息