Docker部署SpringBoot+MySQL+Redis
- 安装Docker 《CentOS安装Docker》
- 安装MySQL《Docker安装MySQL》
- 安装Redis《Docker安装Redis》
- 打包部署SpringBoot
-
将项目打包
mvn clean package
-
编写Dockerfile文件
# Docker image for springboot file run # VERSION 0.0.1 # Author: eangulee # 基础镜像使用java FROM java:8 # 作者 MAINTAINER eangulee <eangulee@gmail.com> # VOLUME 指定了临时文件目录为/tmp。 # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp VOLUME /tmp # 将jar包添加到容器中并更名为app.jar ADD springboot-demo.jar app.jar # 运行jar包 RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
-
然后将打好的jar包与Dockerfile放到linux下同个目录下。
-
运行命令制作镜像:
docker build -t [镜像名] . 注意:后面有个点,表示当前目录下docker build -t demo .
第一次制作会慢一点,需要下载Dockerfile的基础镜像java
-
运行制作好的镜像
docker run -it --net=host --name [容器名] -p 80:8080 [镜像名]docker run -it --net=host --name springboot-demo -p 80:8080 demo
–net=host 告诉 Docker
不要将容器网络放到隔离的名字空间中,即不要容器化容器内的网络。此时容器使用本地主机的网络,它拥有完全的本地主机接口访问权限。
权限比较高使用需谨慎(不加–net=host
项目连不上Docker里的MySQL,如果有更好的解决方法,欢迎评论留言),使用有问题也可留言。启动可能会异常
参考大佬博客https://blog.csdn.net/ruben95001/article/details/76201020完美解决
完美运行
-
测试链接
加了–net=host 参数貌似端口映射不起作用了,只能用8080项目本身端口访问
我映射的是80端口docker run --net=host -it --name springboot-demo -p 80:8080 demo
测试部署成功(欢迎评论指点)
-