目录
1.前提条件
2.编写DockerFile镜像文件
3.打包SpringBoot项目
4.通过软件Xftp进行传输(*)
1.点击“文件-新建”编辑
5.操作远程主机
1.docker构建
2.容器运行
6.容器的关闭和删除
1.前提条件
Linux、docker、xftp的安装、一台可以访问的远程主机
2.编写DockerFile镜像文件
Dockerfile
是一个文本文件,包含了一系列的指令,用于定义如何构建 Docker 镜像。创建好 Dockerfile
后,可以使用命令来构建镜像,然后将这个镜像用于部署应用程序。
1.在项目的根目录下命名一个文件“DockerFile.txt”,写完后重命名为‘DockerFile’(这里最好命名成‘DockerFile’,因为 Docker 默认会寻找名为 Dockerfile
的文件来构建镜像。),用于定义镜像文件,例如我的:
# 使用一个基础镜像,这里使用 OpenJDK 11 作为基础镜像
FROM openjdk:11-jre-slim
# 设置工作目录
WORKDIR /app
# 复制可执行的 JAR 文件到镜像中
COPY ./springboot-web2-0.0.1-SNAPSHOT.jar .
# 定义容器启动命令
CMD ["java", "-jar", "springboot-web2-0.0.1-SNAPSHOT.jar"]
以上根据自己的项目、具体目录作出调整修改,上面的工作目录是容器的目录,我写的‘/app’这个目录即使不存在,docker内也会进行自动创建,因此可以按自己需求进行命名
注意:COPY这行中一般是要用‘./’进行开头的,这表示相对路径(最好别用绝对路径,已踩坑!!)因为到时我们是在DockerFile文件所在目录下进行Docker的构建
3.打包SpringBoot项目
在确认项目没问题后,我们进行打包,点击Maven- LifeCycle-package进行打包,之后会生成一个target文件,里面就有我们需要的jar包:
注意:需要留意项目中配置的监听端口,后面会用到
4.通过软件Xftp进行传输(*)
这一步针对的是从本地Windows打包后,需要将jar包传输到对应的远程主机上时用到的,如果本地就是docker需要构建的地方,那么可以忽略这一步
传输步骤:
1.点击“文件-新建”
需要填写的有:名称、主机、用户名和密码(这边是用Password进行登录,也可用公钥)
其中名称是自定义,主机是对应的远程主机IP以及主机的用户名和密码(我这里用的是虚拟机作示例)
连接成功后,如图所示:
找到你要刚刚打包好的jar包,进行传输,直接进行拖拽即可:
5.操作远程主机
登录上远程主机,随后用docker指令进行构建部署
1.docker构建
在终端中,导航到项目根目录并执行以下命令来构建Docker镜像。将 my-spring-app
替换为你想要的镜像名称。
docker build -t my-spring-app .
出现上述运行结果,表示镜像名称为“my-spring-app”的容器构建成功
2.容器运行
构建完成后,使用以下命令来运行Docker容器。将 my-spring-container
替换为你想要的容器名称。
docker run -d --name my-spring-container -p 8080:8080 my-spring-app
上面我的镜像名称取名为“my-spring-app”,且我的SpringBoot项目的监听端口设置为了8082,所以我的指令是这样的:
让我解释一下每部分的含义:
-
-d
参数:这表示在“后台”运行容器,即在“守护进程”模式下。容器会在后台运行,不会占用当前终端。 -
-p 8080:8082
参数:这表示将主机的 8080 端口映射到容器的 8082 端口。第一个8080
是主机上的端口,第二个8082
是容器内的端口。这样你可以通过访问主机的http://localhost:8080
来访问容器内运行的应用程序。 -
my-spring-app
:这是容器的名称,通常由 Docker 自动生成。你可以使用这个名称来管理容器,如停止、删除等操作。 -
最后的输出
b421554123ebca89a45dca25096119b75df7a9dd3a73b6135bfc21b5ba061816
是容器的唯一标识符,通常称为容器ID。
注意;上述两个8080,其中
其中下面的一串字符是该容器的唯一标识符,通常称为容器ID 到此我们已经成功运行
检查一下用“docker ps”检查下docker中正在运行中的容器
可以看到,名称为“my-spring-app” 的容器已经运行,并将容器内部的 8082 端口映射到了主机的 8080 端口,ip的0.0.0.0是由于我在远程主机上部署的,外网访问还是需要通过该远程主机的ip,格式为“ip地址:端口号”即可
用其它的主机进行访问,运行成功
6.容器的关闭和删除
你也可以随时关闭容器:
docker stop <container_id>
关闭并删除容器:
docker rm -f <container_id>
这将停止并删除具有容器 ID 为 <container_id>
的容器。请注意,这会永久删除容器,并且容器内的数据可能会丢失,因此请谨慎使用 -f
参数。
如果你想要停止并删除所有的容器,可以使用以下命令:
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)