分类 后端 下的文章

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf 

添加一下内容

[Service] 
Environment="HTTP_PROXY=http://X.X.X.X:80" 
Environment="HTTPS_PROXY=http://X.X.X.X:443"

把x.x.x.x替换为代理服务器ip

重启docker

sudo systemctl daemon-reload 
sudo systemctl restart docker 

安装pymysql

pip install pymysql

django 配置

import pymysql
pymysql.install_as_MySQLdb()


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'name_of_the_database',
        'HOST': 'localhost',
        'USER': 'root',
        'PASSWORD': 'your_mysql_password',
        'PORT': '3306',  # MySQL 默认端口
        'OPTIONS': {
            'charset': 'utf8mb4',  # 设置字符集为 utf8mb4
           },
        }
}

错误用法

err := db.Transaction(func(tx *gorm.DB) error {
        tx = tx.Where("tid=?", req.Tid).Delete(Model{})
        if err := tx.Error; err != nil {
            common.LOGGER.Errorf("delete t fail,error:%s", err)
            return fmt.Errorf("删除任务出错")
        }

        if tx.RowsAffected == 0 {
            return fmt.Errorf("操作失败,请检查任务状态")
        }

        err := tx.Where("tid=?", req.Tid).Delete(Result{}).Error
        if err != nil {
            common.LOGGER.Errorf("delete result fail,error:%s", err)
            return fmt.Errorf("删除任务出错")
        }

        return nil
    })

正确用法

err := db.Transaction(func(tx *gorm.DB) error {
        result = tx.Where("tid=?", req.Tid).Delete(Model{})
        if err := result.Error; err != nil {
            common.LOGGER.Errorf("delete t fail,error:%s", err)
            return fmt.Errorf("删除任务出错")
        }

        if result.RowsAffected == 0 {
            return fmt.Errorf("操作失败,请检查任务状态")
        }

        result = tx.Where("tid=?", req.Tid).Delete(Result{})
        if err := result.Error; err != nil {
            common.LOGGER.Errorf("delete result fail,error:%s", err)
            return fmt.Errorf("删除任务出错")
        }

        return nil
    })

情况1

  1. linux 使用宿主机的网络地址 使用172.17.0.1(Docker默认桥接网络的网关地址)
  2. Windows或Mac,使用实际的IP地址或特定的地址(如host.docker.internal)

情况2

如果docker版本比较低,可以使用

docker run --add-host=host.docker.internal:host-gateway

对于 docker-compose.yml

services:
  your-service:
    extra_hosts:
      - "host.docker.internal:host-gateway"

如果无法识别 host-gateway,改为宿主机host

--add-host=host.docker.internal:<宿主机IP> ...

如果访问宿主机无法识别 host.docker.internal
报错
got error dial tcp: lookup host.docker.internal on 127.0.0.11:53: no such host
宿主机手动添加host

127.0.0.1 host.docker.internal

终极大招

修改宿主机防火墙规则,增加ip来源

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3399" protocol="tcp" accept'

sudo firewall-cmd --reload