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

相关推荐
凤山老林2 小时前
Spring Boot 集成 Netty 构建高性能 TCP 长连接网关:协议解析、心跳检测与集群广播实战
spring boot·后端·tcp/ip
Json____2 小时前
基于 Spring Boot + Vue3 的在线考试管理系统实战
java·spring boot·后端·it学习·wwwoop.com
❀͜͡傀儡师2 小时前
Spring Boot 实现图片盲水印:基于 DCT 频域算法的隐形数字水印
spring boot·算法
晴空蓝天2 小时前
MDC traceId 全链路日志追踪:Spring Boot 3.5 里把日志串成一条线
java·spring boot·后端·python
努力努力再努力wz3 小时前
【边缘计算入门系列】从“在哪里算”到“怎么算”:一文建立边缘计算、算子、计算图与 Tensor 的底层心智模型
人工智能·docker·边缘计算
江湖有缘3 小时前
3款开源IT工具箱整理合集,可Docker一键部署!
docker·容器·开源
旋生万物3 小时前
用螺旋数重写 Transformer Attention:让大模型自带“相位记忆“的 PyTorch 实现
docker·云原生·kubernetes·螺旋生成论·螺旋相位
卓怡学长3 小时前
w203基于springboot钢材仓库管理系统的设计与实现
java·spring boot·spring·intellij-idea
编码如写诗4 小时前
【k8s】全新Ubuntu 26.04 使用kt 超简单安装 k8s 最新1.37.1+KubeSphere4.1.3
ubuntu·容器·kubernetes
小匠石钧知4 小时前
05_在k8s集群中安装NFS实现ReadWriteMany存储
java·容器·kubernetes·nfs·readwritemany·rwx