最近项目中需要使用docker进行开发和部署SpringBoot应用,因此进行相关研究。
当使用Docker部署Spring Boot应用时,以下是更详细的步骤:
步骤1:创建Dockerfile
在Spring Boot应用的根目录创建一个名为Dockerfile
的文件,并使用文本编辑器打开它。然后,按照下面的例子编写Dockerfile:
# 使用官方的OpenJDK 11基础镜像
FROM openjdk:11-jre-slim
# 设置工作目录
WORKDIR /app
# 复制Spring Boot应用的JAR文件到容器中
COPY target/your-spring-boot-app.jar app.jar
# 暴露应用运行的端口
EXPOSE 8080
# 指定应用启动的命令
ENTRYPOINT ["java", "-jar", "app.jar"]
请将your-spring-boot-app.jar
替换为实际的应用文件名。
步骤2:构建Docker镜像
在Spring Boot应用的根目录打开终端(命令行),运行以下命令构建Docker镜像:
docker build -t your-spring-boot-app .
这将构建一个名为your-spring-boot-app
的Docker镜像。
步骤3:运行Docker容器
构建完成后,可以运行Docker容器。运行以下命令:
docker run -p 8080:8080 -d your-spring-boot-app
这将在后台运行一个容器,并将本地机器的8080端口映射到容器的8080端口。
步骤4:验证应用是否运行
打开浏览器,访问 http://localhost:8080
,应该能够看到Spring Boot应用的欢迎页面。
这些步骤基本上覆盖了将Spring Boot应用打包到Docker容器中并运行的过程。确保在构建Docker镜像之前,使用./mvnw clean install
或./gradlew clean build
等命令先构建Spring Boot应用。
下面是实际操作步骤
1、新建SpringBoot项目
2、新建Dockerfile文件
内容如下:
#这是基础镜像
FROM java:8
# 维护者信息
MAINTAINER demo
VOLUME /tmp
#复制jar包到镜像中,并且将名字改成app.jar
ADD ./target/demo-docker-springboot-1.0.0-SNAPSHOT.jar app.jar
#通过文件链接的方式修改 时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#在容器启动的时候运行命令,来启动我们的项目
RUN bash -c 'touch /app.jar'
#暴露8080端口
EXPOSE 8080
# JVM启动参数设置,配置gc日志,发生oom时候heapdump文件路径
ENV JAVA_OPTS="\
-server \
-XX:+PrintFlagsFinal \
-Xloggc:demo-docker-springboot-gc-%t.log \
-Xmn512M \
-Xms1024M \
-Xmx1024M \
-XX:+PrintGCDetails \
-XX:+PrintTenuringDistribution \
-XX:+PrintGCTimeStamps \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/errorlog/demo-docker-springboot-heapdump.hprof \
-XX:+UseGCLogFileRotation \
-XX:NumberOfGCLogFiles=5 \
-XX:GCLogFileSize=20M"
ENTRYPOINT java ${JAVA_OPTS} -jar app.jar
3、Run on Docker
这一步先配置idea连接Docker。
生产稳定:JVM-MySQL-Tomcat-服务调用,调优相关
生产稳定:JVM调优- java进程,JVM频繁GC,导致CPU占用、内存占用过高过高定位和排查
- 如果对你有用,请给个在看,谢谢~~欢迎各位留言交流,
- 如有不正确的地方,请予以指正。【W:编程心声】
- 如有任何问题,关注公众号编程心声后,留言即可。