如何在同一主机上的 Docker 上将应用程序容器和 redis 容器连接在一起?

我有文件夹 redis-docker

文件:docker-compose.yml

version: '3'
services:
    redis:
        image: redis:latest
        ports:
            - 6379:6379
        volumes:
            - ./config/redis.conf:/redis.conf
        command: [ "redis-server","/redis.conf" ]

文件:redis.conf

bind 0.0.0.0

我有文件夹 test-redis

文件:docker-compose.yml

version: '3'
services:
  web:
    build: .
    volumes:
      - .:/code 

文件:Dockerfile

FROM amd64/python:3

WORKDIR /code

COPY . .
RUN pip install --no-cache-dir -r requirements.txt

ENV LD_libraRY_PATH="/usr/local/lib:$LD_libraRY_PATH"
EXPOSE 6379

CMD [ "python","./test.py" ]

文件:requirements.txt

redis

文件:test.py

import redis

# connect to redis
client = redis.Redis(host=redis,port=6379)

# set a key
client.set('test-key','test-value')

# get a value
value = client.get('test-key')
print(value)

如何在同一主机上的 Docker 上将应用程序容器和 redis 容器连接在一起?

我执行了 2 个命令

docker-compose up
docker exec -it redis-docker_redis_1 redis-cli ping

结果像Pic2

如何在同一主机上的 Docker 上将应用程序容器和 redis 容器连接在一起?

Redis 运行良好,但此时我不知道如何“test-redis”连接并使用这个“redis-docker”。我花了超过 48 小时进行研究,但无济于事。我是 Docker 新手。请帮帮我

谢谢

fengyun0919 回答:如何在同一主机上的 Docker 上将应用程序容器和 redis 容器连接在一起?

在这里发布了几个小时的问题后,我自己成功找到了解决方案。我会分享给大家,让像我这样的人以后节省时间

创建 2 个文件夹 "redis-docker""test-redis"

  1. “redis-docker” 文件夹将包含以下文件

文件:docker-compose.yml

version: '3'
services:
    redis:
        image: redis:latest
        ports:
            - 6379:6379
        volumes:
            - ./config/redis.conf:/redis.conf
        command: [ "redis-server","/redis.conf" ]

文件:Dockerfile

FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server","/usr/local/etc/redis/redis.conf" ]

文件:redis.conf

bind 0.0.0.0
  1. “test-redis” 文件夹将包含以下文件

文件:docker-compose.yml

version: '3'
services:
  web:
    build: .
    volumes:
      - .:/code 

文件:Dockerfile

FROM amd64/python:3

WORKDIR /code

COPY . .
RUN pip install --no-cache-dir -r requirements.txt

ENV LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
EXPOSE 6379

CMD [ "python","./test.py" ]

文件:requirements.txt

redis

文件:test.py

# connect to redis
client = redis.Redis(host='**you will have this parameter at the bottom**',port=6379)
# set a key
client.set('test-key','test-value')
# get a value
value = client.get('test-key')
print(value)

您将目录上传到您的服务器,在本例中,我将上传目录 /root/。你执行以下命令

cd /root/redis-docker
docker build --no-cache . -t redisserverimg
docker run -it --rm --name B1 redisserverimg

继续,你需要打开一个新的CMD

docker network inspect bridge 

你会看到类似图片,保存那个IP172.17.0.2,并用Python代码替换它

Picture1

继续,你需要打开一个新的CMD

cd /root/test-redis
docker build --no-cache . -t testredisimg
docker run -it --rm --name B2 testredisimg

一切都完成了,运行得很好,2个不同的容器。一个用于存储数据,另一个用于运行 Python。并且可以使用下面的命令访问容器B1的redis-cli

docker exec -it B1 redis-cli 

感谢您的阅读。我希望我的这个小分享可以为您节省一整天

本文链接:https://www.f2er.com/2397.html

大家都在问