diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a1aa448 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +# Builds the Gas scanner with 'docker build' command, and runs Gas on all Go +# files in your current directory with 'docker run' command. +# +# Docker version must be 17.05 or higher to allow multistage build +# + +FROM golang:1.8.1-alpine as builder +ENV workspace /go/src/github.com/GoASTScanner/gas +COPY . $workspace +WORKDIR $workspace + +RUN go vet $(go list ./... | grep -v /vendor/) +RUN CGO_ENABLED=0 go build -o gas . + +FROM alpine:3.6 + +LABEL MAINTAINER="David Graves " + +COPY --from=builder /go/src/github.com/GoASTScanner/gas/gas / + +# Mounted directory should be placed into the workdir +CMD /gas $(find . -path ./vendor -prune -o -type f -name "*.go") diff --git a/README.md b/README.md index 23a824a..81c2ed5 100644 --- a/README.md +++ b/README.md @@ -112,3 +112,20 @@ file. The output format is controlled by the '-fmt' flag, and the output file is # Write output in json format to results.json $ gas -fmt=json -out=results.json *.go ``` + +### Docker container + +A Dockerfile is included with the Gas source code to provide a container that +allows users to easily run Gas on their code. It builds Gas, then runs it on +all Go files in your current directory. Use the following commands to build +and run locally: + +To build: (run command in cloned Gas source code directory) + docker build --build-arg http_proxy --build-arg https_proxy + --build-arg no_proxy -t goastscanner/gas:latest . + +To run: (run command in desired directory with Go files) + docker run -v $PWD:$PWD --workdir $PWD goastscanner/gas:latest + +Note: Docker version 17.05 or later is required (to permit multistage build). +```