以下是在 Linux CentOS 7 环境中使用 Docker 部署 Spring Boot 项目的详细步骤:
1. 安装 Docker
检查内核版本,返回的值大于3.10即可。
uname -r
更新系统
sudo yum update
这个命令会更新系统中所有包和依赖项。
首先需要安装 Docker,可以使用以下命令安装 Docker:
sudo yum install docker-ce docker-ce-cli containerd.io
安装完成后,输入以下命令启动 Docker 服务并设置为开机启动:
启动Docker
sudo systemctl start docker
设置Docker为开机启动
sudo systemctl enable docker
2.安装mysql8
(1)在本地创建一个项目文件夹,例如 "my-mysql",然后进入该文件夹。
(2)在命令行中运行以下命令,拉取 MySQL 8 镜像:
docker pull mysql:8
(3)运行以下命令,创建一个 MySQL 容器,并指定一个容器名称(例如 "my-mysql-container"),并将容器的端口映射到本地机器的端口(例如将容器端口 3306 映射到本地机器的端口 3306):
docker run --name my-mysql-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8
`--name my-mysql-container` 指定一个容器名称为 "my-mysql-container",方便后续操作。
`-p 3306:3306` 将容器的端口 3306 映射到本地机器的端口 3306,方便通过本地机器访问 MySQL。
`-e MYSQL_ROOT_PASSWORD=123456` 指定 MySQL 的 root 用户的密码为 "123456",可以根据需要自定义。
`-d` 参数表示以后台方式运行容器。
(4)运行以下命令,查看 MySQL 容器是否正常运行:
docker ps
输出应该类似于以下内容:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c4dcd68ea92 mysql:8 "docker-entrypoint.s…" 10 seconds ago Up 5 seconds 0.0.0.0:3306->3306/tcp my-mysql-container
可以看到容器已经运行,并且将容器的端口 3306 映射到了本地机器的端口 3306。
(5) 使用 MySQL 客户端连接到容器中运行的 MySQL 服务:
-在命令行中运行以下命令,进入容器的 shell 环境:
docker exec -it my-mysql-container bash
- 在容器的 shell 环境中运行以下命令,登录 MySQL 服务:
mysql -uroot -p
- 输入在步骤 (3)中指定的 MySQL root 密码。
(6)现在就可以在 MySQL 中创建数据库、用户等操作了。
(7)如果不再需要使用 MySQL 8 容器,可以使用以下命令将其停止并删除:
docker stop my-mysql-container
docker rm my-mysql-container
如果需要对容器进行重新安装和使用,可以再次运行步骤 3。
3. 创建项目文件夹
在某个路径下创建用于存放 Spring Boot 项目的文件夹,例如:
mkdir /home/springboot-app
cd /home/springboot-app
4. 创建 Dockerfile 文件
在项目文件夹中创建 Dockerfile 文件,用于构建 Docker 镜像。Dockerfile 中需要指定基础镜像、安装 JDK 和 MySQL 数据库等操作,具体代码如下:
# 使用jdk1.8的镜像
FROM java:8
#目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录
VOLUME /tmp
#添加自己的项目到到app.jar中,注意:这里的包名要和pom文件中的包名一致,后面的app,jar可以自己取
ADD PersonnelSystem-1.0-SNAPSHOT.jar app.jar
# 容器运行后默认执行的命令
CMD ["java","-jar","/app.jar"]
5. 构建 Docker 镜像
在项目文件夹中输入以下命令构建 Docker 镜像:
sudo docker build -t springboot-app .
这个命令会根据当前文件夹下的 Dockerfile 文件构建一个名为 springboot-app 的 Docker 镜像。
6. 启动 MySQL 数据库
在 Docker 容器中启动 MySQL 数据库,可以使用以下命令:
sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=your_password -d mysql:latest
这个命令会在 Docker 容器中启动一个名为 mysql 的 MySQL 数据库,设置用户名为 root,密码为 your_password。注意,此处使用的是 mysql:latest 镜像,这个镜像中已经包含了 MySQL 服务器。
7. 运行 Spring Boot 项目
在 Docker 容器中运行 Spring Boot 项目,可以使用以下命令:
sudo docker run -p 8080:8080 --link mysql:mysql -d springboot-app
这个命令会在 Docker 容器中运行 springboot-app 镜像,将容器内部的 8080 端口映射到主机的 8080 端口,同时使用 --link 参数链接刚才启动的 mysql 容器。
至此,Spring Boot 项目已经成功在 Docker 中部署运行。