Docker Compose编排Springboot应用

数据库 其他数据库
我们还在myapp服务中设置了环境变量,以便应用程序能够连接到MySQL数据库。在这种情况下,我们将数据库URL设置为“jdbc:mysql://db:3306/mydb”,这意味着应用程序将连接到名为“db”的服务上的MySQL服务器,并使用名为“mydb”的数据库进行连接。我们还设置了数据库用户名和密码。

Docker Compose是一个用于定义和运行多个Docker容器应用程序的工具。它使用YAML文件来定义服务、网络和卷,并在一个命令中使用这些定义来启动和停止容器。在这里,我们将通过一个简单的示例演示如何使用Docker Compose编排Spring Boot应用。

1. 创建一个Spring Boot应用程序

在开始之前,我们需要创建一个Spring Boot应用程序。如果你已经有一个可以工作的示例,请跳过这一步即可。否则,可以按照下面的步骤创建一个应用程序。

首先,你需要创建一个新的Maven项目,并在POM文件中添加Spring Boot依赖项。这是一个完整的例子:

<groupId>com.example</groupId>
<artifactId>my-springboot-app</artifactId>
<version>0.0.1-SNAPSHOT</version>




<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>

这里我们添加了Spring Boot Web和Spring Boot Test依赖项。接下来,我们将编写一个简单的控制器:

```java

@RestController
public class HelloController {




  @RequestMapping("/")
  public String hello() {
    return "Hello Docker Compose!";
  }




}

```

最后,还需要添加一个Spring Boot应用程序启动类:

```java

@SpringBootApplication
public class Application {




  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

}

```

现在,我们已经有了一个可用的Spring Boot应用程序。

2. 编写Dockerfile

接下来,我们需要编写一个Dockerfile用于构建一个Docker镜像,并在其中包含我们的Spring Boot应用程序。这是一个简单的Dockerfile例子:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=target/my-springboot-app.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

这里使用了OpenJDK 8镜像作为基础镜像,并复制了我们的Spring Boot应用程序JAR文件到Docker容器中。ENTRYPOINT指令指定了要在Docker容器中运行的命令。在这种情况下,我们运行了一个JAR文件。

3. 创建docker-compose.yaml文件

现在,我们已经有了一个可用的Spring Boot应用程序和用于构建Docker镜像的Dockerfile。接下来,我们将编写一个docker-compose.yaml文件来指示Docker Compose如何启动和运行我们的应用程序。

```yaml

version: '3'
services:
  myapp:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      DATABASE_URL: jdbc:mysql://db:3306/mydb
      DATABASE_USER: myuser
      DATABASE_PASSWORD: mypass
  db:
    image: mysql:latest
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: mydb
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypass

这里我们创建了两个服务:一个名为“myapp”的服务和一个名为“db”的服务。

myapp服务使用我们刚才创建的Dockerfile构建。我们将本地机器上的8080端口映射到Docker容器内的8080端口,这样我们就可以通过浏览器访问应用程序了。

myapp服务还对db服务进行了依赖,这意味着当Docker Compose启动myapp服务时,它将自动启动db服务。

我们还在myapp服务中设置了环境变量,以便应用程序能够连接到MySQL数据库。在这种情况下,我们将数据库URL设置为“jdbc:mysql://db:3306/mydb”,这意味着应用程序将连接到名为“db”的服务上的MySQL服务器,并使用名为“mydb”的数据库进行连接。我们还设置了数据库用户名和密码。

db服务使用了MySQL官方镜像,并将本地机器上的3306端口映射到Docker容器内的3306端口。我们设置了MySQL根密码以及我们将在数据库中使用的用户名和密码。

4. 启动应用程序

现在,我们已经准备就绪了。在您的项目根目录下运行以下命令:

docker-compose up

该命令将启动Docker Compose并启动我们的应用程序。在命令行中查看日志,您应该会看到应用程序已经启动并正在监听8080端口。现在,您可以在浏览器中访问应用程序,它应该会返回“Hello Docker Compose!”消息。

5. 结束应用程序

要停止应用程序并清除Docker容器,请在命令行中退出`docker-compose`命令:

docker-compose down

这将停止所有Docker容器并删除它们。

至此,您已经成功地使用Docker Compose编排了一个Spring Boot应用程序。这种方法使部署、维护和扩展应用程序变得更加容易和可靠。

责任编辑:武晓燕 来源: java知路
相关推荐

2023-11-02 08:45:07

2023-11-16 08:01:31

2014-12-15 11:23:00

Docker Comp分布式应用容器应用

2024-10-17 09:57:30

2020-12-31 05:57:36

DockerSpringBootMaven

2024-01-17 08:01:28

Docker语法命令

2023-12-14 15:51:15

2014-12-08 10:02:46

Docker开源跨容器服务

2015-07-28 11:10:22

Docker容器容器编排

2024-01-01 08:46:32

2022-11-19 09:30:31

开源容器

2023-10-11 06:50:32

Oracle数据库系统

2019-07-29 08:00:18

文件容器Docker Comp

2020-01-09 15:28:30

KubernetesDocker:容器

2022-08-27 15:27:34

LinuxdockerCompose

2022-09-01 10:10:27

数据编排技术

2022-07-01 08:36:44

流编排主流框架

2019-09-17 08:00:24

DockerCompose命令

2024-01-02 08:00:00

云计算容器Docker

2017-05-23 15:53:52

docker服务容器
点赞
收藏

51CTO技术栈公众号