【问题标题】:docker-compose redis password via environment variable通过环境变量 docker-compose redis 密码
【发布时间】:2021-09-28 08:06:25
【问题描述】:

我正在尝试通过环境变量将我的 redis 密码传递给 docker-compose,但它给了我一个错误。

这是我的 docker-compose 和 redis 映像的一部分:

  redis:
    image: redis
    container_name: redis
    # command: redis-server --requirepass mypassword <--- this works as expected
    # command: redis-server --requirepass ${REDIS_PASSWORD} <-- this is not
    command: redis-server --requirepass $${REDIS_PASSWORD} <-- and this is not
    volumes:
      - redis:/var/lib/redis/data
      - ./redis.conf:/usr/local/etc/redis/redis.conf
    ports:
      - "6379"
    env_file:
      - .env.prod

我的.env.prod

REDIS_PASSWORD=mypassword

它给了我一个错误:

consumer: Cannot connect to redis://:**@redis:6379/0: WRONGPASS invalid username-password pair or user is disabled..

但如果我直接在 docker-compose 中指定密码而不使用 env 变量,它就可以工作。

【问题讨论】:

    标签: docker-compose redis environment-variables


    【解决方案1】:

    这应该可行:

        redis:
            image: redis
            command: >
              --requirepass ${REDIS_PASSWORD}
    

    【讨论】:

      【解决方案2】:

      env_file 允许在容器中设置环境变量 - 而您需要在 docker-compose 环境中设置环境变量以便对 ${REDIS_PASSWORD} 执行变量替换。

      为了实现您的目标,请从您的 yml 中删除 env_file,或者:

      • 将你的.env.prod文件重命名为.env,这样docker-compose会自动选择它;或者,
      • 在调用 docker-compose 时通过 --env-file 参数指定它:
      docker-compose --env-file .env.prod up
      

      【讨论】:

        猜你喜欢
        • 2015-06-17
        • 2021-11-27
        • 1970-01-01
        • 2022-01-01
        • 2018-02-03
        • 2019-02-25
        • 2022-06-11
        • 2021-09-04
        • 2019-07-26
        相关资源
        最近更新 更多