docker 部署jeecg boot项目,jar包和前端dist包。

docker 部署jeecg boot项目,jar包和前端dist包

先使用idea打好jar包,jar的目录会在system模块下target目录下
在这里插入图片描述

使用vscode或者其他开发工具或者使用命令行的方式
执行yarn run build,如果使用的是npm,就执行npm run build
在这里插入图片描述

注意:在挂载文件和目录之前得保证已经创建了这个目录和文件,并且文件里有内容。例如 my.cnf 数据库配置文件得有相关配置,nginx.cnf 得有相关配置

	##安装docker相关
	5  yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    7  yum -y install docker-ce
    ##启动docker
    8  systemctl start docker
	##设置开机自启动
    9  systemctl enable docker
 
 	##拉取mysql8.0镜像
   11  docker pull mysql:8.0
   ##运行容器 挂载目录 并设置数据密码
   15  docker run -d -p 3306:3306 --restart=always --network=host --name mysql -v /mydata/mysql/log:/var/log/mysql  -v /mydata/mysql/data:/var/lib/mysql  -v /mydata/mysql/conf/my.cnf:/etc/mysql/my.cnf  -v /mydata/mysql/conf/conf.d:/etc/mysql/conf.d  -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
 	
   ## 进入数据库容器  进行登录数据库,创建数据库等操作
   17   docker exec -it mysql bash 
   ## 查看mysql容器的日志
   19   docker logs -f -t --tail=100 mysql

  
   ##拉取nginx镜像
   57  docker pull nginx
   ## 复制nginx镜像内容
   93  docker cp nginx:/etc/nginx/conf.d  /mydata/nginx/conf/
   94  docker cp nginx:/etc/nginx/cert  /mydata/nginx/cert
   95  docker cp nginx:/etc/nginx/nginx.conf /mydata/nginx/conf/nginx.conf
   96  docker cp nginx:/usr/share/nginx/html/index.html /mydata/nginx/html/index.html 
   ## 运行nginx容器 并增加映射端口 和挂载目录
   98  docker run -d -p 80:80 -p 443:443 --name nginx --restart=always -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mydata/nginx/cert:/etc/nginx/cert -v /mydata/nginx/conf.d:/etc/nginx/conf.d -v /mydata/nginx/log:/var/log/nginx -v /mydata/nginx/html:/usr/share/nginx/html  nginx
  
  ## 查看nginx容器运行日志
  102  docker logs -f -t --tail=100 nginx

  ## 拉取redis镜像
  108  docker pull redis
  ##运行redis容器 挂载目录
  111  docker run --name redis -d  -p 6379:6379  --restart always  -v /mydata/redis/redis.conf:/etc/redis/redis.conf -v /mydata/redis/data:/data    redis   --requirepass "123456"

  
  ## 构建应用镜像 app目录下为 dockerfile 文件(dockerfile内容在文章下面) 和后端打的jar包  
  116  docker build -t app .
  ## 运行
  123  docker run -d -p 8898:8898 --name app --restart always --network host app
  ## 查看日志
  124  docker logs -f -t --tail=100 app
  
  ## 查看执行过的docker相关的命令  方便复制
  846  history |grep docker

前端项目配置文件修改
在这里插入图片描述
内容:

NODE_ENV=production
## ip方式
#VUE_APP_API_BASE_URL=http://ip/api
##域名方式  
VUE_APP_API_BASE_URL=https://xxx.com/api
#VUE_APP_API_BASE_URL=https://rds.matngs.com/api
VUE_APP_CAS_BASE_URL=http://localhost:9888/cas
VUE_APP_ONLINE_BASE_URL=http://47.94.198.173:9012/onlinePreview

dockerfile 文件内容如下:

文件里的 RUN apk add --no-cache ttf-dejavu 为验证码所需的字体,要不然验证码会报错。

FROM  openjdk:8-jre-alpine
VOLUME /tmp
ENV JAVA_OPTS="-XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=256M -Xmx1G -Xms1G"
ADD rds-boot-module-system-3.2.0.jar app.jar
RUN apk add --no-cache ttf-dejavu
ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

nginx.conf 配置文件

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  65535;
}


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   off;
    keepalive_timeout  65;
    tcp_nodelay     on;

    #设定请求缓冲
    client_header_buffer_size    128k;
    large_client_header_buffers  4 128k;
    client_max_body_size 2048m;
	
	gzip on; #开启gzip
	gzip_min_length 1k; #低于1kb的资源不压缩
	gzip_comp_level 3; #压缩级别【1-9】,越大压缩率越高,同时消耗cpu资源也越多,建议设置在4左右。

	#需要压缩哪些响应类型的资源,多个空格隔开。不建议压缩图片,图片本身传输就会进行压缩。
	gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
	gzip_buffers 4 8k;

	server {
		listen 80;
		server_name localhost;

		location / {
			#前端dist目录地址 /mydata/nginx/html/admin  对应之前的挂载目录  admin目录为前端的dist包
			root /usr/share/nginx/html/admin;
			index index.html index.htm;
			try_files $uri $uri/ /index.html;
		}
		
		#前端请求api前缀 要看前端项目 .env.production 文件配置的请求前缀变化
		location /api/ {
			#后台接口地址(我们部署去掉jeecg-boot项目名,如果你有请加上)
			proxy_pass         http://ip:8898/jeecg-boot/;
			proxy_redirect off;
			#真实IP获取
			proxy_set_header  Host             $host;
			proxy_set_header  X-Real-IP        $remote_addr;
			set $my_proxy_add_x_forwarded_for $proxy_add_x_forwarded_for;
			if ($proxy_add_x_forwarded_for ~* "127.0.0.1"){
			   set $my_proxy_add_x_forwarded_for $remote_addr;
			}
			proxy_set_header   X-Forwarded-For $my_proxy_add_x_forwarded_for;
			add_header 'Access-Control-Allow-Origin' '*';
			add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
			add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept';

		}


		
	}

	#old system   第二个应用配置  如果有配置就行,没有可以忽略也可以删掉。
	#如果有第二个应用,监听的端口(如10081),那么上面所运行的nginx容器也要加上10081的映射,还有前端的生产配置文件也要加上10081端口
    server {
            listen 10081;
            server_name localhost1;

            location / {
                    root /usr/share/nginx/html/adminold;
                    index index.html index.htm;
                    try_files $uri $uri/ /index.html;
            }

            #前端请求api前缀
            location /api/ {
                    #后台接口地址(我们部署去掉亿jeecg-boot项目名,如果你有请加上)
                    proxy_pass         http://ip:8899/jeecg-boot/;
                    proxy_redirect off;
                    #真实IP获取
                    proxy_set_header  Host             $host;
                    proxy_set_header  X-Real-IP        $remote_addr;
                    set $my_proxy_add_x_forwarded_for $proxy_add_x_forwarded_for;
                    if ($proxy_add_x_forwarded_for ~* "127.0.0.1"){
                       set $my_proxy_add_x_forwarded_for $remote_addr;
                    }
                    proxy_set_header   X-Forwarded-For $my_proxy_add_x_forwarded_for;
                    add_header 'Access-Control-Allow-Origin' '*';
                    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                    add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept';

            }



    }	

	## https 请求
	server {
		#文件服务器域名
		listen 443 ssl; 
		server_name  xxx.com;
		root html;
		ssl_certificate   cert/xxx_bundle.pem;
		ssl_certificate_key  cert/xxx.key;
		ssl_session_timeout 5m;
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
		ssl_prefer_server_ciphers on;

		location /api/ {
			proxy_set_header X-Forwarded-Host $host;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header Host $http_host;
			proxy_redirect off;
			expires off;
			sendfile off;
			proxy_pass http://ip:8898/jeecg-boot/;                   
		}

		location / {
			root   /usr/share/nginx/html/admin;
			try_files $uri $uri/ /index.html;
			index  index.html index.htm;
		}
	}
	
	
	include /etc/nginx/conf.d/*.conf;
}

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值