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

相关推荐
岁寒良木32 分钟前
麒麟 V10 (x86_64) 离线/联网部署 Docker 26.1.4 与 MaxKB v2.10 LTS 实战指南
python·docker·kylin
aiks_yuan1 小时前
Spring AI MCP Server 怎么接入 Claude Code:Spring Boot 用 @McpTool 暴露接口(Spring AI 2.0.2 实测)
spring boot
学长毕设1 小时前
基于springboot的实验室设备管理系统
java·spring boot·后端
学长毕设2 小时前
基于springboot的社区养老监护系统的设计与实现
java·spring boot·后端
fb_123452 小时前
K8s调度实战全景-Pod调度与资源管控
云原生·容器·kubernetes
wno7042 小时前
Springboot国际化信息(i18n)解析
java·spring boot·后端
吴声子夜歌3 小时前
Kubernetes权威指南——Kubernetes安装配置指南(二进制文件安装)
容器·kubernetes
江华森3 小时前
Kubernetes集群部署实战:使用kubeadm在4台ECS服务器上搭建K8s v1.31集群
云原生·容器·kubernetes
paopaokaka_luck3 小时前
社区服务平台(加权协同过滤推荐、Jieba中文词频分析、WebSocket实时聊天、求助处理闭环、 活动积分闭环、ECharts多维分析)
java·前端·spring boot·mysql·echarts·mybatis
不会写代码的女程序猿4 小时前
Spring Boot+Layui构建企业级电子招投标系统源码
spring boot·招投标系统·招采系统·电子招投标