From 5d127582f3dbd6b36eeb37c98e1a97163728ae5d Mon Sep 17 00:00:00 2001 From: NetworksAreMadeOfString Date: Mon, 9 Aug 2021 22:32:30 +0100 Subject: [PATCH 1/5] 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"] + From fcd038487e93d4add9f745089000835cc59a5bc0 Mon Sep 17 00:00:00 2001 From: NetworksAreMadeOfString Date: Tue, 10 Aug 2021 12:56:00 +0100 Subject: [PATCH 2/5] Tidy up Dockerfile before PR --- docker/Dockerfile | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 21835cb..02edc7b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,6 @@ FROM alpine:latest as tor-build-stage -# Install prerequisites +# Install prerequisites, grab tor, compile it and move to /usr/local RUN apk --no-cache add --update \ gnupg \ build-base \ @@ -26,24 +26,28 @@ RUN apk --no-cache add --update \ #----------------------------------------------- FROM golang:alpine as cwtch-build-stage +# Need additional packages for cgo etc RUN apk --no-cache add --update gcc build-base + +# Copy source files from the repo to /go/src COPY . src/ + +#Build Cwtch RUN cd src/app && go build FROM alpine:latest -#BSD habits die hard +#Specify user account aliases ENV TOR_USER=_tor CWTCH_USER=_cwtch -# Installing dependencies of Tor and pwgen +# Installing dependencies of Tor RUN apk --no-cache add --update \ libevent \ libressl \ xz-libs \ zlib \ zstd \ - zstd-dev \ - pwgen + zstd-dev # Copy Tor COPY --from=tor-build-stage /usr/local/ /usr/local/ @@ -51,7 +55,7 @@ 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 +# Create unprivileged users 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 From ed0aa2846d0871d5887dbc0a40cdd021b3ea004a Mon Sep 17 00:00:00 2001 From: NetworksAreMadeOfString Date: Tue, 10 Aug 2021 21:25:55 +0100 Subject: [PATCH 3/5] Resolve comments on PR --- docker/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 02edc7b..83e5bb3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -56,7 +56,7 @@ COPY --from=tor-build-stage /usr/local/ /usr/local/ COPY --from=cwtch-build-stage /go/src/app/app /usr/local/bin/cwtch # Create unprivileged users -RUN mkdir -p /run/tor && mkdir /etc/cwtch && addgroup -S $TOR_USER && adduser -G $TOR_USER -S $TOR_USER && adduser -S $CWTCH_USER +RUN mkdir -p /run/tor && mkdir /var/lib/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 @@ -65,9 +65,9 @@ COPY ./docker/torrc /etc/tor/torrc COPY ./docker/docker-entrypoint /usr/local/bin/ # Persist data -VOLUME /etc/tor /var/lib/tor /etc/cwtch +VOLUME /etc/tor /var/lib/tor /var/lib/cwtch ENTRYPOINT ["docker-entrypoint"] #USER $CWTCH_USER -CMD ["/usr/local/bin/cwtch"] +CMD ["env CWTCH_HOME=/var/lib/cwtch /usr/local/bin/cwtch --exportTofuBundle"] From b929e7734c9659c45f4900eb9735e0db0e67973c Mon Sep 17 00:00:00 2001 From: NetworksAreMadeOfString Date: Tue, 10 Aug 2021 22:06:26 +0100 Subject: [PATCH 4/5] Fix CMD line --- docker/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 83e5bb3..fbfe6d3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -38,7 +38,7 @@ RUN cd src/app && go build FROM alpine:latest #Specify user account aliases -ENV TOR_USER=_tor CWTCH_USER=_cwtch +ENV TOR_USER=_tor CWTCH_USER=_cwtch CWTCH_HOME=/var/lib/cwtch # Installing dependencies of Tor RUN apk --no-cache add --update \ @@ -69,5 +69,6 @@ VOLUME /etc/tor /var/lib/tor /var/lib/cwtch ENTRYPOINT ["docker-entrypoint"] #USER $CWTCH_USER -CMD ["env CWTCH_HOME=/var/lib/cwtch /usr/local/bin/cwtch --exportTofuBundle"] +#CMD ["/usr/local/bin/cwtch --exportTofuBundle"] +CMD ["/usr/local/bin/cwtch","--exportTofuBundle"] From 52353ca89bfd5636f9788dd312def7ad0d16f1b8 Mon Sep 17 00:00:00 2001 From: NetworksAreMadeOfString Date: Tue, 10 Aug 2021 22:11:18 +0100 Subject: [PATCH 5/5] Tidy up comments --- docker/Dockerfile | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index fbfe6d3..6fb3a9e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -21,10 +21,6 @@ RUN apk --no-cache add --update \ && make install \ && ls -R /usr/local/ -#----------------------------------------------- -# Build CWTCH -#----------------------------------------------- - FROM golang:alpine as cwtch-build-stage # Need additional packages for cgo etc RUN apk --no-cache add --update gcc build-base @@ -37,7 +33,7 @@ RUN cd src/app && go build FROM alpine:latest -#Specify user account aliases +#Specify various env vars ENV TOR_USER=_tor CWTCH_USER=_cwtch CWTCH_HOME=/var/lib/cwtch # Installing dependencies of Tor @@ -68,7 +64,5 @@ COPY ./docker/docker-entrypoint /usr/local/bin/ VOLUME /etc/tor /var/lib/tor /var/lib/cwtch ENTRYPOINT ["docker-entrypoint"] -#USER $CWTCH_USER -#CMD ["/usr/local/bin/cwtch --exportTofuBundle"] CMD ["/usr/local/bin/cwtch","--exportTofuBundle"]