@xuxuzhaozhao
2019-08-16T13:38:42.000000Z
字数 2228
阅读 651
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-blog
Dockerfile
在项目的根目录编写Dockerfile
文件,我把每条指令的注释一下,方便有心人了解学习。
// 必须有且是第一条的指令,拉取基础镜像
FROM golang:latest
// ENV 指定镜像中的环境变量
// 本程序使用的是go module所以只要将系统变量GO111MODULE设置为on则自动启用go mod
ENV 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