【问题标题】:docker cannot connect to redis from filedocker无法从文件连接到redis
【发布时间】:2017-03-12 06:51:58
【问题描述】:

我正在使用 docker-compose up 运行 docker。

在一个文件中,我尝试访问使用以下方法创建的 redis:

import redis

pool = redis.ConnectionPool(host='redis', port=6379, db=0)
r = redis.Redis(connection_pool=pool)
r.flushall()

这是我的 docker-compose.yml redis 部分:

web:
  build: .
  ports:
   - "8000:8000"
  links:
   - db
   - redis
  environment:
    - DATABASE_URL=postgres://user:openhouse2016@db:5432/chat
    - REDIS_URL=redis://redis:6379/1
  volumes:
    - .:/opt/app
db:
  image: praiskup/postgresql:APIv1.0.1-fedora23
#  volumes:
#   - ./db:/var/lib/pgsql/data
  environment:
   - POSTGRESQL_DATABASE=chat
   - POSTGRESQL_USER=user
   - POSTGRESQL_PASSWORD=openhouse2016
   - POSTGRESQL_CONTAINER_OPTS=assert_external_data = false
worker:
  build: .
  environment:
    - DATABASE_URL=postgres://user:openhouse2016@db:5432/chat
    - REDIS_URL=redis://redis:6379/1
  links:
   - db
   - redis
  volumes:
    - .:/opt/app
  # we need to wait for database setup
  command: bash -c "sleep 7 && exec python /opt/app/channels-example/manage.py runworker -v3"
redis:
  image: redis
  ports:
        - "6379:6379"
migrator:
  build: .
  environment:
   - DATABASE_URL=postgres://user:openhouse2016@db:5432/chat
   - REDIS_URL=redis://redis:6379/1
  links:
   - db
  # it indeed takes this long to start the database
  command: bash -c "sleep 5 && exec python /opt/app/channels-example/manage.py migrate"

运行后:

docker-compose down
docker-compose build
docker-compose up

一切运行良好,redis 表示已准备好接受端口 6379 上的连接。

但是,上面的python代码生成:

redis.exceptions.ConnectionError: Error -5 connecting to redis:6379. No address associated with hostname.

如何从 python 文件连接到 redis?

编辑:

docker ps -a

redis 显示:

3a494c9da73d     redis        "docker-entrypoint.sh" 
10 seconds ago   Up 9 seconds  0.0.0.0:6379->6379/tcp

【问题讨论】:

  • python代码是否也在容器中,还是在本地机器上运行?
  • 您能否编辑问题并添加容器的定义,因为它出现在您的docker-compose.yml 中?因为我怀疑您可能必须使用links: 部分将redis 图像(redis docker)与Python 容器链接起来。比如:links: redis:redis? (docs.docker.com/compose/compose-file/#/links) 不过最近我和 Docker 有点脱节了
  • 不,不是。如果需要,我可以发布完整的文件。
  • @shell 这会有所帮助,是的。
  • 使用我自己的 compose 文件来启动 redis 我在运行 Python 代码时真的没有问题。您确实提到您正在设置另一个运行该 Python 代码的容器。您是否确保将您的容器链接起来以适当地相互通信?

标签: python docker redis docker-compose


【解决方案1】:

迁移器没有链接到redis。这修复了它:

migrator:
  build: .
  environment:
   - DATABASE_URL=postgres://user:openhouse2016@db:5432/chat
   - REDIS_URL=redis://redis:6379/1
  links:
   - db
   - redis #this line here was missing
  # it indeed takes this long to start the database
  command: bash -c "sleep 5 && exec python /opt/app/channels-example/manage.py migrate"

【讨论】:

    猜你喜欢
    • 2018-07-12
    • 1970-01-01
    • 2022-01-07
    • 2023-02-10
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2015-12-31
    相关资源
    最近更新 更多