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成功访问