一.使用Docker部署的好处:
在Linux系统上使用Docker部署项目通常会大大简化部署流程,因为Docker可以将应用程序及其依赖打包到一个独立的容器中。
Docker打包应用程序时会将其与所有依赖项(操作系统、库等)一起打包。这样,无论应用程序在开发、测试还是生产环境中运行,都会有一致的运行环境。
由于容器与主机操作系统隔离,Docker容器可以在任何支持Docker的平台上运行,不论是本地开发环境、测试服务器还是云平台。
总而言之,Docker通过容器化技术,提供了一种简化的、一致性的部署方式,解决了依赖冲突、环境差异、扩展性等传统部署方式中的痛点。这使得它在现代应用开发和部署中得到了广泛应用,尤其是在云计算和微服务架构中发挥着关键作用。
二.Docker部署的步骤:
1.准备工作:
在部署前,我们需要Dockerfile以及jar包(MySQL放在Linux就需要再项目配置文件的数据库架构名改成虚拟机的IP以及密码需改成Linux内的mysql密码)。
Dockerfile 是定义如何构建 Docker 镜像的蓝图,而 Docker 是用于构建、运行和管理这些镜像及其容器的工具。
我们需要先创建Dockerfile,就像需要一个网卡驱动程序来确保计算机能够与网络进行通信一样,需要一个 Dockerfile 来定义如何构建我们的 Docker 镜像。Dockerfile 是 Docker 镜像的“驱动程序”。就像下面这样定义一个Dockerfile文件,然后将这个和jar包拖动到Linux系统的 /root/ 目录下。
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY hm-service.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
2.构建镜像:
就像将网卡插入计算机来实现网络连接一样,你需要构建 Docker 镜像来创建运行你的应用程序的“容器”。
docker build -t my-java-app .
-t my-java-app
是为镜像指定的名称,.
表示当前目录(Dockerfile 在这里)。
构建完镜像(image)后,我们可以使用下面的命令查看镜像是否创建成功:
docker image ls
//或
docker images
3.创建自定义网络:
自定义网络使得容器可以更好地互相通信,并提供额外的网络隔离和配置选项。
(1)创建自定义网络:
docker network create --driver bridge my_custom_network
这里的 --driver bridge
指定使用桥接网络驱动(这是 Docker 的默认网络驱动)。my_custom_network
是你自定义的网络名称,可以根据需要更改。
(2)查看自定义网络:
docker network ls
(3)连接自定义网络:
docker network connect my_custom_network mysql
这里的 mysql 指一个正在运行的容器的名称或 ID。这个命令的作用是将现有的容器(在这个例子中是 mysql
容器)连接到一个自定义网络(my_custom_network
)。
我们可以使用 docker ps 命令查看正在运行的容器。
(4)删除自定义网络:
docker network rm my_custom_network
4.创建并运行容器:
网卡需要网络配置才能正确工作,同样 Docker 容器也需要网络配置。我们可以通过 docker run
命令启动容器,并指定如何将容器的端口映射到宿主机的端口。
docker run -d --name my-running-app --network hmall -p 8080:8080 my-java-app
这里的 -d
参数表示在后台运行容器,--network hmall是
将容器连接到名为 hmall
的自定义网络(必须先创建才能使用自定义网络),-p 8080:8080
将容器的端口 8080 映射到宿主机的端口 8080,--name my-running-app
给容器指定一个名称,my-java-app
是你之前创建的镜像名称。
为了判断是否运行成功,我们可以使用下面命令查看容器运行日志: