67 lines
1.7 KiB
Bash
67 lines
1.7 KiB
Bash
source ../environment.sh
|
|
|
|
if [ -z "$NETWORK" ]; then
|
|
echo "错误: 未找到 NETWORK 环境变量"
|
|
exit 1
|
|
fi
|
|
if [ -z "$CONSUL_NAME" ]; then
|
|
echo "错误: 未找到 CONSUL_NAME 环境变量"
|
|
exit 1
|
|
fi
|
|
if [ -z "$CONSUL_IMAGE" ]; then
|
|
echo "错误: 未找到 CONSUL_IMAGE 环境变量"
|
|
exit 1
|
|
fi
|
|
if [ -z "$CONSUL_PORT" ]; then
|
|
echo "错误: 未找到 CONSUL_PORT 环境变量"
|
|
exit 1
|
|
fi
|
|
if [ -z "$CONSUL_MEMORY" ]; then
|
|
echo "错误: 未找到 CONSUL_MEMORY 环境变量"
|
|
exit 1
|
|
fi
|
|
|
|
# 停止并删除已存在的容器
|
|
if docker ps -a | grep -q ${CONSUL_NAME}; then
|
|
echo "停止并删除已存在的 Consul 容器..."
|
|
docker stop ${CONSUL_NAME} >/dev/null 2>&1
|
|
docker rm ${CONSUL_NAME} >/dev/null 2>&1
|
|
fi
|
|
|
|
# 创建数据目录
|
|
CONSUL_DATA_DIR="/Users/sunpeng/tuoheng/data/consul"
|
|
mkdir -p ${CONSUL_DATA_DIR}
|
|
|
|
# 启动Consul容器
|
|
echo "启动 Consul..."
|
|
docker run -d \
|
|
--name ${CONSUL_NAME} \
|
|
--network $NETWORK \
|
|
--memory $CONSUL_MEMORY \
|
|
--restart unless-stopped \
|
|
-p ${CONSUL_PORT}:8500 \
|
|
--mount type=bind,source=/etc/localtime,target=/etc/localtime,readonly \
|
|
$CONSUL_IMAGE agent -dev -client=0.0.0.0 -ui
|
|
|
|
# 等待Consul启动
|
|
echo "等待 Consul 就绪..."
|
|
until docker exec ${CONSUL_NAME} consul members 2>/dev/null; do
|
|
echo "等待 Consul 启动..."
|
|
sleep 3
|
|
done
|
|
|
|
echo "Consul 部署完成!"
|
|
echo "UI 访问地址: http://localhost:${CONSUL_PORT}"
|
|
|
|
|
|
echo "Service $SERVICE_NAME . Creating..."
|
|
docker service create \
|
|
--name "$SERVICE_NAME" \
|
|
--env CONSUL_BIND_INTERFACE=eth0 \
|
|
--restart-condition any \
|
|
--network "$NETWORK" \
|
|
--publish published=8500,target=8500 \
|
|
--constraint 'node.role == manager' \
|
|
consul
|
|
docker service ls
|