sanpang commited on
Commit
74dc4e9
·
1 Parent(s): d82b1ee

compatibility docker-compose and docker compose

Browse files
Files changed (1) hide show
  1. .container/build_docker.sh +43 -32
.container/build_docker.sh CHANGED
@@ -65,16 +65,6 @@ if [ ! -f "$COMPOSE_FILE" ]; then
65
  exit 1
66
  fi
67
 
68
- # 检查Docker Compose命令
69
- if command -v docker-compose &> /dev/null; then
70
- COMPOSE_CMD="docker-compose"
71
- elif docker compose version &> /dev/null; then
72
- COMPOSE_CMD="docker compose"
73
- else
74
- echo "错误: 未找到Docker Compose命令"
75
- exit 1
76
- fi
77
-
78
  # 设置Docker BuildKit环境变量
79
  export DOCKER_BUILDKIT=1
80
  export COMPOSE_DOCKER_CLI_BUILD=1
@@ -94,45 +84,66 @@ mkdir -p "$CACHE_DIR"
94
  BUILD_TIME=$(date +"%Y%m%d_%H%M%S")
95
  BUILD_ARGS="$BUILD_ARGS --build-arg BUILD_TIME=$BUILD_TIME"
96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  # 检测CPU核心数,用于并行构建
98
  CPU_CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 2)
99
  if [ $CPU_CORES -gt 2 ]; then
100
  PARALLEL_FLAG="--parallel"
101
- echo "检测到$CPU_CORES个CPU核心,启用并行构建..."
102
  else
103
  PARALLEL_FLAG=""
104
  fi
105
 
106
- # 构建Docker镜像
107
- echo "开始构建Docker镜像..."
108
-
109
  # 构建命令基础部分
110
- BUILD_CMD="$COMPOSE_CMD build $PARALLEL_FLAG $BUILD_ARGS"
111
-
112
- # 添加重新构建选项
113
- if [ $REBUILD -eq 1 ]; then
114
- BUILD_CMD="$BUILD_CMD --no-cache"
115
- echo "强制重新构建镜像..."
116
- fi
117
-
118
- # 添加服务名称(如果指定)
119
- if [ ! -z "$SERVICE" ]; then
120
- BUILD_CMD="$BUILD_CMD $SERVICE"
121
- echo "构建服务: $SERVICE"
 
 
 
122
  else
123
- echo "构建所有服务"
 
124
  fi
125
 
126
- # 执行构建命令
127
- echo "执行: $BUILD_CMD"
128
- $BUILD_CMD
129
-
130
  # 检查构建结果
131
  if [ $? -eq 0 ]; then
132
  echo "Docker镜像构建成功!"
133
  echo "构建时间: $BUILD_TIME"
134
  echo "可以使用以下命令启动容器:"
135
- echo "$COMPOSE_CMD up -d"
136
  else
137
  echo "Docker镜像构建失败,请检查错误信息。"
138
  exit 1
 
65
  exit 1
66
  fi
67
 
 
 
 
 
 
 
 
 
 
 
68
  # 设置Docker BuildKit环境变量
69
  export DOCKER_BUILDKIT=1
70
  export COMPOSE_DOCKER_CLI_BUILD=1
 
84
  BUILD_TIME=$(date +"%Y%m%d_%H%M%S")
85
  BUILD_ARGS="$BUILD_ARGS --build-arg BUILD_TIME=$BUILD_TIME"
86
 
87
+ # 获取脚本所在目录
88
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
89
+ # 获取项目根目录(脚本所在目录的父目录)
90
+ PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
91
+
92
+ echo "脚本目录: $SCRIPT_DIR"
93
+ echo "项目根目录: $PROJECT_ROOT"
94
+
95
+ # 切换到项目根目录
96
+ cd "$PROJECT_ROOT"
97
+
98
+ # 检查Docker Compose命令
99
+ if command -v docker-compose &> /dev/null; then
100
+ COMPOSE_CMD="docker-compose"
101
+ echo "使用 docker-compose 命令"
102
+ elif docker compose version &> /dev/null; then
103
+ COMPOSE_CMD="docker compose"
104
+ echo "使用 docker compose 命令"
105
+ else
106
+ echo "错误: 未找到Docker Compose命令"
107
+ echo "请安装Docker Compose: https://docs.docker.com/compose/install/"
108
+ exit 1
109
+ fi
110
+
111
  # 检测CPU核心数,用于并行构建
112
  CPU_CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 2)
113
  if [ $CPU_CORES -gt 2 ]; then
114
  PARALLEL_FLAG="--parallel"
115
+ echo "检测到${CPU_CORES}个CPU核心,启用并行构建..."
116
  else
117
  PARALLEL_FLAG=""
118
  fi
119
 
 
 
 
120
  # 构建命令基础部分
121
+ BUILD_CMD="$COMPOSE_CMD -f \"$SCRIPT_DIR/docker-compose.yml\" build $PARALLEL_FLAG --build-arg BUILDKIT_INLINE_CACHE=1"
122
+
123
+ # 根据操作系统类型执行不同的命令
124
+ if [[ "$OS_TYPE" == "Darwin" ]]; then
125
+ # macOS
126
+ echo "在macOS上构建Docker镜像..."
127
+ eval $BUILD_CMD
128
+ elif [[ "$OS_TYPE" == "Linux" ]]; then
129
+ # Linux
130
+ echo "在Linux上构建Docker镜像..."
131
+ eval $BUILD_CMD
132
+ elif [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
133
+ # Windows
134
+ echo "在Windows上构建Docker镜像..."
135
+ eval $BUILD_CMD
136
  else
137
+ echo "未知操作系统,尝试使用标准命令构建..."
138
+ eval $BUILD_CMD
139
  fi
140
 
 
 
 
 
141
  # 检查构建结果
142
  if [ $? -eq 0 ]; then
143
  echo "Docker镜像构建成功!"
144
  echo "构建时间: $BUILD_TIME"
145
  echo "可以使用以下命令启动容器:"
146
+ echo "$COMPOSE_CMD -f \"$SCRIPT_DIR/docker-compose.yml\" up -d"
147
  else
148
  echo "Docker镜像构建失败,请检查错误信息。"
149
  exit 1