一、安装mysql
1、拉取镜像
docker pull mysql:5.7
2、启动测试mysql容器,复制文件,删除测试mysql容器
docker run --name mysql-test -e MYSQL_ROOT_PASSWORD="123456" mysql:5.7
docker start mysql-test
mkdir /user/docker/mysql/{logs,conf,data}
docker cp mysql-test:/etc/mysql /user/docker/mysql/conf/
docker stop mysql-test
docker rm mysql-test
3、挂载数据运行
docker run --name mysql -p 3306:3306 --privileged=true -v /user/docker/mysql/logs:/logs -v /user/docker/mysql/data:/var/lib/mysql -v /user/docker/mysql/conf/mysql:/etc/mysql -e MYSQL_ROOT_PASSWORD="123456" -d mysql:5.7
mysql 8.0版本
mkdir -p /usr/local/mysql/conf
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/logs
然后 vi my.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
# Custom config should go here
!includedir /etc/mysql/conf.d/
挂载运行:
docker run --restart=always -d -v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/data/mysql:/var/lib/mysql -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
4、修改用户密码
# 进入容器,进入数据库,将java8密码默认方式改变,并提供远程访问
docker exec -it mysql bash
mysql -uroot -p
---输入密码
# 提供远程访问,修改加密方式,更新密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql 8.0
select host,user from user;
#修改用户
update user set host = '%' where user = 'root';
#
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';第三方工具不支持,Mysql8新增加的加密方式caching_sha2_password
grant all on *.* to 'root'@'%' ; //允许第三方工具登录
flush privileges;
二、安装nginx
1、下载nginx镜像
docker pull nginx
2、启动测试容器(先不挂载镜像)
docker run --name nginx-test nginx
3、复制配置文件nginx.conf
mkdir /user/docker/nginx/{conf,conf.d,logs,html}
docker cp nginx-test:/etc/nginx/nginx.conf /user/docker/nginx/conf/
docker cp nginx-test:/etc/nginx/conf.d /user/docker/nginx/conf.d
docker cp nginx-test:/usr/share/nginx/html /user/docker/nginx/html
4、删除测试容器
docker stop ngnx-test
docker rm nginx-test
5、创建正式nginx容器
运行完命令后,会卡着,不用管,直接ctrl+c即可
docker run --name nginx -d -p 80:80 -v /user/docker/nginx/html:/usr/share/nginx/html -v /user/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /user/docker/nginx/logs:/var/log/nginx -v /user/docker/nginx/conf.d:/etc/nginx/conf.d -d nginx
6、启动容器
docker start nginx
三、spring boot项目的 jar 部署
1、nginx.conf配置
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name 192.168.127.18;
#将/wx-service请求转发给http://127.0.0.1:8011/wx-service处理
location /wx-app-service/ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.127.1:8888/;
}
}
}
2、配置jar包
写一个快速启动脚本
#!/bin/bash
#jar名称
APP_NAME=app-0.0.1-SNAPSHOT.jar
LogsPatch=./log
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh run.sh [start|stop|restart|status]" # run.sh 为这个脚本名称 替换为你喜欢的名称即可
exit 1
}
#检查程序是否在运行
is_exist() {
pid=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start() {
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
nohup java -jar $APP_NAME >$LogsPatch/catlina.out 2>&1 &
#打印pid
echo $! > pid
tail -f $LogsPatch/catlina.out
fi
}
#停止方法
stop() {
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
#输出运行状态
status() {
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is not running."
fi
}
#重启
restart() {
stop
start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
放到与jar 包同级目录
命令:
./run.sh start
./run.sh stop
./run.sh restart