使用docker compose为php设置redis会话处理程序

使用docker compose为php设置redis会话处理程序,php,docker,redis,docker-compose,Php,Docker,Redis,Docker Compose,我原以为redis会绑定到redis conf中的php容器,但失败的原因是: # Creating Server TCP listening socket phpfpm:6379: bind: Address not available 如果我使用localhost,会话缓存将不工作。我假设是因为连接被redis服务器拒绝了。我正在查找redis.conf文件和php.ini文件中需要的内容。我认为应该是这样的: php.ini redis.conf 我不知道我是否理解你的问题 当我遇到网络

我原以为redis会绑定到redis conf中的php容器,但失败的原因是:

# Creating Server TCP listening socket phpfpm:6379: bind: Address not available
如果我使用localhost,会话缓存将不工作。我假设是因为连接被redis服务器拒绝了。我正在查找redis.conf文件和php.ini文件中需要的内容。我认为应该是这样的:

php.ini redis.conf
我不知道我是否理解你的问题

当我遇到网络问题时,这种情况就发生了,你能举一个.YML配置的例子吗

php:
    image: php:7.1-fpm-alpine
    #build: php
    networks:
      - internal_network
    volumes:
      - ../html:/var/www/html
    restart: always
redis:
    image: redis:4-alpine
    environment:
      #- REDIS_PASSWORD=${REDIS_PASSWORD}
      - REDIS_PASSWORD=YOUR_REDIS_PASSWORD
    command: redis-server --appendonly yes
    volumes:
      - ../data/redis:/data
    networks:
      - internal_network
nginx:
    image: nginx:1-alpine
    ports:   #only if traefik is disabled
     - 80:80 #only if traefik is disabled
    volumes:
     - /etc/localtime:/etc/localtime:ro
     - ./nginx/conf.d:/etc/nginx/conf.d
     - ../html:/var/www/html
    networks:
     - internal_network
     - external_network
是否已安装扩展?您是否使用build命令

./php/Dockerfile

你不需要其他任何东西。 您的redis必须位于docker网络内,而不是暴露于internet

默认情况下,如果未指定“bind”配置指令,则Redis 侦听上所有可用网络接口的连接 服务器。可以只收听一个或多个选定的音频 使用“bind”配置指令的接口,后跟一个 一个或多个IP地址

示例:

绑定192.168.1.100 10.0.0.1绑定127.0.0.1::1

~~~警告~~~如果运行Redis的计算机直接暴露于 在互联网上,绑定到所有接口是危险的,而且会 向internet上的所有人公开该实例。因此,默认情况下,我们 取消注释下面的bind指令,这将强制Redis 仅侦听IPv4回溯接口地址(这意味着 Redis将只能接受来自正在运行的客户端的连接 进入正在运行的同一台计算机)

如果确定希望实例侦听所有 接口只需注释以下行。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 绑定127.0.0.1


我不知道我是否理解你的问题

当我遇到网络问题时,这种情况就发生了,你能举一个.YML配置的例子吗

php:
    image: php:7.1-fpm-alpine
    #build: php
    networks:
      - internal_network
    volumes:
      - ../html:/var/www/html
    restart: always
redis:
    image: redis:4-alpine
    environment:
      #- REDIS_PASSWORD=${REDIS_PASSWORD}
      - REDIS_PASSWORD=YOUR_REDIS_PASSWORD
    command: redis-server --appendonly yes
    volumes:
      - ../data/redis:/data
    networks:
      - internal_network
nginx:
    image: nginx:1-alpine
    ports:   #only if traefik is disabled
     - 80:80 #only if traefik is disabled
    volumes:
     - /etc/localtime:/etc/localtime:ro
     - ./nginx/conf.d:/etc/nginx/conf.d
     - ../html:/var/www/html
    networks:
     - internal_network
     - external_network
是否已安装扩展?您是否使用build命令

./php/Dockerfile

你不需要其他任何东西。 您的redis必须位于docker网络内,而不是暴露于internet

默认情况下,如果未指定“bind”配置指令,则Redis 侦听上所有可用网络接口的连接 服务器。可以只收听一个或多个选定的音频 使用“bind”配置指令的接口,后跟一个 一个或多个IP地址

示例:

绑定192.168.1.100 10.0.0.1绑定127.0.0.1::1

~~~警告~~~如果运行Redis的计算机直接暴露于 在互联网上,绑定到所有接口是危险的,而且会 向internet上的所有人公开该实例。因此,默认情况下,我们 取消注释下面的bind指令,这将强制Redis 仅侦听IPv4回溯接口地址(这意味着 Redis将只能接受来自正在运行的客户端的连接 进入正在运行的同一台计算机)

如果确定希望实例侦听所有 接口只需注释以下行。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 绑定127.0.0.1


谢谢你,纳萨托姆。结果是我犯了一个愚蠢的错误。我以为我已经安装了php扩展,但是当我查看Dockerfile时,我发现我在一段时间前已经注释掉了它。/php/Dockerfile-失败,错误如下。警告:忽略:无此类文件或目录错误:不可满足的约束:阴影(丢失):世界[shadow]所需命令“/bin/sh-c echo>>/etc/apk/repositories&&apk add--no cache shadow curl vim zlib dev autoconf g++make re2c&&pecl install-o-f redis&&docker php ext enable redis.so&&pecl clear cache”返回一个非零代码:1这是正确的代码:来自php:7.1-fpm-alpine RUN echo>/etc/apk/repositories\&apk add——无缓存阴影卷曲vim zlib dev autoconf g++使re2c\&pecl安装-o-f redis\&docker php ext启用redis.so\&pecl清除缓存感谢nasatome。结果是我犯了一个愚蠢的错误。我以为我已经安装了php扩展,但是当我查看Dockerfile时,我发现我在一段时间前已经注释掉了它。/php/Dockerfile-失败,错误如下。警告:忽略:无此类文件或目录错误:不可满足的约束:阴影(丢失):世界[shadow]所需命令“/bin/sh-c echo>>/etc/apk/repositories&&apk add--no cache shadow curl vim zlib dev autoconf g++make re2c&&pecl install-o-f redis&&docker php ext enable redis.so&&pecl clear cache”返回一个非零代码:1这是正确的代码:来自php:7.1-fpm-alpine RUN echo>/etc/apk/repositories\&apk add——无缓存阴影卷曲vim zlib dev autoconf g++使re2c\&pecl安装-o-f redis\&docker php ext启用redis.so\&pecl清除缓存
php:
    image: php:7.1-fpm-alpine
    #build: php
    networks:
      - internal_network
    volumes:
      - ../html:/var/www/html
    restart: always
redis:
    image: redis:4-alpine
    environment:
      #- REDIS_PASSWORD=${REDIS_PASSWORD}
      - REDIS_PASSWORD=YOUR_REDIS_PASSWORD
    command: redis-server --appendonly yes
    volumes:
      - ../data/redis:/data
    networks:
      - internal_network
nginx:
    image: nginx:1-alpine
    ports:   #only if traefik is disabled
     - 80:80 #only if traefik is disabled
    volumes:
     - /etc/localtime:/etc/localtime:ro
     - ./nginx/conf.d:/etc/nginx/conf.d
     - ../html:/var/www/html
    networks:
     - internal_network
     - external_network
FROM php:7.1-fpm-alpine

RUN echo http://dl.alpinelinux.org/alpine/latest-stable/community/ >> /etc/apk/repositories \
    && apk add --no-cache shadow curl vim zlib-dev autoconf g++ make re2c \
    && pecl install -o -f redis \
    && docker-php-ext-enable redis.so \
    && pecl clear-cache