From 5b923465c7744cecd75f789e4b828c7197d4bdb8 Mon Sep 17 00:00:00 2001 From: colachg Date: Fri, 8 May 2020 10:22:18 +0800 Subject: [PATCH 1/2] Update Dockerfile and add docker build action --- .github/workflows/docker-build.yml | 49 ++++++++++++++++++++++++++++++ docker/Dockerfile | 15 +++++++++ docker/full.dockerfile | 15 --------- docker/server-mysql.dockerfile | 4 +-- docker/server-redis.dockerfile | 4 +-- docker/server.dockerfile | 4 +-- 6 files changed, 70 insertions(+), 21 deletions(-) create mode 100644 .github/workflows/docker-build.yml create mode 100644 docker/Dockerfile delete mode 100644 docker/full.dockerfile diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml new file mode 100644 index 0000000..5159d4c --- /dev/null +++ b/.github/workflows/docker-build.yml @@ -0,0 +1,49 @@ +on: + push: + branches: + - master + pull_request: + branches: + - master +name: docker-build +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout the code + uses: actions/checkout@v1 + + - name: Dockerhub login + env: + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + run: | + echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin + + - name: Prepare + id: prepare + run: | + if [[ $GITHUB_REF == refs/tags/* ]]; then + echo ::set-output name=version::${GITHUB_REF#refs/tags/v} + else + echo ::set-output name=version::snapshot + fi +# echo ::set-output name=build_date::v$(date -u +'%Y%m%d') + echo ::set-output name=docker_platforms::linux/arm/v7,linux/amd64 + echo ::set-output name=docker_image::${{ secrets.DOCKER_USERNAME }}/trojan-go + + - name: Set up Docker Buildx + id: buildx + uses: crazy-max/ghaction-docker-buildx@v1 + with: + version: latest + + - name: Build and push docker image + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + run: | + docker buildx build --platform ${{ steps.prepare.outputs.docker_platforms }} \ + --output "type=image,push=true" \ + --tag "${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ + --tag "${{ steps.prepare.outputs.docker_image }}:latest" \ + --file docker/Dockerfile . \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..e82dfbe --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,15 @@ +FROM golang:alpine AS builder +WORKDIR / +RUN apk add --update git &&\ + git clone --depth=1 https://github.com/p4gefau1t/trojan-go.git &&\ + cd trojan-go && mkdir release && go build -tags "full" -ldflags "-s -w" -o release &&\ + wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O release/geosite.dat &&\ + wget https://github.com/v2ray/geoip/raw/release/geoip.dat -O release/geoip.dat + +FROM alpine +WORKDIR / +COPY --from=builder /trojan-go/release /usr/local/bin/ +COPY example/server.json /etc/ + +ENTRYPOINT ["/usr/local/bin/trojan-go", "-config"] +CMD ["/etc/server.json"] \ No newline at end of file diff --git a/docker/full.dockerfile b/docker/full.dockerfile deleted file mode 100644 index e079994..0000000 --- a/docker/full.dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM golang:latest AS builder - -WORKDIR / -RUN git clone --depth=1 https://github.com/p4gefau1t/trojan-go.git -WORKDIR /trojan-go -RUN mkdir release && go build -tags "full" -ldflags "-s -w" -o release -RUN wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O release/geosite.dat \ -&& wget https://github.com/v2ray/geoip/raw/release/geoip.dat -O release/geoip.dat - -FROM debian:buster-slim -WORKDIR / -COPY --from=builder /trojan-go/release /trojan-go/ - -ENTRYPOINT ["/trojan-go/trojan-go", "-config"] -CMD ["/config/config.json"] \ No newline at end of file diff --git a/docker/server-mysql.dockerfile b/docker/server-mysql.dockerfile index b5df9d8..1effe71 100644 --- a/docker/server-mysql.dockerfile +++ b/docker/server-mysql.dockerfile @@ -1,11 +1,11 @@ -FROM golang:latest AS builder +FROM golang:alpine AS builder WORKDIR / RUN git clone --depth=1 https://github.com/p4gefau1t/trojan-go.git WORKDIR /trojan-go RUN go build -tags "server auth_mysql" -ldflags "-s -w" -o /trojan -FROM debian:buster-slim +FROM alpine WORKDIR /root/ COPY --from=builder /trojan . CMD ["./trojan"] diff --git a/docker/server-redis.dockerfile b/docker/server-redis.dockerfile index 4b9828a..7af3dce 100644 --- a/docker/server-redis.dockerfile +++ b/docker/server-redis.dockerfile @@ -1,11 +1,11 @@ -FROM golang:latest AS builder +FROM golang:alpine AS builder WORKDIR / RUN git clone --depth=1 https://github.com/p4gefau1t/trojan-go.git WORKDIR /trojan-go RUN go build -tags "server auth_redis" -ldflags "-s -w" -o /trojan -FROM debian:buster-slim +FROM alpine WORKDIR /root/ COPY --from=builder /trojan . CMD ["./trojan"] diff --git a/docker/server.dockerfile b/docker/server.dockerfile index da56eca..959cad8 100644 --- a/docker/server.dockerfile +++ b/docker/server.dockerfile @@ -1,11 +1,11 @@ -FROM golang:latest AS builder +FROM golang:alpine AS builder WORKDIR / RUN git clone --depth=1 https://github.com/p4gefau1t/trojan-go.git WORKDIR /trojan-go RUN go build -tags "server auth_config" -ldflags "-s -w" -o /trojan -FROM debian:buster-slim +FROM alpine WORKDIR /root/ COPY --from=builder /trojan . CMD ["./trojan"] From de667e6e20dcc0452a006b4445a28b9a129dae1c Mon Sep 17 00:00:00 2001 From: colachg Date: Fri, 8 May 2020 10:47:50 +0800 Subject: [PATCH 2/2] Remove docker dir --- .github/workflows/docker-build.yml | 2 +- docker/Dockerfile => Dockerfile | 0 docker/server-mysql.dockerfile | 11 ----------- docker/server-redis.dockerfile | 11 ----------- docker/server.dockerfile | 11 ----------- 5 files changed, 1 insertion(+), 34 deletions(-) rename docker/Dockerfile => Dockerfile (100%) delete mode 100644 docker/server-mysql.dockerfile delete mode 100644 docker/server-redis.dockerfile delete mode 100644 docker/server.dockerfile diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 5159d4c..5620a9e 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -46,4 +46,4 @@ jobs: --output "type=image,push=true" \ --tag "${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ --tag "${{ steps.prepare.outputs.docker_image }}:latest" \ - --file docker/Dockerfile . \ No newline at end of file + --file Dockerfile . \ No newline at end of file diff --git a/docker/Dockerfile b/Dockerfile similarity index 100% rename from docker/Dockerfile rename to Dockerfile diff --git a/docker/server-mysql.dockerfile b/docker/server-mysql.dockerfile deleted file mode 100644 index 1effe71..0000000 --- a/docker/server-mysql.dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM golang:alpine AS builder - -WORKDIR / -RUN git clone --depth=1 https://github.com/p4gefau1t/trojan-go.git -WORKDIR /trojan-go -RUN go build -tags "server auth_mysql" -ldflags "-s -w" -o /trojan - -FROM alpine -WORKDIR /root/ -COPY --from=builder /trojan . -CMD ["./trojan"] diff --git a/docker/server-redis.dockerfile b/docker/server-redis.dockerfile deleted file mode 100644 index 7af3dce..0000000 --- a/docker/server-redis.dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM golang:alpine AS builder - -WORKDIR / -RUN git clone --depth=1 https://github.com/p4gefau1t/trojan-go.git -WORKDIR /trojan-go -RUN go build -tags "server auth_redis" -ldflags "-s -w" -o /trojan - -FROM alpine -WORKDIR /root/ -COPY --from=builder /trojan . -CMD ["./trojan"] diff --git a/docker/server.dockerfile b/docker/server.dockerfile deleted file mode 100644 index 959cad8..0000000 --- a/docker/server.dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM golang:alpine AS builder - -WORKDIR / -RUN git clone --depth=1 https://github.com/p4gefau1t/trojan-go.git -WORKDIR /trojan-go -RUN go build -tags "server auth_config" -ldflags "-s -w" -o /trojan - -FROM alpine -WORKDIR /root/ -COPY --from=builder /trojan . -CMD ["./trojan"]