docker-compose部署一个springboot项目(包含环境)

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
简介: docker-compose部署一个springboot项目(包含环境)

docker-compose部署一个springboot项目(包含环境)

搭建docker及docker-compose环境

【说明】首先对于环境的搭建

  • docker环境搭建
# 安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum软件索引
yum makecache fast
# 安装Docker-ce
yum -y install docker-ce
# 启动Docker
systemctl start docker
# 开机自启
systemctl enable docker
# 配置Docker镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://c2yf9ia3.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • docker-compose环境搭建
# 这里下载可能有点慢
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
# 配置权限
sudo chmod +x /usr/local/bin/docker-compose

【警告】注意这里我选择的是1.29.2版本,因为我的docker版本是最新的,所以选择docker-compose也是最新的

  • 创建一个公共的docker网络
  • docker network ls

  • 创建命令为docker network create kuocai_network
  • 编写dockerfile文件
#环境
FROM openjdk:8-jdk-alpine 
#日期问题,8小时差解决
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# 这个可以不加,直接运行
COPY test-project-0.0.1-SNAPSHOT.jar /test-project.jar
CMD ["java","-jar","test-project.jar"]
  • 上传打包的test-project.jar包到dockerfile同级目录下执行以下命令
# test-project为镜像的名称,默认没给版本号就是最新版,如果指定build版本可用test-project:1.0
docker build -t test-project .
  • 编写docker-compose.yml文件
version: '3'
services:
  web:
    image: test-project
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://test-project-mysql:3306/test_cdn?serverTimezone=Hongkong&useAffectedRows=true&characterEncoding=utf-8
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: test123
      SPRING_REDIS_HOST: test-project-redis
      SPRING_REDIS_PORT: 6379
      SPRING_REDIS_PASSWORD: test123
      SPRING_STORAGE_TYPE: minio
      SPRING_MINIO_URL: http://test-project-minio:9000
      SPRING_MINIO_ACCESS_KEY: test
      SPRING_MINIO_SECRET_KEY: test123
    ports:
      - "8086:8080"
    depends_on:
      - test-project-mysql
      - test-project-redis
      - test-project-minio
    networks:
      - kuocai_network
  test-project-mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: test123
      MYSQL_DATABASE: test_cdn
      MYSQL_USER: test
      MYSQL_PASSWORD: test123
      MYSQL_LOWER_CASE_TABLE_NAMES: 1
      MYSQL_LOWER_CASE_COLUMN_NAMES: 1
    ports:
      - "3309:3306"
    volumes:
      - ./mysql:/var/lib/mysql
    networks:
      - kuocai_network
  test-project-redis:
    image: redis
    ports:
      - "6376:6379"
    volumes:
      - ./redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis-data:/data
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - test_network
  test-project-minio:
    image: minio/minio
    environment:
      MINIO_ACCESS_KEY: test
      MINIO_SECRET_KEY: test123
      MINIO_LOG_LEVEL: debug
    ports:
      - "9002:9000"
      - "9003:9001"
    command: server /data
    volumes:
      - ./data:/data
    networks:
      - kuocai_network
networks:
  kuocai_network:
    driver: bridge

【警告】上面的端口映射其实可以去掉的,因为他们都在同一个network下面,所以根据容器名称就可以直接访问了,同时springboot的配置文件中也是配置web.environment下的东西

  • 最后执行docker-compose up -d
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1天前
|
存储 关系型数据库 数据安全/隐私保护
【Docker实战项目】使用Docker部署Plik 临时文件上传系统
【7月更文挑战第23天】使用Docker部署Plik 临时文件上传系统
6 0
【Docker实战项目】使用Docker部署Plik 临时文件上传系统
|
6天前
|
Java 持续交付 Maven
Spring Boot程序的打包与运行:构建高效部署流程
构建高效的Spring Boot部署流程对于保障应用的快速、稳定上线至关重要。通过采用上述策略,您可以确保部署过程的自动化、可靠性和高效性,从而将专注点放在开发上面。无论是通过Maven的生命周期命令进行打包,还是通过容器技术对部署过程进行优化,选择正确的工具与实践是成功实现这一目标的关键。
20 2
|
8天前
|
监控 Java 微服务
Spring Boot微服务部署与监控的实战指南
【7月更文挑战第19天】Spring Boot微服务的部署与监控是保障应用稳定运行和高效维护的重要环节。通过容器化部署和云平台支持,可以实现微服务的快速部署和弹性伸缩。而利用Actuator、Prometheus、Grafana等监控工具,可以实时获取应用的运行状态和性能指标,及时发现并解决问题。在实际操作中,还需根据应用的具体需求和场景,选择合适的部署和监控方案,以达到最佳效果。
|
15天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的旅游攻略系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的旅游攻略系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
15天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue个人博客系统设计和实现(源码+LW+部署讲解)
基于SpringBoot+Vue个人博客系统设计和实现(源码+LW+部署讲解)
36 7
|
15天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue个人健康管理网站设计和实现(源码+LW+部署讲解)
基于SpringBoot+Vue个人健康管理网站设计和实现(源码+LW+部署讲解)
32 7
|
15天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的在线招聘平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线招聘平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
15天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的公交系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的公交系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
15天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
36 7
|
15天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
30 7