docker - 使用 docker-compose 在 docker 中保护 Redis

标签 docker redis docker-compose

我有一个如下所示的 docker-compose.yaml 文件,我想确保服务器上的端口 6379 没有暴露给互联网(只暴露给提到的第一个容器“web”)。

如果我只是从“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:

最佳答案

Expose使端口只能访问您想要的链接服务。您应该删除 redis ports因此端口不会绑定(bind)到主机。

关于docker - 使用 docker-compose 在 docker 中保护 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56889636/

相关文章:

docker - 在 Next.js 应用程序上获取环境变量 Kubernetes

docker - 如果来自守护进程的错误响应是 : Cannot Kill Container [. ..] 权限被拒绝,如何停止运行容器?

Redis:计算汉明距离

php - 无法启动服务Web : OCI runtime create failed:

php - Docker - 为 Cron 容器使用 PHP Cli 基础镜像

bash - 如何运行一个在失败时不会退出直至成功的命令?

redis - StackExchange.Redis.StrongName.dll!StackExchange.Redis.SocketManager.WriteAllQueues()

redis - 有没有办法列出所有 redis 的键及其数据类型?

python - docker-compose 和 django-haystack

logging - Nginx docker (13:权限被拒绝)将请求记录到已安装的卷时