使用docker 安装mysql、nginx部署spring boot 项目

一、安装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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值