docker一键部署springboot项目(二)

上一篇,大概讲了下springoot项目部署在docker中,但是在做项目的过程中,还有可能会用到redis、项目可以依赖另外一个javaweb(需要部署在tomcat中)项目、在部署的时候可能会用到nginx。同样的,该文章也是记录一下我在研究过程中遇到的问题和解决办法。大佬们有好的建议欢迎评价!

关于redis、tomcat、nginx等的部署


docker部署redis

首先,我们需要下载redis镜像(该步骤可以参考菜鸟教程,毕竟得承认人家写的更全更细一点)

#下载
docker pull redis:3.2
#查看
docker images

然后我们在启动的时候可以修改配置文件,例如密码等等

#启动
docker run --name myredis -p 6379:6379 -d redis:3.2 redis-server --appendonly yes --requirepass "myPwd" --bind 0.0.0.0
#查看
docker ps

这样,我们的redis就算是部署好了,集群的话我还没研究,后续更新。。


docker部署tomcat

同样的,我们首先要下载tomcat镜像(该步骤也可以参考菜鸟教程,毕竟得承认人家写的更全更细一点)

#下载
docker pull tomcat
#查看
docker images

然后我发现一个很坑的地方,是关于网络模式的,也就是访问其他应用(例如数据库)的坑,解决办法是启动,然后停止,然后重启docker,就可以了,我倒现在也不知道是为什么。。希望有大佬可以给出解释

#启动,并设置网络模式为host
docker run --name mytomcat -d -p 8081:8080 --net=host docker.io/tomcat
#重启docker
service docker restart
#停止
docker stop mytomcat 
#删除容器
docker rm mytomcat
#启动tomcat,将日志、webapps目录和时区映射在宿主机
docker run -it -d --name mytomcat \
-p 8080:8080 \
-v /docker/tomcat/logs:/usr/local/tomcat/logs \
-v /docker/tomcat/webapps:/usr/local/tomcat/webapps \
-v /docker/tomcat/conf:/usr/local/tomcat/conf \
-v /etc/localtime:/etc/localtime \
docker.io/tomcat

然后我们进入该容器,就可以ping的到外部的应用了

#进入tomcat容器内部
docker exec -it /bin/bash mytomcat
#ping外部应用,例如www.baidu.com
ping www.baidu.com

然后我们将war包放在/docker/tomcat/webapps目录中,重启即可,可以在/docker/tomcat/log目录中的日志文件中查看

#重启tomcat,可以在tomcat中查看启动日志
docker restart mytomcat

这样,我们的javaweb应用在tomcat中就算是部署好了


docker部署nginx

同样的,我们首先要下载nginx镜像(该步骤也可以参考菜鸟教程,毕竟得承认人家写的更全更细一点)

#下载
docker pull nginx
#查看
docker images

然后我们在服务器上创建我们自己的配置文件,修改配置文件启动即可

#启动nginx,将部署javaweb项目的tomcat容器和springboot项目容器link进来
docker run --name=mynginx \
    --link=mytomcat:t1 \
    --link=springboot:t2 \
    -v /root/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /root/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
    -p 8888:80 -d nginx

这样,我们的nginx就算是部署好了

在nginx.conf中配置如下:

upstream java_web {
    server t1:8080;
}

upstream spring_boot {
    server t2:9001;
}

在default.conf中配置如下:

location /springboot_demo {
    #用于多重转发时获取用户实际IP
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    #转发原始请求的host头部
    proxy_set_header Host $http_host;
    #转发用户实际发出的协议(http/https)
    proxy_set_header X-Forwarded-Proto $scheme;
    #禁用反向代理缓存,保证每次请求真实转发
    proxy_buffering off;
    #转发到upstream块定义的服务器集群
    proxy_pass http://spring_boot;
    #请求报文大小上限,默认1m,限制上传文件大小
    client_max_body_size  1000m;
}

最后,在浏览器中访问 ip:8080/springboot_demo 就可以了,美滋滋,大功告成!


关于容器保存,移植至其他服务器启动的方式见下一篇文章

发布了14 篇原创文章 · 获赞 23 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Jaiaxn/article/details/84073227