千家信息网

怎么使用dockercompose搭建springboot-mysql-nginx应用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"怎么使用dockercompose搭建springboot-mysql-nginx应用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么使用
千家信息网最后更新 2026年11月02日怎么使用dockercompose搭建springboot-mysql-nginx应用

这篇文章主要介绍"怎么使用dockercompose搭建springboot-mysql-nginx应用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么使用dockercompose搭建springboot-mysql-nginx应用"文章能帮助大家解决问题。

使用docker构建spring-boot应用,是把编译好的jar包构建到镜像中。

这篇是把spring-boot连同数据库,做为一组docker服务运行起来。

这里只是把自己操作记录下来,完整运行的代码见"参考"中的引用1中的内容。
(我修改mysql映射目录及获取远程ip的方法)

主要步骤:

  • 搭建简单的springboot应用

  • 应用添加docker下支持

  • 编写dockercompose配置文件

  • 实践运行

搭建简单的springboot应用

做一个web应用,统计访问该站点的ip次数。

并存储到mysql数据库中,这里使用jpa的方式访问数据库。

依赖

  org.springframework.boot  spring-boot-starter-parent  2.0.0.release

web,jpa,mysql,tset库的依赖

      org.springframework.boot    spring-boot-starter-web        org.springframework.boot    spring-boot-starter-data-jpa        mysql    mysql-connector-java        org.springframework.boot    spring-boot-starter-test    test  

配置文件

spring.datasource.url=jdbc:mysql://localhost:3306/testspring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.driverspring.jpa.properties.hibernate.hbm2ddl.auto=updatespring.jpa.properties.hibernate.dialect=org.hibernate.dialect.mysql5innodbdialectspring.jpa.show-sql=true

核心代码

@restcontrollerpublic class visitorcontroller{ @autowired private visitorrepository repository; @requestmapping("/") public string index(httpservletrequest request) { string ip= request.getheader("x-real-ip"); if(ip== null || "".equals(ip)) {  ip = request.getremoteaddr(); } visitor visitor = repository.findbyip(ip); if(visitor == null) {  visitor = new visitor();  visitor.setip(ip);  visitor.settimes(1l); } else {  visitor.settimes(visitor.gettimes()+1); } repository.save(visitor); return "ip:"+visitor.getip()+" "+visitor.gettimes()+" times."; }}

实体类

@entitypublic class visitor { @id @generatedvalue private long id; @column(nullable=false) private long times; @column(nullable=false) private string ip; // get,set 方法略}

repository 层代码参考jpa 相关内容。

本地数据库打开,密码是上面配置中的,使用mvn spring-boot:run运行起来之后,可以看到ip的次数,每次统计后就自增。

dockercompose配置文件

新建docker-compose.yaml文件,如下:

version: '3'services: nginx:  container_name: v-nginx  image: nginx:1.13  restart: always  ports:  - 80:80  - 443:443  volumes:  - ./nginx/conf.d:/etc/nginx/conf.d mysql:  container_name: v-mysql  image: mysql/mysql-server:5.7  environment:  mysql_database: test  mysql_root_password: root  mysql_root_host: '%'  ports:  - "3306:3306"  volumes:  - ./mysqldata:/var/lib/mysql  restart: always   app:  restart: always  build: ./app  working_dir: /app  volumes:   - ./app:/app   - ~/.m2:/root/.m2  expose:   - "8080"  depends_on:   - nginx   - mysql  command: mvn clean spring-boot:run -dspring-boot.run.profiles=docker

主要对这个配置文件进行解释,并在文件系统中增加相关的配置。

services下面有三个服务nginx,mysql,app。
images 指明使用镜像。nginx及mysql都是直接取docker仓库中已有的。
app中没有指明镜像,但用build指定了dockerfile所在的目录。
volumes 指定了本地目录下的文件与容器目标地址的映射。
environment 配置了容器所需要的环境变量
ports 配置了本地与容器的映射的端口,本地端口在前,容器端口在后

ngixn下的volumes配置的作用:把我们写好的nginx配置文件直接覆盖到容器中默认的nginx配置文件。

mysql下的volumes配置的作用:把mysql的数据文件映射到了本地mysqldata目录下。当容器删除后,数据还在。

app下的volumes配置的作用:第一行是把代码文件映射到容器中。第二行是把maven的仓库文件映射到本地。容器删除之后,再构建,不用重新下载依赖包。

command: mvn clean spring-boot:run -dspring-boot.run.profiles=docker

命令是编译运行容器中的项目,使用docker的profiles。

所以我们要添加的文件

  • dockerfile:新建文件,添加一行from maven:3.5-jdk-8

  • docker的profiles:复制application.properties为application-docker.properties,并把application-docker.properties中数据库连接地址改为jdbc:mysql://mysql:3306/test。

  • nginx的配置文件

server {  listen 80;  charset utf-8;  access_log off;  location / {    proxy_pass http://app:8080;    proxy_set_header host $host:$server_port;    proxy_set_header x-forwarded-host $server_name;    proxy_set_header x-real-ip $remote_addr;    proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;  }  location /static {    access_log  off;    expires   30d;    alias /app/static;  }}

部署验证

把整体的文件拷贝到服务器上,使用docker-compose up来运行。

关于"怎么使用dockercompose搭建springboot-mysql-nginx应用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

文件 配置 容器 应用 数据 运行 数据库 代码 目录 作用 内容 方法 知识 端口 镜像 服务 一行 仓库 地址 次数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司简介 互联网科技与金融科技 世界互联网领先科技成果 丰台科技园 互联网 融贸通互联网科技 互联网高科技股票 互联网科技宣传片 互联网科技大会案例 丰台科技园 互联网公司 深圳市运趣互联网科技有限公司 欧洲十大科技互联网公司 宝灵互联网科技有限公司 广州市恰铎互联网科技有限公司 四川慕妮娅互联网科技有限公司 恒生互联网科技业指数调整周期 新氧科技和美国互联网有关系吗 万物互联网智能科技 互联网领先科技成果宣传视频 六子台科技互联网展会 互联网科技企业文化 青岛互联网科技公司 互联网科技公司做什么 济南和联互联网科技有限公司 博兴的互联网电子科技公司 互联网软件和科技 苏州五指互联网络科技有限 河南住房之家互联网科技 互联网行业科技股 广州有谷有贝互联网科技有限公司 湖北辰鑫科技互联网
0