如何在php docker镜像中启用pdo_mysql

时间:2017-06-17 11:15:28

标签: 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:
      - .:/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 app . && docker-compose up。一切似乎都正确构建,但在输出phpinfo时,我没有看到mysql_pdo扩展名。

enter image description here

我缺少任何步骤吗?

4 个答案:

答案 0 :(得分:9)

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

FROM php:7.1-apache
COPY apache2.conf /etc/apache2
RUN docker-php-ext-install mysqli pdo pdo_mysql

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

答案 1 :(得分:1)

有一个similar error in docker php issue 62

  

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

     

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

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

同时检查Dockerfile like this one是否可能更强大/更完整:

$adsi = [ADSI]"WinNT://$env:COMPUTERNAME"
$adsi.Children | Where-Object {$_.SchemaClassName -eq 'user'} | Foreach-Object {
    $groups = $_.Groups() | Foreach-Object {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
    $_ | Select-Object @{n='UserName';e={$_.Name}},@{n='Groups';e={[string]::(';',$groups)}}
}

答案 2 :(得分:1)

启用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

有关如何创建该信息的更多信息,请访问Page

答案 3 :(得分:-1)

我正在使用它,对我来说很好。

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

如果它不适合你。请附上docker build输出以供审核。