docker运行springboot项目

博客中若有侵权或者错误的地方,请及时告知,感谢。

1. 背景

在开发中使用k8s部署,日常也只是写个dockerFile, 没有想过整个部署流程是怎样的。今天我们自己部署docker镜像。

2.实战

2.1 建立springboot项目

复制代码
(1) JAVA项目打包 (解决no main manifest attribute, in /app.jar)
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.study.shop.ShopApplication</mainClass>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
    </build>
   (2) 编写Dockerfile
# 使用官方的 OpenJDK 8 作为基础镜像
FROM openjdk:8
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 修改 ${artifactId}-${version}.jar
ADD shop_backend.jar app.jar
#修改文件的访问时间和修改时间为当前时间
RUN sh -c 'touch /app.jar'
ENV LANG=zh_CN.UTF-8 \
    LANGUAGE=zh_CN:zh \
    LC_ALL=zh_CN.UTF-8
ENV TZ="Asia/Shanghai"
ENV JAVA_OPTS="-XX:+UseG1GC -XX:InitialHeapSize=2048M -XX:MaxHeapSize=2048M -XX:MaxGCPauseMillis=200 -XX:MaxMetaspaceSize=128m -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./"
ENV PARAMS=""
# 为服务暴露端口
EXPOSE 10055
#这样写会以shell方式执行
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app.jar $PARAMS"]
(3)构建镜像
mvn clean install -DskipTests  执行后拿到shop_backend.jar 
将shop_backend.jar 和Dockerfile 放到单独的目录下例如/opt/docker
cd /opt/docker
docker build -t shop_backend:1.0 .
(4) 运行容器
docker run -d -p 10055:10055 -e JAVA_OPTS="-Xms256m -Xmx256m" --name shop_backend shop_backend:1.0
(5)查看
docker ps

参考:

1.尚硅谷docker: https://www.bilibili.com/video/BV1Zn4y1X7AZ?p=1\&vd_source=0af94caf33fbb7a6f7ddfcf5e8c205f4

  1. https://blog.csdn.net/MYC19891010/article/details/104816874

  2. https://www.jianshu.com/p/eb698ef2c137

相关推荐
RuoyiOffice18 分钟前
2026最推荐基于SpringBoot+Vue3的项目管理经营一体化:从商机、合同、任务与工时走到回款和利润
spring boot·项目管理·vue3·crm·合同管理·ruoyi office·项目经营
正经教主23 分钟前
【FDE系列】阶段2:Day 47:对接企业系统 — 飞书 / 钉钉 API
人工智能·docker·fde
paopaokaka_luck32 分钟前
考研政治刷题小程序(AI推荐题目、ECharts数据分析、章节练习与专项训练、模拟考试、错题本与收藏夹、学习打卡与目标管理、题库和组卷维护)
前端·javascript·spring boot·spring·数据分析·echarts
Rain的Java大神之路11 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
九皇叔叔12 小时前
Kubernetes 资源管理方式详解:命令式与声明式管理
docker·容器·k8s
+VX:Fegn089514 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
需要82614 小时前
MySQL 索引 B+ 树与“查询为什么变慢了
java·spring boot·spring·spring cloud·tomcat
一 乐14 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
vx-程序开发15 小时前
【计算机毕设】django校园跑腿服务系统83141
java·数据库·vue.js·spring boot·spring·elasticsearch·django
一 乐16 小时前
养老院管理系统|基于springboot + vue养老院管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计