Docker [笔记] Window10 + 建立Golang(Gin+GORM套件) + MySQL

1. Docker安装 + 使用Docker安装Golang + 网路

Docker是为了让我之后写后端+DB方便使用,但是
Docker装完之后一直强迫被关闭,WSL出事

Window10 家用版 WSL难装到哭,原来是主机板要开启虚拟化功能,方法如下(打开Svm mode)
https://www.asus.com/tw/support/FAQ/1043786/

再装一次Docker

golang环境建立
3-1建立专案资料夹 > 3-2终端机安装golang > 3-3检查

看目前建立的pod

    docker ps

使用Docker安装Golang images

    docker pull golang

检查

    docker images

http://img2.58codes.com/2024/20137684r2dvECxmLM.png
http://img2.58codes.com/2024/201376848FR17mapqn.png

建立docker网路
由于docer容器内的服务不相连,所以必须建立一个网路,使DB与GO相连
port只是我的本机与他们相连的管道,但他们彼此间不相通
http://img2.58codes.com/2024/20137684ijzD32n5Sf.png
exit // 跳出容器,因为是建立服务
docker network create web // 建立连线 web=网路名称
docker network ls // 检查目前有哪些连线

http://img2.58codes.com/2024/20137684Chpl9cWh8o.png

建立一个有网域的golang容器container
run -itd -p 8080:8080 -v 同步程式码
C:/Users/user/Desktop/demo/golang_spyy 与这个资料夹位置同步(本机的资料夹)
:/go/src 容器内的路径
--name golang_spy_backend 容器名称
golang images名称
--network web 使用web是因为她是网域名称
docker run -itd -p 8080:8080 -v C:/Users/user/Desktop/demo/golang_spy:/go/src --name golang_spy_backend --network web golang

http://img2.58codes.com/2024/20137684P1AFqYWuc6.png

启动containers golang的专案
http://img2.58codes.com/2024/201376848wmytj5Xfi.png

确定可以用之后,在docker里面建立一个虚拟的资料夹
(简单说就是看不到幻想的资料夹,这个资料夹会跟我本机电脑同步)

终端机看 CONTAINER ID

    docker ps 
进去看CONTAINER资料夹结构(进容器)
docker exec -i -t 5e7c63f0fd25 bash

http://img2.58codes.com/2024/20137684Fk1TS2gOb8.png
http://img2.58codes.com/2024/20137684m0ieJWNiEO.png

进去容器后,在本机的相对位置增加资料夹,在终端机上也可以看到虚拟资料夹内也有这个资料夹
9. 看资料夹就知道已连动
10. VsCode装golang套件
http://img2.58codes.com/2024/201376849RcmBplRcK.png
11. Docker装"管理专案套件"的套件,记得先进去虚拟资料夹
http://img2.58codes.com/2024/20137684DXKEAEVVSH.png
http://img2.58codes.com/2024/20137684lhurrFeZvh.png

go mod init golang_spy

2. Docker装MySQL (此为开新服务,非套件,故无需进入容器)

如果在容器内,出容器
http://img2.58codes.com/2024/20137684gfdfISazp3.png

建立docker网路
由于docer容器内的服务不相连,所以必须建立一个网路,使DB与GO相连
port只是我的本机与他们相连的管道,但他们彼此间不相通
http://img2.58codes.com/2024/20137684ijzD32n5Sf.png

exit // 跳出容器,因为是建立服务
docker network create web // 建立连线 web=网路名称
docker network ls // 检查目前有哪些连线

http://img2.58codes.com/2024/20137684Chpl9cWh8o.png

建立MySQL的存放区(存放table,避免容器删掉table被删除,易言之永久贮存资料库资料)
exit // 跳出容器,因为是建立服务

/var/lib/mysql 路径,放跟MySQL同位置

docker create -v C:/Users/user/Desktop/demo/spy_Db --name spy_mysql_data mysql:5.7 
建立MySQL容器<----------如果有旧的删掉,永远最后做
此处为建立建立管理员的帐号密码
预设帐号为:root
--name some-mysql 资料库名称
-v /my/own/datadir:/var/lib/mysql 本机的资料夹
-e MYSQL_ROOT_PASSWORD=资料库密码
-p 3306:3306 port号
-d 跑背景,无须给参数
--network web,前述3. 使用web是因为她是网域名称
--volumes-from spy_mysql_data,前述4. spy_mysql_data是之前建立MySQL的存放区的名称
mysql:5.7 版本号,5.7比较稳定(版本号一定放最后)
docker run --name spy_Db -v C:/Users/user/Desktop/demo/spy_Db -e MYSQL_ROOT_PASSWORD=irisiris -p 3306:3306 -d --network web --volumes-from spy_mysql_data mysql:5.7

http://img2.58codes.com/2024/20137684vlF0w4gaK4.png

容器建立
http://img2.58codes.com/2024/20137684LQvyFAMbVT.png

进入容器
http://img2.58codes.com/2024/20137684H9vvaMKuUr.png

docker exec -i -t 7f26d119 bash
建立服务的帐号密码步骤(与5.权限不同)
8-1 进入2.设定的帐号
mysql -u root -p

8-2 输入2.当时设定的密码
进入画面(此处之后都是下SQL语法)
http://img2.58codes.com/2024/20137684Xo5ZUFQLa6.png
8-3 建立服务帐号密码(SQL帐号密码建立指令)
'test' 帐号
'test123' 密码

CREATE USER 'test'@'%' IDENTIFIED BY 'test123';

8-4 开该服务权限

GRANT ALL ON *.* TO 'test'@'%'  WITH GRANT OPTION;

8-5 更改登入密码的方式,用明码

ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'test123';

http://img2.58codes.com/2024/20137684XwNmg8j762.png

下载介面,建立DB及Table
https://dev.mysql.com/downloads/workbench/
9-1 DB名称
http://img2.58codes.com/2024/20137684xTB4EUmv3X.png
9-2 更改为"服务帐号" (前述5-3的帐号)
http://img2.58codes.com/2024/20137684F6934nEMQW.png
http://img2.58codes.com/2024/20137684MQrodkI0FD.png
9-3 建立该专案使用DB
http://img2.58codes.com/2024/20137684NXwFSsgk4v.png
9-4 建立表
通常第一栏位都是要auto插入Primary Key及AI自动写入,为了未来方便索引
http://img2.58codes.com/2024/20137684HISpB0B6dY.png
栏位完成,并insert一笔资料
http://img2.58codes.com/2024/201376847dIW9HHHOA.png

3. Docker每次run golang的使用步骤

进去容器
http://img2.58codes.com/2024/20137684TMH1MCabq6.png
       docker exec -i -t 5e7c63f0fd25 bash
检查目前的"本机资料夹"有没有与"虚拟资料夹"连动
http://img2.58codes.com/2024/20137684Fk1TS2gOb8.png

http://img2.58codes.com/2024/201376848DVwXAUGxY.png

http://img2.58codes.com/2024/20137684m0ieJWNiEO.png

run golang
      // main.go 本机档案      go run main.go

4. golang装套件Gin(API使用)

进去go的容器(因为是go的套件)
http://img2.58codes.com/2024/20137684TMH1MCabq6.png
       docker exec -i -t 5e7c63f0fd25 bash
安装API套件
http://img2.58codes.com/2024/20137684D32SqfR22p.png
       go get github.com/gin-gonic/gin

5. golang装GORM框架 (简化资料库DB操作套件)

进去go的容器(因为是go的套件)
http://img2.58codes.com/2024/20137684H9vvaMKuUr.png
       docker exec -i -t 7f26d119 bash
安装GORM
https://gorm.io/zh_CN/docs/index.html
       go get -u gorm.io/gorm       go get -u gorm.io/driver/sqlite

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章