接下来开始部署springboot项目。 把打包好的spingboot jar包文件通过securexftp 工具上传到任意文件夹下,构建docker 镜像。
mvn package docker:build
运行docker Image
docker run -p 5808:8080 -t dockertest/engine_three --restart=always
左边5808是docker暴露给外部的端口 右边8080的是项目的端口,restart=always代表自动重启。
接下来使用nginx设置反向代理
nginx.conf是总的配置文件。
user root;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
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;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/server/*.conf;
}
其中注意 第一列 user root; 系统默认用户是nginx,这样会经常导致访问网页permission deny的错误 。这里把user指定为root用户。
http配置中 添加server文件夹下的conf配置作为用户自定义配置文件。
新建server文件夹 在该文件夹下新建default.conf 文件。配置如下。
也可以参考这个博客
https://my.oschina.net/floristgao/blog/488161
upstream tomcat{
server 127.0.0.1:5808 max_fails=1 fail_timeout=60s weight=10;
}
server {
listen 80; #监听80端口
server_name 192.168.150.129; #监听的域名
location /docker { #转发或处理
proxy_pass http://tomcat/;
# proxy_redirect off;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;#错误页
location = /50x.html {
root /usr/share/nginx/html;
}
}
在该文件中设置反向代理。可以实现通过访问192.168.150.129:80/docker 映射到192.168.150.129:5808端口。保存文件,并重启nginx。
systemctl restart nginx.service
如果此时重启失败 那就需要检查default.conf文件中是否ip地址配置正确。
检查nginx服务没问题后打开浏览器测试。
systemctl status nginx.service
发现页面报错 error page, 打开nginx日志文件看下原因吧
默认的日志文件路径在 /var/log/nginx 文件夹下。
打开error.log文件。
发现错误是
connect() to 127.0.0.1:5808 failed (13: Permission denied)
很纳闷 也查了很多资料 ,发现是SeLinux的导致的 。这个还不太懂是什么 。按照这篇博客做法可以解决。
https://blog.csdn.net/oydaybreak/article/details/46594639
setsebool -P httpd_can_network_connect 1
再次重启nginx 发现浏览器可以成功访问了 简单的反向代理就完成了。这篇文章是将selinx是什么的 可以有空的时候看看
https://blog.csdn.net/yanjun821126/article/details/80828908
下一步还想把前端代码加入到springboot中 。或者再起一个docker 放node.js环境。先占坑。