这个dockerfile看着看不出来问题,但如果有人真的执行我之前两篇文章的文件,就会有问题,什么问题呢,无法连接到etcd,由于我是刚装上docker,排查了一圈,包括docker网络及是否是本地docker的网络问题,排查了一圈之后,发现原来是我的dockerfile的问题:
# 使用一个轻量级的基础镜像
FROM golang:latest
# 设置工作目录
WORKDIR /app
# 将本地编译好的可执行文件复制到容器中,此处etcd_server.exe是我提前打好的etcd3.5的可编译文件
COPY ./server/etcd_server .
# 暴露应用程序监听的端口(如果有的话)
EXPOSE 2379
# 启动应用程序
CMD ["./etcd_server"]
# 使用官方 etcd 镜像
FROM quay.io/coreos/etcd:latest
# 将 etcd 数据目录复制到容器中
WORKDIR /etcd
VOLUME /data
# 暴露 etcd 默认端口
EXPOSE 2379 2380
# 启动脚本
CMD ["etcd"]
问题是由于在docker中监听的是127.0.0.1,所以无法暴露在外面,修改CMD ["./etcd_server", "--advertise-client-urls=http://0.0.0.0:2379", "--listen-client-urls=http://0.0.0.0:2379"]?