我正在尝试在jwilder / nginx-proxy后面运行sonatype / nexus3,并将其用作maven和docker私有repo。 我想将nxx代理nexus子域代理到nexus容器的端口8081,并将docker子域代理到同一容器的端口8082。这可能吗?
首先,我使用Let的加密证书使maven部分在没有问题的情况下使用nexus.mydomain.com
而不是TSL:
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
我尝试覆盖在/etc/nginx/vhost.d
上挂载卷的nginx配置但没有成功。有线索吗?
答案 0 :(得分:0)
因为jwilder / nginx-proxy可以关闭容器,每个容器一个端口。您可以更新nginx-proxy模板,也可以使用两个带有socat
的容器来将tcp通信代理到适当的端口。
我将端口8082更改为5000(这是docker注册表的标准设置)
请参见示例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=5000