1.本地跑docker挂载卷;2.springboot测试项目Dockerfile部署

案例一:


cat Dockerfile 
FROM centos:7
MAINTAINER wukong2222

# 把宿主机当前上下文的readme.txt拷贝到容器/usr/local/路径下
# 并把readme.txt文件重命名cincontainer.txt文件
COPY readme.txt /usr/local/cincontainer.txt

# 把宿主机当前上下文的(也就是当前目录)java与tomcat安装包添加到容器中
ADD apache-tomcat-9.0.76.tar.gz /usr/local/
ADD jdk-8u11-linux-x64.tar.gz /usr/local/

# 安装vim编辑器
RUN yum -y install vim

# 设置工作访问时候的MORKDIR路径,登录DE 落脚点
ENV MYPATH /usr/local 
WORKDIR $MYPATH

# 配置java与tomcat环境变量
# 配置java环境
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # 通过冒号隔开
# 配置tomcat环境
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.76
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.76
# 把上面配置的环境放入到PATH环境变量中
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

# 容器运行时监听的端口(暴露端口)
EXPOSE 8080

# 启动时运行tomcat
# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.44/bin/startup.sh"]
# CMD ["/usr/local/apache-tomcat-9.0.44/bin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-9.0.76/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.76/bin/logs/catalina.out
# && 表示拼接下一条命令,可以无线的拼接。
[root@k8s-master testimages-tomcat]# 

docker images

docker build  -t  tomcat9:v1.2.1 .

docker run -p 9091:8080 --name tomcat20230706-8 -v /opt/testimages-tomcat/test2:/usr/local/apache-tomcat-9.0.76/webapps/test -v /opt/testimages-tomcat/tomcatlog2:/usr/local/apache-tomc
at-9.0.76/logs  --privileged=true  -d  tomcat9:v1.2.1   sh -c "/usr/local/apache-tomcat-9.0.76/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.76/logs/catalina.out"

案例二:

maven打包一个测试jar : DockerTest-0.0.1-SNAPSHOT.jar

  • pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.13</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.xhl</groupId>
    <artifactId>DockerTest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>DockerTest</name>
    <description>DockerTest</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>


  • application.properties文件


logging.file.path=log
demo.name = hello.01


  • logback-spring.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <springProfile name="dev">
                <pattern>%d{yyyy-MM-dd-HH:mm:ss E} %level [%thread]-%class[%line]: %msg%n</pattern>
            </springProfile>
            <springProfile name="!dev">
                <pattern>%d{yyyy-MM-dd-HH:mm:ss E} %level [%thread]-%class[%line]: %msg%n</pattern>
            </springProfile>
            <!--⽇志的编码格式-->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

<!--    &lt;!&ndash;这个就表示的是要把 ⽇志输出到⽂件(FileAppender)&ndash;&gt;-->
<!--    <appender name="file" class="ch.qos.logback.core.FileAppender">-->
<!--        <file>D:/log/output.log</file>-->
<!--        &lt;!&ndash;设置⽇志是否追加&ndash;&gt;-->
<!--        <append>true</append>-->
<!--        <encoder>-->
<!--            <pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS} %level [%thread]-%class:%line>>%msg%n</pattern>-->
<!--            <charset>UTF-8</charset>-->
<!--        </encoder>-->
<!--        &lt;!&ndash;设置⽇志写⼊是否线程安全&ndash;&gt;-->
<!--        <prudent>false</prudent>-->
<!--    </appender>-->

    <appender name="timeFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--TimeBasedRollingPolicy 基于时间的滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--            <fileNamePattern>e:/log/log-%d{yyyy-MM-dd-HH}.log</fileNamePattern>-->
            <fileNamePattern>log/log-%d{yyyy-MM-dd-HH}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS} %level [%thread]-%class:%line>>%msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

<!--    <appender name="fixedFile" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--        <file>d:/log/fixedFile.log</file>-->
<!--        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">-->
<!--            <fileNamePattern>log/fixedFile%i.log</fileNamePattern>-->
<!--            <minIndex>1</minIndex>-->
<!--            <maxIndex>10</maxIndex>-->
<!--        </rollingPolicy>-->
<!--        &lt;!&ndash;SizeBasedTriggeringPolicy&ndash;&gt;-->
<!--        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->
<!--            <maxFileSize>5MB</maxFileSize>-->
<!--        </triggeringPolicy>-->
<!--        <encoder>-->
<!--            <pattern>%d{yyyy-MM-dd-HH:mm:ss.SSS} %level [%thread]-%class:%line>>%msg%n</pattern>-->
<!--            <charset>UTF-8</charset>-->
<!--        </encoder>-->
<!--    </appender>-->

    <root level="info">
        <appender-ref ref="stdout" />
        <appender-ref ref="timeFile"/>
    </root>

</configuration>
  • testController.java 测试使用文件

package com.xhl.dockertest.com.xhl.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class testController {


    private Logger logger = LoggerFactory.getLogger(testController.class);

    @Value("${demo.name}")
    private String demoName;

    @RequestMapping("/demo")
    public String test(){
        logger.info("调用/test/demo接口响应日志测试20230706");
        System.out.println("调用/test/demo接口响应日志测试20230706"+"-----"+demoName);
        return this.demoName;
    }


}


  • 补充
    在jar包同级目录下创建config目录,目录下创建:
    cat config/application.properties
    demo.name = hello.02
    在这里插入图片描述
    可替换变量

创建Dockerfile

[root@k8s-master springboot-docker2]# cat Dockerfile 
FROM openjdk:8
VOLUME /tmp20230706
COPY ./DockerTest-0.0.1-SNAPSHOT.jar DockerTest-0.0.1-SNAPSHOT.jar
RUN bash -c "touch /DockerTest-0.0.1-SNAPSHOT.jar"
# 声明时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
#声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8080
ENTRYPOINT ["java","-jar","/DockerTest-0.0.1-SNAPSHOT.jar"]
[root@k8s-master springboot-docker2]# 


docker build -t springboot-test-demo:v0.0.1 .

docker save -o springboot-test-demo.tar springboot-test-demo:v0.0.1
# 导出springboot-test-demo.tar

docker load -i springboot-test-demo.tar
# 导入镜像


[root@k8s-master springboot-docker2]# docker images 
REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
springboot-test-demo                                              v0.0.1              b448fd3c3938        17 hours ago        561MB

创建deployment.yaml和service.yaml

  • cat deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: springboot-test-demo
  name: springboot-test-demo-deploy20230706
spec:
  replicas: 4
  selector:
    matchLabels:
      app: springboot-test-demo
  template:
    metadata:
      labels:
        app: springboot-test-demo
    spec:
      containers:
      - image: springboot-test-demo:v0.0.1
        name: springboot-test-demo


  • cat service.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: springboot-test-demo
  name: svc-20230707
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
    nodePort: 31091
  selector:
    app: springboot-test-demo
  type: NodePort


查询pod,svc,deploy、rs

kubectl create -f deployment.yaml
kubectl create -f service.yaml
kubectl get deploy,pod -o wide
kubectl get svc -o wide
kubectl  get rs -o wide

kubectl  logs springboot-test-demo-deploy20230706-58fb5d7cc8-dp2mc -f
kubectl  exec -it  springboot-test-demo-deploy20230706-58fb5d7cc8-dhltp   bash


在这里插入图片描述
访问http://173.0.205.121/test/demo 请求容器内测试jar服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值