diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..2fb60d7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,50 @@ +# Binaries for programs and plugins +*.exe +*.dll +*.so +*.dylib +.idea/* + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 +.glide/ + +# dep related files and folders +/vendor* + +# ignore logfiles (/* so the .gitkeep override works) +/logs/* + +# ignore configuration file +/config.yml + +# Ignore Vagrant stuff +/.vagrant + +# Builds by gox +/build + +# Go Coverage tool +/coverage.out + +# The built executable +wings +wings.exe + +# IDE/Editor files (VS Code) +/.vscode + +# test files +test_*/ + +# Keep all gitkeep files (This needs to stay at the bottom) +!.gitkeep +debug +.DS_Store +*.pprof +*.pdf diff --git a/.gitignore b/.gitignore index 62d62dd..a98e257 100644 --- a/.gitignore +++ b/.gitignore @@ -45,7 +45,6 @@ test_*/ # Keep all gitkeep files (This needs to stay at the bottom) !.gitkeep debug -data/.states.json .DS_Store *.pprof -*.pdf \ No newline at end of file +*.pdf diff --git a/Dockerfile b/Dockerfile index 0880586..26a65cc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,40 @@ -FROM golang:1.15-alpine -ARG VERSION="develop" -COPY . /go/wings/ -WORKDIR /go/wings/ -RUN apk add --no-cache upx \ - && CGO_ENABLED=0 go build -ldflags="-s -w -X github.com/pterodactyl/wings/system.Version=${VERSION}" \ - && upx wings +# Stage 1 (Build) +FROM golang:1.15-alpine3.12 AS builder -FROM alpine:latest -COPY --from=0 /go/wings/wings /usr/bin/ -CMD ["wings", "--config", "/etc/pterodactyl/config.yml"] \ No newline at end of file +ARG VERSION + +RUN apk add --update --no-cache git=2.26.2-r0 make=4.3-r0 upx=3.96-r0 + +WORKDIR /app/ + +COPY go.mod go.sum /app/ +RUN go mod download + +COPY . /app/ + +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ + -ldflags="-s -w -X github.com/pterodactyl/wings/system.Version=$VERSION" \ + -v \ + -trimpath \ + -o wings \ + wings.go + +RUN upx wings + +# --------------------------------------- # + +# Stage 2 (Final) +FROM busybox:1.32.0 + +LABEL org.opencontainers.image.title="Wings" +LABEL org.opencontainers.image.version="v1.1.3" +LABEL org.opencontainers.image.description="Server control layer for Pterodactyl" +LABEL org.opencontainers.image.url="https://pterodactyl.io" +LABEL org.opencontainers.image.documentation="https://pterodactyl.io/project/introduction.html" +LABEL org.opencontainers.image.vendor="Pterodactyl Software" +LABEL org.opencontainers.image.source="https://github.com/pterodactyl/wings" +LABEL org.opencontainers.image.licenses="MIT" + +COPY --from=builder /app/wings /usr/bin/ + +CMD [ "wings", "--config", "/etc/pterodactyl/config.yml" ]