compatibility docker-compose and docker compose
Browse files- .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
|
111 |
-
|
112 |
-
#
|
113 |
-
if [ $
|
114 |
-
|
115 |
-
echo "
|
116 |
-
|
117 |
-
|
118 |
-
#
|
119 |
-
|
120 |
-
|
121 |
-
|
|
|
|
|
|
|
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
|