Docker и Redis: SQLSTATE [HY000] [2002] Соединение отклонено - PullRequest
0 голосов
/ 22 сентября 2019

После подключения моего php-проекта, включая Redis, я столкнулся с небольшой проблемой при подключении к БД.Я получаю сообщение об ошибке: SQLSTATE[HY000] [2002] Connection refused

Кажется, мой порт неверен (но, возможно, я не прав), и я должен установить 8889.Как это сделать?

Вот моя функция:

public function initCache()
    {
        if (_CACHE_ != 'ON')
            return false;

        if (!defined('_SYSTEM_IN_DEV_'))
            define('_SYSTEM_IN_DEV_', 'OFF');
        if (isset($this->smarty) && !empty($this->smarty))
            $this->smarty->assign('inDev', _SYSTEM_IN_DEV_);

        require_once _ROOT_ . 'lib/classRedis.php';
        $this->cache = new IgRedis();
        $this->cache->connect('172.19.0.1');
        $this->cache->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);
        $this->cache->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);

        if ($this->smarty) {
            try {
                $svn_rev = $this->cache->get('svn_revision');
                if (!$svn_rev) {
                    $svn_rev = time();
                    $svn_rev = $this->cache->set('svn_revision', $svn_rev);
                }
                $this->smarty->assign('SVN_REV', $svn_rev);
            } catch (Exception $e) {
                error_log("Couldn't connected to Redis");
                error_log($e->getMessage());
            }
        }
    }

Вот мой файл docker-compose:

version: "2"
services:
    www:
        build: .
        ports: 
            - "80:80"
        volumes:
            - ./www/.htaccess:/var/www/html/.htaccess
            - ./www/lib:/var/www/html/lib
            - ./www/modules:/var/www/html/modules
            - ./www/themes:/var/www/html/themes
            - ./www/index.php:/var/www/html/index.php
        links:
            - db
            - redis
        environment:
            DATABASE_PASSWORD: ******
    db:
        image: mariadb:10.2
        environment:
            MYSQL_DATABASE: art
            MYSQL_USER: ******
            MYSQL_PASSWORD: ******
            MYSQL_ROOT_PASSWORD: ******
        volumes:
            - ./dump:/docker-entrypoint-initdb.d
            - mariadb-data:/var/lib/mysql
    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links: 
            - db:db
        ports:
            - 8001:80
        environment:
            MYSQL_USER: ******
            MYSQL_PASSWORD: ******
            MYSQL_ROOT_PASSWORD: ******
    redis:
        image: redis:5.0.5
        ports:
            - "6379:6379"
volumes:
    mariadb-data:

И наконец мой Dockerfile:

FROM composer AS vendor

COPY composer.json .
RUN composer install
RUN composer update

FROM php:7.3-apache

RUN docker-php-ext-install mysqli pdo_mysql
RUN a2enmod rewrite
RUN service apache2 restart

RUN pecl install redis && docker-php-ext-enable redis

COPY --from=vendor /app/vendor/ vendor/
COPY www ./

RUN mkdir templates_c
RUN mkdir cache
RUN chown www-data:www-data templates_c cache

VOLUME /var/www/html/templates_c/
VOLUME /var/www/html/cache/

Любая помощь приветствуется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...