diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index e98d974..0000000 --- a/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM alpine -EXPOSE 8001 -COPY gossa /gossa -ENTRYPOINT [ "/gossa", "-h", "0.0.0.0", "/shared" ] diff --git a/Makefile b/Makefile index 7c74da0..f8d344b 100755 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ ci-watch: build-all: make embed - env GOOS=linux GOARCH=amd64 go build gossa.go + env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build gossa.go mv gossa gossa-linux64 env GOOS=linux GOARCH=arm go build gossa.go mv gossa gossa-linux-arm diff --git a/docker/build.Dockerfile b/docker/build.Dockerfile new file mode 100644 index 0000000..dc1f21c --- /dev/null +++ b/docker/build.Dockerfile @@ -0,0 +1,8 @@ +FROM golang:latest as builder +COPY . /gossaSrc +RUN cd /gossaSrc && make + +FROM alpine +EXPOSE 8001 +COPY --from=builder /gossaSrc/gossa /gossa +ENTRYPOINT [ "/gossa", "-h", "0.0.0.0", "/shared" ] diff --git a/docker/caddy.Dockerfile b/docker/caddy.Dockerfile new file mode 100644 index 0000000..013c189 --- /dev/null +++ b/docker/caddy.Dockerfile @@ -0,0 +1,22 @@ +FROM alpine + +# download and prepare caddy +RUN apk update && apk add curl ca-certificates +RUN curl -L -o caddy.tar.gz "https://github.com/mholt/caddy/releases/download/v0.11.1/caddy_v0.11.1_linux_amd64.tar.gz" +RUN tar xvzf caddy.tar.gz && mv caddy /caddy + +# download and prepare gossa +RUN curl -L -o /gossa "https://github.com/pldubouilh/gossa/releases/download/v0.0.4/gossa-linux64" +RUN chmod +x /gossa /caddy + +# Caddy config: +# * http basic auth is implemented here, with bob as user and dylan as password +# * to enable https just set a valid domain instead of *:8001 - how simple ! +RUN echo -e '\n\ + *:8001\n\ + basicauth / bob dylan\n\ + proxy / 127.0.0.1:8000\n\ +'>> /Caddyfile + +RUN echo -e '/gossa -h 127.0.0.1 -p 8000 /shared & \n /caddy'>> /start.sh +ENTRYPOINT [ "sh", "/start.sh" ] diff --git a/docker/download.Dockerfile b/docker/download.Dockerfile new file mode 100644 index 0000000..240e249 --- /dev/null +++ b/docker/download.Dockerfile @@ -0,0 +1,5 @@ +FROM alpine +EXPOSE 8001 +RUN wget https://github.com/pldubouilh/gossa/releases/download/v0.0.4/gossa-linux64 && mv gossa-linux64 /gossa && chmod +x /gossa +ENTRYPOINT [ "/gossa", "-h", "0.0.0.0", "/shared" ] + diff --git a/docker/readme.md b/docker/readme.md new file mode 100644 index 0000000..25cb0ed --- /dev/null +++ b/docker/readme.md @@ -0,0 +1,22 @@ +```sh +# download latest gossa release +docker build -t gossa -f download.Dockerfile . + +# ... or build gossa within a build container, needs to be ran within the sources, ../ from here +docker build -t gossa -f docker/build.Dockerfile . + +# and to run it simply +sudo docker run -v ~/LocalDirToShare:/shared -p 8001:8001 gossa +``` + + +a fancy docker image using [Caddy](https://caddyserver.com/) is also provided. a simple config is embedded in the docker file, and shows how to use http basic authentication, and automatic TLS for hands-free https 🎉 + +```sh +# run with caddy, checkout the config in the dockerfile +docker build -t gossa -f caddy.Dockerfile . + +# run with caddy +sudo docker run -v ~/LocalDirToShare:/shared --net=host gossa +``` + diff --git a/readme.md b/readme.md index 5e8c14b..466ed85 100644 --- a/readme.md +++ b/readme.md @@ -52,13 +52,14 @@ make |drag-and-drop external item | upload file/folders| ### using with docker -a pretty short docker file is provided +multiple dockerfiles are provided in the `docker` folder. to simply get started just have a look below + ```sh -# build docker image -make -docker build -t gossa . +# build +cd docker +docker build -t gossa -f download . # run -sudo docker run -v ~/ToShare:/shared -p 8001:8001 gossa -``` \ No newline at end of file +sudo docker run -v ~/LocalDirToShare:/shared -p 8001:8001 gossa +```