using multiple stage build for alpine. (#279)

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
This commit is contained in:
Bo-Yi Wu 2017-08-31 14:25:56 +08:00 committed by GitHub
parent 00d5d25d04
commit 064632a19e
7 changed files with 70 additions and 58 deletions

View File

@ -31,19 +31,19 @@ pipeline:
- make misspell-check - make misspell-check
- make fmt-check - make fmt-check
build: build_linux_amd64:
image: appleboy/golang-testing:1.9 image: appleboy/golang-testing:1.9
group: golang group: golang
commands: commands:
- make docker_build - make docker_build
arm64: build_linux_arm64:
image: appleboy/golang-testing:1.9 image: appleboy/golang-testing:1.9
group: golang group: golang
commands: commands:
- make docker_build_arm64 - make docker_build_arm64
arm: build_linux_arm:
image: appleboy/golang-testing:1.9 image: appleboy/golang-testing:1.9
group: golang group: golang
commands: commands:
@ -63,7 +63,6 @@ pipeline:
- .cover/coverage.txt - .cover/coverage.txt
when: when:
event: [ push, pull_request ] event: [ push, pull_request ]
status: [ success ]
release: release:
image: appleboy/golang-testing:1.9 image: appleboy/golang-testing:1.9
@ -88,24 +87,24 @@ pipeline:
branch: [ master ] branch: [ master ]
local: false local: false
publish_linux_armhf: publish_linux_arm:
image: plugins/docker image: plugins/docker
group: publish group: publish
repo: ${DRONE_REPO} repo: ${DRONE_REPO}
tags: [ 'linux-arm' ] tags: [ linux-arm ]
dockerfile: Dockerfile.armhf dockerfile: Dockerfile.arm
secrets: [ docker_username, docker_password ] secrets: [ docker_username, docker_password ]
when: when:
event: [ push ] event: [ push ]
branch: [ master ] branch: [ master ]
local: false local: false
publish_linux_aarch64: publish_linux_arm64:
image: plugins/docker image: plugins/docker
group: publish group: publish
repo: ${DRONE_REPO} repo: ${DRONE_REPO}
tags: [ 'linux-arm64' ] tags: [ linux-arm64 ]
dockerfile: Dockerfile.aarch64 dockerfile: Dockerfile.arm64
secrets: [ docker_username, docker_password ] secrets: [ docker_username, docker_password ]
when: when:
event: [ push ] event: [ push ]
@ -124,32 +123,6 @@ pipeline:
branch: [ refs/tags/* ] branch: [ refs/tags/* ]
local: false local: false
publish_tag_linux_armhf:
image: plugins/docker
group: tag
repo: ${DRONE_REPO}
tags: [ '${DRONE_TAG}-linux-arm' ]
dockerfile: Dockerfile.armhf
secrets: [ docker_username, docker_password ]
group: release
when:
event: [ tag ]
branch: [ refs/tags/* ]
local: false
publish_tag_linux_aarch64:
image: plugins/docker
group: tag
repo: ${DRONE_REPO}
tags: [ '${DRONE_TAG}-linux-arm64' ]
dockerfile: Dockerfile.aarch64
secrets: [ docker_username, docker_password ]
group: release
when:
event: [ tag ]
branch: [ refs/tags/* ]
local: false
release_tag: release_tag:
image: plugins/github-release image: plugins/github-release
secrets: [ github_release_api_key ] secrets: [ github_release_api_key ]

View File

@ -1,8 +1,22 @@
FROM centurylink/ca-certs FROM alpine:3.6 as alpine
EXPOSE 8088 RUN apk add -U --no-cache ca-certificates
FROM scratch
MAINTAINER Bo-Yi Wi <appleboy.tw@gmail.com>
ENV GODEBUG=netdns=go
COPY --from=alpine /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
LABEL org.label-schema.version=latest
LABEL org.label-schema.vcs-url="https://github.com/appleboy/gorush.git"
LABEL org.label-schema.name="Gorush"
LABEL org.label-schema.vendor="Bo-Yi Wu"
LABEL org.label-schema.schema-version="1.0"
ADD config/config.yml / ADD config/config.yml /
ADD bin/gorush / ADD bin/gorush /
EXPOSE 8088
ENTRYPOINT ["/gorush"] ENTRYPOINT ["/gorush"]
CMD ["-c", "config.yml"] CMD ["-c", "config.yml"]

View File

@ -1,10 +0,0 @@
FROM centurylink/ca-certs
ENV GODEBUG=netdns=go
EXPOSE 8088
ADD config/config.yml /
ADD bin/gorush-arm64 /gorush
ENTRYPOINT ["/gorush"]
CMD ["-c", "config.yml"]

22
Dockerfile.arm Normal file
View File

@ -0,0 +1,22 @@
FROM alpine:3.6 as alpine
RUN apk add -U --no-cache ca-certificates
FROM scratch
MAINTAINER Bo-Yi Wi <appleboy.tw@gmail.com>
ENV GODEBUG=netdns=go
COPY --from=alpine /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
LABEL org.label-schema.version=latest
LABEL org.label-schema.vcs-url="https://github.com/appleboy/gorush.git"
LABEL org.label-schema.name="Gorush"
LABEL org.label-schema.vendor="Bo-Yi Wu"
LABEL org.label-schema.schema-version="1.0"
ADD config/config.yml /
ADD bin/gorush-arm /gorush
EXPOSE 8088
ENTRYPOINT ["/gorush"]
CMD ["-c", "config.yml"]

22
Dockerfile.arm64 Normal file
View File

@ -0,0 +1,22 @@
FROM alpine:3.6 as alpine
RUN apk add -U --no-cache ca-certificates
FROM scratch
MAINTAINER Bo-Yi Wi <appleboy.tw@gmail.com>
ENV GODEBUG=netdns=go
COPY --from=alpine /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
LABEL org.label-schema.version=latest
LABEL org.label-schema.vcs-url="https://github.com/appleboy/gorush.git"
LABEL org.label-schema.name="Gorush"
LABEL org.label-schema.vendor="Bo-Yi Wu"
LABEL org.label-schema.schema-version="1.0"
ADD config/config.yml /
ADD bin/gorush-arm64 /gorush
EXPOSE 8088
ENTRYPOINT ["/gorush"]
CMD ["-c", "config.yml"]

View File

@ -1,10 +0,0 @@
FROM centurylink/ca-certs
ENV GODEBUG=netdns=go
EXPOSE 8088
ADD config/config.yml /
ADD bin/gorush-arm /gorush
ENTRYPOINT ["/gorush"]
CMD ["-c", "config.yml"]

View File

@ -167,6 +167,7 @@ docker_build:
docker_build_arm64: docker_build_arm64:
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $(GO) build -a -tags '$(TAGS)' -ldflags "$(EXTLDFLAGS)-s -w $(LDFLAGS)" -o bin/$(EXECUTABLE)-arm64 CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $(GO) build -a -tags '$(TAGS)' -ldflags "$(EXTLDFLAGS)-s -w $(LDFLAGS)" -o bin/$(EXECUTABLE)-arm64
docker_build_arm: docker_build_arm:
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 $(GO) build -a -tags '$(TAGS)' -ldflags "$(EXTLDFLAGS)-s -w $(LDFLAGS)" -o bin/$(EXECUTABLE)-arm CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 $(GO) build -a -tags '$(TAGS)' -ldflags "$(EXTLDFLAGS)-s -w $(LDFLAGS)" -o bin/$(EXECUTABLE)-arm