【容器----Docker】idea将SpringBoot程序构建Docker镜像

1.首先开启docker的2375端口监听

vim /usr/lib/systemd/system/docker.service

增加配置

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

然后重新加载docker.server文件并重启docker服务

systemctl daemon-reload
systemctl restart docker

 

2.配置Dockerfile配置文件

在项目/src/main下增加docker目录,并在该目录下新增Dockerfile文件

内容如下

FROM java:8

MAINTAINER Sunny 306509906@qq.com

VOLUME /tmp

ADD application-server.jar app.jar

RUN bash -c 'touch /app.jar'

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

EXPOSE 28011

ENTRYPOINT ["java", "-jar", "app.jar"]

注意:

  • VOLUME:指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录

 

pom.xml增加配置

            <!-- Docker -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <!-- 将插件绑定在某个phase执行 -->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <!-- 用户只需执行mvn package ,就会自动执行mvn docker:build -->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 指定生成的镜像名 -->
                    <imageName>${docker.registry}/${project.build.finalName}</imageName>
                    <!-- 指定标签 -->
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                    </imageTags>
                    <!-- 指定 Dockerfile 路径 -->
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <!-- 指定远程 docker api地址 -->
                    <dockerHost>http://47.92.145.192:2375</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!-- jar包所在的路径此处配置的对应target目录 -->
                            <directory>${project.build.directory}</directory>
                            <!-- 需要包含的jar包,这里对应的是Dockerfile中添加的文件名 -->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

注意:

  • imageName:如果要推送到私有镜像库,则前面要加上ip地址和端口
  • imageName:名称的格式只允许大小写字母、数字、以及中划线,否则报错InternalServerErrorException:http 500

 

3.执行maven clean package命令构建

 

package后docker就直接发布到了docker server上,使用命令

docker images

查看是否发布成功,然后通过docker push到私有镜像库即可

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Spring Boot和Docker Compose来部署多个项目是一种常见的做法,它可以有效地管理多个项目的部署和运行。 首先,我们需要为每个项目创建一个独立的Spring Boot应用程序。每个应用程序都应该有自己的独立配置文件、依赖项和实体类。这样,每个项目都可以独立运行和管理。 接下来,我们可以使用Docker Compose来管理这些项目的容器化部署。Docker Compose是一个用于定义和管理多个Docker容器的工具,它允许我们将多个容器配置集中在一个单独的文件中进行管理。 我们可以创建一个名为docker-compose.yml的文件,并在其中定义每个项目的容器配置。对于每个项目,我们可以指定要使用的镜像容器的名称、端口映射等信息。在该文件中,我们还可以定义项目之间的网络连接、依赖关系等。 一旦我们定义了每个项目的容器配置,我们只需运行一个命令docker-compose up就可以启动所有项目的容器Docker Compose将会自动下载并启动所需的镜像,并将所有容器连接到一个共享的网络中。 通过配置Docker Compose,我们可以同时管理多个项目的配置和依赖项,简化了部署和运行的过程。使用Docker Compose,我们可以轻松地扩展和管理多个项目,提高了应用程序的可伸缩性和可维护性。 总之,通过结合Spring Boot和Docker Compose,我们可以实现轻松部署、运行和管理多个项目的目标。这种方式可以极大地简化开发人员的工作,提高项目的部署效率和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值