Docker -Создать, как подключить Java Приложение с пользовательской Docker Сеть на контейнере Redis - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть приложение java, которое подключается через внешнюю базу данных через пользовательскую сеть docker, и я хочу подключить контейнер Redis.

docker -redis github topi c

Я попробовал следующее в конфигурации приложения:

1 localhost:6379
2 app_redis://app_redis:6379 
3 redis://app_redis:6379 

в моей настройке ничего не работает

docker настройка сети:

    docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 mynet

Подключение к базе данных, работающей на вашем Docker хосте

PS: это может быть не так c, как я могу добавить сеть на docker - составить вместо внешнего

docker - составить:

    services:
        app-kotin:
            build: ./app
            container_name: app_server
            restart: always
            working_dir: /app
            command: java -jar app-server.jar
            ports:
                - 3001:3001
            links:
              - app-redis
            networks: 
                - front
        app-redis:
            image: redis:5.0.9-alpine
            container_name: app-redis
            expose:
                - 6379 

    networks:    
        front:        
            external:
                name: mynet

с указанными выше настройками, как я могу подключиться через контейнер Redis?

1 Ответ

1 голос
/ 25 апреля 2020

Оба контейнера должны быть в одной сети Docker для связи друг с другом. Контейнер app-kotin находится в сети front, но контейнер app-redis не имеет блока networks: и переходит в автоматически созданную сеть default.

Самое простое исправление из того, что у вас есть, вы также можете поместить контейнер app-redis в ту же сеть:

    app-redis:
        image: redis:5.0.9-alpine
        networks:
            - front

Имя службы Compose app-redis будет затем использоваться в качестве имени хоста из других контейнеров в той же сети. сеть.

Вы можете значительно упростить эту настройку. Как правило, вам не нужно вручную указывать IP-конфигурацию для Docker -приватных сетей. Compose может создать сеть для вас, и фактически она создаст для вас сеть с именем default. ( Networking in Compose обсуждает это далее.) links: и expose: не используются в современных Docker сетях; Compose может предоставить для вас значение по умолчанию container_name:; и вам не нужно повторять working_dir: или command: с изображения. Удаление всего этого оставит вас с:

version: '3'
services:
  app-kotin:
    build: ./app
    restart: always
    ports:
      - '3001:3001'
  app-redis:
    image: redis:5.0.9-alpine

Контейнер сервера сможет использовать имя службы Compose другого контейнера app-redis в качестве имени хоста, даже с этой минимальной конфигурацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...