zoukankan      html  css  js  c++  java
  • IDEA远程快速部署SpringBoot项目到Docker环境

    一:基础准备

    1.首先在linux服务器安装Docker环境,具体安装步骤及Docker使用参考官网或网络资料(这里重点是快速部署项目到Docker环境)

    2.配置Docker远程连接端口

    1.vim /usr/lib/systemd/system/docker.service
    2.找到ExecStar 在后面添加 -H tcp://0.0.0.0:2375

    3.重启Docker

     systemctl daemon-reload
     systemctl start docker

    4.如果防火墙已经打开则需要开放2375端口

    firewall-cmd --zone=public --add-port=2375/tcp --permanent

    5.Idea安装Docker插件并配置连接Docker

      

     6.连接成功会列出远程的容器和镜像,并且可以直接右键快速启动、关闭、删除容器或镜像

     二:构建Springboot项目

    1.pom文件在plugin添加docker-maven-plugin、maven-antrun-plugin插件

    <build>
            <finalName>study-demo</finalName>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                    <includes>
                        <include>application.properties</include>
                        <include>**/*.xml</include>
                        <include>**/*.json</include>
                    </includes>
                </resource>
                <resource>
                    <directory>src/main/java</directory>
                    <filtering>true</filtering>
                    <includes>
                        <include>**/*.xml</include>
                    </includes>
                </resource>
            </resources>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <dockerDirectory>src/main/docker</dockerDirectory>
                        <resources>
                            <resource>
                                <targetPath>/</targetPath>
                                <directory>${project.build.directory}</directory>
                                <include>${project.build.finalName}.jar</include>
                            </resource>
                        </resources>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <configuration>
                                <tasks>
                                    <copy todir="src/main/docker" file="target/${project.build.finalName}.${project.packaging}"></copy>
                                </tasks>
                            </configuration>
                            <goals>
                                <goal>run</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

     2.在src/main目录下创建docker目录,并创建Dockerfile文件

    这里给出了一个Dockerfile几个重要指令比较详细的参考说明

    FROM java:8
    
    #维护者信息
    MAINTAINER boris@email.com
    
    #添加元数据到镜像,LABEL是以键值对形式
    LABEL maintainer="bo.zou <boris@email.com>"
    LABEL copyright="2015 ~ 2020 www.boris.com Inc. All rights reserved."
    LABEL version="1.0.0"
    LABEL declaration="Boris Test Dockerfile"
    
    #ENV设置环境变量 timezone
    ENV TIMEZONE Asia/Shanghai
    
    #设置容器的工作目录
    # WORKDIR
    #RUN指令:用于指定 docker build 过程中要运行的命令
    RUN mkdir /usr/local/boris
    WORKDIR /usr/local/boris
    
    #复制指令,从上下文目录中复制文件或者目录到容器里指定路径
    #ADD 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 COPY)
    #将jar包添加到容器中并更名为app.jar
    COPY *.jar /usr/local/boris/app.jar
    
    #定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
    #可以在镜像中创建挂载点,只要通过该镜像创建的容器都有了挂载点
    #作用是和docker run命令的-v是一样,将宿主机和容器的目录做映射
    #区别是:通过 VOLUME 指令创建的挂载点,无法指定宿主机上对应的目录,是自动生成的。可以通过查看容器的信息查看到,例:docker inspect 容器ID
    #VOLUME ["/usr/local/boris/dockerlog"]
    
    ###声明启动端口号
    EXPOSE 8080
    
    #CMD 和 ENTRYPOINT 在docker run 时运行(启动容器时执行),主要用来指定容器默认执行的命令.
    #CMD作用:当Docker镜像被启动后Docker容器将会默认执行的命令,CMD 指令指定的程序会被 docker run 命令行参数中指定要运行的程序所覆盖
    #ENTRYPOINT作用:类似于 CMD 指令,区别在于不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序
    #一个Dockerfile中只能有一个CMD或ENTRYPOINT命令,多个仅最后一个生效。多数情况下它们应该是单独使用的。
    #配合使用时:
    #• 如果 ENTRYPOINT 使用了 shell 模式,CMD 指令会被忽略。
    #• 如果 ENTRYPOINT 使用了 exec 模式,CMD 指定的内容被追加为 ENTRYPOINT 指定命令的参数。
    #• 如果 ENTRYPOINT 使用了 exec 模式,CMD 也应该使用 exec 模式。
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

    3.创建springboot项目controller和启动类做测试

     

    4.增加配置

    说明:

    Dockerfile:指定你的Dockerfile文件 

    Image tag : 指定镜像名称和tag,冒号分隔

    Bind ports : 绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口]

    Bind mounts : 将宿主机目录挂到到容器内部目录中。格式为[宿主机目录]:[容器内部目录]

    Contaner name:取一个容器名称,不填默认会随机生成一个名称

    5.打包并运行

     6.成功,可以看到创建的容器和镜像并且运行成功

     

    结束,EDN。

  • 相关阅读:
    组件中的data为什么不是一个对象而是一个函数?
    v-if v-show 的区别 以及使用的场景
    前后端数据交互的方式有哪些?
    服务端渲染客户端渲染的区别
    按下www.baidu.com发生什么
    php-语言参考-类型3.2-未完待续
    php-安装与配置-未完待续2
    PHP-入门指引1
    php扩展开发-INI配置
    php扩展开发-全局变量
  • 原文地址:https://www.cnblogs.com/boris-et/p/13535030.html
Copyright © 2011-2022 走看看