From 5d127582f3dbd6b36eeb37c98e1a97163728ae5d Mon Sep 17 00:00:00 2001 From: NetworksAreMadeOfString Date: Mon, 9 Aug 2021 22:32:30 +0100 Subject: [PATCH] Add Dockerfile --- README.md | 2 +- docker/Dockerfile | 69 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 docker/Dockerfile diff --git a/README.md b/README.md index bc6ec0b..8a873bd 100644 --- a/README.md +++ b/README.md @@ -18,4 +18,4 @@ When run the app will output standard log lines, one of which will contain the ` ## Docker -Currently, the dockerfile is out of date and is not usable. Check back for updates. \ No newline at end of file +Build by executing `docker build -f docker/Dockerfile .` diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..21835cb --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,69 @@ +FROM alpine:latest as tor-build-stage + +# Install prerequisites +RUN apk --no-cache add --update \ + gnupg \ + build-base \ + libevent \ + libevent-dev \ + libressl \ + libressl-dev \ + xz-libs \ + xz-dev \ + zlib \ + zlib-dev \ + zstd \ + zstd-dev \ + && wget -q https://dist.torproject.org/tor-0.4.6.6.tar.gz \ + && tar xf tor-0.4.6.6.tar.gz \ + && cd tor-0.4.6.6 \ + && ./configure \ + && make install \ + && ls -R /usr/local/ + +#----------------------------------------------- +# Build CWTCH +#----------------------------------------------- + +FROM golang:alpine as cwtch-build-stage +RUN apk --no-cache add --update gcc build-base +COPY . src/ +RUN cd src/app && go build + + +FROM alpine:latest +#BSD habits die hard +ENV TOR_USER=_tor CWTCH_USER=_cwtch + +# Installing dependencies of Tor and pwgen +RUN apk --no-cache add --update \ + libevent \ + libressl \ + xz-libs \ + zlib \ + zstd \ + zstd-dev \ + pwgen + +# Copy Tor +COPY --from=tor-build-stage /usr/local/ /usr/local/ + +#Copy cwtch app +COPY --from=cwtch-build-stage /go/src/app/app /usr/local/bin/cwtch + +# Create an unprivileged tor user +RUN mkdir -p /run/tor && mkdir /etc/cwtch && addgroup -S $TOR_USER && adduser -G $TOR_USER -S $TOR_USER && adduser -S $CWTCH_USER + +# Copy Tor configuration file +COPY ./docker/torrc /etc/tor/torrc + +# Copy docker-entrypoint +COPY ./docker/docker-entrypoint /usr/local/bin/ + +# Persist data +VOLUME /etc/tor /var/lib/tor /etc/cwtch + +ENTRYPOINT ["docker-entrypoint"] +#USER $CWTCH_USER +CMD ["/usr/local/bin/cwtch"] +