@xuxuzhaozhao
2019-08-16T13:38:42.000000Z
字数 2228
阅读 760
docker
本博客系统使用golang后端提供api,vue接收数据展示页面。发布在ubuntu服务器中的linux上,本文将简要介绍如何发布这俩程序到docker中。
ubuntu 18.04 lts 安装并配置 docker
$ sudo apt-get remove docker \docker-engine \docker.io
apt源
$ sudo apt-get update//需要添加使用 HTTPS 传输的软件包以及 CA 证书$ sudo apt-get install \apt-transport-https \ca-certificates \curl \software-properties-common//为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -//向 /etc/apt/sources.list 中添加 Docker 软件源$ sudo add-apt-repository \"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \$(lsb_release -cs) \stable"
docker-ce
$ sudo apt-get update$ sudo apt-get install docker-ce
docker-ce
$ sudo systemctl enable docker$ sudo systemctl start docker
docker源
//如果不配置docker源,由于众所周知的那堵墙,docker run的时候能气死人...$ sudo vim /etc/docker/daemon.json//加入下面json{"registry-mirrors": ["https://dockerhub.azk8s.cn","https://reg-mirror.qiniu.com"]}$ sudo systemctl daemon-reload$ sudo systemctl restart docker
docker
sudo docker run hello-world
输出以下内容,ubuntu 18.04 lts 下 docker就算配置成功了。

go-blogDockerfile在项目的根目录编写Dockerfile文件,我把每条指令的注释一下,方便有心人了解学习。
// 必须有且是第一条的指令,拉取基础镜像FROM golang:latest// ENV 指定镜像中的环境变量// 本程序使用的是go module所以只要将系统变量GO111MODULE设置为on则自动启用go modENV GO111MODULE=on// 将系统变量GOPROXY设置为阿里云的镜像,否则构建的时候得怀疑人生ENV GOPROXY=https://mirrors.aliyun.com/goproxy/// 指定工作目录,如果没有,docker会自动创建的该目录WORKDIR $GOPATH/src/github.com/xuchengyi2015/go-blog// 将宿主机中当前目录的文件及文件夹全部拷贝一份到docker镜像中COPY . $GOPATH/src/github.com/xuchengyi2015/go-blog// 执行命令构建go程序RUN go build .// 声明运行时容器提供服务端口,需要注意的是这只是一个声明,例如我的go-blog中main.go是将该程序跑在3002端口上的,那么在docker run 的时候3002会暴露给docker。EXPOSE 8000// 指定容器启动程序及参数ENTRYPOINT ["./go-blog"]
在go-blog程序的根目录打开终端,运行
$ sudo docker build -t go-blog . //注意这后面还有一个点,表示当前目录
一切顺利的话,终端打印出Successfully tagged go-blog:latest即代表构建成功。
//语法 docker run -it -p 主机端口:docker容器端口 镜像名称:版本号// p 将容器的该端口暴露给主机端口// i 交互 (默认含有)// t 伪终端 (默认含有)$ sudo docker run -p 8000:3002 go-blog:latest

使用postman模拟请求主机:映射的端口

nice!
如果修改了程序需要重新构建的话,先删除镜像后在构建即可!
$ docker rmi -f gin-blog-docker