diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..3424bfd6 --- /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 https://github.com/v2fly/v2ray-core.git . && \ + bash ./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..00ed3ff9 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,15 @@ case $arg in tgz) pkg=tgz ;; + abpathtgz=*) + pkg=${arg##abpathtgz=} + ;; + codename=*) + CODENAME=${arg##codename=} + ;; + buildname=*) + BUILDNAME=${arg##buildname=} + ;; esac done @@ -135,6 +152,8 @@ if [[ $nosource != 1 ]]; then fi export GOOS GOARCH +echo "Build ARGS: GOOS=${GOOS} GOARCH=${GOARCH} CODENAME=${CODENAME} BUILDNAME=${BUILDNAME}" +echo "PKG ARGS: pkg=${pkg}" build_v2 if [[ $nodat != 1 ]]; then @@ -147,11 +166,12 @@ fi if [[ $pkg == "zip" ]]; then packzip +elif [[ $pkg == "tgz" ]]; then + packtgz +else + packtgzAbPath $pkg fi -if [[ $pkg == "tgz" ]]; then - packtgz -fi cleanup