mirror of
https://gitee.com/shuto-github/intranet_app_manager.git
synced 2024-10-05 19:42:06 +08:00
添加docker实现
This commit is contained in:
parent
d87bb6edfe
commit
4a8f0fa227
4
Dockerfile
Normal file
4
Dockerfile
Normal file
@ -0,0 +1,4 @@
|
||||
FROM openjdk:8-jdk-alpine
|
||||
ARG JAR_FILE
|
||||
COPY ${JAR_FILE} /usr/share/intranet_app_manager.jar
|
||||
ENTRYPOINT ["java","-jar","/usr/share/intranet_app_manager.jar"]
|
30
build.gradle
30
build.gradle
@ -14,7 +14,7 @@ configurations {
|
||||
runtimeClasspath {
|
||||
extendsFrom developmentOnly
|
||||
}
|
||||
compileOnly {
|
||||
implementationOnly {
|
||||
extendsFrom annotationProcessor
|
||||
}
|
||||
}
|
||||
@ -27,20 +27,20 @@ dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
||||
compile group: 'org.apache.shiro', name: 'shiro-spring-boot-web-starter', version: '1.5.0'
|
||||
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.10'
|
||||
compile group: 'com.aliyun.oss', name: 'aliyun-sdk-oss', version: '3.1.0'
|
||||
compile group: 'com.qiniu', name: 'qiniu-java-sdk', version: '7.2.28'
|
||||
compile group: 'com.qcloud', name: 'cos_api', version: '5.6.15'
|
||||
compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.16'
|
||||
compile group: 'com.googlecode.plist', name: 'dd-plist', version: '1.21'
|
||||
compile group: 'net.dongliu', name: 'apk-parser', version: '2.6.9'
|
||||
compile group: 'com.google.zxing', name: 'javase', version: '3.4.0'
|
||||
compile group: 'commons-io', name: 'commons-io', version: '2.6'
|
||||
compile group: 'com.jcraft', name: 'jzlib', version: '1.1.3'
|
||||
compile group: 'org.freemarker', name: 'freemarker', version: '2.3.28'
|
||||
compile group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.0.1'
|
||||
compile group: 'com.alibaba', name: 'fastjson', version: '1.2.59'
|
||||
implementation group: 'org.apache.shiro', name: 'shiro-spring-boot-web-starter', version: '1.5.0'
|
||||
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.10'
|
||||
implementation group: 'com.aliyun.oss', name: 'aliyun-sdk-oss', version: '3.1.0'
|
||||
implementation group: 'com.qiniu', name: 'qiniu-java-sdk', version: '7.2.28'
|
||||
implementation group: 'com.qcloud', name: 'cos_api', version: '5.6.15'
|
||||
implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.16'
|
||||
implementation group: 'com.googlecode.plist', name: 'dd-plist', version: '1.21'
|
||||
implementation group: 'net.dongliu', name: 'apk-parser', version: '2.6.9'
|
||||
implementation group: 'com.google.zxing', name: 'javase', version: '3.4.0'
|
||||
implementation group: 'commons-io', name: 'commons-io', version: '2.6'
|
||||
implementation group: 'com.jcraft', name: 'jzlib', version: '1.1.3'
|
||||
implementation group: 'org.freemarker', name: 'freemarker', version: '2.3.28'
|
||||
implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.0.1'
|
||||
implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.59'
|
||||
developmentOnly 'org.springframework.boot:spring-boot-devtools'
|
||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
||||
}
|
||||
|
108
deploy.sh
Executable file
108
deploy.sh
Executable file
@ -0,0 +1,108 @@
|
||||
#!/bin/sh
|
||||
dir=$(pwd)
|
||||
configPath=$dir/src/main/resources/application.properties
|
||||
caPath=$dir/src/main/resources/static/crt/ca.crt
|
||||
p12Path=$dir/src/main/resources/server.pkcs12
|
||||
sslConfigPath=$dir/openssl.cnf
|
||||
param=$1
|
||||
|
||||
echo "$param"
|
||||
getIpForMac(){
|
||||
ifconfig | grep inet | grep -v inet6 | grep -v 127 | cut -d ' ' -f2
|
||||
}
|
||||
|
||||
getIpForLinux(){
|
||||
ip a | grep inet | grep -v inet6 | grep -v 127 | sed 's/^[ \t]*//g' | cut -d ' ' -f2
|
||||
}
|
||||
|
||||
ip="127.0.0.1"
|
||||
if [[ $(uname -a) =~ "Darwin" ]];then
|
||||
ip=$(getIpForMac)
|
||||
elif [[ $(uname -a) =~ "centos" ]];then
|
||||
ip=$(getIpForLinux)
|
||||
elif [[ $(uname -a) =~ "ubuntu" ]];then
|
||||
ip=$(getIpForLinux)
|
||||
fi
|
||||
|
||||
|
||||
|
||||
build(){
|
||||
mysqlAddr='127.0.0.1'
|
||||
if [[ $param =~ "docker" ]];then
|
||||
mysqlAddr="docker_mysql"
|
||||
fi
|
||||
sed -i "" "s/\${ip}/$mysqlAddr/" "$configPath"
|
||||
gradle clean
|
||||
gradle build
|
||||
cd "$dir/build/libs/"
|
||||
mv intranet_app_manager*.jar intranet_app_manager.jar
|
||||
cd "$dir"
|
||||
sed -i "" "s/$mysqlAddr/\${ip}/" "$configPath"
|
||||
}
|
||||
|
||||
createCert(){
|
||||
cd "$dir"
|
||||
rm -rf certs
|
||||
mkdir -p certs/CA/{certs,crl,newcerts,private}
|
||||
touch certs/CA/index.txt
|
||||
touch certs/CA/certs.db
|
||||
cp -rf "$sslConfigPath" certs/openssl.cnf
|
||||
echo 00 > certs/CA/serial
|
||||
sed -i "" "s/\${ip}/$ip/" "$dir/certs/openssl.cnf"
|
||||
cd "$dir/certs"
|
||||
echo "输入:123456"
|
||||
openssl req -new -x509 -days 3650 -keyout ca.key -out ca.crt -config openssl.cnf
|
||||
openssl genrsa -out server.key 2048
|
||||
openssl req -new -key server.key -out server.csr -config openssl.cnf
|
||||
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -config openssl.cnf
|
||||
openssl pkcs12 -export -in server.crt -inkey server.key -out server.pkcs12
|
||||
cp -rf "$dir/certs/ca.crt" "$caPath"
|
||||
cp -rf "$dir/certs/server.pkcs12" "$p12Path"
|
||||
cd "$dir"
|
||||
rm -rf certs
|
||||
}
|
||||
|
||||
installAndStartMysql(){
|
||||
brew install mysql
|
||||
killall -9 mysqld
|
||||
mysqld &
|
||||
mysql -u root -p <"$dir/mysql/sql/init.sql"
|
||||
}
|
||||
|
||||
startup(){
|
||||
ps -efww | grep -w 'intranet_app_manager' | grep -v grep |awk '{print $2}'|xargs kill -9
|
||||
if [[ $param =~ "docker" ]];then
|
||||
killall -9 mysqld
|
||||
docker-compose up -d
|
||||
else
|
||||
cd "$dir/build/libs"
|
||||
java -jar intranet_app_manager.jar &
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
openPage(){
|
||||
address="http://$ip:8080/account/signin"
|
||||
echo "$address"
|
||||
if [[ $(uname -a) =~ "Darwin" ]];then
|
||||
open "$address"
|
||||
elif [[ $(uname -a) =~ "centos" ]];then
|
||||
x-www-browser "$address"
|
||||
elif [[ $(uname -a) =~ "ubuntu" ]];then
|
||||
x-www-browser "$address"
|
||||
fi
|
||||
}
|
||||
|
||||
setup(){
|
||||
createCert
|
||||
build
|
||||
if [[ $param =~ "docker" ]];then
|
||||
docker-compose build
|
||||
else
|
||||
installAndStartMysql
|
||||
fi
|
||||
startup
|
||||
openPage
|
||||
}
|
||||
|
||||
setup
|
40
docker-compose.yml
Normal file
40
docker-compose.yml
Normal file
@ -0,0 +1,40 @@
|
||||
version: '3'
|
||||
services:
|
||||
web:
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
JAR_FILE: build/libs/intranet_app_manager.jar
|
||||
dockerfile: Dockerfile
|
||||
container_name: web
|
||||
networks:
|
||||
- server
|
||||
depends_on:
|
||||
- mysql
|
||||
ports:
|
||||
- "8080:8080"
|
||||
- "8443:443"
|
||||
mysql:
|
||||
build:
|
||||
context: ./mysql
|
||||
restart: always
|
||||
container_name: docker_mysql
|
||||
networks:
|
||||
- server
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
MYSQL_USER: app
|
||||
volumes:
|
||||
- ./mysql/init:/docker-entrypoint-initdb.d/
|
||||
- ./mysql/sql:/opt/sql
|
||||
ports:
|
||||
- '3306:3306'
|
||||
command:
|
||||
--default-authentication-plugin=mysql_native_password
|
||||
--character-set-server=utf8mb4
|
||||
--collation-server=utf8mb4_unicode_ci
|
||||
networks:
|
||||
server:
|
||||
driver:
|
||||
bridge
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
|
||||
|
2
mysql/dockerfile
Normal file
2
mysql/dockerfile
Normal file
@ -0,0 +1,2 @@
|
||||
FROM mysql:8.0.21
|
||||
ADD mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf
|
1
mysql/init/init.sql
Normal file
1
mysql/init/init.sql
Normal file
@ -0,0 +1 @@
|
||||
source /opt/sql/init.sql;
|
111
mysql/mysqld.cnf
Normal file
111
mysql/mysqld.cnf
Normal file
@ -0,0 +1,111 @@
|
||||
[client]
|
||||
port=3306
|
||||
socket = /var/run/mysqld/mysqld.sock
|
||||
[mysql]
|
||||
no-auto-rehash
|
||||
auto-rehash
|
||||
default-character-set=utf8mb4
|
||||
[mysqld]
|
||||
###basic settings
|
||||
server-id = 2
|
||||
pid-file = /var/run/mysqld/mysqld.pid
|
||||
socket = /var/run/mysqld/mysqld.sock
|
||||
datadir = /var/lib/mysql
|
||||
#log-error = /var/lib/mysql/error.log
|
||||
# By default we only accept connections from localhost
|
||||
#bind-address = 127.0.0.1
|
||||
# Disabling symbolic-links is recommended to prevent assorted security risks
|
||||
symbolic-links=0
|
||||
character-set-server = utf8mb4
|
||||
sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
|
||||
default-storage-engine=INNODB
|
||||
transaction_isolation = READ-COMMITTED
|
||||
auto_increment_offset = 1
|
||||
connect_timeout = 20
|
||||
max_connections = 3500
|
||||
wait_timeout=604800
|
||||
interactive_timeout=31536000
|
||||
interactive_timeout = 31536000
|
||||
log_bin_trust_function_creators = 1
|
||||
wait_timeout = 7200
|
||||
sort_buffer_size = 32M
|
||||
join_buffer_size = 128M
|
||||
max_allowed_packet = 1024M
|
||||
tmp_table_size = 2097152
|
||||
explicit_defaults_for_timestamp = 1
|
||||
read_buffer_size = 16M
|
||||
read_rnd_buffer_size = 32M
|
||||
query_cache_type = 1
|
||||
query_cache_size = 2M
|
||||
table_open_cache = 1500
|
||||
table_definition_cache = 1000
|
||||
thread_cache_size = 768
|
||||
back_log = 3000
|
||||
open_files_limit = 65536
|
||||
skip-name-resolve
|
||||
########log settings########
|
||||
log-output=FILE
|
||||
general_log = ON
|
||||
general_log_file=/var/lib/mysql/general.log
|
||||
slow_query_log = ON
|
||||
slow_query_log_file=/var/lib/mysql/slowquery.log
|
||||
long_query_time=10
|
||||
#log-error=/var/lib/mysql/error.log
|
||||
log_queries_not_using_indexes = OFF
|
||||
log_throttle_queries_not_using_indexes = 0
|
||||
#expire_logs_days = 120
|
||||
min_examined_row_limit = 100
|
||||
########innodb settings########
|
||||
innodb_io_capacity = 4000
|
||||
innodb_io_capacity_max = 8000
|
||||
innodb_buffer_pool_size = 6144M
|
||||
innodb_file_per_table = on
|
||||
innodb_buffer_pool_instances = 20
|
||||
innodb_buffer_pool_load_at_startup = 1
|
||||
innodb_buffer_pool_dump_at_shutdown = 1
|
||||
innodb_log_file_size = 300M
|
||||
innodb_log_files_in_group = 2
|
||||
innodb_log_buffer_size = 16M
|
||||
innodb_undo_logs = 128
|
||||
#innodb_undo_tablespaces = 3
|
||||
#innodb_undo_log_truncate = 1
|
||||
#innodb_max_undo_log_size = 2G
|
||||
innodb_flush_method = O_DIRECT
|
||||
innodb_flush_neighbors = 1
|
||||
innodb_purge_threads = 4
|
||||
innodb_large_prefix = 1
|
||||
innodb_thread_concurrency = 64
|
||||
innodb_print_all_deadlocks = 1
|
||||
innodb_strict_mode = 1
|
||||
innodb_sort_buffer_size = 64M
|
||||
innodb_flush_log_at_trx_commit=1
|
||||
innodb_autoextend_increment=64
|
||||
innodb_concurrency_tickets=5000
|
||||
innodb_old_blocks_time=1000
|
||||
innodb_open_files=65536
|
||||
innodb_stats_on_metadata=0
|
||||
innodb_file_per_table=1
|
||||
innodb_checksum_algorithm=0
|
||||
#innodb_data_file_path=ibdata1:60M;ibdata2:60M;autoextend:max:1G
|
||||
innodb_data_file_path = ibdata1:12M:autoextend
|
||||
#innodb_temp_data_file_path = ibtmp1:500M:autoextend:max:20G
|
||||
#innodb_buffer_pool_dump_pct = 40
|
||||
#innodb_page_cleaners = 4
|
||||
#innodb_purge_rseg_truncate_frequency = 128
|
||||
binlog_gtid_simple_recovery=1
|
||||
#log_timestamps=system
|
||||
##############
|
||||
delayed_insert_limit = 100
|
||||
delayed_insert_timeout = 300
|
||||
delayed_queue_size = 1000
|
||||
delay_key_write = ON
|
||||
disconnect_on_expired_password = ON
|
||||
div_precision_increment = 4
|
||||
end_markers_in_json = OFF
|
||||
eq_range_index_dive_limit = 10
|
||||
innodb_adaptive_flushing = ON
|
||||
innodb_adaptive_hash_index = ON
|
||||
innodb_adaptive_max_sleep_delay = 150000
|
||||
#innodb_additional_mem_pool_size = 2097152
|
||||
innodb_autoextend_increment = 64
|
||||
innodb_autoinc_lock_mode = 1
|
9
mysql/sql/init.sql
Normal file
9
mysql/sql/init.sql
Normal file
@ -0,0 +1,9 @@
|
||||
# 创建库
|
||||
drop database if exists app_manager;
|
||||
drop user if exists 'app_manager'@'%';
|
||||
-- 支持emoji:需要mysql数据库参数: character_set_server=utf8mb4
|
||||
create database app_manager default character set utf8mb4 collate utf8mb4_unicode_ci;
|
||||
use app_manager;
|
||||
create user 'app_manager'@'%' identified by 'app_manager123456';
|
||||
grant all privileges on *.* to 'app_manager'@'%';
|
||||
flush privileges;
|
46
openssl.cnf
Normal file
46
openssl.cnf
Normal file
@ -0,0 +1,46 @@
|
||||
[ req ]
|
||||
distinguished_name=req_distinguished_name
|
||||
req_extensions=v3_req
|
||||
|
||||
[ req_distinguished_name ]
|
||||
countryName=Country Name (2 letter code)
|
||||
countryName_default=CN
|
||||
stateOrProvinceName=State or Province Name (full name)
|
||||
stateOrProvinceName_default=ZheJiang
|
||||
localityName=Locality Name (eg, city)
|
||||
localityName_default=HangZhou
|
||||
organizationalUnitName=Organizational Unit Name (eg, section)
|
||||
organizationalUnitName_default=${ip}
|
||||
commonName=Internet Widgits Ltd
|
||||
commonName_default=${ip}
|
||||
commonName_max=64
|
||||
|
||||
[ v3_req ]
|
||||
basicConstraints = CA:FALSE
|
||||
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
|
||||
subjectAltName = @alt_names
|
||||
|
||||
[ alt_names ]
|
||||
DNS.1 = ${ip}
|
||||
# section for the "default_ca" option
|
||||
[ca]
|
||||
default_ca=my_ca_default
|
||||
|
||||
# default section for "ca" command options
|
||||
[my_ca_default]
|
||||
new_certs_dir=./CA/certs
|
||||
database=./CA/certs.db
|
||||
default_md = sha256
|
||||
policy=my_ca_policy
|
||||
serial = ./CA/serial
|
||||
default_days = 365
|
||||
|
||||
# section for DN field validation and order
|
||||
[my_ca_policy]
|
||||
commonName = ${ip}
|
||||
countryName = CN
|
||||
stateOrProvinceName = ZheJiang
|
||||
localityName = HZ
|
||||
organizationName = NE
|
||||
organizationalUnitName = Music
|
||||
emailAddress = app@163.com
|
Loading…
Reference in New Issue
Block a user