作业要求
这次作业是在我们上一次作业的基础上,将上一次用的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
就完成啦本次作业的实现
