no21-springboot项目制作docker镜像

飞一样的编程
飞一样的编程
擅长邻域:Java,MySQL,Linux,nginx,springboot,mongodb,微信小程序,vue

分类: springboot 专栏: springboot学习 标签: docker学习

2023-04-22 23:47:46 956浏览

springboot项目制作docker镜像

前言:

(1)每一款软件产品都是从开发到上线,从操作系统,到运行环境,再到应用配置。很多互联网公司都不得不面对的是开发和运维之间的协作,在各个软件版本的迭代后,不同版本环境的兼容,对于运维人员来说有很大的考验。
(2)环境配置如此麻烦,换一台机器就要重新来一次 ,浪费人力物力。于是很多大牛在思考,能不能从根本上解决问题,软件可以携带环境安装?也就是说,在运维人员安装部署的时候,能不能把原始环境一模一样地复制过来。

logo含义

鲸鱼背上有集装箱

蓝色的大海----宿主机 CentOS或win7

鲸鱼----docker

集装箱----容器实例 from 来自我们的镜像模板

为啥要用docker

减轻运维的工作量,解决“在我的机器上可以正常工作,在你的机器上不能正常工作”的问题。
举例:在使用Docker前相当于搬家,把之前屋子里的所有东西完完全全的搬进一个新的房子,但环境以及发生了改变。在使用Docker后,相当于搬楼,连带房子一起搬走。

https://blog.csdn.net/u011507134/article/details/125562398

docker的三要素:

镜像:Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
容器:容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间容器可以被创建、启动、停止、删除和暂停等等,说到镜像与容器之间的关系,可以类比面向对象程序设计中的类和实例。
仓库:镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个仓库;每个仓库可以包含多个标签;每个标签对应一个镜像,其中标签可以理解为镜像的版本号。

docker的基本使用

本人的这篇文章已经做了详细介绍

https://www.jf3q.com/article/detail/3730

配置阿里云加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://zerfqcke.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

使用docker部署

1.Docker开启远程连接

  1. 编辑docker.service文件,添加-H tcp://0.0.0.0:2375参数
vi /usr/lib/systemd/system/docker.service

  1. 重启docker
systemctl daemon-reload
service docker restart
  1. 测试端口连接是否正常
curl http://localhost:2375/version

2.编写Dockerfile

什么是Dockerfile

Dockerfile可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的脚本。

主要作用是用来构建docker镜像的构建文件。

FROM primetoninc/jdk:1.8
EXPOSE 81
VOLUME /tmp
#ch9.jar这里的名字必须跟你打包生成的名字要一致
ADD target/ch9.jar /app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

FROM 命令

基于哪个镜像进行构建新的镜像,在构建时会自动从docker hub拉取base镜像,必须作为Dockerfile的第一个指令出现

VOLUME 命令 [ˈvɒljuːm]

用来定义容器运行时可以挂载到宿主机的目录

ADD 命令

用来从context上下文复制新文件、目录或远程文件url,并将它们添加到位于指定路径的映像文件系统中

ENTRYPOINT命令

用来指定容器启动时执行命令

3.idea配置访问远程docker

4.修改pom

<build>
        <finalName>part9_docker</finalName>
        <plugins>
            <!--项目基于maven pom多模块的开发的,须要设置goal-repackage属性为true,不然打包后文件依赖文件没有一块儿打包,
                而后镜像内没有能够运行的程序文件maven 以下:2个打包插件都要,否则只有docker的会致使打包不完整。-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>

<!--                <configuration>-->
<!--                    &lt;!&ndash;禁用谷歌容器仓库&ndash;&gt;-->
<!--                    <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled>-->
<!--                    <repository>${docker.image.prefix}/${project.artifactId}</repository>-->
<!--                    <tag>${project.version}</tag>-->
<!--                    <buildArgs>-->
<!--                        <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>-->
<!--                    </buildArgs>-->
<!--                </configuration>-->
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--加入下面两项配置-->
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
    </build>

5.打jar

6.运行Dockerfile

好博客就要一起分享哦!分享海报

此处可发布评论

评论(2展开评论

蓝色妖姬 能力:10

2023-04-25 09:39:49

帅气男人都认真
蓝色妖姬 能力:10

2023-04-24 18:36:40

学习中
点击查看更多评论

展开评论

您可能感兴趣的博客

客服QQ 1913284695