【发布时间】:2019-09-26 09:10:04
【问题描述】:
作为一个训练模型,我试图在 nginx 反向代理后面设置一个 jenkins 实例,同时确保 https。 所以我为 nginx 创建了一个容器,为 jenkins 创建了一个容器。我已经成功了,包括带有(自动签名)证书的 nginx 配置。 我可以使用 https 和我机器上的 nginx 容器 ip 访问 jenkins 实例。 但我的最终目标是完全隔离 jenkins 容器,使其根本无法从“外部”到达。而这并没有实现。 官方镜像中声明的默认端口为8080,我仍然可以通过jenkins容器IP和8080端口访问jenkins实例。
我使用 docker 容器通过 ansible playbook 进行了第一次设置,它运行良好。 但是,我无法使用 docker-compose 获得相同的行为。 这是我写的 docker-compose 文件。
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 反向代理地址访问。
如果有人可以给我一个提示。
【问题讨论】:
-
你不能改变它,隔离将使用只允许 nginx 端口的防火墙,我不知道另一种可能的方式