此项目的gitlab地址:https://gitlab.com/Mr_liukun/web_db

1. 这是我的项目的目录结构,可以看到需要将Dockerfile放在项目的根目录下。即项目名的下一层目录。

 

2. 这是我的Dockerfile文件。参考别人和自己摸索的,有些参数以后知道了再说含义。DOckerfile写法可以自己查资料。

FROM golang:1.10.7

#创建工作目录
RUN mkdir -p /go/src/web_db
#进入工作目录
WORKDIR /go/src/web_db

#将当前目录下的所有文件复制到指定位置
COPY . /go/src/web_db

#下载beego和bee
RUN go get github.com/astaxie/beego && go get github.com/beego/bee && go get github.com/go-sql-driver/mysql

#端口
EXPOSE 8080

#运行
CMD ["bee", "run"]

3. 其中涉及到数据库的设置为:root为mysql容器的用户名,123456为密码(就是你进入mysql的用户名和密码)

"root:123456@tcp(172.17.0.3:3306)/onedb?charset=utf8"

127.17.0.3为mysql容器的ip地址,3306为端口,onedb为mysql容器中的一个数据库。

我们的127.17.0.3可以用 cat /etc/hosts 获取到。

4. 我实在windows上写的,然后使用git上传到了gitlab上,然后clone到阿里云的linux服务器上。此时我们需要进入clone的项目中,,如图。

5.然后在这个目录下执行:

docker build -t web-db .   (后面有一个 . ),说明是在当前目录下找到Dockerfile文件(好像是这样)

然后结果是上图这样。

6. 然后我们执行docker images,就可以看到我们添加的镜像了。

其中 web-db 是我们的服务镜像,就是我们上传的项目生成的一个镜像,然后mysql是我们的mysql镜像,用来生成我们的mysql容器。

7. 然后我们执行 docker run -d --name db -p 9999:8080 web-db:latest 

这样我们就生成了一个web-db的容器了,其中-d是让我们的容器在后台运行,--name db,db是我们的容器名字,-p 9999:8080,是我们容器的端口映射我们linux主机上就是我们linux主机的9999端口,我们需要用这个端口访问我们的服务。web-db:latest 是我们指定的镜像,就是用哪一个镜像来运行。(不知道这样说对不对)

8. 此时我们的容器就已经在后台跑起来了,我们使用docker ps查看正在运行的容器。

我们可以看到有两个容器正在运行,其中names为db的是我们的web-db的容器,就是承载我们服务的容器,而mysqlone是我们的MySQL容器,这个是必须的,我们的服务需要从这个容器获取数据库的数据,因为如果这个容器关闭,我们将不能获取到我们数据库数据。

我曾疑惑容器到底是什么?linux容器可以理解是一个linux系统,那python容器,mysql容器,go容器是什么呢?是编译器吗?其实他们也是linux系统,我们如果进入容器查看,就会看到他们就是一个linux系统,他们的linux版本什么的和你的linu主机是一样的。

至此,我们的go web项目(含数据库)就完全跑通了。mysql容器的搭建和数据可视化navicat可以看这几个:

http://www.runoob.com/docker/docker-install-mysql.html    mysql容器的搭建

https://blog.csdn.net/hello_noob/article/details/78815660    使用本地navicat连接阿里云上面的mysql数据库。这里其实就连的是我们的mysql容器。

参考:

https://blog.csdn.net/wchenjt/article/details/79118798

https://blog.csdn.net/shushanfx/article/details/53425646

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐