解决下我之前etcd使用docker镜像启动的坑
1、问题镜像docker-file:
这个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"]
2、解决方案
2.1 换成正规官网的etcd镜像
这个换成官网的etcd,我看默认启动的还是127.0.0.1,所以在启动命令的时候要加入"--advertise-client-urls=http://0.0.0.0:2379", "--listen-client-urls=http://0.0.0.0:2379"
# 使用官方 etcd 镜像
FROM quay.io/coreos/etcd:latest
# 将 etcd 数据目录复制到容器中
WORKDIR /etcd
VOLUME /data
# 暴露 etcd 默认端口
EXPOSE 2379 2380
# 启动脚本
CMD ["etcd"]
2.2 修改镜像file
问题是由于在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"],此处让在容器中使用监听所有端口,问题得到解决:
# 使用更轻量的基础镜像
FROM golang:latest
# 设置工作目录并复制本地文件到容器中
WORKDIR /app
COPY ./etcd_server .
# 确保 etcd_server 具有可执行权限
RUN chmod +x etcd_server
# 暴露应用程序监听的端口(如果有的话)
EXPOSE 2379
# 启动应用程序
CMD ["./etcd_server", "--advertise-client-urls=http://0.0.0.0:2379", "--listen-client-urls=http://0.0.0.0:2379"]
当然我还尝试了,在镜像打包好,然后把etcd_server在docker容器中直接手动启动,这个是无法解决的,由于docker中该服务并没有启动,所以端口没有暴露出去文章来源:https://www.toymoban.com/news/detail-813083.html
此处算是把etcd的docker镜像部署收尾了文章来源地址https://www.toymoban.com/news/detail-813083.html
到了这里,关于etcd官方docker镜像及dockerfile问题处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!