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

相关推荐
他҈姓҈林҈3 小时前
使用 Spring Boot 进行开发
spring boot
roman_日积跬步-终至千里3 小时前
【K8s基础】K8s下的Helm和Operator:包管理器与运维程序化
运维·容器·kubernetes
Java&Develop5 小时前
onloyoffice历史版本功能实现,版本恢复功能,编辑器功能实现 springboot+vue2
前端·spring boot·编辑器
leo·Thomas5 小时前
Rundeck 介绍及安装:自动化调度与执行工具
docker·自动化·运维工具·rundeck
颇有几分姿色6 小时前
Spring Boot 读取配置文件的几种方式
java·spring boot·后端
@淡 定6 小时前
Spring Boot 的配置加载顺序
java·spring boot·后端
技术liul7 小时前
Docker Compose和 Kubernetes(k8s)区别
docker·容器·kubernetes
MaCa .BaKa8 小时前
35-疫苗预约管理系统(微服务)
spring boot·redis·微服务·云原生·架构·springcloud
秋野酱8 小时前
基于 Spring Boot 的银行柜台管理系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端
獨枭9 小时前
Spring Boot 连接 Microsoft SQL Server 实现登录验证
spring boot·后端·microsoft