作业要求
这次作业是在我们上一次作业的基础上,将上一次用的BoltDB
为 Mysql
数据库,并利用 docker
进行容器化。在这次作业中,我们的项目主要有3个容器构成:
1.储存前端
Nodejs
的容器2.储存后段
Go
的容器3.储存数据库
Mysql
的容器 ——docker
为我们提供了直接容器化的Mysql
服务,我们可以选择在安装好docker
后利用docker pull mysql
得到Mysql
的镜像。除此之外,也可以通过Dockerfile
来构建Mysql
服务,具体介绍在这里
实现步骤
安装docker
由于我是macOS的系统,所以我就以macOS的系统为例。其他系统可以参考这里
- 我们的首选是直接去官网下载安装应用程序,然后安装运行即可
- 当然除了最方便的直接下载之外我们也可以采取装逼的方式,在命令行使用
Homebrew
进行安装。只需要运行brew cask install docker
即可直接进行安装。
对前段进行容器化
配置 nginx.conf
- 针对
nginx.conf
的配置,在很多网站上都有很详细的讲解,我也没有必要再重复的制造轮子,很详细的介绍,可以点击这里
1 | #user nobody; |
创建Dockerfile
- 本次项目中所使用的
Dockerfile
结构如下。Dockerfile
是一个包含用于组合映像的命令的文本文档。和我们之前在实训中所使用的Makefile
文件类似,都是将我们需要运行的一系列命令都存储在一个文件中,这样我们就直接使用一条命令,来完成多文件编译运行的工作。同样的,对于Dockerfile
的详细介绍,请点击这里
1 | #设置nginx版本 |
运行实例
对后端进行容器化
- 本次项目的后端是利用
Go
语言实现的,对后端进行容器化的过程与上面类似,只需要配置好Dockerfile
文件,之后运行即可
1 | # FROM 是集成自哪个镜像,我们是go程序官方提供了一个golang这样的镜像,我们可以直接使用 |
对数据库进行容器化
- 在刚开始,我们提到
docker
为我们提供了直接容器化的Mysql
服务,所以我们可以直接获得Mysql
的镜像服务,在对数据库进行容器化时我们只需要以下几个步骤
后端服务与数据库服务进行对接
- 在Go文件中导入对应的数据包
编写 sql 文件,建库建表写数据
- 编写对应的数据库操作代码
编写 Dockerfile 文件
- 与上面的过程类似
生成的docker镜像
使用docker-compose
部署应用
编写 docker-compose.yml
文件
1 | version: "3" |
启动
最后我们只需要运行1
docker-compose -f docker-compose.yml up -d swapi
就完成啦本次作业的实现