通过ip vs端口暴露访问docker容器

时间:2017-11-08 14:37:19

标签: docker docker-compose wildfly

我确实有一个DOCKER_HOST:

DOCKER_HOST=tcp://g3-docker-1:2375

由TLS担保。在这个主机上我可以有一个很好的观点" jboss / wildfly"容器在不同的配置和加载不同的应用程序。一些人可以根据软件测试目的启动它们。使用以下docker-compose:

version: '2'
services:

    wildfly:
        build:
            dockerfile: Dockerfile.wildfly
            context: .
        ports:
                - "8080:8080"
        depends_on:
            - logvolume
            - mariadb
        volumes_from:
            - logvolume

    mariadb:
        image: mariadb:latest
        ports:
            - "3307:3307"
        environment:
            - MYSQL_ROOT_PASSWORD=secret

    logvolume:
        build: 
          dockerfile: Dockerfile.logvolume
          context: .
        volumes:
            - /opt/jboss/wildfly/standalone/log:/opt/jboss/wildfly/standalone/log

我打算构建一个视图容器,每个容器都有不同的预加载数据和不同的webapps" wildfly"

当我启动这些容器时,每个容器都会在_dirname_default网络(桥接)中分配一个IP地址。使用$ DOCKER_HOST:8080可以通过外部世界访问Jboss,并且可以访问maria_db这么好......  但是,如果我有几个这样的话怎么办?我是否必须将不同的端口映射到不同的野生蝇,或者是否有其他方式通过外部访问dockerized wildflys,例如。通过containerid左右?

1 个答案:

答案 0 :(得分:1)

我现在使用nginx作为反向代理,以便根据要与哪个野生动物交谈的网址来决定

这需要docker-compose.yml中的附加服务,如下所示:

reverseproxy:
    build:
        dockerfile: Dockerfile.nginx
        context: .
    ports:
        - 80:80
    depends_on:
        - wildfly

以及以下nginx.conf:

worker_processes 1;
events { worker_connections 1024; }
http {
    sendfile on;
    upstream docker-wildfly {
        server wildfly:8080;
    }
    server {
        listen 80;
        location /wildfly/ {
            proxy_pass         http://docker-wildfly/;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
        }
    }

}

每只野生动物都会获得自己的位置