45 lines
1.6 KiB
Docker
45 lines
1.6 KiB
Docker
# syntax=docker/dockerfile:1.2
|
||
FROM golang:1.22-alpine as base
|
||
ENV GO111MODULE on
|
||
ENV GOPROXY=https://goproxy.io
|
||
WORKDIR /src
|
||
# 通过提前运行go mod download可以使用cache编译,避免每次编译都下载,加快编译速度
|
||
# COPY go.mod go.sum ./
|
||
RUN --mount=type=cache,target=/go/pkg/mod/ \
|
||
--mount=type=bind,source=/go.sum,target=/go.sum \
|
||
--mount=type=bind,source=/go.mod,target=/go.mod \
|
||
go mod download -x
|
||
COPY . .
|
||
|
||
FROM base AS build-client
|
||
RUN --mount=type=cache,target=/go/pkg/mod/ \
|
||
GOOS=linux CGO_ENABLED=0 go build -o /bin/adapt -ldflags="-w -s"
|
||
|
||
|
||
# 生成alpine部署容器
|
||
FROM scratch as client
|
||
LABEL MAINTAINER='LIU Peng<liupeng@daymele.com>'
|
||
WORKDIR /
|
||
COPY --from=build-client /bin/adapt /adapt
|
||
|
||
# 健康检测
|
||
ADD ./hc.sh /root/healthcheck.sh
|
||
HEALTHCHECK --start-period=60s --interval=15s --timeout=5s --retries=3 CMD /bin/ash /root/healthcheck.sh
|
||
|
||
# 时区处理(方法一:需要提前准备下两条,scratch和alpine都可以使用)
|
||
# tar cfz zoneinfo.tar.gz /usr/share/zoneinfo
|
||
# cp /usr/share/zoneinfo/PRC PRC
|
||
ADD PRC /etc/localtime
|
||
ADD zoneinfo.tar.gz /
|
||
# 设置时区为上海
|
||
#RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
|
||
#RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
|
||
# && echo "Asia/Shanghai" > /etc/timezone \
|
||
# && apk del tzdata \
|
||
# && rm -rf /var/cache/apk/*
|
||
ENTRYPOINT ["/adapt","-port","9000","-conf","/conf/daymele.conf"]
|
||
EXPOSE 9000
|
||
|
||
# docker image prune 删除悬虚镜像
|
||
# docker run --name res -d -p 7000:7011 -v /mnt/resdata:/data dev.daymele.com:5000/res --restart always
|