dauren101
@dauren101
Python, Django ,Vue.js

Доступ к контейнеру docker?

Всем привет, хотел спросить. Развернул 2 контейнера в одном питон, во втором redis.Все на одном хосте. C первого пытаюсь получить доступ к redis но коннект не идет. это нужно делать линковку? Просто редис контейнер хотел использовать как общую шину, не хочется во всех остальных контейнерах прописывать линк к нему.

в контейнера редиса
protected-mode no
bind 0.0.0.0 ::
bind 127.0.0.1 ::1
bind * ::1

Также открыл порт 6379

root@e465af48781c:/data# nmap -sT -sU -p- 127.0.0.1
Starting Nmap 7.80 ( https://nmap.org ) at 2022-01-04 12:24 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00032s latency).
Not shown: 131069 closed ports
PORT STATE SERVICE
6379/tcp open redis

docker-compose.yml #redis
version: '3.6'

services:
   
    redis:
      
      image: 'redis_update'
      user: root
      restart: always
      ports:
        - 6379:6379
      
      volumes:
        - ./conf:/opt/local/bitnami/redis/etc
      
      environment:
          - ALLOW_EMPTY_PASSWORD=yes
      networks:
          - back
networks:
  back:
      # use a custom driver, with no options
      driver: bridge


docker-compose.yml #python
# docker-compose.yml

version: '3.8'

services:
  web:
    build: .
    command: uvicorn app.main:app --host 0.0.0.0 --reload
    volumes:
      - .:/code
    ports:
      - 8008:8000
    networks:
      - back
networks:
  back:
      # use a custom driver, with no options
      driver: bridge


#requirements.txt
asyncpg==0.22.0
fastapi==0.63.0
uvicorn==0.13.4
strawberry-graphql
requests
http3
celery
redis


main.py
import strawberry
import requests
from fastapi import FastAPI
from strawberry.fastapi import GraphQLRouter
import http3
import redis
client = http3.AsyncClient()

r = redis.Redis(
    host='redis_redis_1',
    port=6379)


app = FastAPI()
@app.get("/")
def read_root():
    
    value = r.get('mykey') 
    print(value)
    return {"Hello": "World2"}
  • Вопрос задан
  • 246 просмотров
Решения вопроса 1
@D0001
Сделайте общую сеть
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Griboks
@Griboks
Обычно открывают порты и прописывают их в других контейнерах (как localhost:). Для удобства можно конфигурировать контейнеры через переменные среды или аргументы запуска.
Также есть смысл посмотреть в сторону docker swarm или compose.
Ответ написан
karabanov
@karabanov Куратор тега Docker
Системный администратор
Запусти контейнеры с помощью docker-compose, тогда они автоматически будут подключены к одной виртуальной сети и смогут беспрепятственно обмениваться трафиком.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы