随着现代化云服务的兴起,Docker 由于其轻量级和可移植性,成为了广泛使用于应用程序部署中的一项首选技术。Docker-Compose 作为 Docker 的扩展工具,提供了在 Docker 平台上管理多个容器应用程的能力,具有很高的灵活性和可扩展性。本文将介绍如何使用 Docker-Compose 编写并管理 Java 后端和 MySQL 服务。
前置条件
为了更好的掌握本次教程,请确保您已经掌握以下技能:
- 熟练使用 Java 编程语言
- 熟悉基本的 MySQL 数据库操作
- 掌握 Docker 容器及其基本概念
- 熟悉 Docker-Compose 概念及使用
Docker-Compose 环境搭建
为了搭建本实验所需的 Docker-Compose 环境,需要满足以下条件:
- 安装 Docker
- 安装 Docker-Compose
安装 Docker 可以参考官网 https://docs.docker.com/get-docker/。安装 Docker-Compose 可以参考官网 https://docs.docker.com/compose/install/。
创建 Java 后端应用
编写 Java 代码
使用 Maven 构建 Java 项目。创建一个名为 “docker-compose-java-demo” 的项目,并在 pom.xml 中添加以下依赖:
-- -------------------- ---- ------- ------------ ------------------------------------------- ------------------------------------------------ ------------------------ ------------- ------------ ------------------------ --------------------------------------------- ------------------------- -------------
以上依赖用于创建一个使用 Spring Boot 开发框架的 Java Web 应用程序,并连接 MySQL 数据库。
在 src/main/java 中新建一个包,并创建 “DemoApplication.java” 文件,代码如下:
-- -------------------- ---- ------- ------- ----------------- ------ ------------------------------------------- ------ ------------------------------------------------------------- ---------------------- ------ ----- --------------- - ------ ------ ---- ------------- ----- - -------------------------------------------- ------ - -
创建 UserController.java 控制器:
-- -------------------- ---- ------- ------- ---------------------------- ------ --------------------------------------------------- ------ ----------------------------------------------------- ------ ------------------------------------------------------- --------------- ------ ----- -------------- - -------------------------- ------ ------ --------------------- ------ --- - ------ ------ ---- - - --- - -
构建 Docker 镜像
在项目根目录下创建一个名为 “Dockerfile” 的文件,用于构建 Docker 镜像,代码如下:
FROM openjdk:11-jdk-slim COPY target/demo-0.0.1.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"]
以上 Dockerfile 中使用了官方提供的 openjdk 镜像,将 Maven 构建的 fat jar 包拷贝到当前路径,并作为容器启动的入口。
输入以下命令进行构建:
mvn clean package docker build -t docker-compose-java-demo .
以上命令将构建 Docker 镜像,镜像名称为 “docker-compose-java-demo” 。
准备 MySQL 服务
编写数据库初始化 SQL 文件
创建 “init.sql” 文件,代码如下:
-- -------------------- ---- ------- ------ -------- ----- --- ----- ------ ----- ----- -- --- -------- --------------- ---- ------------ --- ----- --- --- --- ----- ------- --- ---- -- ------ ---- ---- ------ ---- ------ --------- ---- ------ ---- ---- ------ ---- ------ ------- ----
以上 SQL 文件用于初始化 “mydb” 数据库,并创建一个名为 user 的表格,并插入两条数据记录。
创建 MySQL Docker 镜像
输入以下命令拉取 MySQL 官方镜像并启动容器:
docker run --name mysql-demo -v ~/mysql-demo:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 -d mysql:8
以上命令将启动 mysql-demo 容器,并将数据持久化到本地 ~/mysql-demo 目录中,访问 MySQL 数据库的 root 用户的密码为 “password” 。
在容器启动后,输入以下命令进入 mysql 容器:
docker exec -it mysql-demo bash
创建刚才初始化 SQL 文件,创建完毕后,退出容器。
mysql -uroot -p < init.sql exit
编写 Docker-Compose 文件
在项目根目录下创建一个名为 “docker-compose.yml” 的文件,代码如下:
-- -------------------- ---- ------- -------- --- --------- ------ ------ ------- -------- ----------------------------------------------------- ------------ -------------------- -------- --------------- ---- -------- - --------------------------- ------ - ----------- ----- ------ - ------ - ----------- ------------ ---------------------- ----------------------------------------------- --------------------------- ---- --------------------------- -------- ----------- - -----
以上 Docker-Compose 文件用于定义了两个服务,一个是 MySQL 服务,一个是 Java 后端服务。MySQL 服务使用 MySQL 官方镜像,配置了环境变量和数据卷,并将 3306 端口映射到本地。Java 后端服务则是使用之前构建的 Docker 镜像,将 8080 端口映射到本地,同时依赖 MySQL 服务启动。
启动 Docker-Compose 容器编排
在项目根目录下,输入以下命令启动容器组:
docker-compose up
启动后,使用浏览器访问 http://localhost:8080/users/1 ,可以看到输出 “Hello User 1”,表示 Java 后端在访问 MySQL 数据库成功。
总结
通过本教程,我们了解了如何使用 Docker-Compose 编写 Java 后端和 MySQL 服务,实现了容器化部署与运行。Docker 是一个非常强大的工具,可以极大简化编写、部署和运行分布式应用程序的过程,同时也增强了应用程序的可移植性和安全性。学会 Docker 以及其相关技术对前端开发者是非常必要的。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64914ec248841e9894f4f374