将idea中的springboot项目部署到远程的docker容器

末鹿安然 提交于 2020-02-27 21:51:10

1、在idea中创建项目,如下图

2、配置docker maven plugin

<!-- Docker maven plugin -->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.0.0</version>
    <configuration>
        <forceTags>true</forceTags>
        <dockerHost>http://192.168.132.129:2375</dockerHost>
        <imageName>${project.groupId}/${project.build.finalName}</imageName>
        <workdir>/</workdir>
        <baseImage>java</baseImage>
        <cmd>["java", "-version"]</cmd>
        <entryPoint>["java", "-jar", "./${project.build.finalName}.jar"]</entryPoint>
        <dockerDirectory>${project.basedir}/</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
        <imageTags>
            <imageTag>${project.version}</imageTag>
            <imageTag>latest</imageTag>
        </imageTags>
    </configuration>
</plugin>

3、启动服务器并启动docker(服务器地址192.168.132.129)

4、idea连接docker,如下图

注:如果连接不成功,看Docker开启远程访问没有,没有则配置如下

服务器中:vim /usr/lib/systemd/system/docker.service
#修改ExecStart这行
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

#重新加载配置文件
systemctl daemon-reload    
#重启服务
systemctl restart docker.service 
#查看端口是否开启
netstat -nlpt 
#直接curl看是否生效
curl http://127.0.0.1:2375/info

5、创建DockerFile文件,如下

Dockerfile内容

#表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
FROM java:8

#VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。
#这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp

#拷贝文件并且重命名
ADD ./target/springboot-docker-demo-1.0.0.jar /docker-demo-1.0.0.jar

RUN bash -c 'touch /docker-demo-1.0.0.jar'
EXPOSE 7001
#为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/docker-demo-1.0.0.jar"]

6、编辑 idea Dockerfile 配置,如下图

7、创建docker 镜像,点击dockerfile中的“Build Image for Dockerfile”

控制台的Deploy Log提示,如下

服务器docker中查看镜像

8、运行项目,点击dockerfile中的“Run Dockerfile”

控制台运行结果,如下

服务器docker中查看项目运行情况,如下

9、浏览器中访问项目,在浏览器地址栏中输入地址:http://192.168.132.129:7001/test,输出如下图

 

---------------------------------------------------

在src下创建docker文件夹,新建Dockerfile文件,如下图

Dockerfile文件内容

#表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
FROM java:8

#VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。
#这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp

ARG JAR_FILE=./target/springboot-docker-deploy-demo-1.0.0.jar
COPY ${JAR_FILE} /docker-deploy-demo-1.0.0.jar

EXPOSE 7001

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=dev","-jar","/docker-deploy-demo-1.0.0.jar"]

编辑 idea Dockerfile 配置,如下图

idea Dockerfile配置内容如下
Name: 选择Dockerfile路径
Server: 选择 docker server 
Dockerfile: src\docker\
Image tag: 随意起(如 docker-deploy-demo)
Container name: 随意起(如 springboot-docker-deploy-demo)
Command: -t --restart=always
Publish exposed ports to the host interfaces: 选 Specify
  Bind ports: server ip:7001:7001

使用 dockerfile-maven-plugin 和 maven-dependency-plugin

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.4.13</version>
    <configuration>
        <dockerfile>Dockerfile</dockerfile>
        <buildArgs>
            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
    </configuration>
</plugin>
<!-- 指定到相对路径下-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-artifact</id>
            <phase>package</phase>
            <goals>
                <goal>copy</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>${project.artifactId}</artifactId>
                        <version>${project.version}</version>
                        <type>${project.packaging}</type>
                    </artifactItem>
                </artifactItems>
                <outputDirectory>${basedir}/src/docker</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

项目源码地址:https://gitee.com/lion123/springboot-docker-deploy-demo

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!