[关闭]
@xuxuzhaozhao 2019-08-16T13:38:42.000000Z 字数 2228 阅读 651

Linux服务器的docker上发布我的博客系统

docker


本博客系统使用golang后端提供api,vue接收数据展示页面。发布在ubuntu服务器中的linux上,本文将简要介绍如何发布这俩程序到docker中。

一、ubuntu 18.04 lts 安装并配置 docker

1、卸载docker旧版本

  1. $ sudo apt-get remove docker \
  2. docker-engine \
  3. docker.io

2、使用apt

  1. $ sudo apt-get update
  2. //需要添加使用 HTTPS 传输的软件包以及 CA 证书
  3. $ sudo apt-get install \
  4. apt-transport-https \
  5. ca-certificates \
  6. curl \
  7. software-properties-common
  8. //为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥
  9. $ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  10. //向 /etc/apt/sources.list 中添加 Docker 软件源
  11. $ sudo add-apt-repository \
  12. "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
  13. $(lsb_release -cs) \
  14. stable"

3、安装docker-ce

  1. $ sudo apt-get update
  2. $ sudo apt-get install docker-ce

4、启动docker-ce

  1. $ sudo systemctl enable docker
  2. $ sudo systemctl start docker

6、配置docker

  1. //如果不配置docker源,由于众所周知的那堵墙,docker run的时候能气死人...
  2. $ sudo vim /etc/docker/daemon.json
  3. //加入下面json
  4. {
  5. "registry-mirrors": [
  6. "https://dockerhub.azk8s.cn",
  7. "https://reg-mirror.qiniu.com"
  8. ]
  9. }
  10. $ sudo systemctl daemon-reload
  11. $ sudo systemctl restart docker

5、测试docker

  1. sudo docker run hello-world

输出以下内容,ubuntu 18.04 ltsdocker就算配置成功了。
此处输入图片的描述

二、构建并运行go-blog

本博客开源:https://github.com/xuchengyi2015/go-blog

1、编写Dockerfile

在项目的根目录编写Dockerfile文件,我把每条指令的注释一下,方便有心人了解学习。

  1. // 必须有且是第一条的指令,拉取基础镜像
  2. FROM golang:latest
  3. // ENV 指定镜像中的环境变量
  4. // 本程序使用的是go module所以只要将系统变量GO111MODULE设置为on则自动启用go mod
  5. ENV GO111MODULE=on
  6. // 将系统变量GOPROXY设置为阿里云的镜像,否则构建的时候得怀疑人生
  7. ENV GOPROXY=https://mirrors.aliyun.com/goproxy/
  8. // 指定工作目录,如果没有,docker会自动创建的该目录
  9. WORKDIR $GOPATH/src/github.com/xuchengyi2015/go-blog
  10. // 将宿主机中当前目录的文件及文件夹全部拷贝一份到docker镜像中
  11. COPY . $GOPATH/src/github.com/xuchengyi2015/go-blog
  12. // 执行命令构建go程序
  13. RUN go build .
  14. // 声明运行时容器提供服务端口,需要注意的是这只是一个声明,例如我的go-blog中main.go是将该程序跑在3002端口上的,那么在docker run 的时候3002会暴露给docker。
  15. EXPOSE 8000
  16. // 指定容器启动程序及参数
  17. ENTRYPOINT ["./go-blog"]

2、构建go-blog镜像

go-blog程序的根目录打开终端,运行

  1. $ sudo docker build -t go-blog . //注意这后面还有一个点,表示当前目录

一切顺利的话,终端打印出Successfully tagged go-blog:latest即代表构建成功。

3、测试运行go-blog

  1. //语法 docker run -it -p 主机端口:docker容器端口 镜像名称:版本号
  2. // p 将容器的该端口暴露给主机端口
  3. // i 交互 (默认含有)
  4. // t 伪终端 (默认含有)
  5. $ sudo docker run -p 8000:3002 go-blog:latest

此处输入图片的描述

4、postman测试api

使用postman模拟请求主机:映射的端口
此处输入图片的描述

nice!

5、删除镜像

如果修改了程序需要重新构建的话,先删除镜像后在构建即可!

  1. $ docker rmi -f gin-blog-docker
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注