From cf65c52c8268e4c2cf745d6a7b7af8f9c1920259 Mon Sep 17 00:00:00 2001 From: jeremygan2021 Date: Sat, 10 Jan 2026 02:12:39 +0800 Subject: [PATCH] t --- docker_deply.sh | 16 ++++++++++------ main.py | 6 ++++-- test_db.py | 24 ++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 test_db.py diff --git a/docker_deply.sh b/docker_deply.sh index 21e1a83..ebcdeaa 100755 --- a/docker_deply.sh +++ b/docker_deply.sh @@ -36,10 +36,10 @@ TAR_FILE="${IMAGE_NAME}-${IMAGE_TAG}.tar" # 压缩包文件名 PLATFORM="linux/amd64" # 默认架构 ARCH_SUFFIX="" # 架构后缀,用于区分不同架构的tar文件 # 默认使用华为云源 (AMD64速度快) -BASE_IMAGE="swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/python:3.9-slim" -if [ "$PLATFORM" = "linux/arm64" ]; then - BASE_IMAGE="docker.m.daocloud.io/python:3.9-slim" -fi +# BASE_IMAGE="swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/python:3.9-slim" +# if [ "$PLATFORM" = "linux/arm64" ]; then +# BASE_IMAGE="docker.m.daocloud.io/python:3.9-slim" +# fi # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' @@ -128,7 +128,7 @@ build_image() { fi # 构建镜像并导出为tar文件 - docker buildx build --platform $PLATFORM --build-arg BASE_IMAGE="${BASE_IMAGE}" -t "${IMAGE_NAME}:${IMAGE_TAG}" --output type=docker,dest="./${TAR_FILE}" . + docker buildx build --platform $PLATFORM -t "${IMAGE_NAME}:${IMAGE_TAG}" --output type=docker,dest="./${TAR_FILE}" . if [ $? -eq 0 ]; then log_success "Docker 镜像构建完成: ${TAR_FILE}" @@ -192,8 +192,12 @@ deploy_on_server() { # 创建并使用.env文件中的变量 echo "[INFO] 启动新容器..." - sudo docker run -d -p ${LOCAL_PORT}:${CONTAINER_PORT} --name ${CONTAINER_NAME} \ + # 使用 host 网络模式,让容器直接使用宿主机网络栈,从而可以通过 localhost:5432 访问宿主机数据库 + # 同时覆盖环境变量,强制使用本地数据库配置 + sudo docker run -d --network host --name ${CONTAINER_NAME} \ --env-file /tmp/.env \ + -e DB_HOST=localhost \ + -e DB_PORT=5432 \ ${IMAGE_NAME}:${IMAGE_TAG} # 验证容器是否启动成功 diff --git a/main.py b/main.py index 9cd98de..1803173 100644 --- a/main.py +++ b/main.py @@ -36,8 +36,10 @@ async def shutdown_event(): # Database connection parameters DB_CONFIG = { - "host": os.getenv("DB_HOST", "121.43.104.161"), - "port": os.getenv("DB_PORT", "6432"), + "host": os.getenv("DB_HOST", "localhost"), + "port": os.getenv("DB_PORT", "5432"), + # "host": os.getenv("DB_HOST", "121.43.104.161"), + # "port": os.getenv("DB_PORT", "6432"), "user": os.getenv("DB_USER", "gsdh"), "password": os.getenv("DB_PASSWORD", "123gsdh"), "database": os.getenv("DB_NAME", "gsdh") diff --git a/test_db.py b/test_db.py new file mode 100644 index 0000000..a51c352 --- /dev/null +++ b/test_db.py @@ -0,0 +1,24 @@ +import os +import psycopg2 +from dotenv import load_dotenv + +# 模拟 main.py 的行为:加载环境变量 +load_dotenv() + +# 使用代码中的默认配置(模拟服务器环境),但会被 .env 覆盖(模拟本地环境) +DB_CONFIG = { + "host": os.getenv("DB_HOST", "localhost"), + "port": os.getenv("DB_PORT", "5432"), + "user": os.getenv("DB_USER", "gsdh"), + "password": os.getenv("DB_PASSWORD", "123gsdh"), + "database": os.getenv("DB_NAME", "gsdh") +} + +print(f"Connecting to: {DB_CONFIG['host']}:{DB_CONFIG['port']}") + +try: + conn = psycopg2.connect(**DB_CONFIG) + print("Successfully connected to the database!") + conn.close() +except Exception as e: + print(f"Failed to connect: {e}")