首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker Container通信

Docker Container通信
EN

Stack Overflow用户
提问于 2018-08-08 05:15:15
回答 1查看 353关注 0票数 1

我有两个通过开放端口相互通信的容器。但是假设我有(网站容器)domain.com/ api api 5000:5001 ( ->容器),所以网站接受一个请求并告诉api做一些工作。我担心的是,因为它们都托管在同一个域中,网站只是一个抽象/入口点,所以用户可以使用Domain.com:5001/api直接访问api容器,而不是使用Domain.com/api。下面是一个docker-compose文件示例

代码语言:javascript
复制
version: '3'
services:
  api-service:
  build: ./nlpapi
  ports:
    - 5001:80

  website-service:
    build: ./tweetnlpwebsite
    volumes:
      - ./tweetnlpwebsite:/usr/src/app
    ports:
      - 5000:80
    depends_on:
      - api-service

我刚接触docker,但我对这个文件的理解是,docker主机有两个容器,通过端口5001连接到docker主机,您将获得web容器的端口80,它会显示页面。通过5000连接到主机,你可以cURL它一个请求,它会响应,因为api容器暴露在那个端口上。

我如何才能使这些容器能够在内部安全地相互通信,并且只发出请求/访问web服务?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-08 05:24:10

您可以为website-serviceapi-service创建用户定义的网络以进行相互通信,然后仅将website-service发布到外部世界。

代码语言:javascript
复制
version: '3'
services:
  api-service:
    build: ./nlpapi
    networks:
      - app

  website-service:
    build: ./tweetnlpwebsite
    volumes:
      - ./tweetnlpwebsite:/usr/src/app
    ports:
      - 5000:80
    depends_on:
      - api-service
    networks:
      - app

networks:
  - app

现在,website-service可以通过api-service:80访问api-service,但外部世界不能直接访问api-service

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51735544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档