This commit is contained in:
jeremygan2021
2026-01-10 02:12:39 +08:00
parent 6190fae22f
commit cf65c52c82
3 changed files with 38 additions and 8 deletions

View File

@@ -36,10 +36,10 @@ TAR_FILE="${IMAGE_NAME}-${IMAGE_TAG}.tar" # 压缩包文件名
PLATFORM="linux/amd64" # 默认架构 PLATFORM="linux/amd64" # 默认架构
ARCH_SUFFIX="" # 架构后缀用于区分不同架构的tar文件 ARCH_SUFFIX="" # 架构后缀用于区分不同架构的tar文件
# 默认使用华为云源 (AMD64速度快) # 默认使用华为云源 (AMD64速度快)
BASE_IMAGE="swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/python:3.9-slim" # BASE_IMAGE="swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/python:3.9-slim"
if [ "$PLATFORM" = "linux/arm64" ]; then # if [ "$PLATFORM" = "linux/arm64" ]; then
BASE_IMAGE="docker.m.daocloud.io/python:3.9-slim" # BASE_IMAGE="docker.m.daocloud.io/python:3.9-slim"
fi # fi
# 颜色输出 # 颜色输出
RED='\033[0;31m' RED='\033[0;31m'
GREEN='\033[0;32m' GREEN='\033[0;32m'
@@ -128,7 +128,7 @@ build_image() {
fi fi
# 构建镜像并导出为tar文件 # 构建镜像并导出为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 if [ $? -eq 0 ]; then
log_success "Docker 镜像构建完成: ${TAR_FILE}" log_success "Docker 镜像构建完成: ${TAR_FILE}"
@@ -192,8 +192,12 @@ deploy_on_server() {
# 创建并使用.env文件中的变量 # 创建并使用.env文件中的变量
echo "[INFO] 启动新容器..." 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 \ --env-file /tmp/.env \
-e DB_HOST=localhost \
-e DB_PORT=5432 \
${IMAGE_NAME}:${IMAGE_TAG} ${IMAGE_NAME}:${IMAGE_TAG}
# 验证容器是否启动成功 # 验证容器是否启动成功

View File

@@ -36,8 +36,10 @@ async def shutdown_event():
# Database connection parameters # Database connection parameters
DB_CONFIG = { DB_CONFIG = {
"host": os.getenv("DB_HOST", "121.43.104.161"), "host": os.getenv("DB_HOST", "localhost"),
"port": os.getenv("DB_PORT", "6432"), "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"), "user": os.getenv("DB_USER", "gsdh"),
"password": os.getenv("DB_PASSWORD", "123gsdh"), "password": os.getenv("DB_PASSWORD", "123gsdh"),
"database": os.getenv("DB_NAME", "gsdh") "database": os.getenv("DB_NAME", "gsdh")

24
test_db.py Normal file
View File

@@ -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}")