背景
在大项目多人合作开发中,每个开发者都需要一个能运行项目的环境,以便于观察项目运行结果,获得反馈。但是,不同机器的体系结构、操作系统、数据库、编译器等等基础软件各不相同,直接在机器上安装难免会出现版本不符、依赖冲突等问题。容器化技术在这种背景下应运而生。它将环境打包移植这个过程自动化,大大减少了开发者们配置环境的时间。
需要用的工具
docker:容器化是一种虚拟化形式,它允许将应用程序及其依赖项、库和配置打包在一个独立的运行环境中,称为容器。容器可以在不同的环境中运行,而不会受到环境差异的影响,从而提供了更高的可移植性和一致性。docker是最知名和最广泛使用的容器化工具。docker的主要组成部分由镜像和容器,镜像抽象地描述了环境的构建过程,容器则是镜像的实例。
某安卓模拟器:暂定。
git:用于clone github项目。
创建Dockerfile
根据文档可知,运行demo项目需要用go语言。最后开发的大项目要成功运行,还需要用一个数据库,目前暂时以mysql为例。docker镜像可由一个dockerfile描述,下面介绍该项目的Dockerfile。
首先从mysql的docker开始。这里注意,最常用的Linux系统是基于Debian的Ubuntu系统,包含常用的包管理器apt等。所以mysql的镜像需要加上tag 8.0.34-debian。
其次我们需要更新源,安装wget命令,使用wget命令下载go安装包的linux版本,将go相关环境移动到/usr/local/go中,
然后要将/usr/local/go/bin加入环境变量,以方便后续使用go命令运行项目。
最后,因为将要运行的服务端运行在8080端口上,所以将8080端口暴露在容器外。
Dockerfile如下所示:
FROM mysql:8.0.34-debian
RUN apt-get -y update && apt-get -y upgrade \
&& apt-get -y install wget && wget -O go.tar.gz "https://go.dev/dl/go1.21.0.linux-amd64.tar.gz" \
&& tar -xvf go.tar.gz && rm -rf /usr/local/go \
&& mv ./go /usr/local && rm go.tar.gz
ENV PATH="$PATH:/usr/local/go/bin"
EXPOSE 8080
使用Dockerfile构建镜像
在Dockerfile所在目录下运行如下命令:
docker build -t douyin .
-t表示构建的镜像名,这里为douyin。.表示Dockerfile所在目录。 建议构建时开启全局代理,否则下载可能失败。
构建完成后运行命令:
docker images
可以看到一个名为douyin的镜像。
使用git clone项目
根据文档,后端项目demo的链接为github.com/RaymondCode…
运行如下命令即可
git clone https://github.com/RaymondCode/simple-demo.git
假设项目被clone到目录(your absolute path to repo)
通过Dockerfile创建容器
运行如下命令,通过镜像douyin来创建容器:
docker run -it -v (your absolute path to repo):/home/douyin-demo -p 8080:8080 douyin /bin/bash
-i表示交互操作,-t表示终端,-v (path1):(path2)表示将主机path1挂载到容器内path2,-p (port1):(port2)表示将容器的8080端口绑定到主机的8080端口。 创建完成后,会显示终端。在终端中进入目录/home/douyin-demo,并用其构建项目可执行文件。
cd /home/douyin-demo
go build
可以看到目录中出现了可执行文件simple-demo。运行如下命令:
./simple-demo
可以看到后端成功运行,终端显示出gin库的日志,以及正在监听8080端口。
在浏览器中访问http://127.0.0.1:8080/douyin/feed/。可以看到返回一个json。