分类 后端 下的文章

新建 run.py

import os
import sys

def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)

if __name__ == '__main__':
    sys.argv = ['manage.py', 'runserver', '127.0.0.1:8001']  # 指定默认运行的命令
    main()

安装pyinstall

pip install pyinstaller 

命令参考
img

执行命令

pyinstaller -F --name=run run.py --specpath .  

# 使用scratch作为基础镜像
FROM scratch
WORKDIR /app

# 复制本地编译好的应用程序到容器中
# GOOS=linux GOARCH=amd64 CGO_ENABLED=0  go build -o ./bin/main main.go
COPY ./bin/main /app/main

# 复制配置文件和其他必要的文件到容器中
#COPY ./config.toml /app/config.toml

# 复制时区数据文件到容器中 需要把时区文件先复制到项目下
COPY ./zoneinfo/Asia/Shanghai /etc/localtime

# 设置时区环境变量
ENV TZ=Asia/Shanghai

# 运行应用程序
ENTRYPOINT ["/app/main", "-conf", "/app/config.toml"]

package server

import (    
        "embed"
    "github.com/gin-contrib/static"
    "github.com/gin-gonic/gin"
)

//go:embed static
var static embed.FS

func main() {
    r := gin.Default()
        // 创建一个没有顶层目录的FS
    webFS, err := fs.Sub(static, "static")
    if err != nil {
        panic(err)
    }
    r.NoRoute(gin.WrapH(http.FileServer(http.FS(webFS))))
    log.Fatal(r.Run(":8080")

}

django setting
以下无效

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
    )
}

正确用法
来自 https://blog.csdn.net/weixin_51098806/article/details/123674186#commentBox

MIDDLEWARE = [
    ...
    "projectname.utils.csrf_middleware.NotUseCsrfTokenMiddlewareMixin"
]

/project/project/utils

from django.utils.deprecation import MiddlewareMixin


class NotUseCsrfTokenMiddlewareMixin(MiddlewareMixin):

    def process_request(self, request):
        setattr(request, '_dont_enforce_csrf_checks', True)

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