refine image build scripts

This commit is contained in:
chigusa committed 2021-06-15 12:51:31 +08:00
1 parent 17bcad9c92
commit 0983eec192
2 files changed
+22 -51

No files matched your search

+10 -9
View File
@@ -12,15 +12,6 @@ script:
- make test
before_deploy:
- go install github.com/golang/mock/mockgen
- curl -fsSL https://get.docker.com | sh
- echo '{"experimental":"enabled"}' | sudo tee /etc/docker/daemon.json
- mkdir -p $HOME/.docker
- echo '{"experimental":"enabled"}' | sudo tee $HOME/.docker/config.json
- sudo service docker start
- docker run --rm --privileged multiarch/qemu-user-static:register --reset -p yes
- docker buildx create --name xbuilder --use
- docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
- make release-docker
- openssl aes-256-cbc -K $encrypted_442f41e226a3_key -iv $encrypted_442f41e226a3_iv -in .ci/sign.gpg.enc -out .ci/sign.gpg -d
- gpg --batch --import .ci/sign.gpg
- rm .ci/sign.gpg
@@ -34,3 +25,13 @@ deploy:
file: "bin/*"
on:
tags: true
after_deploy:
- curl -fsSL https://get.docker.com | sh
- echo '{"experimental":"enabled"}' | sudo tee /etc/docker/daemon.json
- mkdir -p $HOME/.docker
- echo '{"experimental":"enabled"}' | sudo tee $HOME/.docker/config.json
- sudo service docker start
- docker run --rm --privileged multiarch/qemu-user-static:register --reset -p yes
- docker buildx create --name xbuilder --use
- docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
- make release-docker
+12 -42
View File
@@ -1,58 +1,28 @@
# syntax = docker/dockerfile:experimental
# Build Frontend Start
# NOTE: Yarn has problems executing on ARM, so build on x86.
FROM --platform=linux/amd64 node:15.11.0-alpine as NODE_BUILD
ARG BUILDPLATFORM
ARG TARGETPLATFORM
ARG tag
RUN apk update && \
apk add git yarn make && \
git clone -b $tag --depth 1 https://github.com/hr3lxphr6j/bililive-go.git /bililive-go && \
cd /bililive-go && \
make build-web
# Build Frontend End
# Build Backend Start
FROM golang:1.16.4-alpine AS GO_BUILD
COPY --from=NODE_BUILD /bililive-go/ /go/src/github.com/hr3lxphr6j/bililive-go/
RUN --mount=type=cache,target=/go/pkg apk update && \
apk add git make && \
go get github.com/golang/mock/mockgen && \
cd /go/src/github.com/hr3lxphr6j/bililive-go && \
make generate bililive && \
mv bin/bililive-linux-* bin/bililive-go
# Build Backend End
# Build Runtime Image Start
FROM alpine
ARG tag
ENV OUTPUT_DIR="/srv/bililive" \
CONF_DIR="/etc/bililive-go" \
PORT=8080
EXPOSE $PORT
RUN mkdir -p $OUTPUT_DIR && \
mkdir -p $CONF_DIR && \
apk update && \
apk --no-cache add ffmpeg libc6-compat curl tzdata && \
cp -r -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN sh -c "case $(arch) in aarch64) go_arch=arm64 ;; arm*) go_arch=arm ;; i386|i686) go_arch=386 ;; x86_64) go_arch=amd64;; esac && \
cd /tmp && curl -sSLO https://github.com/hr3lxphr6j/bililive-go/releases/download/$tag/bililive-linux-\${go_arch}.tar.gz && \
tar zxvf bililive-linux-\${go_arch}.tar.gz && \
chmod +x bililive-linux-\${go_arch} && \
mv ./bililive-linux-\${go_arch} /usr/bin/bililive-go && \
mv ./config.yml $CONF_DIR/config.yml && \
rm ./bililive-linux-\${go_arch}.tar.gz" && \
sh -c "if [ $tag != $(/usr/bin/bililive-go --version | tr -d '\n') ]; then return 1; fi"
VOLUME $OUTPUT_DIR
COPY --from=GO_BUILD /go/src/github.com/hr3lxphr6j/bililive-go/bin/bililive-go /usr/bin/bililive-go
ADD config.docker.yml $CONF_DIR/config.yml
EXPOSE $PORT
ENTRYPOINT ["/usr/bin/bililive-go"]
CMD ["-c", "/etc/bililive-go/config.yml"]
# Build Runtime Image End
CMD ["-c", "$CONF_DIR/config.yml"]