怎么使用dockercompose搭建nginx+mysql+redis+springboot项目

如何使用 Docker Compose 搭建 Nginx + MySQL + Redis + Spring Boot 项目

本文将介绍如何使用 Docker Compose 实现 Nginx + MySQL + Redis + Spring Boot 的服务搭建。

1. 编写 Docker Compose 文件

首先我们需要编写 Docker Compose 文件。在项目根目录下创建一个名为 docker-compose.yml 的文件,文件内容如下:

```
version: '3'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
depends_on:
- app
app:
build: .
ports:
- "8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=dev
- DB_HOST=db
- DB_PORT=3306
- DB_DATABASE=test
- DB_USERNAME=root
- DB_PASSWORD=example
- REDIS_HOST=redis
- REDIS_PORT=6379
depends_on:
- db
- redis
db:
image: mysql:5.7
ports:
- "3306:3306"
environment:
- MYSQL_DATABASE=test
- MYSQL_USER=root
- MYSQL_PASSWORD=example
- MYSQL_ROOT_PASSWORD=example
volumes:
- ./mysql-init:/docker-entrypoint-initdb.d
redis:
image: redis:latest
ports:
- "6379:6379"
```

上述文件定义了四个服务:nginx、app、db 和 redis,分别对应 Nginx、Spring Boot 应用、MySQL 数据库和 Redis 缓存。其中 nginx 和 app 服务都有一些配置参数需要设置。db 服务需要使用 docker-entrypoint-initdb.d 目录下的脚本初始化数据库。redis 服务可以直接使用镜像提供的默认配置。

2. 编写 Spring Boot 应用

接下来我们需要编写 Spring Boot 应用程序。在项目中创建一个名为 src/main/java/com/example/demo 的包,并在包中创建一个名为 DemoApplication 的启动类。在启动类中添加以下内容:

```
@SpringBootApplication
@RestController
public class DemoApplication {

@GetMapping("/")
public String home() {
return "Hello, World!";
}

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

这个应用程序将响应 HTTP GET 请求并显示 “Hello, World!” 消息。接下来,我们需要添加以下配置文件以连接 MySQL 数据库和 Redis 缓存:

application.yml

```
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_DATABASE}
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
redis:
host: ${REDIS_HOST}
port: ${REDIS_PORT}
```

application-dev.yml

```
spring:
profiles: dev
```

在上述配置文件中,我们使用 Docker Compose 文件中设置的环境变量来配置数据库连接和 Redis 缓存。

3. 编写 Nginx 配置文件

然后,我们需要为 Nginx 配置代理,让它能够从 Spring Boot 应用程序中获取数据。在项目中创建一个名为 nginx/conf.d 的文件夹,并创建一个名为 default.conf 的文件,文件内容如下:

```
server {
listen 80;
server_name localhost;

location / {
proxy_pass http://app:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```

在上述配置文件中,我们为 Nginx 配置了一个反向代理,将 HTTP 请求传递给 Spring Boot 应用程序处理。

4. 启动服务

最后,我们只需要启动服务。在项目的根目录下使用以下命令启动服务:

```
docker-compose up -d
```

该命令将自动下载所有必需的 Docker 镜像并启动服务。在启动完成后,您可以在浏览器中输入 http://localhost 来访问 Spring Boot 应用程序,并在页面上看到 “Hello, World!” 消息,证明应用程序已经成功运行。

总结

本文介绍了如何使用 Docker Compose 搭建 Nginx + MySQL + Redis + Spring Boot 的服务。这种方式可以快速地创建一个集成了多个服务的应用程序,并通过 Docker 镜像对代码进行隔离。使用 Docker Compose 非常适合开发和测试,可以大大提高开发效率和代码的可移植性。

晓白博客网版权所有,原文地址https://www.xbnb.cn/7049
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 如有资源失效请在下面及时反馈,谢谢!! 抢沙发

请登录后发表评论

    请登录后查看评论内容