docker-compose(一):SpringBoot + Docker 案例

Docker Compose一键部署Spring Boot + Vue项目 本文在普通的Docker部署Spring Boot + Vue项目的基础上进行。部署若依前后端分离版项目为例,重点在于如何使用Docker Compose的方式加快项目部署过程。此前使用Docker部署一个Spring Boot + Vue项目,包含了4个容器:MySQLRedisJava后端Nginx前端而稍微复杂的项目,还会有各种各样的其它中间件,需要部署的容器远不止4个。如果还像之前那样手动的逐一部署,就太麻烦了。而Docker Compose就可以帮助我们实现。 阅读详情

原味地址:http://www.linzichen.cn/article/1595243013943066624

本文主要演示通过docker 在 linux 服务器上安装 mysql、redis 及 nginx,并通过一个简单的 SpringBoot 项目进行连接并测试,最后通过 nginx 代理我们后端的接口请求。

安装mysql

  • 镜像:mysql:5.7
  • 库:db_docker
  • 表:t_user

1、拉取镜像

docker pull mysql:5.7

2、创建mysql容器

docker run --name mysql \ 
-v /mydocker/mysql/data:/var/lib/mysql \ 
-v /mydocker/mysql/conf.d:/etc/mysql/conf.d \ 
-e MYSQL_ROOT_PASSWORD=root \ 
-p 3306:3306 -d mysql:5.7

3、进入mysql容器内部

[root@localhost /]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
0102c03d7766   mysql:5.7   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
[root@localhost /]# docker exec -it 0102c03d7766 bash

4、 mysql 连接

root@0102c03d7766:/# mysql -uroot -proot

5、创建库和表

mysql> create database db_docker;
Query OK, 1 row affected (0.00 sec)

mysql> use db_docker;
Database changed

mysql> create table t_user (
    -> id int primary key auto_increment,
    -> name varchar(55) default "",
    -> age int not null);
Query OK, 0 rows affected (0.01 sec)

6、测试远程连接

由于是自己的虚拟机,所以不需要开放端口也能访问,如果是购买的服务器,则需要开放端口,并重启防火墙。

mysql.png

安装 redis

  • 镜像:redis:6.0

1、拉取镜像

docker pull redis:6.0

2、自定义redis配置

在创建之前,我们需要对redis进行如下配置:

1). 开启远程访问

2). 开启 aof 持久化

在 /mydocker/redis目录下创建 redis.conf 文件,并加入以下内容:

[root@localhost /]# cat /mydocker/redis/redis.conf 
bind 0.0.0.0
appendonly yes

3、创建redis容器

docker run --name redis \ 
-v /mydocker/redis/data:/data \ 
-v /mydocker/redis/redis.conf:/usr/local/etc/redis/redis.conf \ 
-p 6379:6379 \ 
-d redis:6.0 \ 
redis-server 

3、测试远程连接

由于是自己的虚拟机,所以不需要开放端口也能访问,如果是购买的服务器,则需要开放端口,并重启防火墙。

redis.png

安装Nginx

  • 镜像:nginx:1.22

1、拉取镜像

docker pull nginx:1.22

2、暂时启动个nginx实例,将其内部的配置文件,拷贝到宿主机

# 1. 启动nginx
docker run -p 80:80 -d  nginx:1.22

# 2. 宿主机在 /mydocker 目录下创建 nginx 目录
[root@localhost /]# cd /mydocker/
[root@localhost mydocker]# mkdir nginx

# 3. 拷贝配置文件(aa6b12782323为 nginx 容器的id)
docker cp aa6b12782323:/etc/nginx/nginx.conf /mydocker/nginx/nginx.conf
docker cp aa6b12782323:/etc/nginx/conf.d/default.conf /mydocker/nginx/default.conf

# 4. 将刚刚创建的nginx容器删除
[root@localhost mydocker]# docker stop aa6b12782323
aa6b12782323
[root@localhost mydocker]# docker rm aa6b12782323
aa6b12782323

2、创建 nginx 容器

docker run  \ 
-v /mydocker/nginx/nginx.conf:/etc/nginx/nginx.conf \ 
-v /mydocker/nginx/default.conf:/etc/nginx/conf.d/default.conf \ 
-v /mydocker/nginx/html:/usr/share/nginx/html \ 
-p 80:80 -d nginx:1.22    	

3、在 /mydocker/nginx/html 目录下 创建 index.html,并写入内容

[root@localhost html]# pwd
/mydocker/nginx/html
[root@localhost html]# ls
index.html
[root@localhost html]# cat index.html 
Hello Nginx

3、测试访问连接

nginx.png

SpringBoot项目

主要测试 mysql 和 redis 的功能,所以简单提供两个接口,一个是对mysql的测试,一个是对redis 的测试。

接口描述
/testMysql往数据库中添加一条记录
/testRedis往redis中添加一条记录

1、pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--MySQL连接Java的驱动程序-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.27</version>
</dependency>

<!--支持通过jdbc连接数据库库-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2、application.yml

server:
  port: 12311
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.2.123:3306/db_docker?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false
    username: root
    password: root
  redis:
    host: 192.168.2.123
    port: 6379

3、Controller

@RestController
public class TestController {

    @Autowired
    private JdbcTemplate jdbcTemplate ;
    @Autowired
    private StringRedisTemplate redisTemplate ;

    @GetMapping("/testMysql")
    public String testMysql() {
        String sql = "insert into t_user (name, age) values (?,?)" ;
        Object[] args = {"tom", 18} ;
        int result = jdbcTemplate.update(sql, args);
        return result == 1 ? "mysql添加成功" : "mysql添加失败" ;
    }

    @GetMapping("/testRedis")
    public String testRedis() {
        String key = "user:1" ;
        redisTemplate.opsForValue().set(key, "tom");
        String value = redisTemplate.opsForValue().get(key);
        return value ;
    }
}

构建SpringBoot镜像

将上面的 SpringBoot 项目打成 jar 包,上传到 /mydocker/app 目录下:

[root@localhost /]# clear
[root@localhost /]# cd /mydocker/app/
[root@localhost app]# ls
spring-docker-compose-0.0.1-SNAPSHOT.jar

在同级目录创建 Dockerfile 文件:

# 基于java8
FROM openjdk:8
# 创建容器的工作目录
WORKDIR /app
# 将jar包添加到容器中,并改命为 myapp.jar
ADD spring-docker-compose-0.0.1-SNAPSHOT.jar /app/myapp.jar
# 暴露端口
EXPOSE 12311
# 运行jar包
ENTRYPOINT ["java", "-jar"]
CMD ["myapp.jar"]

构建镜像:

docker build -t myapp 

myapp.png

启动容器:

[root@localhost app]# docker run -p 12311:12311 -d 532c2435808a
fd6c851f0445b86b9946c092923fb188756d3a3e308935362fb94804d422cfff

[root@localhost app]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS             PORTS                                                  NAMES
fd6c851f0445   532c2435808a   "java -jar myapp.jar"    4 seconds ago       Up 2 seconds       0.0.0.0:12311->12311/tcp, :::12311->12311/tcp          busy_varahamihira

查看容器是否启动成功:

javalog.png

nginx 代理接口

配置 nginx 的 80 端口代理到我们服务的 12311 接口.

[root@localhost /]# cd /mydocker/nginx/
[root@localhost nginx]# vi default.conf

default.conf:

location / {
    #root   /usr/share/nginx/html;
    #index  index.html index.htm;
    proxy_pass http://192.168.2.123:12311/;
}

重启nginx容器:

[root@localhost nginx]# docker ps
dCONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS             PORTS                                                  NAMES
fd6c851f0445   532c2435808a   "java -jar myapp.jar"    17 minutes ago      Up 17 minutes      0.0.0.0:12311->12311/tcp, :::12311->12311/tcp          busy_varahamihira
6b0ac8c0fb1a   nginx:1.22     "/docker-entrypoint.…"   About an hour ago   Up About an hour   0.0.0.0:80->80/tcp, :::80->80/tcp                      silly_napier
c7ab53b1aab2   redis:6.0      "docker-entrypoint.s…"   2 hours ago         Up 2 hours         0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis
0102c03d7766   mysql:5.7      "docker-entrypoint.s…"   2 hours ago         Up 2 hours         0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

[root@localhost nginx]# docker restart 6b0ac8c0fb1a
6b0ac8c0fb1a

接口访问

测试mysql:

testMysql.png

去数据库查询:

mysql> select * from t_user;
+----+------+-----+
| id | name | age |
+----+------+-----+
|  1 | tom  |  18 |
+----+------+-----+
1 row in set (0.00 sec)

测试redis:

testRedis.png

root@c7ab53b1aab2:/data# redis-cli
127.0.0.1:6379> get user:1
"tom"
127.0.0.1:6379> 

至此,通过 docker 安装服务并访问测试的demo 就已经完成了。下篇文章说一下 基于 docker compose 来管理docker 容器,以及它和传统的 docker run 有哪些区别。

三.使用Docker Compose部署SpringBoot应用 Docker Compose是一个用于定义和运行多个docker容器应用的工具。使用Compose你可以用YAML文件来配置你的应用服务,然后使用一个命令,你就可以部署你配置的所有服务了。 阅读详情

相关推荐

使用Docker Compose部署SpringBoot应用

Docker Compose是一个用于定义和运行多个docker容器应用的工具。使用Compose你可以用YAML文件来配置你的应用服务,然后使用一个命令,你就可以部署你配置的所有服务了。 安装 下载Docker Compose: curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-comp

码上代码的博客 764

用docker部署项目(SpringBoot+Vue+MySQL)

因为下一步创建dockerfile文件的时候,我是以centos为基础镜像进行构建的 ,里面没有java环境,如果以已经存在java环境的镜像(比如:java:8-alpine)作为基础镜像进行构建,可以忽略该步骤。如果在容器中安装vim出现错误,在经历过 换源,apt-get update 等一系列操作之后仍不能正确的安装,可以将nginx配置文件先编写好,在编写Dockerfile文件时,通过COPY指令,对nginx的配置文件进行替换。新建文件夹,将打包好的jar包和下载的jdk放在 同一文件夹中。

weixin_44147285的博客 1524

docker-clean, 清除 Docker 容器,图像,卷和网络的脚本.zip

docker-clean, 清除 Docker 容器,图像,卷和网络的脚本 docker 一个简单的shell script 来清理 Docker 守护进程。要求为了使用容量功能,需要 Docker 守护进程至少为 1.9个版本。安装curl -s https://raw.gith

实战:用docker-compose容器化springboot项目

用docker-compose管理容器化springboot项目较为简单,可以直接批量构建镜像和容器化管理,大大大简化我们的运维。在实际的生产环境中,对于数据库一般不建议容器化,微服务集群建议容器化。

勤于笔记,成于点滴。 3165

【Android】汽车电源管理:深入解析CarPowerManager与Suspend To RAM的交互机制

本文深入解析了Android Automotive OS中CarPowerManager与Suspend To RAM(深度睡眠)的交互机制。详细阐述了从车辆发出睡眠请求,到CarPowerManagementService协调应用状态,最终通过内核进入低功耗睡眠的完整流程,并探讨了唤醒机制、开发者实践及功耗优化策略,为车机应用开发与系统优化提供关键指导。

weixin_28339967的博客 289

Ubuntu安装opencv4.5(自己安装过程详细)

1.下载opencv 在opencv官网下载source版,下载链接 http://opencv.org/releases.html。别下载错版本 下载过程就不多说了。 2.安装过程 2.1解压 unzip opencv-4.5.0.zip cd opencv-4.5.0 2.2安装依赖的库 sudo apt-get install cmake sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-

weixin_45629790的博客 1万+

Docker高级——DockerCompose部署SpringBoot项目

项目目录一览

康小庄的博客 3006

【低空经济】低空无人机公共测试场与验证基地设计方案

公共测试场与验证基地是为低空无人机相关技术的研发、测试与应用提供一个系统性的平台。在无人机产业蓬勃发展的背景下,建设一个配备完善、功能齐全的公共测试场与验证基地显得尤为重要。该基地不仅可以作为无人机的测试和验证场地,还可以为相关企业、科研机构以及政府部门提供技术支持和服务。因此,为此基地的设计方案必须综合考虑功能性、安全性、灵活性与可持续性等多方面的因素。首先,公共测试场需划分为多个专用区域,以便满足不同类型无人机的测试需求。这包括低空飞行区域、紧急着陆区、操控模拟区和监测与数据采集区等。

2502_92579126的博客 1596

使用Docker及Docker-compose部署SpringBoot项目

/启动 mysql docker run -d --name=mysql-server -p 3306:3306 -v /home/user/myconfig/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.23。本人由于Windows中的Hyper-v有问题,选择了使用阿里云服务器建立了远程的Linux服务器,并安装了Ubuntu作为子系统。:将宿主机的3306端口映射到容器的3306端口,以便在宿主机上访问MySQL服务。

个人学习记录 2467

自动驾驶中的多传感器融合实战:用卡尔曼滤波搞定毫米波雷达与摄像头航迹对齐

本文深入探讨了自动驾驶中多传感器融合的实战技术,重点介绍了如何使用卡尔曼滤波实现毫米波雷达与摄像头的航迹对齐。通过分析传感器特性差异、时空同步挑战及工程化实现步骤,提供了包括状态向量定义、观测矩阵设计和故障检测机制在内的完整解决方案,最终实现0.15米以内的高精度航迹对齐。

weixin_28728495的博客 410

LayaNative源码编译

修改好后的LayaNative2.0需要重新编译生成Android和iOS所需要的动态库文件。

末之 1358

Docker使用(八) —docker-compose部署SpringBoot(jar包)

docker-compose部署jar包 docker-compose部署spring-boot包

一恍过去 1万+

2026终极反反爬:Canvas/WebGL/字体指纹全维度伪装,应对浏览器检测实战指南

本文分享了2026年浏览器指纹检测现状及全维度伪装方案。当前反爬系统采用多维度联合指纹检测,重点针对硬件级(WebGL、Canvas)、系统级(字体、CPU)和行为级(鼠标移动)指纹。作者设计了一个独立的指纹伪装引擎,包含真实设备指纹库、指纹生成器和统一注入层,通过JS沙箱隔离实现伪装。核心方案包括:Canvas指纹通过真实设备渲染差异添加微偏移;WebGL指纹完整劫持上下文返回真实显卡参数;字体指纹劫持measureText方法模拟不同系统字体宽度。该方案实测可连续运行一个月零封号,解决了传统方法易被检测

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 924

使用Docker-Compose部署SpringBoot项目的案例

Docker-Compose是Docker官方的一个开源项目,主要用于实现对Docker容器集群的快速编排和管理。该项目由Python编写,通过调用Docker服务提供的API来管理容器。只要所操作的平台支持Docker API,就可以利用Docker-Compose进行编排管理。Docker-Compose通过简化多容器应用的部署和管理,使得开发人员能够更专注于应用程序的开发和测试。

qq_51321722的博客 2159

mbedtls | 01 - 移植mbedtls库到STM32的两种方法

一、mbedtls 开源库 1. mbedtls是什么 Mbed TLS是一个开源、可移植、易于使用、代码可读性高的SSL库。可实现加密原语,X.509证书操作以及SSL / TLS和 DTLS 协议,它的代码占用空间小,非常适合用于嵌入式系统。 mbedtls遵循 Apache 2.0 开源许可协议,目前由 TrustedFirmware 维护(Linaro主持的一个治理开放社区项目),在Github上已收获 2.6k star,目前Github上发布的最新版本为 2.24.0 版本,开源仓库地址为:

Mculover666的博客(嵌入式) 1万+

SAP-MM:SAP MM(物料管理)模块 的系统化学习计划

SAP MM模块的系统化学习计划

baidu_35680696的博客 1547

SpringBoot -- Docker Compose的支持

Docker compose的使用方式通常是将容器内的端口映射到你的电脑上的短暂端口。Docker Compose是一种流行的技术,可以用来定义和管理你的应用程序所需的多个服务容器。适用Docker Compose的典型工作流程是运行docker compose up,用它链接启动的服务来处理你的应用程序,然后在完成后运行docker compose down。Spring Boot的自动配置可以消费服务连接的细节,并使用它们来建立与远程服务的连接。服务连接是通过容器的镜像名称建立的。

baidu_38945557的博客 569

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

docker compose部署springboot+vue+mysql+nginx

docker compose 部署 springboot+vue+mysql+nginx的docker compose 部署总结 docker的容器类似于虚拟机,但是比虚拟机有更高的运行效率,docker compose 是用于编排容器的一个基于python编写的工具。 目录结构 |-- sites |-- .env // 系统配置变量文件 ...

ciqikui9291的博客 3864

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

八、springboot 简单优雅的通过docker-compose 构建

前言 这个项目有一段时间没有更新了,不过我可没有偷懒哟,是偷偷准备了一个大招,现在是时候展示啦哈哈。 我们今天要做的,就是将我们的项目通过docker-compose 构建成镜像运行。为什么要这样做呢?比我我前面的这些教程,用到了mysql,如果你们想要运行我的程序,就必须在自己电脑上装mysql 数据库才行,也就是项目用依赖了哪些环境,都必须先将这些环境部署好才能运行项目,那我们要做的,只用安装...

程序员爱酸奶 7798

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【docker】Docker Compose 从入门到精通详解及 Spring Boot 项目 Linux 部署实战

本文详细介绍了Docker Compose的基础与高级应用,包括核心概念、安装配置、基础语法和操作命令。第一部分讲解Docker Compose的架构模型、安装方法及YAML配置文件结构,包括服务定义、网络配置和卷管理。第二部分深入探讨服务配置选项、网络设置、健康检查等高级特性,以及Spring Boot项目的部署实践。文章还提供完整的实战案例,涵盖单机部署、集群扩展和性能优化,帮助读者掌握Docker Compose从入门到精通的完整知识体系。

weixin_44338470的博客 1169

Docker-compose配置springboot项目

Dokcer-compose配置springboot项目准备环境一、在springboot添加docker插件1.安装docker插件2. 在pom.xml中添加配置二、在项目下创建docker文件1. Dockerfile2.docker-compose.yml三、application.properties配置相应的mysql和redis地址1. mysql2. redis四、 打包jar,下载redis.conf1. 打包2. redis.conf五、 在服务器找个好位置设置yml的那些挂载目录1.总

weixin_50674454的博客 3705

docker-compose部署springboot项目

本文简单介绍下如何通过docker-compose来发布一个springboot项目。 前提准备 需要提前准备好docker环境,并安装docker-compose(docker-compose比较简单,下载个bin文件然后放到 /usr/bin目录中就行)。 下载 jdk8 镜像 直接搜索 jdk8 镜像,然后下载第一个就行 # 搜索 jdk8 镜像 docker search jdk8 # 下载 jdk8 镜像 docker pull ascdc/jdk8 文件存放路径 配置文

修理男爵的博客 5153
上一篇: Dockerfile 实践
下一篇: docker-compose(二):SpringBoot + Docker Compose
Zichen_Lin
博客等级 码龄9年 9粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值