我在docker-compose中遇到memcached的问题。这是docker-compose.yml:
nginx:
container_name: nginx
image: nginx:latest
ports:
- 127.0.0.2:8000:80
volumes:
- ./htdocs:/htdocs
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
links:
- php
php:
container_name: php
build: ./php
volumes:
- ./htdocs:/htdocs
- ./php/php.ini:/usr/local/etc/php/php.ini
links:
- mysql
- memcached
mysql:
container_name: mysql
image: mysql:latest
ports:
- 127.0.0.2:8001:3306
volumes:
- ./my.cnf:/etc/mysql/my.cnf
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=db
- MYSQL_USER=root
- MYSQL_PASSWORD=root
memcached:
container_name: memcached
image: memcached:latest
ports:
- "11211:11211"
这是我的PHP代码:
error_reporting(E_ALL & ~E_NOTICE);
$memcached = new Memcached;
$memcached->addServer('0.0.0.0', 11211);
echo '<pre>'; print_r($memcached->getServerList()); echo '</pre>';
if($memcached->getStats() === false) {
echo 'returned false';
} else {
echo '<pre>'; print_r($memcached->getStats()); echo '</pre>';
}
结果是:
Array
(
[0] => Array
(
[host] => 0.0.0.0
[port] => 11211
[type] => TCP
)
)
returned false
为什么memcached看不到服务器? (getStats什么都没有返回)命令“docker ps”返回列表,它运行的是docker memcached:lastest as port“0.0.0.0:11211->11211/tcp”。对不起我的英语不好。
只需将主机0.0.0.0
替换为memcached
主机memcached
链接到memcached容器的IP。