Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com>
81 lines
2.1 KiB
Docker
81 lines
2.1 KiB
Docker
#docker build -t bililive-go:build . -f Dockerfile.build-and-run
|
|
FROM golang:1.25.0-bullseye AS builder
|
|
|
|
WORKDIR /build
|
|
|
|
#安装tar解压xz需要的xz-utils和构建web页面所需的yarn
|
|
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
|
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
|
|
apt-get update && \
|
|
apt-get install -y yarn xz-utils
|
|
|
|
|
|
#根据架构安装构建web页面所需的node.js
|
|
RUN ARCH=$(uname -m) && \
|
|
if [ $ARCH = 'x86_64' ]; then \
|
|
NODE_ARCH='x64'; \
|
|
elif [ $ARCH = 'aarch64' ]; then \
|
|
NODE_ARCH='arm64'; \
|
|
else \
|
|
echo '不支持的架构: $ARCH'; \
|
|
fi && \
|
|
wget https://nodejs.org/dist/v18.20.3/node-v18.20.3-linux-${NODE_ARCH}.tar.xz && \
|
|
tar Jxvf /build/node-v18.20.3-linux-${NODE_ARCH}.tar.xz && \
|
|
rm -rf /usr/bin/node /usr/bin/npm && \
|
|
ln -s /build/node-v18.20.3-linux-${NODE_ARCH}/bin/node /usr/bin/node && \
|
|
ln -s /build/node-v18.20.3-linux-${NODE_ARCH}/bin/npm /usr/bin/npm
|
|
|
|
COPY . .
|
|
|
|
#配置golang编译环境并进行构建
|
|
RUN go env -w GO111MODULE=on && \
|
|
make build-web && \
|
|
make
|
|
|
|
RUN sh -c "/build/bin/bililive* --version"
|
|
|
|
|
|
FROM ubuntu:22.04
|
|
|
|
ARG tag
|
|
|
|
ENV WORKDIR="/srv/bililive"
|
|
ENV OUTPUT_DIR="/srv/bililive" \
|
|
CONF_DIR="/etc/bililive-go" \
|
|
PORT=8080
|
|
|
|
ENV PUID=0 PGID=0 UMASK=022
|
|
|
|
RUN mkdir -p $OUTPUT_DIR && \
|
|
mkdir -p $CONF_DIR && \
|
|
apt-get update && \
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
ffmpeg \
|
|
curl \
|
|
tzdata \
|
|
ca-certificates && \
|
|
sh -c '\
|
|
if [ "$(dpkg --print-architecture)" = "armhf" ]; then \
|
|
echo "skip gosu for armhf"; \
|
|
else \
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gosu; \
|
|
fi' && \
|
|
cp -r -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
|
|
apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=builder /build/bin/bililive* /usr/bin/bililive-go
|
|
|
|
|
|
COPY config.docker.yml $CONF_DIR/config.yml
|
|
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
VOLUME $OUTPUT_DIR
|
|
|
|
EXPOSE $PORT
|
|
|
|
WORKDIR ${WORKDIR}
|
|
ENTRYPOINT [ "sh" ]
|
|
CMD [ "/entrypoint.sh" ]
|