diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..847868aa --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +############################ +# STEP 1 build executable binary +############################ +FROM golang:alpine AS builder +RUN apk update && apk add --no-cache git bash wget +WORKDIR /go/src/v2ray.com/core +RUN git clone --progress --depth=1 --branch dockerdev https://github.com/v2fly/v2ray-core.git . && \ + bash -x ./release/user-package.sh nosource noconf abpathtgz=/tmp/v2ray.tgz +############################ +# STEP 2 build a small image +############################ +FROM alpine +COPY --from=builder /tmp/v2ray.tgz /tmp +RUN apk update && apk add ca-certificates && \ + mkdir -p /usr/bin/v2ray && \ + tar xvfz /tmp/v2ray.tgz -C /usr/bin/v2ray +ENTRYPOINT ["/usr/bin/v2ray/v2ray"] diff --git a/release/user-package.sh b/release/user-package.sh index 06c32c8a..37265ff4 100755 --- a/release/user-package.sh +++ b/release/user-package.sh @@ -86,6 +86,14 @@ packtgz() { echo ">>> Generated: $(basename $PKG)" } +packtgzAbPath() { + local ABPATH="$1" + echo ">>> Generating tgz package at $ABPATH" + pushd $TMP + tar cvfz $ABPATH . + echo ">>> Generated: $ABPATH" +} + pkg=zip nosource=0 @@ -127,6 +135,9 @@ case $arg in tgz) pkg=tgz ;; + abpathtgz=*) + pkg=${arg##abpathtgz=} + ;; esac done @@ -147,11 +158,12 @@ fi if [[ $pkg == "zip" ]]; then packzip -fi - -if [[ $pkg == "tgz" ]]; then +elif [[ $pkg == "tgz" ]]; then packtgz +else + packtgzAbPath $pkg fi + cleanup