Piping into a Docker container
Here’s how you can write docker images that you can pipe into:
Dockerfile, here I’m installing the go programs I’m going to run and pipe into:
FROM golang
RUN go get github.com/segmentio/throttle
RUN go get github.com/segmentio/json_to_nsq
COPY entrypoint.sh /entrypoint.sh
CMD ["/bin/sh", "/entrypoint.sh"]
entrypoint.sh, here I’m reading from stdin and piping into the programs I want to run:
rate=${2:-50}
addr=${3:-nsqd:4150}
echo "Sending events to $addr at the rate of $rate/s"
cat - \
| throttle $rate \
| json_to_nsq -t events -a "$addr"
And here’s how to run it (assuming the image is called events
):
cat events.json | docker run -it events