docker构建dnsmasq和web-ui完整流程
由于后期需要基于kubernetes构建CI/CD流程,涉及的组件比较多,同时需要为各个组件配置域名,真实模拟生产环境,需要搭建一个DNS Server,统一管理域名解析,查询资料一段时间后,决定使用dnsmasq搭建内部的DNS Server,接下来将详细记录完整的思考及构建过程。
1. 构建 dnsmasq web-ui
1.1 基于Centos7镜像构建基础镜像
FROM centos:centos7 as builder
ENV GOROOT=/usr/local/go
ENV GOBIN=/usr/local/go/bin
ENV GOPATH=/usr/local/go/gopath
ENV GOPROXY=https://goproxy.cn,https://goproxy.io,direct
ENV PATH=$PATH:$GOBIN:$GOPATH/bin
WORKDIR /opt
RUN yum -y update && yum -y install wget git \
&& wget --progress=bar:force https://studygolang.com/dl/golang/go1.17.linux-amd64.tar.gz \
&& tar -zxvf go1.17.linux-amd64.tar.gz -C /usr/local \
&& rm -f go1.17.linux-amd64.tar.gz \
&& git clone https://github.com/jpillora/webproc.git \
&& cd webproc \
&& go build -o webproc -v .
FROM centos:centos7
MAINTAINER zhang513044@126.com
ENV DNSMASQ_CONF=/etc/dnsmasq.conf
COPY docker-entrypoint.sh /docker-entrypoint.sh
COPY --from=builder /opt/webproc/webproc /usr/bin/webproc
RUN yum -y install dnsmasq \
&& cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
EXPOSE 8080
EXPOSE 53
ENTRYPOINT ["/docker-entrypoint.sh"]
1.2 构建镜像
docker build -t dnsmasq-ui:1.0.0 .
1.3 启动镜像
docker run --name dnsmasqd -d -p 8080:8080 -p 53:53 dnsmasq-ui:1.0.0
注:
- 8080是web端口
- 53是dns端口
启动效果如下:
参考文档
- https://github.com/jpillora/webproc
|