refine image build scripts
This commit is contained in:
2 files changed
+22
-51
No files matched your search
+10
-9
@@ -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
@@ -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"]
|
||||
Reference in new issue
Block a user