有一个用 lumen (laravel) 编写的后端连接到 redis。当我运行本地 php 和本地 redis 时,一切正常。当我通过 docker 运行时,我收到一个错误:Connection refused [tcp://127.0.0.1:6379]
. PHP 程序集(Dockerfile):
FROM php:7.2-fpm
RUN apt-get update \
&& chown -R www-data:www-data /var/www/html \
&& chmod -R 777 /var/www/html
RUN pecl install redis && docker-php-ext-enable redis
docker-compose.yml 文件:
nginx:
image: nginx:latest
ports:
- 127.0.0.1:80:80
volumes:
- .:/var/www/html
- ./docker/config/nginx:/etc/nginx/conf.d
- ./docker/logs/nginx:/var/log/nginx
links:
- php-fpm
php-fpm:
build:
context: ./docker/php-fpm
volumes:
- .:/var/www/html
redis:
image: redis
restart: always
ports:
- 127.0.0.1:6379:6379
logging:
driver: none
可能是什么问题呢?也许我没有打开一些端口?
在 php 容器中,地址 127.0.0.1 是带有标准 docker bridge 网络驱动程序的 php 容器的私有 localhost。尝试在 php 配置中将 tcp://120.0.0.1:6379 更改为 tcp://redis:6379。萝卜中的转发端口可以去掉。