i building simple proxy point server. works need find way able set hosts in clientbuilder externally using docker or maybe sort of configuration file. here have:
import java.net.inetsocketaddress import com.twitter.finagle.service import com.twitter.finagle.builder.{serverbuilder, clientbuilder} import com.twitter.finagle.http.{request, http} import com.twitter.util.future import org.jboss.netty.handler.codec.http._ object proxy extends app { val client: service[httprequest, httpresponse] = { clientbuilder() .codec(http()) .hosts("localhost:8888") .hostconnectionlimit(1) .build() } val server = { serverbuilder() .codec(http()) .bindto(new inetsocketaddress(8080)) .name("trogdor") .build(client) } } if know of way or have ideas please let me know!
if want running simple proxy in docker container , manage target host ip dynamically, can try pass target host ip through environment variable , change code this
import java.net.inetsocketaddress import com.twitter.finagle.service import com.twitter.finagle.builder.{serverbuilder, clientbuilder} import com.twitter.finagle.http.{request, http} import com.twitter.util.future import org.jboss.netty.handler.codec.http._ object proxy extends app { val target_host = sys.env.get("target_host") val client: service[httprequest, httpresponse] = { clientbuilder() .codec(http()) .hosts(target_host.getorelse("127.0.0.1:8888")) .hostconnectionlimit(1) .build() } val server = { serverbuilder() .codec(http()) .bindto(new inetsocketaddress(8080)) .name("trogdor") .build(client) } } this let code read system environment variable target_host. when done part, can try start docker container adding following parameter docker run command:
-e "target_host=127.0.0.1:8090"
for example docker run -e "target_host=127.0.0.1:8090" <docker image> <docker command>
note can change 127.0.0.1:8090 target host.
Comments
Post a Comment