【问题标题】:Redis + Docker: PDOException: could not find driverRedis + Docker:PDOException:找不到驱动程序
【发布时间】:2018-11-06 23:06:01
【问题描述】:

我是使用 Redis 的新手。我在 Docker 中运行 Laravel、MariaDB 和 Redis。我似乎无法让 redis 正常工作。我在 Laravel Horizo​​n 中收到以下错误:

PDOException: 在 /var/www/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:46 中找不到驱动程序

我的猜测是代码在 redis 容器内执行,无法访问 PHP 容器。

这是我的 docker-compose.yml:

# Web server
nginx:
    image: nginx:latest
    restart: always
    links:
    - socketio-server
    ports:
    - "3000:3001"
    - "8081:80"
    volumes:
    - ./api:/var/www/api
    - ./docker/nginx/conf.d/:/etc/nginx/conf.d
    - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
    links:
    - php

# PHP
php:
    build: ./docker/php-fpm
    volumes:
    - ./api:/var/www/api
    links:
    - mariadb

# Redis
redis:
    image: redis:latest
    depends_on:
    - php
    expose:
    - "6379"

# Database
mariadb:
    image: mariadb:latest
    restart: always
    ports:
    - "3306:3306"
    volumes:
    - ./database/mariadb/:/var/lib/mysql

# PHP workers
php-worker:
    build:
    context: ./docker/php-worker
    args:
        - PHP_VERSION=7.2
        - INSTALL_PGSQL=false
    volumes:
    - ./:/var/www
    - ./docker/php-worker/supervisor.d:/etc/supervisor.d
    extra_hosts:
    - "dockerhost:10.0.75.1"
    links:
    - redis

有人有什么想法吗?

【问题讨论】:

    标签: laravel docker redis docker-compose laravel-horizon


    【解决方案1】:

    您认为容器无法相互访问的假设是正确的。

    您的 PHP 容器执行 PHP 代码,因此它必须能够访问 redis 容器和 mariadb 容器才能使用它们。为此,您可以将它们添加到 links 数组中。我看到你已经为 mariadb 做了这个,但你也应该添加 redis。

    # PHP
    php:
        build: ./docker/php-fpm
        volumes:
        - ./api:/var/www/api
        links:
        - mariadb
        - redis
    

    通过将 redis 添加到 links 数组,您可以在您的 PHP 容器中使用主机名 redis 访问它。

    【讨论】:

    • 我认为它有效......但不幸的是它没有。我触发了错误的事件。我仍然得到同样的错误。即使我在 redis 容器中安装了 php,它也不起作用。
    • 您使用什么凭据连接到 redis?你在使用host = redisport = 6379
    • 是的,我正在使用这些。我可以将东西添加到队列中,但是当它们被执行(并且需要连接到数据库)时它们会崩溃。
    • 我想通了。需要安装 pdo_mysql 的是 'php-worker' 容器。
    【解决方案2】:

    我原来是 'php-worker' 容器中的一个问题。我没有在这里安装 pdo_mysql 。现在一切正常!

    【讨论】:

    • 你是怎么安装的?
    猜你喜欢
    • 2019-07-17
    • 2016-07-14
    • 2016-08-05
    • 2016-09-03
    • 2022-01-23
    • 2012-02-09
    • 2017-07-22
    相关资源
    最近更新 更多