[ 学gorm第三天,熟悉easy_note | 青训营笔记]

60 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

1 连接到本地数据库

  1. 创建一个目录mkdir example
  2. 进入目录cd example
  3. 初始化go mod init gorm_example
  4. 安装gorm go get -u gorm.io/gorm
  5. 安装驱动gorm.io/driver/mysql
  6. 创建一个main.go文件写入
package main

import (
   "gorm.io/driver/mysql"
   "gorm.io/gorm"
)

type Product struct {
   gorm.Model
   Code  string
   Price uint
}

func main() {
   // refer https://github.com/go-sql-driver/mysql#dsn-data-source-name for details
   dsn := "root:12345678@tcp(127.0.0.1:3306)/newdb?charset=utf8mb4&parseTime=True&loc=Local"
   db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
   if err != nil {
      panic("failed to connect database")
   }
   db.AutoMigrate(&Product{})
}

若连接不上,打开终端输入mysql -u root -pcreat database newdb;即可。

2 docker 的使用

  1. docker build命令用于从Dockerfile构建镜像:根据目录下的 Dockerfile 文件构建镜像
  2. docker build -t kitex-examples:v1 .构建名为kitex-examples版本号为v1的镜像。
  3. 使用docker images查看刚构建的镜像。
  4. 进入容器内部docker exec -it kitex-examples /bin/sh
  5. Dockerfile文件示例:
FROM golang:1.16.6-alpine //指定基础镜像

RUN apk update && apk add git //目前不知道

WORKDIR /code //指定容器工作目录

COPY . .   //复制当前所有文件
RUN go env -w GOPROXY=https://goproxy.io,direct //设置代理
RUN go env -w GO111MODULE=on //设置模块支持
RUN go build -o hello-client ./hello/client //编译文件
RUN go build -o hello-server  ./hello  //编译
  1. 运行serverdocker run --network host kitex-examples ./hello-server
  2. 运行client docker run --network host kitex-examples ./hello-client

3 docker-compose 的使用

Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

  • 定义Python应用
mkdir compose_test
cd compose_test
mkdir src
mkdir docker

image.png

在compose_test/src/目录下创建python flask应用 compose_test/src/app.py文件。

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host = 'redis' , port = 6379)

@app.route('/')
def hello():
    count = redis.incr('hits')
    return 'hello world ! I have been seen {} times .\n'.farmat(count)

if __name__ == '__main__':
    print("hhhh")
    app.run(host="0.0.0.0",debug=True)

创建python 需求文件 compose_test/src/requirements.txt

flask
redis

创建容器的Dockerfile文件

一个容器一个Dockerfile文件,在compose_test/目录中创建Dockerfile文件:

FROM python:3.7

COPY src/ /opt/src
WORKDIR /opt/src

RUN #pip install -r requirements.txt
CMD ["python","app.py"]

定义docker-compose脚本

在compose_test/docker/目录下创建docker-compose.yml文件,并在里面定义服务,内容如下:

version: '3'
services:
  web:
    build: ../
    ports:
      - "5000:5000"
  redis:
    image: redis:3.0.7

使用Compose构建并运行您的应用程序

在compose_test/docker/目录下执行docker-compose.yml文件: docker-compose up 然后在浏览器中输入http://0.0.0.0:5000/查看运行的应用程序。