Защита Redis в докере с помощью docker-compose - PullRequest
0 голосов
/ 04 июля 2019

У меня есть файл docker-compose.yaml, как показано ниже, и я хочу убедиться, что порт 6379 на сервере не доступен для Интернета (только для первого упомянутого контейнера "сеть").

Если я просто удалю ссылку «expose» из раздела «redis:», будет ли это держать мой redis работающим внутри, но заблокировать доступ к нему извне?

version: '2'

services:
    web:
        image: myimage/version1:1.4.5
        restart: always
        ports:
            - 8082:3000
        container_name: web
        networks:
            - web
            - default
        expose:
            - '3000'
        labels:
            - 'traefik.docker.network=web'
            - 'traefik.enable=true'
            - 'traefik.basic.frontend.rule=Host:abcd.com'
            - 'traefik.basic.port=3000'
            - 'traefik.basic.protocol=http'
        depends_on:
            - redis
    redis:
      image: redis:4.0.5-alpine
      restart: always
      ports:
        - 6379:6379
      expose:
        - 6379
      command: ["redis-server", "--appendonly", "yes"]
      hostname: redis
      networks:
        - web
      volumes:
        - redis-data:/data


networks:
    web:
        external: true

volumes:
  redis-data:

1 Ответ

1 голос
/ 04 июля 2019

Expose делает порт доступным только для связанных служб, что вам и нужно. Вы должны удалить redis ports , чтобы порт не был привязан к хосту.

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