Контейнер Laravel Ссылка на мемкашированный контейнер Docker - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь использовать Docker-контейнер для связи с Memcached-контейнером, но $ serve ['port'] получает полный URL

здесь для получения дополнительной информации

laravel .env

MEMCACHED_HOST=memcached
MEMCACHED_PORT=11211

Докер для проекта laravel

docker run --name DAC -d --link mysql57:mysql -p 8082:80 -v --link memcached:memcached dac

Докер memcached изображения используют официальное memcached: последний https://hub.docker.com/_/memcached

docker run --name memcached -d memcached

но, к сожалению, когда laravel MemcachedConnector-> connect, я получаю сообщение об ошибке



/var/www/html/dataAnalysisControl/vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php

    public function connect(array $servers, $connectionId = null, array $options = [], array $credentials = [])
    {
        $memcached = $this->getMemcached(
            $connectionId, $credentials, $options
        );

        if (! $memcached->getServerList()) {

            foreach ($servers as $server) {
                $memcached->addServer(
                    $server['host'], $server['port'], $server['weight']
                );
            }
        }

        return $memcached;
    }

"Memcached::addServer() expects parameter 2 to be int, string given"

тогда я обнаружил, что $ server ['port'] обычно не получается

там я сбросил серверы $ и нашел этот порт, он должен быть 11211

, но яполучил tcp: //172.17.0.4: 11211, поэтому получаю строку с указанной ошибкой

array:1 [▼
  0 => array:3 [▼
    "host" => "memcached"
    "port" => "tcp://172.17.0.4:11211"
    "weight" => 100
  ]
]

, поэтому я пытаюсь проверить исходное соединение

$m = new Memcached();
$m->addServer('memcached', 11211);
$version = $m->getVersion();
$m->set('key', 'test');
$get_value = $m->get('key');

dd($version,$get_value)

/////////dump///////
array:1 [▼
  "memcached:11211" => "1.5.19"
]

'test'

похоже, что memcached соединение не проблема

так ясно, я глупо пропустить шаг где-то здесь.

Я надеюсь, что кто-то может помочь мне дать мне решение.

1 Ответ

0 голосов
/ 17 октября 2019

наконец я нашел какое-то решение.

1. Первый способ - использовать docker-compose, решить проблему, получить правильный $ server ['port'] 11211.

убедитесь, что вы используете ту же сеть в файле yml

btw: thx @Elias Soaresнапомните мне, используйте docker-compose

2.

, если MEMCACHED_PORT изменится на полный URL-адрес, например 'tcp: XXX.XXX.XXX: 11211'

, поэтому я добавляю другиеКонфигурация, чтобы убедиться, что служба не испортила связь с контейнером1019 * укажите номер порта и убедитесь, что он соответствует настройкам порта memcached для контейнера

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