Docker 一键部署 SpringBoot 后端API + MySQL + Redis + Nginx + RabbitMq 服务

一、前言:

在开发中,频繁部署项目是日常。是不是已经厌倦了各种服务环境的配置?这里将使用 Docker 容器技术一键部署整个项目,只需编写 docker-compose.yml 和 Dockerfile 即可。Docker 你值得拥有!以下是博主自己编写的配置文件,可作参考。


二、前期准备:

1、已经打包成 jar 包的 SpringBoot 项目(假设是一个智慧校园APP的后端API服务)
2、一台装有docker的Linux服务器 (建议使用 Linux)


三、编写 Dockerfile

这里通过编写 webapi-Dockerfile 文件 (不要添加后缀名) 对 SpringBoot 项目构建一个镜像

#-------------- 构建一个 运行 后端API服务 的镜像 --------------
# 镜像仓库拉取一个基于 java8 的镜像
FROM daocloud.io/library/java:8
# 维护作者
LABEL maintainer = "specif1c"
# 创建工作目录
RUN mkdir -p /usr/local/campus
# 拷贝需要运行的jar包到镜像工作目录中
ADD ./campus-0.0.1-SNAPSHOT.jar /usr/local/campus/campus-0.0.1-SNAPSHOT.jar
# 指定程序在容器中的工作环境 (springboot 项目将在容器中的指定目录下启动)
WORKDIR /usr/local/campus
# 需要暴露的端口
EXPOSE 2022
# 执行 shell 命令
ENTRYPOINT ["java","-jar","campus-0.0.1-SNAPSHOT.jar"]

镜像仓库推荐:https://hub.daocloud.io/


四、编写各个服务的 docker-compose.yml

文件名就叫 docker-compose.yml 无需更改。

以下为 Compose 文件的版本信息所对应的 Docker 版本
在这里插入图片描述


docker-compose.yml 文件格式:

# 描述 compose 文件版本信息
version: '3'

# 定义服务
services:
	xxxx: (比如以下的 webapi, ngnix等服务,哪个需要用到就写在这里)

1、webapi:

# Java 后端API服务配置
  webapi:
    # 基于 webapi-Dockerfile 构建镜像
    build:
      context: .
      dockerfile: webapi-Dockerfile
    # 容器名称
    container_name: campus-webapi-master
    # webapi-Dockerfile 构建的镜像 (这里的镜像路径可以自定义)
    image: xxx.io/campus-webapi:1.0.0
    # 端口映射
    ports:
      - 2022:2022
    # 目录挂载
    volumes:
      - ./docker_webapi/:/usr/local/campus/
    # 环境变量
    environment:
      # 堆内存初始值
      - JAVA_OPTS=-Xmx256M
      # 生产环境运行(SpringBoot项目里面没有区分开发环境和生产环境,这里可以不写)
      - spring.profiles.active=pro
      # 设置服务器的默认时区
      - TZ=Asia/Shanghai
    # docker 启动时,服务自启
    restart: always
    # 容器依赖, 配置先启动选项 (填需要依赖的 services 的名字)
    depends_on:
      - nginx
      - mysql
      - redis
      - rabbitmq

2、Ngnix:

 # nginx 服务配置
  nginx:
    container_name: campus-nginx-master
    # 这里的镜像路径不能自定义,必须是 hub.daocloud 仓库的镜像路径 (下面镜像同理)
    image: daocloud.io/library/nginx:latest
    # docker 启动时,服务自启
    restart: always
    # 映射端口
    ports:
      - 80:80
    # 目录挂载
    volumes:
      - ./docker_nginx/conf.d:/etc/nginx/conf.d
      - /tmp/logs:/var/log/nginx

注意此版本 ngnix 的 conf.d 文件夹下没有 default.conf, 所有访问 80 显示不了 Welcome to nginx!, 需要自己在挂载目录
./docker_nginx/conf.d 加一个 default.conf, 可以到我这篇博客中去复制粘贴:https://blog.csdn.net/haduwi/article/details/115273263


3、MySQL:

# MySQL 服务配置
  mysql:
    container_name: campus-mysql-master
    image: daocloud.io/library/mysql:5.7
    # 环境变量
    environment:
      # 数据库名
      MYSQL_DATABASE: campus 
      # 数据库密码
      MYSQL_ROOT_PASSWORD: xxxx 
      TZ: Asia/Shanghai
    # 覆盖容器启动后默认执行的命令
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    ports:
      - 3306:3306
    volumes:
      # 同步本地时间/
      - /etc/localtime:/etc/localtime:ro
      - ./docker_mysql/conf:/etc/mysql/conf.d
      - ./docker_mysql/data:/var/lib/mysql
      # 将 ./init 映射到 mysql 容器的 /docker-entrypoint-initdb.d/ 目录,./init 里的sql脚本就会被自动执行了。
      - ./init:/docker-entrypoint-initdb.d/
    restart: always

4、Redis:

# redis 服务配置
  redis:
    container_name: campus-redis-master
    image: daocloud.io/library/redis:2.8.9
    restart: always
    ports:
      - 6379:6379
    volumes:
      - ./docker_redis/redis.conf:/usr/local/etc/redis/redis.conf:rw
      - ./docker_redis/data:/data:rw
    # 初始化设置密码, 开启AOF持久化
    command: redis-server --requirepass xxxx --appendonly yes

5、rabbitmq:

# rabbitmq 服务配置
  rabbitmq:
    image: daocloud.io/library/rabbitmq:3.8-management
    ports:
      - 5672:5672
      - 15672:15672
    container_name: campus-rabbitmq-master
    environment:
      TZ: Asia/Shanghai
      # rabbitmq的初始用户名
      RABBITMQ_DEFAULT_USER: xxxxx
      # rabbitmq的初始密码
      RABBITMQ_DEFAULT_PASS: xxxxx
    volumes:
      - ./docker_rabbit/data:/var/lib/rabbitmq
      - ./docker_rabbit/log:/var/log/rabbitmq/log

五、上传项目压缩包至服务器

注意:springboot 项目打包之前,记得把 yml 配置文件里面连接中间件的host需要改成容器名, 比如连接 redis 如下:
在这里插入图片描述

campus-docker.zip 上传至 Linux 服务器根目录下即可:
在这里插入图片描述解压命令unzip campus-docker.zip , cd 进入解压后的目录:cd campus-docker , 确保文件没有少。
在这里插入图片描述


六、构建并启动服务

① 构建并启动服务命令

docker-compose up -d # 之前没使用过docker,由于需要联网下载对应镜像,构建过程会稍微慢一点,耐心等待~

在这里插入图片描述
② 查看服务运行状态

docker ps

在这里插入图片描述


以上说明服务全部正常运行,后端服务部署完成!
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0rta1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值