Redis + Docker: PDOException: не удалось найти драйвер - PullRequest
0 голосов
/ 28 мая 2018

Я новичок в использовании Redis.Я управляю Laravel, MariaDB и Redis в Докере.Я не могу заставить Redis работать должным образом.Я получаю следующую ошибку в Laravel Horizon:

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

У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

У меня возникла проблема в контейнере 'php-worker'.Я не установил pdo_mysql здесь.Теперь все работает отлично!

0 голосов
/ 28 мая 2018

Ваше предположение, что контейнеры не имеют доступа друг к другу, является правильным.

Ваш контейнер PHP выполняет код PHP, поэтому он должен иметь доступ к контейнеру redis и контейнеру mariadb, чтобы использоватьих.Вы делаете это, добавляя их в массив links.Я вижу, вы уже сделали это для mariadb, но вы также должны добавить redis.

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

Добавив redis в массив links, вы можете получить к нему доступ в своем PHP-контейнере с именем хоста * 1008.*.

...