Zurl Webhook Server
Created from fork of http://github.com/fanout/zurl
Read more about it at http://blog.fanout.io/2014/10/03/calling-webhooks-asynchronously-with-zurl/
Dockerized HTTP and WebSocket client worker with ZeroMQ interface.
Zurl is offered under the GNU GPL. See the COPYING file.
- Request HTTP and HTTPS URLs
- Connect to WS and WSS URLs for WebSockets
- Completely event-driven, using JDNS and Libcurl
- Handle thousands of simultaneous outbound connections
- Two access methods: REQ and PUSH/SUB (think Mongrel2 in reverse!)
- Streaming requests and responses
- Packet format can be JSON or TNetStrings
- Set access policies (e.g. block requests to 10.*)
Clients interacting with Zurl need to read and write to a handful of sockets the container is listening on. In order to accomplish this, you will need to either bind-mount the Zurl container to the local file system, or you will need to volume mount the Zurl container to the client's container.
To start the container and access the socket from the local system
docker run -d -v /private/tmp:/tmp --name zurl-server zurl docker run -it -v /private:tmp:/tmp zurl python tools/get.py http://fanout.io/
Then to volume mount the container
docker run -d -v /private/tmp:/tmp --name zurl-server zurl docker run -it --volumes-from="zurl-server" zurl python tools/get.py http://fanout.io/
- Make sure the container has a valid hostname for validating the white list and black list.
- If running on through boot2docker, the server will not be accessible because of issues access bind-mounted volumes as sockets.
- The published image is a little inflated due to python being installed to run the test suite included in the github repo. You can comment out these lines in the Dockerfile and rebuild for a smaller image.