首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker-compose :如何将docker容器与外部隔离(jenkins container + nginx反向代理)

问docker-compose :如何将docker容器与外部隔离(jenkins container + nginx反向代理)
EN

Stack Overflow用户
提问于 2019-09-26 17:10:04
回答 1查看 185关注 0票数 0

作为一个训练模型,我正在尝试在nginx反向代理后面设置一个jenkins实例,同时确保https。所以我为nginx和jenkins创建了一个容器。我已经成功了,包括使用(自动签名的)证书的nginx配置。我可以在我的机器上使用https和nginx容器ip访问jenkins实例。但我的最终目标是完全隔离jenkins容器,这样就无法从“外部”访问它。而这并没有实现。在官方图片中声明的默认端口是8080,我仍然可以通过jenkins容器IP和端口8080到达jenkins实例。

我使用docker容器通过ansible playbook进行了第一次设置,效果很好。但是,我无法获得与docker-compose相同的行为。这是我写的docker-compose文件。

代码语言:javascript
复制
version: "3.5"

services:
  revproxy:
    image: nginx:alpine
    depends_on:
      - jenkins_ci
    networks:
      - proxy
    ports:
      - "90:8080"
      - "443:443"
    volumes:
      - /home/vagrant/dockerResources/etc/certs:/etc/nginx/certs
      - /home/vagrant/dockerResources/etc/nginx/conf.d/reverse_proxy.conf:/etc/nginx/conf.d/reverse_proxy.conf
  jenkins_ci:
    image: jenkins/jenkins:lts
    networks:
      - proxy
networks:
  proxy:
    name: revProxy
    internal: yes

在检查jenkins_ci容器时,我可以找到它的IP,并将浏览器指向这个端口为8080的IP。这是我不想做的。我希望jenkins容器只能通过nginx反向代理地址访问。

如果有人能给我一个提示。

EN

回答 1

Stack Overflow用户

发布于 2019-09-26 17:45:02

我终于找到了解决我的问题的办法。知道jenkins镜像的默认暴露端口是8080,我已经设置了:

代码语言:javascript
复制
ports:
  - "8080"

在docker-compose文件中的jenkins_ci服务定义上。

现在,我可以看到jenkins_ci容器没有更多的IP地址了。尽管如此,它仍然可以从另一个容器(这里是nginx容器)访问,这要归功于服务名称(所以jenkins_ci)。

我在这个question中找到了解决方案。

不幸的是,在docker-compose port syntax section中不能调用声明公开的端口号而没有其公共对应物来隐藏公开的端口(因此,如果根本没有公开的端口,还会隐藏IP )。

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

https://stackoverflow.com/questions/58113342

复制
相关文章

相似问题

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