我们都知道go能够这么火是因为他是docker官方标准语言,当然了docker也将go的性能发挥到了极致,可谓是相辅相成,交相辉映。而最近学洗go的过程中很多项目都会提供Dockerfile,这是什么鬼呢?后续查阅知道这个是将项目部署到docker的自动化配置引导文件。于是今天上班没事干花了一天时间吧周末的小项目给添加了个dockerfile……下面给大家分享一下艰辛的历程吧。

1 Dockerfile对应命令介绍

FROM 是自动拉取对应基础镜像的,通常作为起始的第一行,与我们命令行中docker pull xxx作用类似

//拉取golang最为基础的镜像
FROM golang
// 对应Python的环境镜像
FROM python

RUN 执行一个命名,如 mkdir -p xxx/xx

RUN ls -al
RUN mkdir /go/src/Fang
RUN cd /go/src/Fang

COPY 将我们的文件复制到对应的docker镜像中,比如我们的代码源文件

COPY . /go/src/Fang

上文中`.`代表就是把我们dockerfile所在的作为当前目录的所有文件,命令的意思就是将当前目录下的所有文件复制到镜像指定的/go/src/Fang目录下

关于Dockerfile部署时精简系统大小

1 采用COPY将必要文件复制,不要采用ADD

2 采用curl git等联网数据请求,这样可以部署时从网络请求资源,从而减少自制镜像的大小(如lz项目中需要一些GitHub上的开源库 即 开勇go get -u xxx 而不是选择将对应的库打包到镜像中)

下面把lz自己今天蹩脚的第一个Dockerfile分享给大家

FROM golang
RUN ls -al
RUN mkdir /go/src/Fang
RUN cd /go/src/Fang
RUN mkdir -p /go/src/Fang/doc/detail
RUN ls -al
RUN pwd
COPY . /go/src/Fang




#统一创建文件夹
RUN mkdir -p /go/src/golang.org/x
RUN mkdir  /go/src/google.golang.org/


RUN cd /go/src/golang.org/x && git clone https://github.com/golang/net.git && git clone https://github.com/golang/text.git
RUN echo "golang.org/xn"
RUN ls -al
RUN cd /go/src/golang.org/ && git clone https://github.com/golang/appengine.git
RUN echo "golang.orgn"
RUN ls -al


RUN cd /go/src/google.golang.org/ && git clone https://github.com/golang/appengine.git



#安装简单的数据
RUN go get -u github.com/PuerkitoBio/goquery
RUN go get -u github.com/tealeg/xlsx


RUN cd /go/src/Fang
RUN go run index.go
#RUN go build index.go