Docker 部署 SpringBoot 项目

CentOS Docker 安装

修改docker.service配置,开放 2375 端口

vi /usr/lib/systemd/system/docker.service
-H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock

1

重启 docker

# 重新加载服务的配置文件
systemctl daemon-reload
# 重启 docker
service docker restart
# 开放端口
firewall-cmd --zone=public --permanent --add-port=2375/tcp
# 重启防火墙
systemctl restart firewalld

在这里插入图片描述

配置

Dockerfile

FROM hub.c.163.com/library/java:8-jdk
VOLUME /tmp
ADD target/docker_deploy-0.0.1-SNAPSHOT.war app.war
ENTRYPOINT ["java","-jar","/app.war"]
  1. SpringBoot 项目的运行依赖 Java 环境,所以自定义镜像要基于 Java 镜像来构建,这里使用了网易提供的 Docker 镜像。
  2. SpringBoot 运行时需要 tmp 目录,这里数据卷配置一个 /tmp 目录出来。
  3. 将本地 target 目录中打包好的 .war 文件复制一份新的 到 /app.war。
  4. 配置启动命令。

pom.xml

解决生成 war 包时,由于没有 /src/main/webapp/WEB-INF/web.xml 文件的报错

<properties>
    <!-- 如果打包方式为 war 包,并且没有 /src/main/webapp/WEB-INF/web.xml 文件 -->
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

新增插件

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.2.0</version>
    <executions>
        <execution>
            <id>build-image</id>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <dockerHost>http://192.168.179.128:2375</dockerHost>
        <imageName>yueyazhui/${project.artifactId}</imageName>
        <imageTags>
            <imageTag>${project.version}</imageTag>
        </imageTags>
        <forceTags>true</forceTags>
        <dockerDirectory>${project.basedir}</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.war</include>
            </resource>
        </resources>
    </configuration>
</plugin>
  1. 在 execution 节点中配置当执行 mvn package 的时候,顺便执行 docker:build。
  2. 在 configuration 节点中分别配置 Docker 的主机地址,镜像的名称,镜像的 tags,其中 dockerDirectory 表示指定 Dockerfile 的位置。
  3. 在 resource 节点中配置 war 的位置和名称即可。

Controller

@RestController
public class IndexController {
    
    

    @GetMapping
    public String index() {
    
    
        return "Docker Deploy";
    }
}

在这里插入图片描述

打包构建镜像

在这里插入图片描述

运行

方案一:

docker run -d --name docker_deploy_demo -p 8080:8080 yueyazhui/docker_deploy:0.0.1-SNAPSHOT

方案二:(推荐,通过 IDEA 运行镜像)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
完成!

摘录:江南一点雨 IDEA Docker 部署

猜你喜欢

转载自blog.csdn.net/qq_45594962/article/details/127588719