一、DDNS-GO镜像构建
需本地先拉取项目ddns-go
1.1 Docker Engine配置
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://hub.geekery.cn",
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io",
"https://docker.unsee.tech",
"https://docker.1panel.live",
"http://mirrors.ustc.edu.cn",
"https://docker.chenby.cn",
"http://mirror.azure.cn",
"https://dockerpull.org",
"https://dockerhub.icu",
"https://hub.rat.dev",
"https://proxy.1panel.live",
"https://docker.1panel.top",
"https://docker.m.daocloud.io",
"https://docker.1ms.run",
"https://docker.ketches.cn"
]
}
1.2 Docker file
# build stage
FROM --platform=$BUILDPLATFORM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
ARG TARGETOS TARGETARCH
# 这里GO代理改为国内的 否则可能会由于下载相关依赖超时导致构建失败
RUN apk add --no-cache git make tzdata \
&& GOPROXY='https://mirrors.aliyun.com/goproxy,direct' GOOS=$TARGETOS GOARCH=$TARGETARCH make clean build
# final stage
FROM alpine
LABEL name=ddns-go
LABEL url=https://github.com/jeessy2/ddns-go
RUN apk add --no-cache curl grep
WORKDIR /app
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
ENV GOPROXY='https://mirrors.aliyun.com/goproxy,direct'
ENV TZ=Asia/Shanghai
COPY --from=builder /app/ddns-go /app/ddns-go
EXPOSE 9876
ENTRYPOINT ["/app/ddns-go"]
CMD ["-l", ":9876", "-f", "300"]
1.3 执行构建命令
先拉取相关镜像后再进行构建,若遇到权限相关问题,可以使用sudo
尝试再次执行看看
docker pull alpine
docker pull golang:1.20-alpine
make build_docker_image
1.4 直接拉取ddns-go镜像
本人尝试未成功
docker pull jeessy2/ddns-go
1.5 执行
docker run -d --name ddns-go --restart=always --net=host -p 9876:9876 -v /opt/ddns_go:/root [自己构建的镜像ID]
–net=host只在linux服务器上有效
Mac或win的docker desktop不生效
二、官方的在Docker中的使用说明
-
挂载主机目录, 使用docker host模式。可把
/opt/ddns-go
替换为你主机任意目录, 配置文件为隐藏文件docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
-
在浏览器中打开
http://主机IP:9876
,并修改你的配置 -
[可选] 使用
ghcr.io
镜像docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root ghcr.io/jeessy2/ddns-go
-
[可选] 支持启动带参数
-l
监听地址-f
间隔时间(秒)docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go -l :9877 -f 600
-
[可选] 不使用docker host模式
docker run -d --name ddns-go --restart=always -p 9876:9876 -v /opt/ddns-go:/root jeessy/ddns-go
-
[可选] 重置密码
docker exec ddns-go ./ddns-go -resetPassword 123456 docker restart ddns-go