以docker形式运行jeecg-boot,5个docker(一个mysql,一个redis,一个跑后端,一个跑前端,一个跑uniapp端)

1. redis:

```
docker pull redis
docker run --name jeecg-boot-redis -p 6379:6379 -d redis
```	

创建命名为jeecg-boot-redis的redis容器,端口号为6379

2. mysql:

docker pull mysql:5.7.28
docker run -p 3306:3306 --name jeecg-boot-mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.28  --lower_case_table_names=1

创建命名为jeecg-boot-mysql的redis容器,端口号为3306,数据库的初始密码为root

  • 注意一定要加上–lower_case_table_names=1使得数据库忽略大小写,如果忘记加就:

    进入docker的MySQL容器,编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件,在[mysqld]下添加如下:

    [mysqld]

    lower_case_table_names=1

  • 注意要导入sql文件,可以用软件Navicat导入或者命令行导入

    mysql -u root -p进入不了mysql界面时,尝试使用mysql -h +服务器ip -u root -p

  • 注意要导入sql文件,可以用软件导入或者命令行导入

    mysql -u root -p进入不了mysql界面时,尝试使用mysql -h +服务器ip -u root -p

2. 后端

  • 修改application-dev.yml文件的数据库和redis链接

    请添加图片描述

  • 采用dev模式编译项目

    请添加图片描述

  • 通过jeecg-boot-parent项目 maven打包,执行install

  • 将生成的jar包导入到服务器中

    在jar包的相同文件夹中创建Dockerfile,其内容如下,注意ip的修改

    FROM openjdk:8
    COPY jeecg-boot-module-system-2.1.3.jar /usr/src/myapp/
    WORKDIR /usr/src/myapp
    RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
    
    CMD ["java", "-jar", "jeecg-boot-module-system-2.1.3.jar"]
    
  • docker build -t jeecg-boot-system .#创建镜像
    docker run --name jeecg-boot-system  -p 8080:8080 -d jeecg-boot-system#创建容器,使用8080端口
    
  • 注意:在创建镜像之前可以先使用java -jar XX.jar测试环境是否正常

  • 后端界面如下:

    请添加图片描述

3. 前端

  • 更改.env.production 中的url中的ip地址

    请添加图片描述

  • yarn run build打包前端项目

  • 将文件上传到服务器上

  • docker build -t nginx:jeecgboot .构建镜像

  • docker run --name jeecg-boot-nginx -p 80:80 -d nginx:jeecgboot启动镜像

  • 就可以使用http://192.168.0.226:80访问前端界面如下

    请添加图片描述

4. uniapp端(网上没有相关例子,自己乱探索)

  • 将文件打包成h5文件

    请添加图片描述

    得到h5静态界面以及相关文件

  • docker pull nginx获取Nginx镜像:

  • docker run -p 8000:80 -d nginx在本机8000端口运行Nginx服务器

  • 使用docker ps 查看刚才运行的 container 的id

  • 将得到h5静态界面以及相关文件拉入服务器的文件系统中

  • docker cp 文件位置 【container id】😕/usr/share/nginx/html将文件拷贝到nginx容器中

  • 时候就可以访问到登录页面了

    请添加图片描述

  • 登录发现频繁的账号密码错误(未处理),一开始还以为成功了:

    思考错误的原因:

    后端端口还有监听端口没有配置好:

    使用docker exec -ti 【container id】 bash进入容器

    参看前端的/etc/nginx/conf.d/default.conf配置文件将配置文件更改如下:

    server {
        listen       80;
        listen  [::]:80;
        server_name  192.168.0.226;
    
        #access_log  /var/log/nginx/host.access.log  main; default.conf 
        location ^~ /jeecg-boot {
                proxy_pass              http://192.168.0.226:8080/jeecg-boot/;
                proxy_set_header        Host 192.168.0.226;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            }
        location / {
           default.conf root   /usr/share/nginx/html;
            index  index.html index.htm;
            if (!-e $request_filename) {                           rewrite ^(.*)$ /index.html?s=$1 last;                           break;                       }
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
    }
    

    重启docker容器发现启动失败,反复修改该配置文件还是出现启动失败的问题。


上面uniapp的排错检查:

上面出现的问题是登录界面不能登录成功,排查出来的原因是因为点击登录按钮后,不能够访问成功访问到正确的路径

这是因为在对h5打包的时候没有配置正确的运行的基础路径

解决方法如下:

请添加图片描述

请添加图片描述

修改运行的基础路径为相对路径,否则所有的资源都默认到域名/5这个文件夹下查找。

访问192.168.0.226:8001成功访问且登录成功

请添加图片描述

另一个更好的方法:

上次方法的弊端是在每次建立容器时候都需要将h5资源copy到容器指定的路径中

可以一开始就在镜像中配置放置该资源:

  • 新建Dockerfile

    Dockerfile如下:

    FROM nginx
    MAINTAINER jeecgos@163.com
    VOLUME /tmp
    ENV LANG en_US.UTF-8
    RUN echo "server {  \
                          listen       80; \
                          location ^~ /jeecg-boot { \
                          proxy_pass              http://192.168.0.226:8080/jeecg-boot/; \
                          proxy_set_header        Host 192.168.0.226; \
                          proxy_set_header        X-Real-IP \$remote_addr; \
                          proxy_set_header        X-Forwarded-For \$proxy_add_x_forwarded_for; \
                      } \
                      #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \
                      location / { \
                         root   /var/www/html; \
                          index  index.html index.htm; \
                          if (!-e \$request_filename) { \
                              rewrite ^(.*)\$ /index.html?s=\$1 last; \
                              break; \
                          } \
                      } \
                      access_log  /var/log/nginx/access.log ; \
                  } " > /etc/nginx/conf.d/default.conf \
        &&  mkdir  -p  /var/www \
        &&  mkdir -p /var/www/html
    
    ADD h5 /var/www/html/
    EXPOSE 80
    EXPOSE 443
    

    注意“ADD h5 /var/www/html/”,h5文件夹为当前文件夹路径

  • docker build -t jeecg-uniapp .制作镜像

  • docker run --name jeecg-uniapp -p 8000:80 -d jeecg-uniapp启动容器

    访问192.168.0.226:8000成功访问

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值