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

相关推荐
凯歌的博客4 小时前
springboot项目jar包启动, 配置文件外置
chrome·spring boot
G_H_S_3_4 小时前
【网络运维】Docker 存储:镜像层与数据卷的管理应用
linux·运维·网络·docker
JIngJaneIL6 小时前
基于java + vue个人博客系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
企鹅侠客7 小时前
使用k8s集群调度GPU
云原生·容器·kubernetes
从心归零7 小时前
springboot-jpa的批量更新方法
java·spring boot·spring
tiancao2227 小时前
SpringBoot使用Camunda REST Client调用独立部署的Camunda7
spring boot·集成·独立服务器·rest api·camunda7
❀͜͡傀儡师7 小时前
docker一键部署网页版Win11系统
运维·docker·容器
我爱学习好爱好爱7 小时前
Prometheus监控栈 监控数据库mysql
docker·grafana·prometheus
萌萌哒草头将军8 小时前
AudioDock:服务器和 NAS 音频播放最棒的软件!🚀🚀🚀
服务器·docker·node.js
zcz16071278218 小时前
k8s重新部署的配置过程
云原生·容器·kubernetes