Bootstrap

ddns-go教程(docker镜像方式)

一、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
    
;