• Docker 快速部署 SpringBoot2 项目


    一 使用Maven 插件 docker-maven-plugin 构建部署

    1.1 配置Docker2375 端口

    找到 docker.service 配置文件

    编辑:vim /usr/lib/systemd/system/docker.service,在 ExecStart=/usr/bin/dockerd-current 后增加如下配置

    -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

    重启docker:systemctl restart docker

    1.2 配置 Docker 地址,构建 Docker 镜像并上传

    配置 Docker 地址

    1. <properties>
    2. <!-- docker配置 -->
    3. <docker.host>http://192.168.56.101:2375</docker.host>
    4. <docker.maven.plugin.version>1.2.2</docker.maven.plugin.version>
    5. <docker.images.prefix>microservice</docker.images.prefix>
    6. </properties>

    配置构建 Docker 镜像信息

    1. <build>
    2. <plugins>
    3. <plugin>
    4. <groupId>org.springframework.boot</groupId>
    5. <artifactId>spring-boot-maven-plugin</artifactId>
    6. <!-- 引入系统范围内的依赖 -->
    7. <configuration>
    8. <includeSystemScope>false</includeSystemScope>
    9. </configuration>
    10. </plugin>
    11. <!-- docker镜像 -->
    12. <plugin>
    13. <groupId>com.spotify</groupId>
    14. <artifactId>docker-maven-plugin</artifactId>
    15. <version>${docker.maven.plugin.version}</version>
    16. <executions>
    17. <execution>
    18. <id>build-image</id>
    19. <phase>package</phase>
    20. <goals>
    21. <goal>build</goal>
    22. </goals>
    23. </execution>
    24. </executions>
    25. <configuration>
    26. <imageName>${docker.images.prefix}/${project.artifactId}:${project.version}</imageName>
    27. <dockerHost>${docker.host}</dockerHost>
    28. <baseImage>java:8</baseImage>
    29. <entryPoint>["java", "-jar", "-Dspring.profiles.active=test","/${project.build.finalName}.jar"]
    30. </entryPoint>
    31. <resources>
    32. <resource>
    33. <targetPath>/</targetPath>
    34. <directory>${project.build.directory}</directory>
    35. <include>${project.build.finalName}.jar</include>
    36. </resource>
    37. </resources>
    38. </configuration>
    39. </plugin>
    40. <!--添加配置跳过测试-->
    41. <plugin>
    42. <groupId>org.apache.maven.plugins</groupId>
    43. <artifactId>maven-surefire-plugin</artifactId>
    44. <version>2.22.2</version>
    45. <configuration>
    46. <skipTests>true</skipTests>
    47. </configuration>
    48. </plugin>
    49. </plugins>
    50. </build>

    点击 maven 中 package 打包并上传

    1.3 查看镜像

    docker images

    1.4 安装运行容器

    docker run -p 8084:8040 --restart=always --name microservice-project -v /etc/localtime:/etc/localtime -v /mydata/app/project/logs:/var/logs -d microservice/cloud-project:0.0.3-SNAPSHOT

    二 使用Dockerfile构建部署

    2.1 在服务器指定位置创建目录,如:project_docker,在该文件夹下创建 Dockerfile

    vim Dockerfile
    1. # 该镜像需要依赖的基础镜像
    2. FROM java:8
    3. # 指定维护者的名字
    4. LABEL maintainer=lc
    5. # 定义匿名数据卷
    6. VOLUME /tmp
    7. # COPY 复制资源到容器中
    8. COPY cloud-project-0.0.3-SNAPSHOT.jar /app/cloud-project-0.0.3-SNAPSHOT.jar
    9. COPY application.properties application.properties
    10. # 指定docker容器启动时运行jar包和配置文件
    11. ENTRYPOINT ["java","-Xms256m", "-Xmx256m","-jar","/app/cloud-project-0.0.3-SNAPSHOT.jar","--spring.config.location=/application.properties","-Dfile.encoding=UTF-8"]

    2.2 上传微服务jar,构建镜像

    docker build -t cloud-project:0.0.3 .

    2.3 安装运行容器

    docker run -p 8848:8848 --restart=always --name cloud-project -v /home/project/jar/project_docker/logs:/logs -d cloud-project:0.0.3

     2.4 编写自动化脚本

      vim run.sh

    1. #!/bin/bash
    2. # 定义应用组名
    3. group_name='scistor'
    4. # 定义应用名称
    5. app_name='cloud-project'
    6. # 定义应用版本
    7. app_version='0.0.3-SNAPSHOT'
    8. # 定义应用环境
    9. profile_active='qa'
    10. echo '----copy jar----'
    11. docker stop ${app_name}
    12. echo '----stop container----'
    13. docker rm ${app_name}
    14. echo '----rm container----'
    15. docker rmi ${group_name}/${app_name}:${app_version}
    16. echo '----rm image----'
    17. # 打包编译docker镜像
    18. docker build -t ${group_name}/${app_name}:${app_version} .
    19. echo '----build image----'
    20. docker run -p 8844:8844 --restart=always --name ${app_name} -v /home/project/jar/project_docker/logs:/logs -d ${group_name}/${app_name}:${app_version}
    21. echo '----start container----'
  • 相关阅读:
    Rust的模式匹配
    二叉搜素树(BSTree)详解—— C++ 数据结构
    k8s的pod内部打包工程镜像
    【Hive】drop table需注意外部表
    SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.3 H2数据库
    【前置句与倒装句练习题】特殊语序
    1.3以 numpy 为例认识三方库及其使用_python量化实用版教程(初级)
    请问怎么看某个DNS服务器是不是本地域名服务器(相关搜索:计算机网络)
    CobaltStrike木马免杀代码篇之python反序列化分离免杀(一)
    Linux编辑器-vim使用
  • 原文地址:https://blog.csdn.net/lovelichao12/article/details/125458789