Dockerfile部署springboot项目

本文介绍了如何使用Dockerfile来部署SpringBoot项目,强调了配置Docker插件和设置远程Docker服务环境变量的重要性,以及开通远程机器2375端口的两种方法,最后通过访问应用的测试页面进行验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker部署springboot项目

创建springboot项目

注意pom中配置docker编译的插件

<?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.4.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.jerry</groupId>
    <artifactId>springboot-docker</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-docker</name>
    <description>Demo project for Spring Boot</description>
​
    <properties>
        <java.version>1.8</java.version>
        <docker.image.prefix>jerry</docker.image.prefix>
    </properties>
​
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </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>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <dockerfile>${project.basedir}</dockerfile>
                    <repository>${docker.image.prefix}/${project.artifactId}</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>
​
</project>
​

在项目目录下创建Dockerfile文件:

FROM java:8
MAINTAINER jerry <316308402@qq.com>
​
VOLUME ["/tmp"]
​
EXPOSE 8085
​
ARG JAR_FILE
​
COPY ${JAR_FILE} app.jar
​
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]

因为docker-maven-plugin默认的是连接本机的docker,我们是要推送到远程机器,所以配置远程机器(Docker服务)的环境变量 DOCKER_HOST=tcp://47.98.244.146:2375

要开通远程机器docker的2375端口

方法1:

# 编辑docker.service文件
vim /usr/lib/systemd/system/docker.service
# 修改 ExecStart=最前增加/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
# ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --init-path=/usr/libexec/docker/docker-init-current \
          --seccomp-profile=/etc/docker/seccomp.json \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY \
          $REGISTRIES
​
[root@iZbp1epntmn4jua47mcmn7Z system]# systemctl daemon-reload
[root@iZbp1epntmn4jua47mcmn7Z system]# systemctl restart docker
[root@iZbp1epntmn4jua47mcmn7Z system]# netstat -tulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:distinct        0.0.0.0:*               LISTEN      2485/java           
tcp        0      0 0.0.0.0:webcache        0.0.0.0:*               LISTEN      2485/java           
tcp        0      0 0.0.0.0:tproxy          0.0.0.0:*               LISTEN      27008/java          
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      1036/sshd           
tcp        0      0 0.0.0.0:ddi-tcp-1       0.0.0.0:*               LISTEN      1256/java           
tcp6       0      0 [::]:2375               [::]:*                  LISTEN      5202/dockerd-curren # 注意这一行 说明打开来了2375端口
udp        0      0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:*                           1040/ntpd           
udp        0      0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:*                           1040/ntpd           
udp        0      0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:*                           1040/ntpd           
udp        0      0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:*                           1040/ntpd           
udp        0      0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:*                           1040/ntpd           
udp        0      0 iZbp1epntmn4jua47mc:ntp 0.0.0.0:*                           1040/ntpd           
udp        0      0 localhost:ntp           0.0.0.0:*                           1040/ntpd           
udp        0      0 0.0.0.0:ntp             0.0.0.0:*                           1040/ntpd           
udp6       0      0 [::]:ntp                [::]:*                              1040/ntpd  

方法2:

还未测试

 

编译打包springboot项目

在idea的终端输入:
mvn clean package dockerfile:build
打包并且构建镜像
遇到一个问题:就是修改了DOCKER_HOST环境变量,但是在idea中不起作用,需要使用set DOCKER_HOST=new value,设置新的变量值
# 进入到远程机器 查看镜像是否创建
[root@kubernetes-01 system]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
jerry/springboot-docker   0.0.1-SNAPSHOT      7ef8553329da        20 minutes ago      660 MB
docker.io/elasticsearch   7.6.2               f29a1ee41030        9 months ago        791 MB
docker.io/java            8                   d23bdf5b1b1b        3 years ago         643 MB
[root@kubernetes-01 system]# 
# 创建容器
[root@kubernetes-01 system]# docker run -d --name springboot-docker01 -p 8085:8085 jerry/springboot-docker:0.0.1-SNAPSHOT
​

验证

在本机的浏览器中访问:

http://192.168.132.103:8085/demo/test/index 测试页

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值