此处etcd_server.exe是我提前打好的etcd3.5的可编译文件
# 使用一个轻量级的基础镜像
FROM alpine:latest
# 设置工作目录
WORKDIR /app
# 将本地编译好的可执行文件复制到容器中,此处etcd_server.exe是我提前打好的etcd3.5的可编译文件
COPY ./server/etcd_server.exe .
# 暴露应用程序监听的端口(如果有的话)
EXPOSE 8080
# 启动应用程序
CMD ["./etcd_server.exe"]
//执行dockerbuild:
docker build -t my-etcd-app .
docker run -p 2379:2379 my-etcd-app
<3>WSL (1) ERROR: ConfigInitializeEntry:1621: Failed to mount (null) at /dev as devtmpfs 1
此处如果你按照<3>WSL (1) ERROR:问题去找原因,你怎么都解决不了这个问题,我再网上看了半天,也没个解决办法,最后发现是dockerfile里面的镜像有问题,但是build的时候它没提示异常,也是导致误导我的原因:
解决方案,修改dockerfile,需要用linux能执行的编译文件,重新编译go语言包编译成linux,如果碰见编译linux的问题,就自行查阅,我是通过linux上进行编译的,因为windows上编译有问题,所以并未进行交叉编译可执行文件,此处基础镜像需要换成golang:latest,用上面的基础镜像也会有问题:
# 使用一个轻量级的基础镜像
FROM golang:latest
# 设置工作目录
WORKDIR /app
# 将本地编译好的可执行文件复制到容器中,此处etcd_server.exe是我提前打好的etcd3.5的可编译文件
COPY ./server/etcd_server .
# 暴露应用程序监听的端口(如果有的话)
EXPOSE 2379
# 启动应用程序
CMD ["./etcd_server"]
这个问题就会得到解决,我下一篇文章会提供我编译好的docker镜像,以及整体编译的镜像docker文件