first
This commit is contained in:
commit
0b8b8c21e3
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# 定基本环境变量并导出
|
||||||
|
export DOMAIN=bazhong
|
||||||
|
export NETWORK="swarm_network_$DOMAIN"
|
||||||
|
|
||||||
|
export REGISTRY=registry.t-aaron.com
|
||||||
|
|
||||||
|
#MySql 端口暴露出来方便访问
|
||||||
|
export MYSQL_PORT=3308
|
||||||
|
export MYSQL_ROOT_PASSWORD=tuoheng2024
|
||||||
|
export MYSQL_IMAGE=${REGISTRY}/tuoheng/mysql:8.0.25
|
||||||
|
export MYSQL_DATA=${NETWORK}_mysql_data
|
||||||
|
export MYSQL_NAME=MYSQL_${DOMAIN}
|
||||||
|
export MYSQL_MEMORY=1g
|
||||||
|
|
||||||
|
export REDIS_PORT=6380
|
||||||
|
export REDIS_IMAGE=${REGISTRY}/tuoheng/redis:latest
|
||||||
|
export REDIS_DATA=${NETWORK}_redis_data
|
||||||
|
export REDIS_NAME=REDIS_${DOMAIN}
|
||||||
|
export REDIS_MEMORY=512m
|
||||||
|
|
||||||
|
|
||||||
|
export MQTT_PORT=1883
|
||||||
|
export MQTT_WS_PORT=9001
|
||||||
|
export MQTT_IMAGE=${REGISTRY}/tuoheng/eclipse-mosquitto:latest
|
||||||
|
export MQTT_NAME=MQTT_${DOMAIN}
|
||||||
|
export MQTT_MEMORY=512m
|
||||||
|
|
||||||
|
export SKY_AOP="sky-oap:11800"
|
||||||
|
#主机INGRESS_PORT 映射到容器80 INGRESS_SSL_PORT 映射到容器 443
|
||||||
|
export INGRESS_PORT=80
|
||||||
|
#export INGRESS_SSL_PORT=443
|
||||||
|
|
||||||
|
export OIDC_URL=https://oidc-$DOMAIN-software.t-aaron.com
|
||||||
|
export OIDC_PORT=8090
|
||||||
|
export XXL_JOB=http://xxljob:8080/xxl-job-admin
|
||||||
|
#固定基本配置
|
||||||
|
export TZ=Asia/Shanghai
|
||||||
|
export SPRING_CLOUD_CONSUL_HOST=consul
|
||||||
|
export SPRING_CLOUD_CONSUL_PORT=8500
|
||||||
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
# 使用一个基础镜像
|
||||||
|
#FROM openjdk:11-jre-slim
|
||||||
|
FROM tuoheng/centos:base
|
||||||
|
USER th
|
||||||
|
# 定义构建参数
|
||||||
|
ARG SW_APP_NAME
|
||||||
|
ARG SW_SKY_AOP
|
||||||
|
# 设置工作目录
|
||||||
|
WORKDIR /data/java/tuoheng
|
||||||
|
COPY apache-skywalking-java-agent-9.0.0.tgz .
|
||||||
|
RUN tar -zxvf apache-skywalking-java-agent-9.0.0.tgz
|
||||||
|
#复制应用程序到容器中
|
||||||
|
COPY tuoheng.jar .
|
||||||
|
# 设置环境变量
|
||||||
|
ENV PATH="/usr/java/jdk/bin:${PATH}"
|
||||||
|
ENV SW_AGENT_COLLECTOR_BACKEND_SERVICES="${SW_SKY_AOP}" \
|
||||||
|
SW_AGENT_NAME="${SW_APP_NAME}"
|
||||||
|
#暴露应用程序的端口
|
||||||
|
#EXPOSE 8090
|
||||||
|
# 运行应用程序
|
||||||
|
ENTRYPOINT ["java", "-Dfile.encoding=UTF-8","-javaagent:/data/java/tuoheng/skywalking-agent/skywalking-agent.jar","-jar","tuoheng.jar"]
|
||||||
|
~
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# This script builds the Docker image
|
||||||
|
# 读取第一个参数
|
||||||
|
if [ $# -ne 2 ]; then
|
||||||
|
echo "错误:调用该脚本时必须传入 2 个参数。"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "服务名: $1 Java包: $2"
|
||||||
|
rm tuoheng.jar
|
||||||
|
cp $2 tuoheng.jar
|
||||||
|
source ../environment.sh
|
||||||
|
export APP_NAME=$1
|
||||||
|
#docker service rm $APP_NAME
|
||||||
|
sleep 5
|
||||||
|
docker container prune -f
|
||||||
|
sleep 5
|
||||||
|
cp /data/java/apache-skywalking-java-agent-9.0.0.tgz apache-skywalking-java-agent-9.0.0.tgz
|
||||||
|
docker image rm $REGISTRY/tuoheng/$APP_NAME:$DOMAIN
|
||||||
|
docker build --no-cache \
|
||||||
|
--build-arg SW_APP_NAME=$APP_NAME \
|
||||||
|
--build-arg SW_SKY_AOP=$SKY_AOP \
|
||||||
|
-t $REGISTRY/tuoheng/$APP_NAME:$DOMAIN . # 注意末尾的 `.` 表示当前路径
|
||||||
|
docker push $REGISTRY/tuoheng/$APP_NAME:$DOMAIN
|
||||||
|
~
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
source ../environment.sh
|
||||||
|
if ! docker network inspect ${NETWORK} >/dev/null 2>&1; then
|
||||||
|
docker network create --driver bridge ${NETWORK}
|
||||||
|
echo "创建 ${NETWORK} bridge 网络成功"
|
||||||
|
else
|
||||||
|
echo "${NETWORK} 网络已存在"
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
source ../environment.sh
|
||||||
|
if ! docker volume inspect ${MYSQL_DATA} >/dev/null 2>&1; then
|
||||||
|
docker volume create ${MYSQL_DATA}
|
||||||
|
echo "创建 ${MYSQL_DATA} 卷成功"
|
||||||
|
else
|
||||||
|
echo "${MYSQL_DATA} 卷已存在"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
source ../environment.sh
|
||||||
|
if ! docker volume inspect ${REDIS_DATA} >/dev/null 2>&1; then
|
||||||
|
docker volume create ${REDIS_DATA}
|
||||||
|
echo "创建 ${REDIS_DATA} 卷成功"
|
||||||
|
else
|
||||||
|
echo "${REDIS_DATA} 卷已存在"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
source ../environment.sh
|
||||||
|
if [ -z "$NETWORK" ]; then
|
||||||
|
echo "错误: 未找到 NETWORK 环境变量"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$MYSQL_ROOT_PASSWORD" ]; then
|
||||||
|
echo "错误: 未找到 MYSQL_ROOT_PASSWORD 环境变量"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$MYSQL_PORT" ]; then
|
||||||
|
echo "错误: 未找到 MYSQL_PORT 环境变量"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if docker ps -a | grep -q ${MYSQL_NAME}; then
|
||||||
|
echo "停止并删除已存在的 MySQL 容器..."
|
||||||
|
docker stop ${MYSQL_NAME} >/dev/null 2>&1
|
||||||
|
docker rm ${MYSQL_NAME} >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker run -d \
|
||||||
|
--name ${MYSQL_NAME} \
|
||||||
|
--network $NETWORK \
|
||||||
|
-p ${MYSQL_PORT}:3306 \
|
||||||
|
-e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \
|
||||||
|
-e MYSQL_CHARACTER_SET_SERVER=utf8mb4 \
|
||||||
|
-e MYSQL_COLLATION_SERVER=utf8mb4_unicode_ci \
|
||||||
|
-v ${MYSQL_DATA}:/var/lib/mysql \
|
||||||
|
--memory ${MYSQL_MEMORY} \
|
||||||
|
--restart unless-stopped \
|
||||||
|
${MYSQL_IMAGE}
|
||||||
|
|
||||||
|
docker ps
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
source ../environment.sh
|
||||||
|
if [ -z "$NETWORK" ]; then
|
||||||
|
echo "错误: 未找到 NETWORK 环境变量"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$REDIS_PORT" ]; then
|
||||||
|
echo "错误: 未找到 REDIS_PORT 环境变量"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$REDIS_DATA" ]; then
|
||||||
|
echo "错误: 未找到 REDIS_DATA 环境变量"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if docker ps -a | grep -q ${REDIS_NAME}; then
|
||||||
|
echo "停止并删除已存在的 REDIS 容器..."
|
||||||
|
docker stop ${REDIS_NAME} >/dev/null 2>&1
|
||||||
|
docker rm ${REDIS_NAME} >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker run -d \
|
||||||
|
--name ${REDIS_NAME} \
|
||||||
|
--network $NETWORK \
|
||||||
|
-p ${REDIS_PORT}:6379 \
|
||||||
|
-v ${REDIS_DATA}:/data \
|
||||||
|
--memory ${REDIS_MEMORY} \
|
||||||
|
--restart unless-stopped \
|
||||||
|
${REDIS_IMAGE}
|
||||||
|
docker ps
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
source ../environment.sh
|
||||||
|
if [ -z "$NETWORK" ]; then
|
||||||
|
echo "错误: 未找到 NETWORK 环境变量"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$MQTT_PORT" ]; then
|
||||||
|
echo "错误: 未找到 MQTT_PORT 环境变量"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$MQTT_WS_PORT" ]; then
|
||||||
|
echo "错误: 未找到 MQTT_WS_PORT 环境变量"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if docker ps -a | grep -q ${MQTT_NAME}; then
|
||||||
|
echo "停止并删除已存在的 MQTT 容器..."
|
||||||
|
docker stop ${MQTT_NAME} >/dev/null 2>&1
|
||||||
|
docker rm ${MQTT_NAME} >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
docker run -d \
|
||||||
|
--name ${MQTT_NAME} \
|
||||||
|
--network $NETWORK \
|
||||||
|
-p ${MQTT_PORT}:1883 \
|
||||||
|
-p ${MQTT_WS_PORT}:9001 \
|
||||||
|
--memory ${MQTT_MEMORY} \
|
||||||
|
--restart unless-stopped \
|
||||||
|
${MQTT_IMAGE}
|
||||||
|
|
||||||
|
docker ps
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
## 你是一个容器专家,需要协助为做容器化部署
|
||||||
|
### imagebuild 文件夹是放在构建服务器上的
|
||||||
|
### init 文件夹上放着需要部署docker应用的应用服务器上的
|
||||||
|
### 在构建服务器上,通过执行 build.sh 服务名 jar包名 这样去生成镜像
|
||||||
|
### 应用服务器上需要执行init里面的脚本去生成docker
|
||||||
|
### 我希望init中的每个服务都是通过一个脚本去启动,这些服务在网络环境中
|
||||||
|
#### 1.network.sh 是为了生成网络环境
|
||||||
|
#### 2.volumn.sh 是为了建立volumn,给服务用
|
||||||
|
### 在非docker swarm的环境中运行,在单机docker环境中运行
|
||||||
Loading…
Reference in New Issue