我试图在jwilder/nginx-proxy后面运行sonatype/nexus3,目的是将其用作maven和docker私有repo。我想让nginx代理nexus子域名连接到的端口8081,并将代理docker子域连接到同一个容器的端口8082。这个是可能的吗?
首先,我使用“让我们加密证书”使maven部分在TSL上作为nexus.mydomain.com工作时没有问题:
docker run --restart=always --name nginx -d -p 80:80 -p 443:443 -v /root/certs/:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
docker run --restart=always -d -p 8081:8081 --name nexus -e VIRTUAL_HOST=nexus.mydomain.com -v /root/nexus-data:/nexus-data sonatype/nexus3
然后我意识到,为了让docker私有存储库运行,我需要使用额外的端口。因此,我在端口8082上创建了docker repo,并使用保存的配置重新创建了容器,公开了新端口并添加了一个子域:
docker run --restart=always -d -p 8081:8081 -p 8082:8082 --name nexus -e VIRTUAL_HOST=nexus.mydomain.com,docker.mydomain.com -v /root/nexus-data:/nexus-data sonatype/nexus3
我曾尝试覆盖nginx配置,在/etc/nginx/vhost.d上挂载一个卷,但没有成功。有什么线索吗?
发布于 2019-07-28 02:19:18
因为jwilder/nginx-proxy使用循环关闭容器和每个容器一个端口。您可以更新nginx-proxy模板,或者使用两个带有socat的容器将tcp流量代理到相应的端口。
我将端口8082更改为5000 (这是docker注册中心的标准端口)
请参见blow an example docker-compose.yml
version: '2'
services:
nexus:
image: sonatype/nexus3
expose:
- "8081"
- "5000"
environment:
- VIRTUAL_HOST=nexus.example.com
- VIRTUAL_PORT=8081
registry:
restart: always
image: alpine/socat
expose:
- "5000"
command: TCP4-LISTEN:5000,fork TCP:nexus:5000
environment:
- VIRTUAL_HOST=registry.example.com
- VIRTUAL_PORT=5000https://stackoverflow.com/questions/39353971
复制相似问题