add docker image

This commit is contained in:
inrgihc
2022-02-11 22:45:36 +08:00
parent 2b696bd372
commit 697a6047bc
9 changed files with 303 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
#!/bin/sh
set -e
DBSWITCH_VERSION=1.6.4
BUILD_DOCKER_DIR="$( cd "$( dirname "$0" )" && pwd )"
PROJECT_ROOT_DIR=$( dirname "$BUILD_DOCKER_DIR")
DOCKER_DBSWITCH_DIR=$BUILD_DOCKER_DIR/dbswitch
# build project
cd $PROJECT_ROOT_DIR && sh docker-maven-build.sh && cd -
# copy files
cd $BUILD_DOCKER_DIR \
&& tar zxvf $PROJECT_ROOT_DIR/target/dbswitch-release-${DBSWITCH_VERSION}.tar.gz -C /tmp \
&& cp /tmp/dbswitch-release-${DBSWITCH_VERSION}/lib/* ${BUILD_DOCKER_DIR}/dbswitch/dbswitch-release/lib/ \
&& rm -rf /tmp/dbswitch-release-*
# build image
cd ${DOCKER_DBSWITCH_DIR} \
&& tar zcvf dbswitch-release.tar.gz dbswitch-release/ \
&& docker build -t inrgihc/dbswitch:${DBSWITCH_VERSION} . \
&& rm -f dbswitch-release.tar.gz \
&& rm -f dbswitch-release/lib/*.jar
# clean project
cd $PROJECT_ROOT_DIR && sh docker-maven-clean.sh && cd -
# login and push docker image
docker login -u inrgihc
docker push inrgihc/dbswitch:${DBSWITCH_VERSION}

View File

@@ -0,0 +1,12 @@
FROM inrgihc/maven-aliyun:3.6.3-jdk-8
ADD dbswitch-release.tar.gz /
EXPOSE 9088
USER root
WORKDIR /dbswitch-release
CMD [ "/dbswitch-release/bin/startup.sh"]

View File

@@ -0,0 +1,48 @@
#!/usr/bin/env bash
#
# Author : tang
# Date :2021-07-31
#
#############################################
# !!!!!! Modify here please
APP_MAIN="com.gitee.dbswitch.admin.AdminApplication"
#############################################
APP_HOME="${BASH_SOURCE-$0}"
APP_HOME="$(dirname "${APP_HOME}")"
APP_HOME="$(cd "${APP_HOME}"; pwd)"
APP_HOME="$(cd "$(dirname ${APP_HOME})"; pwd)"
#echo "Base Directory:${APP_HOME}"
APP_BIN_PATH=$APP_HOME/bin
APP_LIB_PATH=$APP_HOME/lib
APP_CONF_PATH=$APP_HOME/conf
APP_PID_FILE="${APP_HOME}/run/${APP_MAIN}.pid"
APP_RUN_LOG="${APP_HOME}/run/run_${APP_MAIN}.log"
[ -d "${APP_HOME}/run" ] || mkdir -p "${APP_HOME}/run"
cd ${APP_HOME}
echo -n `date +'%Y-%m-%d %H:%M:%S'` >>${APP_RUN_LOG}
echo "---- Start service [${APP_MAIN}] process. ">>${APP_RUN_LOG}
# JVMFLAGS JVM参数可以在这里设置
JVMFLAGS="-Dfile.encoding=UTF-8 -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:./gc.log"
if [ "$JAVA_HOME" != "" ]; then
JAVA="$JAVA_HOME/bin/java"
else
JAVA=java
fi
#把lib下的所有jar都加入到classpath中
CLASSPATH=$APP_CONF_PATH
for i in $APP_LIB_PATH/*.jar
do
CLASSPATH="$i:$CLASSPATH"
done
$JAVA -cp $CLASSPATH $JVMFLAGS $APP_MAIN $APP_CONF_PATH

View File

@@ -0,0 +1,35 @@
server:
port: 9088
spring:
application:
name: dbswitch-admin
tomcat:
uri-encoding: UTF-8
max-http-header-size: 8096
mvc:
throw-exception-if-no-handler-found: true
static-path-pattern: /statics/**
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://${MYSQLDB_HOST:dbswitch_mysqldb}:${MYSQLDB_PORT:3306}/dbswitch?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF8&autoReconnect=true&useSSL=false&allowMultiQueries=true&failOverReadOnly=false&connectTimeout=30000
username: ${MYSQLDB_USERNAME:tangyibo}
password: ${MYSQLDB_PASSWORD:123456}
validation-query: SELECT 1
test-on-borrow: true
flyway:
locations: classpath:db/migration
baseline-on-migrate: true
table: DBSWITCH_SCHEMA_HISTORY
enabled: true
mybatis:
configuration:
lazy-loading-enabled: true
aggressive-lazy-loading: false
map-underscore-to-camel-case: true
#log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper:
wrap-keyword: "`{0}`"
enable-method-annotation: true

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod=" 5 seconds">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="./logs" />
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_HOME}/dbswitch_server.log</File>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level> <!--过滤掉error的级别-->
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/dbswitch_server_%d{yyyy-MM-dd}.log.%i.gz</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>512MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!--打印错误日志-->
<appender name="ERRORFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_HOME}/error_server.log</File>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level> <!--//打印error-->
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/dbswitch_error_%d{yyyy-MM-dd}.log.%i.gz</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>512MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<MaxHistory>180</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
<appender-ref ref="ERRORFILE" />
</root>
</configuration>

View File

@@ -0,0 +1,55 @@
# DBSWITCH基于docker-compose的一键部署脚本
**要求**: 准备一个能够安装docker的linux操作系统
## 一、安装docker及docker-compose
```
[root@localhost install]# ls -l
总用量 12
-rw-r--r-- 1 root root 625 2月 11 22:24 docker-compose.yml
-rw-r--r-- 1 root root 787 2月 11 20:54 docker_install.sh
-rw-r--r-- 1 root root 378 2月 11 22:38 README.md
[root@localhost install]# sh docker_install.sh
```
## 二、一键部署dbswitch
```
[root@localhost install]# ls -l
总用量 12
-rw-r--r-- 1 root root 625 2月 11 22:24 docker-compose.yml
-rw-r--r-- 1 root root 787 2月 11 20:54 docker_install.sh
-rw-r--r-- 1 root root 378 2月 11 22:38 README.md
[root@localhost install]# docker-compose up -d
```
## 三、常用操作命令
- 1. 一键创建并启动容器服务:
```
docker-compose up -d
```
- 2. 销毁容器服务:
```
docker-compose down
```
- 3. 停止容器:
```
docker-compose stop
```
- 4. 重启容器:
```
docker-compose restart
```
- 5. 启动容器:
```
docker-compose start
```

View File

@@ -0,0 +1,28 @@
version: '3.3'
services:
mysqldb:
container_name: dbswitch_mysqldb
image: mysql:5.7
volumes:
- "/data/mysql:/var/lib/mysql"
environment:
MYSQL_DATABASE: dbswitch
MYSQL_USER: tangyibo
MYSQL_PASSWORD: 123456
MYSQL_ROOT_PASSWORD: 123456
MYSQL_ROOT_HOST: '%'
ports:
- 13306:3306
dbswitch:
container_name: dbswitch_webui
image: inrgihc/dbswitch:1.6.4
environment:
MYSQLDB_HOST: dbswitch_mysqldb
MYSQLDB_PORT: 3306
MYSQLDB_USERNAME: tangyibo
MYSQLDB_PASSWORD: 123456
ports:
- 9088:9088
depends_on:
- mysqldb

View File

@@ -0,0 +1,30 @@
#!/bin/bash
set -e
curl -sSL https://get.daocloud.io/docker | sh
docker --version
mkdir -p /etc/docker/
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors":[
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://dhyjbe13.mirror.aliyuncs.com"
],
"insecure-registries": ["127.0.0.1/8"],
"max-concurrent-downloads":10,
"log-driver":"json-file",
"log-level":"warn",
"log-opts":{
"max-size":"10m",
"max-file":"3"
},
"data-root":"/var/lib/docker"
}
EOF
service docker restart
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.2.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
docker-compose --version